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