Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -28,10 +28,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" @@ -40,11 +41,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" @@ -62,11 +65,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) @@ -76,11 +81,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""], [ @@ -90,14 +97,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" @@ -114,10 +124,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" @@ -169,11 +180,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" HID_LIBS="$HID_LIBS -lwiiuse -lbte" enable_shared="no" enable_threads="no" # TODO with_tls="no" @@ -193,12 +206,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 @@ -224,11 +240,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" @@ -249,13 +268,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" @@ -277,11 +299,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" @@ -297,10 +322,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*-*-*) @@ -636,11 +662,14 @@ ]) ]) 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, [ @@ -965,11 +1002,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. @@ -1007,11 +1047,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 ], [ @@ -1393,16 +1436,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, @@ -1446,10 +1494,14 @@ AC_SEARCH_LIBS(sctp_recvv, sctp, [ AC_DEFINE(OF_HAVE_SCTP, 1, [Whether we have SCTP]) AC_DEFINE(OF_HAVE_NETINET_SCTP_H, 1, [Whether we have netinet/sctp.h]) AC_SUBST(USE_SRCS_SCTP, '${SRCS_SCTP}') + + AS_IF([test x"$ac_lib" != x""], [ + OBJFW_LIBS="$OBJFW_LIBS -l$ac_lib" + ]) ]) ]) AC_CHECK_HEADERS([arpa/inet.h netdb.h sys/sockio.h]) AC_CHECK_HEADERS([net/if.h], [], [], [ #ifdef OF_HAVE_SYS_SOCKET_H @@ -2411,10 +2463,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(HID_LIBS) AC_SUBST(TESTS_LIBS) AC_CONFIG_FILES([ 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: