From dd0d03b973730bed9e550eecd5f2dfaea1b835b6 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Mon, 18 Jan 2021 19:16:17 +0000 Subject: [PATCH] Eliminate LDFLAGS hack to compile on certain OSs Instead, we now link to the libm system math library where needed by adding -lm to the relevant compile commands in the Mamfiles. This is not needed on every system but never does any harm. (This adds more custom edits to the Mamfiles, which were originally generated from the nmake Makefiles. This takes us further from restoring nmake, but that already wasn't going to happen anyway, due to its many problems... the path forward will be to translate the Mamfiles to some other, current make system such as GNU make.) bin/package, src/cmd/INIT/package.sh: - Remove LDFLAGS=-lm hack for DragonFly BSD, NetBSD and Solaris. src/cmd/builtin/Mamfile, src/cmd/ksh93/Mamfile, src/lib/libdll/Mamfile: - Add -lm where linking failed on any of the three mentioned OSs. src/lib/libdll/features/dll: - In the output test program, add missing #include , fixing unknown identifier errors on NetBSD (ldexp, ldexpl). src/cmd/builtin/features/pty: - Add missing #include to make printf work on all systems (this is just a feature test, no need to bother with sfio here). src/lib/libast/features/stdio: - Undef __FILE_T to avoid interference from system headers on QNX. (There are still other problems preventing a build on QNX 6.5.0. The shipped version of gcc seems to be broken.) --- bin/package | 13 ------------- src/cmd/INIT/package.sh | 13 ------------- src/cmd/builtin/Mamfile | 4 ++-- src/cmd/builtin/features/pty | 1 + src/cmd/ksh93/Mamfile | 2 +- src/lib/libast/features/stdio | 1 + src/lib/libdll/Mamfile | 2 +- src/lib/libdll/features/dll | 1 + 8 files changed, 7 insertions(+), 30 deletions(-) diff --git a/bin/package b/bin/package index edca85421..5888df37c 100755 --- a/bin/package +++ b/bin/package @@ -1405,19 +1405,6 @@ case $ksh_relflags in assign="${assign:+$assign }KSH_RELFLAGS=\"\$ksh_relflags\"" ;; esac -# Hack to build on some systems that need an explicit link with libm due to a bug in the build system -case `uname` in -NetBSD | SunOS | DragonFly) - case " $LDFLAGS " in - *" -m "*) - ;; - *) LDFLAGS="-lm${LDFLAGS:+ $LDFLAGS}" - export LDFLAGS - ;; - esac - ;; -esac - # grab action specific args case $action in diff --git a/src/cmd/INIT/package.sh b/src/cmd/INIT/package.sh index c1cb94ac6..f792daf29 100644 --- a/src/cmd/INIT/package.sh +++ b/src/cmd/INIT/package.sh @@ -1404,19 +1404,6 @@ case $ksh_relflags in assign="${assign:+$assign }KSH_RELFLAGS=\"\$ksh_relflags\"" ;; esac -# Hack to build on some systems that need an explicit link with libm due to a bug in the build system -case `uname` in -NetBSD | SunOS | DragonFly) - case " $LDFLAGS " in - *" -m "*) - ;; - *) LDFLAGS="-lm${LDFLAGS:+ $LDFLAGS}" - export LDFLAGS - ;; - esac - ;; -esac - # grab action specific args case $action in diff --git a/src/cmd/builtin/Mamfile b/src/cmd/builtin/Mamfile index ef06422c3..03dcea951 100644 --- a/src/cmd/builtin/Mamfile +++ b/src/cmd/builtin/Mamfile @@ -56,7 +56,7 @@ make FEATURE/pty implicit meta FEATURE/pty features/%>FEATURE/% features/pty pty make features/pty done features/pty -exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} ' ref ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} -I${INSTALLROOT}/include ${mam_libast} ${mam_libcmd} : run features/pty +exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -lm' ref ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} -I${INSTALLROOT}/include ${mam_libast} ${mam_libcmd} : run features/pty done FEATURE/pty generated make ${PACKAGE_ast_INCLUDE}/ast_time.h implicit done ${PACKAGE_ast_INCLUDE}/ast_time.h @@ -77,7 +77,7 @@ exec - ${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCL done pty.o generated bind -lutil dontcare setv CMD_STANDALONE -DCMD_STANDALONE="b_pty" -exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o pty pty.o ${mam_libutil} ${mam_libast} ${mam_libcmd} +exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -lm ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o pty pty.o ${mam_libutil} ${mam_libast} ${mam_libcmd} done pty generated make ${INSTALLROOT}/bin exec - if silent test ! -d ${INSTALLROOT}/bin diff --git a/src/cmd/builtin/features/pty b/src/cmd/builtin/features/pty index 548af118b..dc6a7104a 100755 --- a/src/cmd/builtin/features/pty +++ b/src/cmd/builtin/features/pty @@ -13,6 +13,7 @@ lib openpty,_getpty,ptsname -lutil lib grantpt,unlockpt,posix_openpt stdlib.h tst - output{ + #include #include #include #if _lib_ptsname && _npt_ptsname diff --git a/src/cmd/ksh93/Mamfile b/src/cmd/ksh93/Mamfile index 1ccc28f1e..692652fb6 100644 --- a/src/cmd/ksh93/Mamfile +++ b/src/cmd/ksh93/Mamfile @@ -1364,7 +1364,7 @@ prev +li prev ${mam_libsocket} prev ${mam_libsecdb} setv CC.DLL -UCC.DLL -exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o suid_exec suid_exec.o ${mam_libast} ${mam_libnsl} ${mam_libast} +exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -lm ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o suid_exec suid_exec.o ${mam_libast} ${mam_libnsl} ${mam_libast} done suid_exec generated make shell prev libshell.a archive diff --git a/src/lib/libast/features/stdio b/src/lib/libast/features/stdio index db9678c79..508879f3b 100644 --- a/src/lib/libast/features/stdio +++ b/src/lib/libast/features/stdio @@ -15,6 +15,7 @@ cat{ #undef FILE #undef _FILE + #undef __FILE_T #undef fpos_t #undef fpos64_t diff --git a/src/lib/libdll/Mamfile b/src/lib/libdll/Mamfile index 135655ac8..b4ed779a1 100644 --- a/src/lib/libdll/Mamfile +++ b/src/lib/libdll/Mamfile @@ -170,7 +170,7 @@ make features/dll done features/dll bind -ldl dontcare bind -last -exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} ' ref ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} -I${INSTALLROOT}/include ${mam_libdl} ${mam_libast} : run features/dll +exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -lm' ref ${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} -I${INSTALLROOT}/include ${mam_libdl} ${mam_libast} : run features/dll done FEATURE/dll generated exec - cmp 2>/dev/null -s FEATURE/dll dlldefs.h || { rm -f dlldefs.h; silent test -d . || mkdir .; cp FEATURE/dll dlldefs.h; } done dlldefs.h generated diff --git a/src/lib/libdll/features/dll b/src/lib/libdll/features/dll index 691012f40..93b53c243 100644 --- a/src/lib/libdll/features/dll +++ b/src/lib/libdll/features/dll @@ -75,6 +75,7 @@ tst run{ echo "#define _DLL_NEXT_PATH \"$lib\"" }end tst - output{ + #include #if defined(__MVS__) && !defined(__SUSV3) #define __SUSV3 1 #endif