Artifact 77e2685d56075cab085e479d8e5c02b0d804c4b8d61b3e0d4d54ee60a596b2e6:
- File
utils/objfw-config.in
— part of check-in
[538ceacc2f]
at
2024-08-31 00:11:06
on branch trunk
— objfw-config: Don't reproduce flags from configure
Some distributions pass LDFLAGS and LIBS to configure that are specific
to building a distribution package, which then causes problems when
using objfw-config outside of this environment. (user: js, size: 5836) [annotate] [blame] [check-ins using] [more...]
#!/bin/sh # # Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im> # # All rights reserved. # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License version 3.0 only, # as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License # version 3.0 for more details. # # You should have received a copy of the GNU Lesser General Public License # version 3.0 along with this program. If not, see # <https://www.gnu.org/licenses/>. # prefix="@prefix@" exec_prefix="@exec_prefix@" libdir="@libdir@" packagesdir="$libdir/objfw-config" 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="@OBJFW_LDFLAGS@" LDFLAGS_REEXPORT="@LDFLAGS_REEXPORT@" LDFLAGS_RPATH="@LDFLAGS_RPATH@" LIBS="-lobjfw @RUNTIME_LIBS@ @OBJFW_LIBS@" FRAMEWORK_LIBS="-framework ObjFW" FRAMEWORK_LIBS="$FRAMEWORK_LIBS @RUNTIME_FRAMEWORK_LIBS@ @OBJFW_LIBS@" PLUGIN_CFLAGS="@PLUGIN_CFLAGS@" PLUGIN_LDFLAGS="@PLUGIN_LDFLAGS@" PLUGIN_SUFFIX="@PLUGIN_SUFFIX@" PROG_SUFFIX="@EXEEXT@" STATIC_LIBS="${libdir}/libobjfw.a @OBJFW_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_format() { if test "$1" != "1"; then echo "Unsupported package format version: $1" 1>&2 exit 1 fi } package_depends_on() { if ! test -f "$packagesdir/$1.oc"; then echo "No such package: $1" 1>&2 exit 1 fi set -e . "$packagesdir/$1.oc" set +e } parse_packages() { while test x"$1" != "x"; do case "$1" in --package) shift package_depends_on "$1" ;; esac shift done } parse_packages "$@" # Add search directories after all packages have been processed so that they # always come first. LIBS="-L${libdir} $LIBS" FRAMEWORK_LIBS="-F${prefix}/Library/Frameworks $FRAMEWORK_LIBS" flag_printed="no" output_flag() { if test x"$flag_printed" = x"yes"; then printf " %s" "$1" else printf "%s" "$1" flag_printed="yes" fi } while test x"$1" != "x"; do case "$1" in --all) output_flag "$CFLAGS $CPPFLAGS $CXXFLAGS $OBJCFLAGS" output_flag "$LDFLAGS $LDFLAGS_REEXPORT $LDFLAGS_RPATH $LIBS" ;; --arc) output_flag "-fobjc-arc -fobjc-arc-exceptions" ;; --cflags) output_flag "$CFLAGS" ;; --cppflags) output_flag "$CPPFLAGS" ;; --cxxflags) output_flag "$CXXFLAGS" ;; --framework-libs) output_flag "$FRAMEWORK_LIBS" ;; --help) show_help 0 ;; --objc) output_flag "$OBJC" ;; --objcflags) output_flag "$OBJCFLAGS" ;; --libs) output_flag "$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 output_flag "$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 "LIB_MINOR need to be set!" 1>&2 exit 1 fi output_flag "$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 output_flag "$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 output_flag "$LIB_SUFFIX" ;; --ldflags) output_flag "$LDFLAGS" ;; --reexport) output_flag "$LDFLAGS_REEXPORT" ;; --rpath) output_flag "$LDFLAGS_RPATH" ;; --package) # Already included into the flags. shift ;; --packages-dir) output_flag "$packagesdir" ;; --plugin-cflags) output_flag "$PLUGIN_CFLAGS" ;; --plugin-ldflags) output_flag "$PLUGIN_LDFLAGS" ;; --plugin-suffix) output_flag "$PLUGIN_SUFFIX" ;; --prog-suffix) output_flag "$PROG_SUFFIX" ;; --static-libs) output_flag "$STATIC_LIBS" ;; --version) output_flag "$VERSION" ;; *) echo "Invalid option: $1" 1>&2 exit 1 ;; esac shift done test x"$flag_printed" = x"yes" && echo exit 0