|
Packit |
db3073 |
/*
|
|
Packit |
db3073 |
* Copyright (C) 2001, 2002 Red Hat Inc.
|
|
Packit |
db3073 |
*
|
|
Packit |
db3073 |
* This program is free software; you can redistribute it and/or
|
|
Packit |
db3073 |
* modify it under the terms of the GNU General Public License as
|
|
Packit |
db3073 |
* published by the Free Software Foundation; either version 2 of the
|
|
Packit |
db3073 |
* License, or (at your option) any later version.
|
|
Packit |
db3073 |
*
|
|
Packit |
db3073 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
db3073 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
db3073 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
db3073 |
* General Public License for more details.
|
|
Packit |
db3073 |
*
|
|
Packit |
db3073 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
db3073 |
* along with this program; if not, write to the Free Software
|
|
Packit |
db3073 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
Packit |
db3073 |
* 02111-1307, USA.
|
|
Packit |
db3073 |
*/
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#ifndef PKG_CONFIG_PKG_H
|
|
Packit |
db3073 |
#define PKG_CONFIG_PKG_H
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#include <glib.h>
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
typedef guint8 FlagType; /* bit mask for flag types */
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#define LIBS_l (1 << 0)
|
|
Packit |
db3073 |
#define LIBS_L (1 << 1)
|
|
Packit |
db3073 |
#define LIBS_OTHER (1 << 2)
|
|
Packit |
db3073 |
#define CFLAGS_I (1 << 3)
|
|
Packit |
db3073 |
#define CFLAGS_OTHER (1 << 4)
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#define LIBS_ANY (LIBS_l | LIBS_L | LIBS_OTHER)
|
|
Packit |
db3073 |
#define CFLAGS_ANY (CFLAGS_I | CFLAGS_OTHER)
|
|
Packit |
db3073 |
#define FLAGS_ANY (LIBS_ANY | CFLAGS_ANY)
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
typedef enum
|
|
Packit |
db3073 |
{
|
|
Packit |
db3073 |
LESS_THAN,
|
|
Packit |
db3073 |
GREATER_THAN,
|
|
Packit |
db3073 |
LESS_THAN_EQUAL,
|
|
Packit |
db3073 |
GREATER_THAN_EQUAL,
|
|
Packit |
db3073 |
EQUAL,
|
|
Packit |
db3073 |
NOT_EQUAL,
|
|
Packit |
db3073 |
ALWAYS_MATCH
|
|
Packit |
db3073 |
} ComparisonType;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
typedef struct _Flag Flag;
|
|
Packit |
db3073 |
typedef struct _Package Package;
|
|
Packit |
db3073 |
typedef struct _RequiredVersion RequiredVersion;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
struct _Flag
|
|
Packit |
db3073 |
{
|
|
Packit |
db3073 |
FlagType type;
|
|
Packit |
db3073 |
char *arg;
|
|
Packit |
db3073 |
};
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
struct _RequiredVersion
|
|
Packit |
db3073 |
{
|
|
Packit |
db3073 |
char *name;
|
|
Packit |
db3073 |
ComparisonType comparison;
|
|
Packit |
db3073 |
char *version;
|
|
Packit |
db3073 |
Package *owner;
|
|
Packit |
db3073 |
};
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
struct _Package
|
|
Packit |
db3073 |
{
|
|
Packit |
db3073 |
char *key; /* filename name */
|
|
Packit |
db3073 |
char *name; /* human-readable name */
|
|
Packit |
db3073 |
char *version;
|
|
Packit |
db3073 |
char *description;
|
|
Packit |
db3073 |
char *url;
|
|
Packit |
db3073 |
char *pcfiledir; /* directory it was loaded from */
|
|
Packit |
db3073 |
GList *requires_entries;
|
|
Packit |
db3073 |
GList *requires;
|
|
Packit |
db3073 |
GList *requires_private_entries;
|
|
Packit |
db3073 |
GList *requires_private;
|
|
Packit |
db3073 |
GList *libs;
|
|
Packit |
db3073 |
GList *cflags;
|
|
Packit |
db3073 |
GHashTable *vars;
|
|
Packit |
db3073 |
GHashTable *required_versions; /* hash from name to RequiredVersion */
|
|
Packit |
db3073 |
GList *conflicts; /* list of RequiredVersion */
|
|
Packit |
db3073 |
gboolean uninstalled; /* used the -uninstalled file */
|
|
Packit |
db3073 |
int path_position; /* used to order packages by position in path of their .pc file, lower number means earlier in path */
|
|
Packit |
db3073 |
int libs_num; /* Number of times the "Libs" header has been seen */
|
|
Packit |
db3073 |
int libs_private_num; /* Number of times the "Libs.private" header has been seen */
|
|
Packit |
db3073 |
gboolean in_requires_chain; /* package is in current Requires chain */
|
|
Packit |
db3073 |
};
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
Package *get_package (const char *name);
|
|
Packit |
db3073 |
Package *get_package_quiet (const char *name);
|
|
Packit |
db3073 |
char * packages_get_flags (GList *pkgs,
|
|
Packit |
db3073 |
FlagType flags);
|
|
Packit |
db3073 |
char * package_get_var (Package *pkg,
|
|
Packit |
db3073 |
const char *var);
|
|
Packit |
db3073 |
char * packages_get_var (GList *pkgs,
|
|
Packit |
db3073 |
const char *var);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
void add_search_dir (const char *path);
|
|
Packit |
db3073 |
void add_search_dirs (const char *path, const char *separator);
|
|
Packit |
db3073 |
void package_init (void);
|
|
Packit |
db3073 |
int compare_versions (const char * a, const char *b);
|
|
Packit |
db3073 |
gboolean version_test (ComparisonType comparison,
|
|
Packit |
db3073 |
const char *a,
|
|
Packit |
db3073 |
const char *b);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
const char *comparison_to_str (ComparisonType comparison);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
void print_package_list (void);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
void define_global_variable (const char *varname,
|
|
Packit |
db3073 |
const char *varval);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
void debug_spew (const char *format, ...);
|
|
Packit |
db3073 |
void verbose_error (const char *format, ...);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
gboolean name_ends_in_uninstalled (const char *str);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
void enable_private_libs(void);
|
|
Packit |
db3073 |
void disable_private_libs(void);
|
|
Packit |
db3073 |
void enable_requires(void);
|
|
Packit |
db3073 |
void disable_requires(void);
|
|
Packit |
db3073 |
void enable_requires_private(void);
|
|
Packit |
db3073 |
void disable_requires_private(void);
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
/* If TRUE, do not automatically prefer uninstalled versions */
|
|
Packit |
db3073 |
extern gboolean disable_uninstalled;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
extern char *pcsysrootdir;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
/* pkg-config default search path. On Windows the current pkg-config install
|
|
Packit |
db3073 |
* directory is used. Otherwise, the build-time defined PKG_CONFIG_PC_PATH.
|
|
Packit |
db3073 |
*/
|
|
Packit |
db3073 |
extern char *pkg_config_pc_path;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#ifdef G_OS_WIN32
|
|
Packit |
db3073 |
/* If TRUE, do not automatically define "prefix" while
|
|
Packit |
db3073 |
* parsing each .pc file */
|
|
Packit |
db3073 |
extern gboolean dont_define_prefix;
|
|
Packit |
db3073 |
/* The name of the variable that acts as prefix, unless it is "prefix" */
|
|
Packit |
db3073 |
extern char *prefix_variable;
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
/* If TRUE, output flags in MSVC syntax. */
|
|
Packit |
db3073 |
extern gboolean msvc_syntax;
|
|
Packit |
db3073 |
#endif
|
|
Packit |
db3073 |
|
|
Packit |
db3073 |
#endif
|