summaryrefslogtreecommitdiff
path: root/Makefile.libcompat
AgeCommit message (Collapse)Author
2025-08-22Makefile.libcompat: Use same PATH for _lc_build-tools as _build-toolsJessica Clarke
Without this, we end up with just the host's tools in PATH during _lc_build-tools. In particular, sed on GNU/Linux systems will be GNU sed, whose -i option has different semantics, and this causes the lib32 build of ncurses to fail trying to create curses.h with: sed: can't read s|...|...|g: No such file or directory This has always been a bug in Makefile.libcompat but previously it didn't end up mattering; this is the first known case. Fixes: 1cc020eba69e ("ncurses: Provide reproducible paths") MFC after: 1 week
2025-08-17Makefile.libcompat: Tweak krb5 compat dirsLexi Winter
krb5/util contains both programs and libraries; trying to build that for compat confuses bsd.prog.mk and results in unwanted files being created in the source tree. Remove krb5/util and instead list only the directories underneath krb5/util which contain libraries. The libdata change from the diff isn't included; that will be fixed in a different way. Fixes: fb13ae28b2e8 ("Makefile.libcompat: Add krb5/util") Reviewed by: ngie (previous version) Differential Revision: https://reviews.freebsd.org/D51937
2025-08-16Makefile.libcompat: Add krb5/utilLexi Winter
This fixes missing libraries (libcom_err, libkrb5profile, ...) for the 32-bit build, since these libraries live in krb5/util. Reviewed by: ngie, des Differential Revision: https://reviews.freebsd.org/D51926
2025-06-15Makefile: Hook MIT KRB5 into the buildCy Schubert
Add tests for MK_MITKRB5. If "yes" build MIT KRB5. If "no" build Heimdal. The default is MK_MITKRB5 = no, added by "krb5: Add build plumbing". At some point we will change the default to MK_MITKRB5 = yes. A ports exp-run will need to be successfully run first. Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D50815
2025-06-06build: remove the last vestiges of lint supportBrooks Davis
Commit 1cbb58886a47 (shipped in 12.0.0) removed all lint infrastructure. A bunch of NO_LINT definitions remained (perhaps as a bootstrapping measture). Remove them. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D50704
2024-07-15Remove residual blank line at start of MakefileWarner Losh
This is a residual of the $FreeBSD$ removal. MFC After: 3 days (though I'll just run the command on the branches) Sponsored by: Netflix
2023-08-21build{libcompat}: Pass UNIVERSE_TOOLCHAIN_PATH to the _lc_build-tools submakeJohn Baldwin
This fixes make UNIVERSE_TOOLCHAIN=yes with libcompats. Reviewed by: jrtc27 Differential Revision: https://reviews.freebsd.org/D41535
2023-08-16Remove $FreeBSD$: one-line sh patternWarner Losh
Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/
2023-08-11Makefile.libcompat: Fix DTRACE variableJessica Clarke
Back when Makefile.lib32 was turned into Makefile.libcompat, a typo was introduced; it should have been LIBCOMPATDTRACE, but instead gained a dollar sign in it as LIB$COMPATDTRACE (and with COMPATDTRACE not being defined, was equivalent to ${LIB:U${DTRACE}}). This then meant it was not converted to LIB${_LIBCOMPAT}DTRACE in 91d7edd549f5 ("Generalise libcompat to be a list rather than a single option") and instead left broken. Belatedly fix this long-standing seemingly-inconsequential bug. Fixes: dba75e9fa5a9 ("Move Makefile.lib32 to Makefile.libcompat and generalize it.")
2023-08-01Makefile.inc1: Enable requesting the universe toolchain.John Baldwin
make universe builds a cross toolchain under HOST_OBJTMP/tmp via the universe-toolchain target. However, doing a plain 'make buildworld' after a universe/tinderbox run (e.g. to reproduce a failure and test the fix for it), will try to build a new cross toolchain under OBJTMP/tmp which can be tedious. This commit adds a make variable (UNIVERSE_TOOLCHAIN) which can be used similar to CROSS_TOOLCHAIN to request an external toolchain. If this variable is set (value doesn't matter), the the universe toolchain is used as an external toolchain. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D40777
2023-07-25arm64 lib32: enable building of lib32 on arm64Mike Karels
Enable LIB32 option on aarch64, defaulting to YES; it had defaulted to "broken". Add required variables for how to compile lib32 on arm. Use /usr/include/arm for armv7 (32-bit) headers, analogous to /usr/include/i386 on amd64. Omit libomp from lib32; it is not supported on armv7. Reviewed by: jrtc27 Differential Revision: https://reviews.freebsd.org/D40945
2023-07-14Makefile.libcompat: Make quoting for CC/CXX/CPP more future-proofJessica Clarke
bmake's :Q is for quoting outside of double quotes, but here is inside double quotes, and as a result it ends up quoting characters that don't have a special meaning inside double quotes. On the surface this would seem harmless, but POSIX sh has a strange behaviour (differing from outside double quotes) that, inside double quotes, a backslash before a character that never has a special meaning inside double quotes is passed through. As a result, should LIB${_LIBCOMPAT}CFLAGS contain something like -DFOO\(x\)=x, we would form "... -DFOO\\\(x\\\)=x ...", which would be parsed as -DFOO\\(x\\)=x, since the parentheses are never special inside double quotes (but the backslash itself is), not the original -DFOO\(x\)=x as intended. Instead, construct the whole string as a bmake expression and use :Q on that, without the manual double quotes around everything. Note that the :L modifier lets you treat an expression like a variable expansion and apply modifiers to it, i.e. ${expr:L:...} is the same as tmp=expr ${tmp:...} (in essence, ignoring possible differences due to deferred substitution). Improves: 537f945fc89f ("Makefile.libcompat: Quote CFLAGS and CXXFLAGS for sub-make")
2023-07-14Makefile.libcompat: Be consistent about not installing includesJessica Clarke
Currently we only pass MK_INCLUDES=no for distribute and install, since it's only in LIB${_LIBCOMPAT}IMAKE, which means that we enable includes during libraries and thus install includes into worldtmp, despite it being shared these days across native and libcompats. This also means we're at risk of having headers needed for building against a libcompat that don't get installed to the system, but do end up being installed to worldtmp. In particular, lib/msun has different fenv.h for aarch64 and arm, so aarch64 will need arm's copy when it grows lib32 support, and this would be installed to worldtmp, but not to the system, meaning any programs that use fenv.h wouldn't be able to be built. Instead, be consistent, and don't install includes at all during any of the libcompat phases, so that we can detect these issues and ensure any needed headers are installed for both worldtmp and the system. Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D41030
2023-07-09Makefile.libcompat: Quote CFLAGS and CXXFLAGS for sub-makeJessica Clarke
Currently none of the words in these require quoting, but a future commit will add words that do, thus we should make sure to quote each word so the shell doesn't mangle them before calling the sub-make. (Note that :@var@expr@ is the bmake syntax for map, replacing each word with expr's evaluation, with var containing the input word) Reviewed by: emaste, brooks, jhb Differential Revision: https://reviews.freebsd.org/D40921
2023-06-28Generalise libcompat to be a list rather than a single optionJessica Clarke
Whilst the kernel can support any number of COMPAT_FOO, world can only build a single libfoo. Upstream this isn't such an issue, since the only option is lib32 anyway, but downstreams, such as CheriBSD, may wish to support multiple at the same time. Thus, adjust the top-level Makefiles to turn _LIBCOMPAT into a _LIBCOMPATS list that gets iterated over, and adjust bsd.compat.mk to support this use-case. For the normal NEED_COMPAT/WANT_COMPAT case, LIBCOMPATFOO remain set and refer to the requested compat's, preserving the current interface. For the top-level Makefiles those variables are no longer set (since there is no longer "the" compat) and only the per-compat ones are available. Reviewed by: brooks, jhb, imp Differential Revision: https://reviews.freebsd.org/D40571
2023-06-28Makefile.libcompat: Handle MK_FOO varying for native and compat archesJessica Clarke
Currently Makefile.libcompat queries a few MK_FOO variables to determine what is being built. However, it is plausible (and indeed, downstream in CheriBSD, this is the case) that these may vary between the native and the compat architecture. In order to correctly determine their values for the compat architecture, we need to defer their evaluation until we are in the compat sub-make where src.opts.mk will give us the right value for the compat MACHINE_ARCH. Reviewed by: brooks, jhb, imp Obtained from: CheriBSD Differential Revision: https://reviews.freebsd.org/D40570
2023-06-28Makefile.libcompat: Remove unused _LC_INCDIRSJessica Clarke
This is no longer referenced as of commit 724123b9f4d3 ("libcompat: Use WORLDTMP sysroot"). Reviewed by: brooks, jhb, imp Differential Revision: https://reviews.freebsd.org/D40569
2022-11-16libcompat: avoid installing include files twiceEd Maste
Previously some headers were getting installed twice, once as expected and then a second time as part of the compat32 library stage. Makefile.libcompat sets -DLIBRARIES_ONLY for the install make invocation which causes bsd.lib.mk to skip headers. However some headers are handled via bsd.prog.mk, which does not use LIBRARIES_ONLY. Explicitly set MK_INCLUDES=no. Reviewed by: brooks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D37413
2022-08-11Install working pkgconfig .pc files for compat librariesAlex Richardson
The default ones are install them to /usr/libdata/pkgconfig, and we can't use this path for compat libraries, so we use /usr/lib<suffix>/pkgconfigi here. Test Plan: grep -rn libdir= ./usr/lib32/pkgconfig/*.pc MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D34939
2022-07-01libcompat: Use WORLDTMP sysrootBrooks Davis
Now that -m32 is fixed, just install libs in ${WORLDTMP}/lib/lib32 and use the installed headers. Reviewed by: imp, jhb Obtained from: CheriBSD Differential Revision: https://reviews.freebsd.org/D34697
2022-02-02Makefile.libcompat: SortWarner Losh
Sort MK_BOOT before MK_CTF and remove now-useless NO_LINT while I'm here. Suggested by: brooks, emaste Sponsored by: Netflix
2022-02-02stand: Fix kboot issue on powerpc64 with MK_LIB32=yesWarner Losh
When MK_LIB32 is true, we descend into stand for make includes, make clean, etc. We shouldn't do this, so set MK_BOOT=no when we're building includes. Fixes: 6497250f6f7f PR: 261497 Sponsored by: Netflix Reviewed by: emaste, brooks (he suggested this) Differential Revision: https://reviews.freebsd.org/D34141
2021-12-09libcompat: Remove MIPS from list of compat librariesWarner Losh
Sponsored by: Netflix
2021-10-04ncurses: fix libcompat (lib32 for example) buildingBaptiste Daroussin
2021-08-04Prefer MK_SSP=no to SSP_CFLAGS=Mitchell Horne
It is more idiomatic. CFLAGS is only augmented with $SSP_CFLAGS when $MK_SSP != "no". Reviewed by: imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31401
2021-08-04mk: format some option listsMitchell Horne
Alphabetize and give each option its own line, ahead of making another change to these lists. This makes future diffs easier to read. Reviewed by: imp, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31399
2021-08-02Add build system support for ASAN+UBSAN instrumentationAlex Richardson
This adds two new options WITH_ASAN/WITH_UBSAN that can be set to enable instrumentation of all binaries with AddressSanitizer and/or UndefinedBehaviourSanitizer. This current patch is almost sufficient to get a complete buildworld with sanitizer instrumentation but in order to actually build and boot a system it depends on a few more follow-up commits. Reviewed By: brooks, kib, markj Differential Revision: https://reviews.freebsd.org/D31043
2021-08-01`make buildworld' with time logging for each stageWolfram Schneider
PR: 257141 Reviewed by: sjg,emaste Approved by: emaste Differential Revision: https://reviews.freebsd.org/D31154
2021-05-31libpmc: always generate libpmc_events.cMitchell Horne
The jevents build tool will create an empty table if it doesn't find any events, so we can remove the extra $MACHINE_CPUARCH checks. Reviewed by: gnn, ray, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30531
2021-01-07libcompat: remove redundant path for ncursesBaptiste Daroussin
Reported by: kevans
2021-01-07Rename NO_WERROR -> MK_WERROR=noAlex Richardson
As suggested in D27598. This also supports MK_WERROR.clang=no and MK_WERROR.gcc=no to support the existing NO_WERROR.<compiler> uses. Reviewed By: brooks Differential Revision: https://reviews.freebsd.org/D27601
2021-01-07Stop passing MK_WARNS=no for bootstrap toolsAlex Richardson
I got annoyed by the number of warnings that the CheriBSD build was emitting. It turns out that we are emitting lots of warnings during bootstrap because bootstrap tools are built with the default compiler flags and ignore the warnings flags that are set in bsd.sys.mk. Looking at git blame, it appears that MK_WARNS=no has been passed since rS112869, replacing the -DNO_WERROR option that was added in rS87775. This commit changes MK_WARNS=no back to -DNO_WERROR. We need to pass -DNO_WERROR, since the system compiler might have new warnings that we don't know about yet, and we shouldn't fail the build in that case. Reviewed By: imp, brooks Differential Revision: https://reviews.freebsd.org/D27598
2021-01-05ncurses: only keep the version with widechar supportBaptiste Daroussin
Only keep the widechar version of ncurses as libncursesw.so.9 Keep the old name to avoid breaking the ABI compatibility (the non widechar version libncurses.so.9 is not binary compatible with libncursesw.so.9) since all ports and base are already only linking against the widechar version we can simply remove libncurses.so.9 Since the .9 version only lived in the dev branch and never ended in a release, it is simply removed and not added to any binary compat package. Add symlinks to keep build time compatibility for anyone linking against -lncurses
2020-10-08Race in 32-bit fixedWarner Losh
Use install insteald of install.sh for 32-bit builds to fight races there. Reviewed by: markj Notes: svn path=/head/; revision=366541
2020-09-08Add WITH_/WITHOUT_CLEAN option to replace NO_CLEANEd Maste
This allows use of the standard src.conf configuration for controlling whether the tree is cleaned before build or not. The default is still to clean. Setting either NOCLEAN or NO_CLEAN will mention the new src.conf option. NOCLEAN remains a .warning, while for now NO_CLEAN is .info. Reviewed by: bdrewery (earlier version) MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D22762 Notes: svn path=/head/; revision=365439
2020-03-26Stop building libl and libyEmmanuel Vadot
Those libs aren't needed anymore so stop building them for the bootstrap tools or the compat libs. Reviewed by: bapt, emaste X-Differential Revision: D24171 Notes: svn path=/head/; revision=359324
2019-11-07libcompat: build 32-bit rtld and ldd as part of "everything"Brooks Davis
Alter bsd.compat.mk to set MACHINE and MACHINE_ARCH when included directly so MD paths in Makefiles work. In the process centralize setting them in LIBCOMPATWMAKEENV. Alter .PATH and CFLAGS settings in work when the Makefile is included. While here only support LIB32 on supported platforms rather than always enabling it and requiring users of MK_LIB32 to filter based TARGET/MACHINE_ARCH. The net effect of this change is to make Makefile.libcompat only build compatability libraries. Changes relative to r354449: Correct detection of the compiler type when bsd.compat.mk is used outside Makefile.libcompat. Previously it always matched the clang case. Set LDFLAGS including the linker emulation for mips where -m32 seems to be insufficent. Reviewed by: imp, kib (origional version in r354449) Obtained from: CheriBSD (conceptually) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D22251 Notes: svn path=/head/; revision=354491
2019-11-07Revert r354449: libcompat: build 32-bit rtld and ldd as part of "everything"Brooks Davis
Additional testing is required.. Notes: svn path=/head/; revision=354465
2019-11-07libcompat: build 32-bit rtld and ldd as part of "everything"Brooks Davis
Alter bsd.compat.mk to set MACHINE and MACHINE_ARCH when included directly so MD paths in Makefiles work. In the process centralize setting them in LIBCOMPATWMAKEENV. Alter .PATH and CFLAGS settings in work when the Makefile is included. While here only support LIB32 on supported platforms rather than always enabling it and requiring users of MK_LIB32 to filter based TARGET/MACHINE_ARCH. The net effect of this change is to make Makefile.libcompat only build compatability libraries. Reviewed by: imp, kib Obtained from: CheriBSD (conceptually) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D22251 Notes: svn path=/head/; revision=354449
2019-10-15Build compat libraries before "everything".Brooks Davis
This is required for us to link programs against compat versions of libraries. Reviewed by: bdrewery, jhb Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=353595
2019-10-15Move the per-ARCH definitions to bsd.compat.mk.Brooks Davis
This is the first step if refactoring the definitions to allow programs to be selectively linked against libcompat libraries. Reviewed by: bdrewery Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=353592
2019-10-11Centralize adding OBJCOPY=${XOBJCOPY} to LIB32WMAKEFLAGS.Brooks Davis
Reviewed by: emaste, imp Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D21983 Notes: svn path=/head/; revision=353449
2019-07-25libsysdecode: use the proper include directoryEd Maste
Reported by: cy Reviewed by: lwhsu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D21068 Notes: svn path=/head/; revision=350327
2019-07-25Workaround the build failure on platforms have lib32 after r350301Li-Wen Hsu
Error message: make[5]: make[5]: don't know how to make /usr/obj/usr/src/amd64.amd64/obj-lib32/tmp/sys/netinet/in.h. Stop make[5]: stopped in /usr/src/lib/libsysdecode Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=350322
2019-06-29Build lib32 libl. The library is built from usr.bin/lex/lib. It would beTijl Coosemans
better to move this directory to lib/libl, but this requires more extensive changes to Makefile.inc1. This simple fix can be MFCed quickly. PR: 238874 Reviewed by: imp MFC after: 3 days Notes: svn path=/head/; revision=349548
2018-11-12Use ...-freebsd13.0 in -target strings.Brooks Davis
Reported by: Mark Millard Notes: svn path=/head/; revision=340371
2018-11-03libcompat: disable retpoline when building build toolsEd Maste
These are built with the host toolchain which may not support retpoline. While here, move the MK_ overrides to a separate line and sort them alphabetically to support future changes. MFC with: r339511 Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=340099
2018-08-23Fix non-FreeBSD host lib32 build for TARGET=amd64Alex Richardson
When building on non-FreeBSD systems we need to pass an explicit target triple to clang otherwise it will attempt to build with the host triple. This also has advantages when building on a FreeBSD host: we now tell clang that we are targeting at least FreeBSD 12.0 instead of an older version so it can enable newer features. Reviewed By: brooks (mentor) Approved By: jhb (mentor) Differential Revision: https://reviews.freebsd.org/D16842 Notes: svn path=/head/; revision=338268
2018-08-03Install the 32-bit compat sanitizer libraries.John Baldwin
The lib32 build was already building the i386 version of the clang sanitizers (libclang_rt) but they were not being installed. This enables the installation. MK_TOOLCHAIN=no was originally added to the install make environment to disable includes so that NO_INCS could be removed. The MK_TOOLCHAIN in bsd.incs.mk was subsequently renamed to MK_INCLUDES, but bsd.lib.mk doesn't even include bsd.incs.mk when LIBRARIES_ONLY is defined which the install make environment for compat libs now defines. However, setting MK_TOOLCHAIN=no forced MK_CLANG=no which disabled libclang_rt during the install32 phase. Remove MK_TOOLCHAIN=no since LIBRARIES_ONLY is now sufficient. Since the libcompat environment overrides both LIBDIR and SHLIBDIR, libclang_rt/Makefile.inc has to set both variables to force the libraries to be installed to the location expected by the compiler. Reviewed by: bdrewery, dim MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D16574 Notes: svn path=/head/; revision=337270
2018-07-30Makefile.libcompat: correctly append to make variableEd Maste
Reported by: hselasky Pointy hat to: emaste Notes: svn path=/head/; revision=336908