xref: /freebsd/contrib/pkgconf/cli/core.h (revision 592efe252472a3385acf36b1f49ecf710a7f3d9c)
1*592efe25SPierre Pronchery /*
2*592efe25SPierre Pronchery  * core.h
3*592efe25SPierre Pronchery  * core, printer functions
4*592efe25SPierre Pronchery  *
5*592efe25SPierre Pronchery  * SPDX-License-Identifier: pkgconf
6*592efe25SPierre Pronchery  *
7*592efe25SPierre Pronchery  * Copyright (c) 2011-2025 pkgconf authors (see AUTHORS).
8*592efe25SPierre Pronchery  *
9*592efe25SPierre Pronchery  * Permission to use, copy, modify, and/or distribute this software for any
10*592efe25SPierre Pronchery  * purpose with or without fee is hereby granted, provided that the above
11*592efe25SPierre Pronchery  * copyright notice and this permission notice appear in all copies.
12*592efe25SPierre Pronchery  *
13*592efe25SPierre Pronchery  * This software is provided 'as is' and without any warranty, express or
14*592efe25SPierre Pronchery  * implied.  In no event shall the authors be liable for any damages arising
15*592efe25SPierre Pronchery  * from the use of this software.
16*592efe25SPierre Pronchery  */
17*592efe25SPierre Pronchery 
18*592efe25SPierre Pronchery #ifndef __CLI_CORE_H
19*592efe25SPierre Pronchery #define __CLI_CORE_H
20*592efe25SPierre Pronchery 
21*592efe25SPierre Pronchery #define PKG_CFLAGS_ONLY_I		(((uint64_t) 1) << 2)
22*592efe25SPierre Pronchery #define PKG_CFLAGS_ONLY_OTHER		(((uint64_t) 1) << 3)
23*592efe25SPierre Pronchery #define PKG_CFLAGS			(PKG_CFLAGS_ONLY_I|PKG_CFLAGS_ONLY_OTHER)
24*592efe25SPierre Pronchery #define PKG_LIBS_ONLY_LDPATH		(((uint64_t) 1) << 5)
25*592efe25SPierre Pronchery #define PKG_LIBS_ONLY_LIBNAME		(((uint64_t) 1) << 6)
26*592efe25SPierre Pronchery #define PKG_LIBS_ONLY_OTHER		(((uint64_t) 1) << 7)
27*592efe25SPierre Pronchery #define PKG_LIBS			(PKG_LIBS_ONLY_LDPATH|PKG_LIBS_ONLY_LIBNAME|PKG_LIBS_ONLY_OTHER)
28*592efe25SPierre Pronchery #define PKG_MODVERSION			(((uint64_t) 1) << 8)
29*592efe25SPierre Pronchery #define PKG_REQUIRES			(((uint64_t) 1) << 9)
30*592efe25SPierre Pronchery #define PKG_REQUIRES_PRIVATE		(((uint64_t) 1) << 10)
31*592efe25SPierre Pronchery #define PKG_VARIABLES			(((uint64_t) 1) << 11)
32*592efe25SPierre Pronchery #define PKG_DIGRAPH			(((uint64_t) 1) << 12)
33*592efe25SPierre Pronchery #define PKG_KEEP_SYSTEM_CFLAGS		(((uint64_t) 1) << 13)
34*592efe25SPierre Pronchery #define PKG_KEEP_SYSTEM_LIBS		(((uint64_t) 1) << 14)
35*592efe25SPierre Pronchery #define PKG_VERSION			(((uint64_t) 1) << 15)
36*592efe25SPierre Pronchery #define PKG_ABOUT			(((uint64_t) 1) << 16)
37*592efe25SPierre Pronchery #define PKG_ENV_ONLY			(((uint64_t) 1) << 17)
38*592efe25SPierre Pronchery #define PKG_ERRORS_ON_STDOUT		(((uint64_t) 1) << 18)
39*592efe25SPierre Pronchery #define PKG_SILENCE_ERRORS		(((uint64_t) 1) << 19)
40*592efe25SPierre Pronchery #define PKG_IGNORE_CONFLICTS		(((uint64_t) 1) << 20)
41*592efe25SPierre Pronchery #define PKG_STATIC			(((uint64_t) 1) << 21)
42*592efe25SPierre Pronchery #define PKG_NO_UNINSTALLED		(((uint64_t) 1) << 22)
43*592efe25SPierre Pronchery #define PKG_UNINSTALLED			(((uint64_t) 1) << 23)
44*592efe25SPierre Pronchery #define PKG_LIST			(((uint64_t) 1) << 24)
45*592efe25SPierre Pronchery #define PKG_HELP			(((uint64_t) 1) << 25)
46*592efe25SPierre Pronchery #define PKG_PRINT_ERRORS		(((uint64_t) 1) << 26)
47*592efe25SPierre Pronchery #define PKG_SIMULATE			(((uint64_t) 1) << 27)
48*592efe25SPierre Pronchery #define PKG_NO_CACHE			(((uint64_t) 1) << 28)
49*592efe25SPierre Pronchery #define PKG_PROVIDES			(((uint64_t) 1) << 29)
50*592efe25SPierre Pronchery #define PKG_VALIDATE			(((uint64_t) 1) << 30)
51*592efe25SPierre Pronchery #define PKG_LIST_PACKAGE_NAMES		(((uint64_t) 1) << 31)
52*592efe25SPierre Pronchery #define PKG_NO_PROVIDES			(((uint64_t) 1) << 32)
53*592efe25SPierre Pronchery #define PKG_PURE			(((uint64_t) 1) << 33)
54*592efe25SPierre Pronchery #define PKG_PATH			(((uint64_t) 1) << 34)
55*592efe25SPierre Pronchery #define PKG_DEFINE_PREFIX		(((uint64_t) 1) << 35)
56*592efe25SPierre Pronchery #define PKG_DONT_DEFINE_PREFIX		(((uint64_t) 1) << 36)
57*592efe25SPierre Pronchery #define PKG_DONT_RELOCATE_PATHS		(((uint64_t) 1) << 37)
58*592efe25SPierre Pronchery #define PKG_DEBUG			(((uint64_t) 1) << 38)
59*592efe25SPierre Pronchery #define PKG_SHORT_ERRORS		(((uint64_t) 1) << 39)
60*592efe25SPierre Pronchery #define PKG_EXISTS			(((uint64_t) 1) << 40)
61*592efe25SPierre Pronchery #define PKG_MSVC_SYNTAX			(((uint64_t) 1) << 41)
62*592efe25SPierre Pronchery #define PKG_INTERNAL_CFLAGS		(((uint64_t) 1) << 42)
63*592efe25SPierre Pronchery #define PKG_DUMP_PERSONALITY		(((uint64_t) 1) << 43)
64*592efe25SPierre Pronchery #define PKG_SHARED			(((uint64_t) 1) << 44)
65*592efe25SPierre Pronchery #define PKG_DUMP_LICENSE		(((uint64_t) 1) << 45)
66*592efe25SPierre Pronchery #define PKG_SOLUTION			(((uint64_t) 1) << 46)
67*592efe25SPierre Pronchery #define PKG_EXISTS_CFLAGS		(((uint64_t) 1) << 47)
68*592efe25SPierre Pronchery #define PKG_FRAGMENT_TREE		(((uint64_t) 1) << 48)
69*592efe25SPierre Pronchery #define PKG_DUMP_SOURCE			(((uint64_t) 1) << 49)
70*592efe25SPierre Pronchery #define PKG_DUMP_LICENSE_FILE		(((uint64_t) 1) << 50)
71*592efe25SPierre Pronchery #define PKG_NEWLINES			(((uint64_t) 1) << 51)
72*592efe25SPierre Pronchery #define PKG_PRINT_DIGRAPH_QUERY_NODES	(((uint64_t) 1) << 52)
73*592efe25SPierre Pronchery #define PKG_LINK_ABI			(((uint64_t) 1) << 53)
74*592efe25SPierre Pronchery 
75*592efe25SPierre Pronchery typedef struct {
76*592efe25SPierre Pronchery 	pkgconf_client_t pkg_client;
77*592efe25SPierre Pronchery 	pkgconf_fragment_render_ops_t *want_render_ops;
78*592efe25SPierre Pronchery 
79*592efe25SPierre Pronchery 	uint64_t want_flags;
80*592efe25SPierre Pronchery 	int verbosity;
81*592efe25SPierre Pronchery 	int maximum_traverse_depth;
82*592efe25SPierre Pronchery 	size_t maximum_package_count;
83*592efe25SPierre Pronchery 
84*592efe25SPierre Pronchery 	const char *want_variable;
85*592efe25SPierre Pronchery 	const char *want_fragment_filter;
86*592efe25SPierre Pronchery 	const char *want_env_prefix;
87*592efe25SPierre Pronchery 
88*592efe25SPierre Pronchery 	char *required_pkgconfig_version;
89*592efe25SPierre Pronchery 	const char *required_exact_module_version;
90*592efe25SPierre Pronchery 	const char *required_max_module_version;
91*592efe25SPierre Pronchery 	const char *required_module_version;
92*592efe25SPierre Pronchery 
93*592efe25SPierre Pronchery 	FILE *error_msgout;
94*592efe25SPierre Pronchery 	FILE *logfile_out;
95*592efe25SPierre Pronchery 
96*592efe25SPierre Pronchery 	bool opened_error_msgout;
97*592efe25SPierre Pronchery } pkgconf_cli_state_t;
98*592efe25SPierre Pronchery 
99*592efe25SPierre Pronchery extern void path_list_to_buffer(const pkgconf_list_t *list, pkgconf_buffer_t *buffer, char delim);
100*592efe25SPierre Pronchery extern int pkgconf_cli_run(pkgconf_cli_state_t *state, int argc, char *argv[], int last_argc);
101*592efe25SPierre Pronchery extern void pkgconf_cli_state_reset(pkgconf_cli_state_t *state);
102*592efe25SPierre Pronchery 
103*592efe25SPierre Pronchery #endif
104