# file : libpkgconf/buildfile
# copyright : Copyright (c) 2016-2017 Code Synthesis Ltd
# license : ISC; see accompanying COPYING file
lib{pkgconf}: {h c}{* -version} {h}{version}
# See bootstrap.build for details.
#
if $version.pre_release
lib{pkgconf}: bin.lib.version = @"-$version.project_id"
else
lib{pkgconf}: bin.lib.version = @"-$release_num"
# The version file is an internal one (is only included from config.h) so we
# don't distribute nor install (see below).
#
h{version}: in{version} $src_root/file{manifest}
# Define the PKG_DEFAULT_PATH, SYSTEM_INCLUDEDIR and SYSTEM_LIBDIR macros.
# The whole idea feels utterly broken (hello cross-compilation) so we will
# just do bare minimum and wait and see.
#
# @@ We should probably allow to configure these macros via configuration
# variables config.pkgconfig.pkg_default_path and alike.
#
if ($c.target.class == "windows")
{
inc_dirs = ""
lib_dirs = ""
# Note that on Windows PKG_DEFAULT_PATH macros is internally redefined as
# "../lib/pkgconfig;../share/pkgconfig" and is used as a fallback. Normally
# the default path is relative to the program's (that link the library)
# directory and has the following format:
#
#
/../lib/pkgconfig;/../share/pkgconfig
#
# So we keep it empty.
#
def_paths = ""
}
else
{
inc_dirs = "/usr/include"
lib_dirs = "/usr/lib"
def_dirs = ($install.root != [null] \
? "$install.resolve($install.pkgconfig)" \
: "")
}
c.poptions += -DPKG_DEFAULT_PATH=\"$def_dirs\" \
-DSYSTEM_INCLUDEDIR=\"$inc_dirs\" \
-DSYSTEM_LIBDIR=\"$lib_dirs\"
# Disable warnings.
#
if ($c.target.system == "win32-msvc")
c.coptions += /wd4996 /wd4267
if ($c.target.class == "windows")
{
# See libpkgconf/libpkgconf-api.h for details.
#
objs{*}: c.poptions += -DLIBPKGCONF_EXPORT
obja{*}: c.poptions += -DPKGCONFIG_IS_STATIC
if ($c.target.system == "mingw32")
c.libs += -ladvapi32
else
c.libs += advapi32.lib
}
c.poptions =+ "-I$out_root" "-I$src_root"
lib{pkgconf}: cc.export.poptions = "-I$src_root"
liba{pkgconf}: cc.export.poptions += -DPKGCONFIG_IS_STATIC
# In the original package the source files are compiled with -std=gnu99 option
# to allow some GNU deviations from the ISO C99 standard. We will compile with
# -std=c9x option (is implied by c.std=99 in root.build) and define _GNU_SOURCE
# for the source files that require such deviations.
#
if ($c.target.class != "windows")
obj{client fragment path pkg queue tuple}: c.poptions += -D_GNU_SOURCE
# Install into the pkgconf/libpkgconf/ subdirectory of, say, /usr/include/.
# Also make sure Cflags is properly set in .pc files to pkgconfig/.
#
{h}{*}: install = include/$project/
install.include = $install.include/pkgconf/
# For the original package config.h is generated during the configuration
# phase. We distribute a custom one with a minimal set of macro definitions
# required to build the project. Note that the file is an internal one (is
# only included from C files) and so is not installed.
#
h{config}@./: install = false
# Internal one (see above).
#
h{version}: install = false
if ($c.target.class != "windows")
h{win-dirent}@./: install = false