Artifact e66fb4b25855d9cddf9c0ad988c220aedb0c535a2205d6ce86e0e663952bea10:
- File
utils/objfw-config.in
— part of check-in
[9911d60502]
at
2019-01-12 19:46:11
on branch trunk
— objfw-config: Add support for packages
This allows libraries using ObjFW to store their flags in a file and
allow objfw-config to output all required flags, including those for the
libraries. (user: js, size: 5537) [annotate] [blame] [check-ins using]
#!/bin/sh # # Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 # Jonathan Schleifer <js@heap.zone> # # All rights reserved. # # This file is part of ObjFW. It may be distributed under the terms of the # Q Public License 1.0, which can be found in the file LICENSE.QPL included in # the packaging of this file. # # Alternatively, it may be distributed under the terms of the GNU General # Public License, either version 2 or 3, which can be found in the file # LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this # file. # prefix="@prefix@" exec_prefix="@exec_prefix@" datarootdir="@datarootdir@" datadir="@datadir@" libdir="@libdir@" CFLAGS="" CPPFLAGS="@OBJFW_CPPFLAGS@ -I@includedir@" CXXFLAGS="" OBJC="@OBJC@" OBJCFLAGS="@OBJFW_OBJCFLAGS@" LIB_CFLAGS="@LIB_CFLAGS@" LIB_LDFLAGS="@LIB_LDFLAGS@" LIB_PREFIX="@LIB_PREFIX@" LIB_SUFFIX="@LIB_SUFFIX@" LDFLAGS="@LDFLAGS@" LDFLAGS_REEXPORT="@LDFLAGS_REEXPORT@" LDFLAGS_RPATH="@LDFLAGS_RPATH@" LIBS="-L${libdir} -lobjfw @RUNTIME_LIBS@ @LIBS@" FRAMEWORK_LIBS="-F${prefix}/Library/Frameworks -framework ObjFW" FRAMEWORK_LIBS="$FRAMEWORK_LIBS @RUNTIME_FRAMEWORK_LIBS@ @LIBS@" PLUGIN_CFLAGS="@PLUGIN_CFLAGS@" PLUGIN_LDFLAGS="@PLUGIN_LDFLAGS@" PLUGIN_SUFFIX="@PLUGIN_SUFFIX@" PROG_SUFFIX="@EXEEXT@" STATIC_LIBS="${libdir}/libobjfw.a @LIBS@" VERSION="@PACKAGE_VERSION@" show_help() { cat >&2 <<__EOF__ objfw-config: Available arguments are: --all Outputs all flags + libs --arc Outputs the required OBJCFLAGS to use ARC --cflags Outputs the required CFLAGS --cppflags Outputs the required CPPFLAGS --cxxflags Outputs the required CXXFLAGS --framework-libs Outputs the required LIBS, preferring frameworks --help Print this help --ldflags Outputs the required LDFLAGS --libs Outputs the required LIBS --lib-cflags Outputs CFLAGS for building a library --lib-ldflags Outputs LDFLAGS for building a library --lib-prefix Outputs the prefix for libraries --lib-suffix Outputs the suffix for libraries --objc Outputs the OBJC used to compile ObjFW --objcflags Outputs the required OBJCFLAGS --package Additionally outputs the flags for the specified package --packages-dir Outputs the directory where flags for packages are stored --plugin-cflags Outputs CFLAGS for building a plugin --plugin-ldflags Outputs LDFLAGS for building a plugin --plugin-suffix Outputs the suffix for plugins --prog-suffix Outputs the suffix for binaries --reexport Outputs LDFLAGS to reexport ObjFW --rpath Outputs LDFLAGS for using rpath --static-libs Outputs the required LIBS to link ObjFW statically --version Outputs the installed version __EOF__ exit $1 } test -z "$1" && show_help 1 package_version() { if test "$1" != "1"; then echo "Unsupported package version: $1" exit 1 fi } include_package() { if ! test -f "$datadir/objfw/packages/$1"; then echo "No such package: $1" exit 1 fi source "$datadir/objfw/packages/$1" } add_package_flags() { while test -n "$1"; do case "$1" in --package) shift include_package "$1" ;; esac shift done } add_package_flags "$@" while test -n "$1"; do case "$1" in --all) printf "%s %s %s " "$CFLAGS" "$CPPFLAGS" "$CXXFLAGS" printf "%s %s " "$OBJCFLAGS" "$LDFLAGS" printf "%s %s " "$LDFLAGS_REEXPORT" "$LDFLAGS_RPATH" printf "%s" "$LIBS" ;; --arc) printf "%s" "-fobjc-arc -fobjc-arc-exceptions" ;; --cflags) printf "%s" "$CFLAGS" ;; --cppflags) printf "%s" "$CPPFLAGS" ;; --cxxflags) printf "%s" "$CXXFLAGS" ;; --framework-libs) printf "%s" "$FRAMEWORK_LIBS" ;; --help) show_help 0 ;; --objc) printf "%s" "$OBJC" ;; --objcflags) printf "%s" "$OBJCFLAGS" ;; --libs) printf "%s" "$LIBS" ;; --lib-cflags) if test x"$LIB_MAJOR" = x"" -o x"$LIB_MINOR" = x""; then echo "LIB_MAJOR and LIB_MINOR need to be set!" \ 1>&2 exit 1 fi printf "%s" "$LIB_CFLAGS" ;; --lib-ldflags) if test x"$SHARED_LIB" = x"" -o x"$LIB_MAJOR" = x"" \ -o x"$LIB_MINOR" = x""; then printf "SHARED_LIB, LIB_MAJOR and " 2>&1 echo "and LIB_MINOR to be set!" 1>&2 exit 1 fi printf "%s" "$LIB_LDFLAGS" ;; --lib-prefix) if test x"$LIB_MAJOR" = x"" -o x"$LIB_MINOR" = x""; then echo "LIB_MAJOR and LIB_MINOR need to be set!" \ 1>&2 exit 1 fi printf "%s" "$LIB_PREFIX" ;; --lib-suffix) if test x"$LIB_MAJOR" = x"" -o x"$LIB_MINOR" = x""; then echo "LIB_MAJOR and LIB_MINOR need to be set!" \ 1>&2 exit 1 fi printf "%s" "$LIB_SUFFIX" ;; --ldflags) printf "%s" "$LDFLAGS" ;; --reexport) printf "%s" "$LDFLAGS_REEXPORT" ;; --rpath) printf "%s" "$LDFLAGS_RPATH" ;; --package) # Already included into the flags. shift ;; --packages-dir) printf "%s" "$datadir/objfw/packages" ;; --plugin-cflags) printf "%s" "$PLUGIN_CFLAGS" ;; --plugin-ldflags) printf "%s" "$PLUGIN_LDFLAGS" ;; --plugin-suffix) printf "%s" "$PLUGIN_SUFFIX" ;; --prog-suffix) printf "%s" "$PROG_SUFFIX" ;; --static-libs) printf "%s" "$STATIC_LIBS" ;; --version) printf "%s" "$VERSION" ;; *) echo "Invalid option: $1" 1>&2 exit 1 ;; esac shift test -n "$1" && printf " " done echo