Skip to content

Commit 24fc1bb

Browse files
committed
Sanitise standards/feature macros, remove compiler/linker wrappers
The goal is to get rid of all compiler/linker wrapper scripts as they are overridden by passing CC/LD and it should be possible to select your compiler or linker without breaking the build. The probing and feature testing system should set the appropriate flags and macros. This makes some progress towards that. src/lib/libast/features/standards: - Eliminate the shotgun approach to standards macros on popular systems where the macros we we need to set are known and documented. The following will enable standards compliance plus all the available extensions: - Set no macros at all for any BSD system (excluding macOS). - Set _DARWIN_C_SOURCE on Darwin/macOS. - Set everything and the kitchen sink for Solaris/illumos in a way that enables backwards compatibility with older Solaris. This is unofficial, but following the standards(5) manual disables a lot of basic functionality that we depend on. - Set _GNU_SOURCE for GNU (glibc). - Remove the covered macros from the shotgun approach fallback. - Add a new heuristic. _POSIX_PATH_MAX and _SC_PAGESIZE are among the basic macros disabled when you pass recommended standards macros, killing the build, so it's good to check if they compile. src/cmd/INIT/ar.freebsd12.amd64, src/cmd/INIT/ar.linux.i386-64: - Removed. May cause build failures on some systems as not all 'ar' implementations support the U option. Plus, I can think of no good reason to disable deterministic mode (which always creates identical output) on 'ar' implementations that support it. See: https://groups.google.com/g/comp.unix.shell/c/LdOD1Ya0C9E/m/U6DhgHVICwAJ src/cmd/INIT/cc.linux.*-icc, Removed icc wrappers. These manually source /etc/profile.d/icc.sh but I don't think that is the build system's job. Profile scripts should be run at login time and export variables we inherit through the environment. src/cmd/INIT.cc.{freebsd,linux,openbsd}*: - Removed. Should be entirely superfluous now that the standards feature test sets the appropriate macros. src/cmd/INIT.cc.sol11.*: - Removed as the standards feature test now sets the approopriate macros. Note the Solaris build system should now simply pass CC as normal instead of passing CC_EXPLICIT.
1 parent d3f553c commit 24fc1bb

15 files changed

+138
-236
lines changed

src/cmd/INIT/ar.freebsd12.amd64

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/cmd/INIT/ar.linux.i386-64

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/cmd/INIT/cc.freebsd

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/cmd/INIT/cc.linux

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/cmd/INIT/cc.linux.aarch64

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/cmd/INIT/cc.linux.i386-64

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/cmd/INIT/cc.linux.i386-64-icc

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/cmd/INIT/cc.linux.i386-icc

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/cmd/INIT/cc.linux.ia64-icc

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/cmd/INIT/cc.openbsd

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)