Blame pkg.h

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