Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -27,10 +27,11 @@ flags="-mfloat-abi=softfp -mfpu=vfp -mlibscl" ASFLAGS="$ASFLAGS -mfloat-abi=softfp -mfpu=vfp" OBJCFLAGS="$OBJCFLAGS $flags" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" LDFLAGS="$LDFLAGS $flags" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS $flags" enable_shared="no" enable_threads="no" enable_sockets="no" enable_files="no" @@ -39,11 +40,13 @@ AS_IF([test x"$OBJCFLAGS" = x""], [OBJCFLAGS="-O0 -g"]) OBJCFLAGS="$OBJCFLAGS -noixemul" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS -noixemul" CPPFLAGS="$CPPFLAGS -D__NO_NET_API" LDFLAGS="$LDFLAGS -noixemul" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -noixemul" LIBS="$LIBS -ldebug" + OBJFW_LIBS="$OBJFW_LIBS -ldebug" enable_files="yes" # Required for reading ENV: enable_shared="no" with_tls="no" @@ -61,11 +64,13 @@ *-morphos*) AS_IF([test x"$OBJCFLAGS" = x""], [OBJCFLAGS="-O2 -g"]) OBJCFLAGS="$OBJCFLAGS -noixemul" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS -noixemul" LDFLAGS="$LDFLAGS -noixemul" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -noixemul" LIBS="$LIBS -ldebug" + OBJFW_LIBS="$OBJFW_LIBS -ldebug" enable_files="yes" # Required for reading ENV: enable_shared="no" AC_SUBST(LIBBASES_M, libbases.m) @@ -75,11 +80,13 @@ enable_threads="no" enable_sockets="no" ;; *-*-mingw*) LDFLAGS="$LDFLAGS -Wl,--allow-multiple-definition" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -Wl,--allow-multiple-definition" LIBS="$LIBS -lversion" + OBJFW_LIBS="$OBJFW_LIBS -lversion" AC_SUBST(USE_SRCS_WINDOWS, '${SRCS_WINDOWS}') ;; *-psp-*) AS_IF([test x"$DEVKITPSP" = x""], [ @@ -89,14 +96,17 @@ AS_IF([test x"$OBJCFLAGS" = x""], [OBJCFLAGS="-O2"]) OBJCFLAGS="$OBJCFLAGS -G0" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS -G0" CPPFLAGS="$CPPFLAGS -I$DEVKITPSP/psp/sdk/include" LDFLAGS="$LDFLAGS -G0" - LIBS="$LIBS -L$DEVKITPSP/psp/sdk/lib -lpspdebug -lpspdisplay" - LIBS="$LIBS -lpspge -lpspctrl -lpspsdk -lc -lpspnet" - LIBS="$LIBS -lpspnet_inet -lpspnet_apctl -lpspnet_resolver" - LIBS="$LIBS -lpsputility -lpspuser -lpspkernel -lgcc -lpsplibc" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -G0" + tmp="-L$DEVKITPSP/psp/sdk/lib -lpspdebug -lpspdisplay -lpspge -lpspctrl" + tmp="$tmp -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl" + tmp="$tmp -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lgcc" + tmp="$tmp -lpsplibc" + LIBS="$LIBS $tmp" + OBJFW_LIBS="$OBJFW_LIBS $tmp" enable_shared="no" enable_threads="no" # TODO enable_sockets="no" # TODO check_pedantic="no" @@ -113,10 +123,11 @@ dnl We need to put this into OBJCFLAGS and not CPPFLAGS as CPPFLAGS are dnl also used for .S files. OBJCFLAGS="$OBJCFLAGS -include inttypes.h" dnl We need -latomic for GCC's atomics to work. LIBS="$LIBS -latomic" + OBJFW_LIBS="$OBJFW_LIBS -latomic" ;; *-*-mint*) enable_shared="no" enable_threads="no" # TODO with_tls="no" @@ -168,11 +179,13 @@ OBJCFLAGS="$OBJCFLAGS $flags" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" CPPFLAGS="$CPPFLAGS -DGEKKO -I$DEVKITPRO/libogc/include" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -DGEKKO -I\$DEVKITPRO/libogc/include" LDFLAGS="$LDFLAGS -mrvl -mcpu=750 -meabi -mhard-float" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -mrvl -mcpu=750 -meabi -mhard-float" LIBS="$LIBS -L$DEVKITPRO/libogc/lib/wii -lfat -logc" + OBJFW_LIBS="$OBJFW_LIBS -L$DEVKITPRO/libogc/lib/wii -lfat -logc" TESTS_LIBS="$TESTS_LIBS -lwiiuse -lbte" enable_shared="no" enable_threads="no" # TODO with_tls="no" @@ -191,12 +204,15 @@ OBJCFLAGS="$OBJCFLAGS $flags" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" CPPFLAGS="-isystem $DEVKITPRO/wut/include -D__WIIU__ -D__WUT__" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -isystem \$DEVKITPRO/wut/include" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -D__WIIU__ -D__WUT__" - LDFLAGS="-specs=$DEVKITPRO/wut/share/wut.specs" - LIBS="-L$DEVKITPRO/wut/lib -L$DEVKITPRO/wut/lib/stubs -lwut" + LDFLAGS="$LDFLAGS -specs=$DEVKITPRO/wut/share/wut.specs" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -specs=$DEVKITPRO/wut/share/wut.specs" + tmp="-L$DEVKITPRO/wut/lib -L$DEVKITPRO/wut/lib/stubs -lwut" + LIBS="$LIBS $tmp" + OBJFW_LIBS="$OBJFW_LIBS $tmp" enable_files="no" # TODO enable_shared="no" # TODO enable_threads="no" # TODO enable_sockets="no" # TODO @@ -222,11 +238,14 @@ OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" CPPFLAGS="$CPPFLAGS -DARM9 -I$DEVKITPRO/libnds/include" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -DARM9 -I\$DEVKITPRO/libnds/include" ASFLAGS="$ASFLAGS -march=armv5te" LDFLAGS="$LDFLAGS -specs=ds_arm9.specs" - LIBS="$LIBS -L$DEVKITPRO/libnds/lib -lfilesystem -lfat -lnds9" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -specs=ds_arm9.specs" + tmp="-L$DEVKITPRO/libnds/lib -lfilesystem -lfat -lnds9" + LIBS="$LIBS $tmp" + OBJFW_LIBS="$OBJFW_LIBS $tmp" enable_shared="no" enable_threads="no" # TODO enable_sockets="no" # TODO check_pedantic="no" @@ -246,13 +265,16 @@ OBJCFLAGS="$OBJCFLAGS $flags" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" CPPFLAGS="$CPPFLAGS -DARM11 -I$DEVKITPRO/libctru/include" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -DARM11 -I\$DEVKITPRO/libctru/include" ASFLAGS="$ASFLAGS -march=armv6k" - LDFLAGS="$LDFLAGS -specs=3dsx.specs -march=armv6k -mtune=mpcore" - LDFLAGS="$LDFLAGS -mfloat-abi=hard -mtp=soft -mword-relocations" + tmp="-specs=3dsx.specs -march=armv6k -mtune=mpcore -mfloat-abi=hard" + tmp="$tmp -mtp=soft -mword-relocations" + LDFLAGS="$LDFLAGS $tmp" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS $tmp" LIBS="$LIBS -L$DEVKITPRO/libctru/lib -lctru" + OBJFW_LIBS="$OBJFW_LIBS -L$DEVKITPRO/libctru/lib -lctru" enable_shared="no" enable_threads="no" # TODO with_tls="no" check_pedantic="no" @@ -273,11 +295,14 @@ OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" CPPFLAGS="$CPPFLAGS -D__SWITCH__ -I$DEVKITPRO/libnx/include" OBJFW_CPPFLAGS="$OBJFW_CPPFLAGS -D__SWITCH__ -I$DEVKITPRO/libnx/include" ASFLAGS="$ASFLAGS $flags" LDFLAGS="$LDFLAGS -specs=$DEVKITPRO/libnx/switch.specs $flags" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -specs=$DEVKITPRO/libnx/switch.specs" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS $flags" LIBS="$LIBS -L$DEVKITPRO/libnx/lib -lnx" + OBJFW_LIBS="$OBJFW_LIBS -L$DEVKITPRO/libnx/lib -lnx" enable_shared="no" enable_threads="yes" enable_sockets="no" # TODO check_pedantic="no" @@ -292,10 +317,11 @@ OBJCFLAGS="$OBJCFLAGS -Wall $flags" OBJFW_OBJCFLAGS="$OBJFW_OBJCFLAGS $flags" dnl amiga-gcc requires -fexceptions in LDFLAGS in order to link in the glue code dnl for registering the frames. LDFLAGS="$LDFLAGS -fexceptions" +OBJFW_LDFLAGS="$OBJFW_LDFLAGS -fexceptions" case "$OBJC" in *clang*) case "$host" in mips*-*-*) @@ -640,11 +666,14 @@ AC_MSG_ERROR([Exceptions not accepted by compiler!]) ]) AC_SEARCH_LIBS($raise_exception, [c++abi gcc_s gcc unwind], [ dnl c++abi requires pthread on OpenBSD - AS_IF([test x"$ac_lib" = x"c++abi"], [LIBS="$LIBS -lpthread"]) + AS_IF([test x"$ac_lib" = x"c++abi"], [ + LIBS="$LIBS -lpthread" + OBJFW_LIBS="$OBJFW_LIBS -lpthread" + ]) ], [ AC_MSG_ERROR([$raise_exception missing!]) ], [-lpthread]) AC_CHECK_FUNCS(_Unwind_GetDataRelBase _Unwind_GetTextRelBase) @@ -693,18 +722,23 @@ AC_SUBST(LDFLAGS_REEXPORT, ["-Wl,-reexport-lobjfw"]) AS_IF([test x"$objc_runtime" = x"Apple runtime"], [ AC_SUBST(REEXPORT_RUNTIME, ["-Wl,-reexport-lobjc"]) AC_SUBST(REEXPORT_RUNTIME_FRAMEWORK, ["-Wl,-reexport-lobjc"]) LDFLAGS="$LDFLAGS -Wl,-U,_NSFoundationVersionNumber" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS -Wl,-U,_NSFoundationVersionNumber" ]) AS_IF([test x"$objc_runtime" = x"ObjFW runtime"], [ AS_IF([test x"$exception_type" = x"DWARF"], [ - LDFLAGS="$LDFLAGS -Wl,-U,___gxx_personality_v0" + tmp="-Wl,-U,___gxx_personality_v0" + LDFLAGS="$LDFLAGS $tmp" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS $tmp" ]) AS_IF([test x"$exception_type" = x"SjLj"], [ - LDFLAGS="$LDFLAGS -Wl,-U,___gxx_personality_sj0" + tmp="-Wl,-U,___gxx_personality_sj0" + LDFLAGS="$LDFLAGS $tmp" + OBJFW_LDFLAGS="$OBJFW_LDFLAGS $tmp" ]) AC_SUBST(REEXPORT_RUNTIME, ["-Wl,-reexport-lobjfwrt"]) AC_SUBST(REEXPORT_RUNTIME_FRAMEWORK, ["-Wl,-reexport_framework,ObjFWRT"]) ]) @@ -891,11 +925,14 @@ i?86 | x86_64) AC_CHECK_HEADERS(cet.h) ;; esac -AC_CHECK_LIB(m, fmod, LIBS="$LIBS -lm") +AC_CHECK_LIB(m, fmod, [ + LIBS="$LIBS -lm" + OBJFW_LIBS="$OBJFW_LIBS -lm" +]) AC_CHECK_LIB(complex, creal, TESTS_LIBS="$TESTS_LIBS -lcomplex") AC_CHECK_FUNCS(strtof truncf) AC_CHECK_FUNC(asprintf, [ @@ -963,11 +1000,14 @@ ]) AC_CHECK_FUNCS(arc4random arc4random_buf getrandom random, break) AS_IF([test x"$host_os" != x"morphos"], [ - AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl") + AC_CHECK_LIB(dl, dlopen, [ + LIBS="$LIBS -ldl" + OBJFW_LIBS="$OBJFW_LIBS -ldl" + ]) ]) AC_CHECK_HEADERS_ONCE(dlfcn.h) case "$host_os" in netbsd*) dnl dladdr exists on NetBSD, but it is completely broken. @@ -1005,11 +1045,14 @@ CPPFLAGS="$CPPFLAGS -Wp,-pthread" ], [ CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE" ]) - AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") + AC_CHECK_LIB(pthread, main, [ + LIBS="$LIBS -lpthread" + OBJFW_LIBS="$OBJFW_LIBS -lpthread" + ]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([ #include ], [ @@ -1391,16 +1434,21 @@ case "$host_os" in amigaos* | morphos*) ;; haiku*) LIBS="$LIBS -lnetwork" + OBJFW_LIBS="$OBJFW_LIBS -lnetwork" ;; mingw*) LIBS="$LIBS -lws2_32 -liphlpapi" + OBJFW_LIBS="$OBJFW_LIBS -lws2_32 -liphlpapi" ;; *) - AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") + AC_CHECK_LIB(socket, socket, [ + LIBS="$LIBS -lsocket" + OBJFW_LIBS="$OBJFW_LIBS -lsocket" + ]) ;; esac AC_CHECK_HEADER(sys/socket.h, [ AC_DEFINE(OF_HAVE_SYS_SOCKET_H, 1, @@ -2390,10 +2438,12 @@ AC_SUBST(ASFLAGS) AC_SUBST(DEP_ASFLAGS, '${DEP_OBJCFLAGS}') AC_SUBST(OBJFW_CPPFLAGS) AC_SUBST(OBJFW_OBJCFLAGS) +AC_SUBST(OBJFW_LDFLAGS) +AC_SUBST(OBJFW_LIBS) AC_SUBST(TESTS_LIBS) AC_CONFIG_FILES([ buildsys.mk Index: utils/objfw-config.in ================================================================== --- utils/objfw-config.in +++ utils/objfw-config.in @@ -29,21 +29,21 @@ OBJCFLAGS="@OBJFW_OBJCFLAGS@" LIB_CFLAGS="@LIB_CFLAGS@" LIB_LDFLAGS="@LIB_LDFLAGS@" LIB_PREFIX="@LIB_PREFIX@" LIB_SUFFIX="@LIB_SUFFIX@" -LDFLAGS="@LDFLAGS@" +LDFLAGS="@OBJFW_LDFLAGS@" LDFLAGS_REEXPORT="@LDFLAGS_REEXPORT@" LDFLAGS_RPATH="@LDFLAGS_RPATH@" -LIBS="-lobjfw @RUNTIME_LIBS@ @LIBS@" +LIBS="-lobjfw @RUNTIME_LIBS@ @OBJFW_LIBS@" FRAMEWORK_LIBS="-framework ObjFW" -FRAMEWORK_LIBS="$FRAMEWORK_LIBS @RUNTIME_FRAMEWORK_LIBS@ @LIBS@" +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 @LIBS@" +STATIC_LIBS="${libdir}/libobjfw.a @OBJFW_LIBS@" VERSION="@PACKAGE_VERSION@" show_help() { cat >&2 <<__EOF__ objfw-config: Available arguments are: