aboutsummaryrefslogtreecommitdiff
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* Makefile: Support universe-toolchain on non-FreeBSDJessica Clarke2023-08-231-1/+13
| | | | | | | | | | | | | We currently pass MACHINE and MACHINE_ARCH as TARGET and TARGET_ARCH respectively for universe-toolchain, but on non-FreeBSD these may not have values that we understand (e.g. on Linux it will be x86_64 rather than amd64) for TARGET/TARGET_ARCH (note that we do support them for MACHINE/MACHINE_ARCH). Since the choice is a bit arbitrary and merely determines what LLVM's default triple will be, use amd64 on non-FreeBSD as a known-good default. Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D41545
* Remove $FreeBSD$: one-line sh patternWarner Losh2023-08-161-1/+0
| | | | Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/
* universe: Demote armv6 to an extra architecture.Warner Losh2023-07-281-0/+3
| | | | | | | | Per discussions over how to lighten the load of armv6, move it to an extra arch. You can still build TARGET_ARCH=armv6 if you desire, but it won't be built as part of 'make universe' without -DEXTRA_TARGETS. Sponsored by: Netflix
* Makefile.inc1: Add new buildetc and installetc targetsJessica Clarke2023-07-271-2/+2
| | | | | | | | | | | These implement the steps that etcupdate (and mergemaster) need in order to build their pristine trees, avoiding the need to use internal targets and variables. Additionally, buildetc includes the steps needed to build with BUILD_WITH_STRICT_TMPPATH enabled, since we need some host tools to be available during the various build and install steps. Reviewed by: jhb, imp Differential Revision: https://reviews.freebsd.org/D41205
* Makefile.inc1: Split _cleanworldtmp out from _worldtmpJessica Clarke2023-07-271-1/+1
| | | | | | | | | | | | | | This mirrors _cleanobj vs _obj, and will be used by etcupdate to ensure its build tree has host tools available when BUILD_WITH_STRICT_TMPPATH is enabled by default (whether in the source tree, like CheriBSD, or in a system config file). Note that due to line length the .MAKE .PHONY dependency line is split into two, one for the filtered WMAKE_TGTS and one for the filtered .ALLTARGETS. Reviewed by: brooks, jhb Differential Revision: https://reviews.freebsd.org/D41190
* Makefile: Automatically generate list of libcompat targetsJessica Clarke2023-07-271-2/+11
| | | | | Reviewed by: brooks, jhb Differential Revision: https://reviews.freebsd.org/D41179
* Move MACHINE/MACHINE_ARCH handling to sys.machine.mkSimon J. Gerraty2023-05-131-6/+2
| | | | | | | | | | | | | | | | | | | Rather than define the TARGETS and TARGET_ARCHES in src/Makefile put them in sys.machine.mk so they can also be leveraged by non-top-level builds. We have TARGET_MACHINE_LIST as the list of MACHINES we build for. For each MACHINE we have a MACHINE_ARCH_LIST_${MACHINE} and the first entry of each list is used as default for MACHINE_ARCH_${MACHINE} We can now remove a bunch of MACHINE_ARCH.* handling from local.sys.dirdeps*mk Reviewed by: imp Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D40083
* Add jobs.mk to allow for target-jobsSimon J. Gerraty2023-04-201-0/+10
| | | | | | | | | jobs.mk automates -j$JOB_MAX and capturing build log based on target. Compute a default for JOB_MAX in local.sys.mk Reviewed by: stevek, imp Differential Revision: https://reviews.freebsd.org/D39683
* Remove the riscv64sf architecture.John Baldwin2023-04-121-1/+1
| | | | | Reviewed by: jrtc27, arichardson, br, kp, imp, emaste Differential Revision: https://reviews.freebsd.org/D39496
* universe: Switch GCC toolchains to GCC 12.John Baldwin2023-01-271-8/+8
| | | | | Reviewed by: imp, emaste Differential Revision: https://reviews.freebsd.org/D38230
* Shell-escape assignments to PATH in the top-level makefilesAlex Richardson2023-01-201-3/+3
| | | | | | | | | | Since 16fbf0191243e7c9dff6615b1424b5d39186b36c PATH is no longer set to a hardcoded value on non-FreeBSD build hosts, so we can end up with spaces in $PATH. Instead of only escaping PATH I updated all `env PATH=` uses in the toplevel makefile. While many of these currently can't contain any special characters (since the build would have failed already), in theory this gets us closer to allowing build/source directory to contain e.g. spaces.
* Makefile: Avoid sanitizing PATH on non-FreeBSD systemsJake Freeland2023-01-191-0/+5
| | | | | | | | | | | | | | | | | | Allow the build process to find host binaries during the host-symlinks target when cross-building on non-FreeBSD systems. Whilst most non-FreeBSD systems have all the needed tools in /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin (the final path added by host-symlinks itself), Homebrew for macOS on Arm defaults to /opt/homebrew/bin, other more niche systems may also deviate and users may expect tools in a customised PATH to be picked up, unlike on FreeBSD where we want to ensure everything comes from base. In particular, (un)xz are needed from Homebrew on macOS, and thus cannot be found on Arm without this. Note that non-FreeBSD builds enforce BUILD_WITH_STRICT_TMPPATH, and so the actual main build steps will still use a sanitised PATH. Reviewed by: jrtc27, arichardson MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D37991
* Makefile: replace mergemaster references with etcupdateDries Michiels2022-10-061-2/+2
| | | | | | | | Similar to UPDATING and handbook changes, treat Makefile the same. PR: 260822 Approved by: jhb, philip Differential Revision: https://reviews.freebsd.org/D36877
* Switch to GCC 9 for the GCC tinderbox.John Baldwin2022-05-201-5/+8
| | | | | | | This also adds arm and riscv to the GCC tinderbox. Reviewed by: emaste (older version) Differential Revision: https://reviews.freebsd.org/D26202
* cleankernel: A target to delete the kernel compile fileWarner Losh2022-02-111-3/+3
| | | | | | | | | | With the meta-build, it's always a NO_CLEAN build. Provide a way to remove so one can rebuild from scratch. 'cleankernel' will delete the kernel and modules object directories. Document this in build(7). Sponsored by: Netflix Reviewed by: debdrup, markj Differential Revision: https://reviews.freebsd.org/D32978
* Remove quotes around Makefile .error/.warn/.info stringsEd Maste2022-01-221-1/+1
| | | | | | | | The text after .error et al is emitted verbatim. Reviewed by: sjg Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33904
* Add list-old-{dirs,files,libs} targets.John Baldwin2022-01-111-0/+4
| | | | | | | | | | | | | | These targets generate a raw list of the candidate old files roughly corresponding to the values of OLD_DIRS, OLD_FILES, and OLD_LIBS. Currently list-old-files also includes uncompressed manpages in addition to compressed manpages. Use these targets in the implementation of check-old-* and delete-old-* to replace duplicated logic. Reviewed by: imp, emaste Sponsored by: The University of Cambridge, Google Inc. Differential Revision: https://reviews.freebsd.org/D33327
* libsoft: Remove targets to generate libsoftWarner Losh2022-01-071-2/+2
| | | | | | Remove the targets needed to make and install libsoft. Sponsored by: Netflix
* Let powerpc64le live as not experimental architecture.Piotr Kubaj2021-12-291-2/+2
| | | | | | | | | | Summary: It's currently just as stable as powerpc64, with more ports working. Reviewers: alfredo, bdragon, luporl, jhibbits, #manpages Subscribers: imp Differential Revision: https://reviews.freebsd.org/D33610
* Test various header files to ensure they can be included by themselves.Warner Losh2021-12-151-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | A number of header files in sys/* have, going back to 7th Edition Unix in 1979, reqiured other files (like sys/types.h) to compile. Likewise the 4BSD networking code has had prerequisites. However, going back to around the turn of the 21st century, other systems have made them be independently include-able (wide-spread header include protection post-dates 7th edition Unix by maybe 3 or so years judging from USENET source postings). Start down the path of making them all independently include-able by creating this test that fails buildworld when they are not. The file 'badfiles.inc' contains a list of the currently broken files that cannot be included w/o any prerequisites. As files are fixed, 'make badfiles.inc' should be re-run to remove them from the list. Note: All files that start with an underscore are considered internal and not tested. Please note: once a file is removed from badfiles.inc, it must pass on all architectures. Buildworld through at least the _includes target is needed to ensure its working (though a buildkernel should also be done on all architectures as well). Sponsored by: Netflix Reviewed by: brooks, markj Differential Revision: https://reviews.freebsd.org/D32498
* Remove mips from universeWarner Losh2021-11-191-5/+1
| | | | | Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D32851
* Revert "Fix native-xtools build"Bryan Drewery2021-08-031-1/+1
| | | | | | This reverts commit 36269b82318280ef184c953b90674f5905e0f53f. This had an unintended change included.
* Fix native-xtools buildBryan Drewery2021-08-031-1/+1
| | | | | | Fixes https://github.com/freebsd/poudriere/issues/894 Fixes: d0c737e18 ("Makefile: Fix MAKEOBJDIRPREFIX command-line") X-MFC-With: d0c737e18
* Makefile: Fix MAKEOBJDIRPREFIX command-line variable check for bmakeJessica Clarke2021-07-211-1/+1
| | | | | | | | | | | | | | Unlike the old fmake, running make FOO=bar when using bmake doesn't put FOO=bar in .MAKEFLAGS at the top level, it instead just puts FOO in .MAKEOVERRIDES and the full MAKEFLAGS will be formed for sub-makes. Moreover, this only applies for sub-makes in rules, so this doesn't apply to those in shell assignments. This means that the current check does not catch make MAKEOBJDIRPREFIX=..., only those defined in config files. Thus we must also check .MAKEOVERRIDES explicitly. Reviewed by: sjg MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31015
* Remove 'make update'.John Baldwin2021-06-111-2/+1
| | | | | | | | | | | | In the CVS days this used be a wrapper around either CVS or CVSup and used to support updating src, doc, and ports checkouts. With the move to subversion this only supported updating src and was itself a wrapper around 'svn update'. With Git, users are probably better off using appropriate Git commands directly to update without needing an explicit make target as a wrapper. Reviewed by: bcr, imp, emaste Differential Revision: https://reviews.freebsd.org/D30736
* Fix 'make bmake' top-level bootstrapping.Bryan Drewery2021-03-061-1/+1
| | | | Fixes: ee10666327b62
* Rename NO_WERROR -> MK_WERROR=noAlex Richardson2021-01-071-1/+1
| | | | | | | | 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
* Makefile: re-wordsmith the blurb about xtoolchain portsKyle Evans2020-11-141-8/+10
| | | | | | | | | | | | | | | The new version only includes a specific version once, and uses the one that's currently advised by tinderbox: -gcc6. It also advises just installing the pkg, but mentions in a side-note at the end where to find the source in the ports tree. Reviewed by: jrtc27 Suggested by: jhb (use default from tinderbox) Differential Revision: https://reviews.freebsd.org/D26820 Notes: svn path=/head/; revision=367688
* pkgbase: Add incremental packagesEmmanuel Vadot2020-11-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a new target update-packages which will create the new packages compared to the last run. This is how to use it: At this point we cut a release $ make buildworld ... $ make buildkernel $ make packages There is now a PKG_VERSION directory with latest link pointing to it Distribute the packages to server $ something something that update the source tree $ make buildworld ... $ make buildkernel $ make update-packages You know have a PKG_VERSION directory in the REPODIR and latest link pointing to it. In PKG_VERSION dir only the packages which differs from the latest run are named PKG_VERSION, otherwise the old packages are there. The process is : Build the new packages in the PKG_VERSION directory Compare the internal data with the PKG_VERSION_FROM version. The comparison is done by checking the internal hash of the packages. By default PKG_VERSION_FROM is set to what the latest link points to. If the old and new version matches, we rm the new package and cp the old one. Differential Revision: https://reviews.freebsd.org/D25984 Notes: svn path=/head/; revision=367277
* Makefile: add a small blurb about building with gcc xtoolchainKyle Evans2020-10-161-0/+9
| | | | | | | | | | The key details are to install the appropriate flavor of devel/freebsd-gcc9 and pass CROSS_TOOLCHAIN while building. Suggested by: kib Notes: svn path=/head/; revision=366766
* Eliminate building LINT makefilesWarner Losh2020-10-091-10/+0
| | | | | | | | | | | LINT config files are about to be checked in directly. Eliminate building them by hand here from NOTES files. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D26540 Notes: svn path=/head/; revision=366555
* [PowerPC64LE] Set up powerpc.powerpc64le architectureBrandon Bergren2020-09-221-1/+1
| | | | | | | | | | | | | | | | | | This is the initial set up for PowerPC64LE. The current plan is for this arch to remain experimental for FreeBSD 13. This started as a weekend learning project for me and kinda snowballed from there. (More to follow momentarily.) Reviewed by: imp (earlier version), emaste Sponsored by: Tag1 Consulting, Inc. Differential Revision: https://reviews.freebsd.org/D26399 Notes: svn path=/head/; revision=366032
* Fix typo in r364325 that broke tinderbox with -DBUILD_WITH_STRICT_TMPPATHAlex Richardson2020-08-251-1/+1
| | | | | | | | | | | ${TARGET_ARCH} is empty here which results in empy MAKE_PARAMS being passed to the buildkernel phase. This breaks the build when using the strict TMPPATH since cc will not be included in $PATH. Reviewed By: jhb Notes: svn path=/head/; revision=364764
* Add a USE_GCC_TOOLCHAINS knob to make universe.John Baldwin2020-08-171-14/+24
| | | | | | | | | | | | | | | | | | This uses GCC toolchains instead of LLVM on architectures supported by GCC. Currently this uses GCC 6 on aarch64, amd64, i386, and mips. Although this does also try to use GCC 6 on powerpc, it is always skipped for now since a powerpc-gcc6 package is not available and the structure of make universe makes it hard to skip a subset of arches for a target. This should be short-lived as freebsd-gcc9 does include a powerpc-gcc9 package so powerpc should work once this switches to GCC 9. Discussed with: emaste Differential Revision: https://reviews.freebsd.org/D25732 Notes: svn path=/head/; revision=364325
* Use universe-toolchain config(8)Bryan Drewery2020-04-291-0/+1
| | | | | | | | | | | | | | | | | This is a temporary hack to aid with config(8) changing in r360443. It will not work for all cases. env PATH is used because universe-toolchain is only built when worlds are built, and then only if clang is needed, so it may not exist. universe-toolchain needs to be expanded to always be built, inspected to remove non-cross-build-safe tools, used for buildworld/buildkernel, and potentially incremental build support. Sponsored by: Dell EMC Notes: svn path=/head/; revision=360453
* Add powerpcspe to the EXTRA_TARGETSWarner Losh2020-03-311-3/+4
| | | | | | | | | | | | Currently, powerpcspe is broken with clang. Add it to the EXTRA_TARGETS until that's fixed. Reviewed by: brooks, bdrewery, emaste (LGTM) MFC After: 3 days Differential Revision: https://reviews.freebsd.org/D24212 Notes: svn path=/head/; revision=359497
* Fix make kernels to match original commit messageWarner Losh2020-03-311-1/+1
| | | | | | | | | | | | | | | | | | | make kernels was originally documented (in commit r295099) as the same as make universe -DJUST_BUILD_KERNELS. However, it used the UNIVERSE_TARGET=buildkernel which is subtly different in that it also builds the toolchains and doesn't build the LINT modules unless they happened to already exist in the tree. This unbreaks POLA and just builds the kernels, including LINT, now rather than all that other stuff as well. When the commit originally happened, the two just differed by the LINT bug. r335711 introduced the universe dependency on the toolchain that wasn't present before, which diverged the two further. This restores the original intent of r295099. Reviewed by: brooks, bdrewery, emaste (LGTM) MFC After: 3 days Differential Revision: https://reviews.freebsd.org/D24212 Notes: svn path=/head/; revision=359495
* Make universe configuration more consistent with rest of systemWarner Losh2020-03-311-10/+17
| | | | | | | | | | | | | | | Add 'WITHOUT_WORLDS' and 'WITHOUT_KERNELS' as aliases for the inconsistently named MAKE_JUST_KERNELS and MAKE_JUST_WORLDS respectively. I always forget the MAKE_ part (or is it BUILD_), and it's inconsistent with everything else. Document the new things, but leave speculation of any eventual MAKE_JUST_* deprecation out of the manuals and comments. Reviewed by: brooks, bdrewery, emaste (LGTM) MFC After: 3 days Differential Revision: https://reviews.freebsd.org/D24212 Notes: svn path=/head/; revision=359494
* Disable rarely used architecture variants in make universe by default.John Baldwin2020-03-241-5/+6
| | | | | | | | | | | | | | | | If EXTRA_TARGETS is defined, build all supported architecture variants. By default, build architecture variants needed to provide code coverage or that are commonly used. Use this to disable building of all the hard-float and little-endian MIPS architecture variants along with n32 by default. Reviewed by: rpokala Discussed with: imp, emaste Differential Revision: https://reviews.freebsd.org/D24178 Notes: svn path=/head/; revision=359275
* Use Clang and LLD as the default toolchain for MIPSAlex Richardson2020-03-231-5/+5
| | | | | | | | | | | | Now that we have updated the in-tree version of LLVM to 10.0, we have all the necessary LLVM changes to use Clang+LLD as the default toolchain for MIPS. Relnotes: yes Reviewed By: emaste, jhb, brooks, kevans Differential Revision: https://reviews.freebsd.org/D23204 Notes: svn path=/head/; revision=359233
* Per the firm plan, start to remove sparc64Warner Losh2020-02-021-5/+3
| | | | | | | | | | The sparc64 architecture is being removed from FreeBSD 13, starting now. This removes it from the top level only. It is the only architecture that didn't see substantial work after the call to get things working with the external toolchain. Notes: svn path=/head/; revision=357407
* Use clang and lld as the default toolchain for RISCV.John Baldwin2020-01-081-5/+2
| | | | | | | | | | | | | | - Enable clang and lld as system toolchains. - Don't use external GCC for universe by default. - Re-enable riscv64sf since it builds fine with clang + lld. Reviewed by: emaste, mhorne Relnotes: yes Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D23089 Notes: svn path=/head/; revision=356499
* Don't fail universe kernel stage for TARGET_ARCHes without a kernel config.John Baldwin2020-01-071-0/+1
| | | | | | | | | | | | | | | This fixes a regression in r356418 where the entire universe would fail early due to an undefined make target when a given TARGET_ARCH had no associated kernel configs. This is true for all of the hard-float mips TARGET_ARCHes currently. Pointy hat to: me Reviewed by: emaste MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D23071 Notes: svn path=/head/; revision=356478
* Remove support for using GCC 4.2.1 from make tinderbox.John Baldwin2020-01-071-12/+4
| | | | | | | | Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D23054 Notes: svn path=/head/; revision=356452
* Enable powerpc in make tinderbox using clang instead of GCC.John Baldwin2020-01-061-7/+3
| | | | | | | | | | | powerpcspe is disabled for now until clang/llvm issues with spe have been fixed. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D23031 Notes: svn path=/head/; revision=356419
* Only build kernels for enabled TARGET_ARCHes in make universe/tinderbox.John Baldwin2020-01-061-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | Previously, all of the kernels for a given TARGET were built if that target was enabled. This was implemented by having each kernel built via a universe_kernconf_<KERNEL> target that was depended on by a universe_kernconfs target. However, this meant that if one did a build with a limited set of TARGET_ARCH values for a given TARGET, kernels could be built for which we hadn't built a world or toolchain. For example, 'make TARGETS=mips TARGET_ARCHES_mips=mips64' would build mips32 kernels. Fix this by adding an extra layer of indirection in the kernel make targets. universe_kernconf_<KERNEL> is now a dependency of a new universe_kernconfs_<TARGET_ARCH>. universe_kernconfs in turn depends on a list of universe_kernconfs_<target_arch> values, but only the values enabled in TARGET_ARCHES_<TARGET>. Reviewed by: imp MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D23031 Notes: svn path=/head/; revision=356418
* Use the freebsd-gcc6 toolchains instead of powerpc64-xtoolchain-gcc.John Baldwin2020-01-041-9/+9
| | | | | | | | Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D23029 Notes: svn path=/head/; revision=356344
* Add the missing trailing '/' when setting TARGET_ARCH from TARGETAndrew Turner2020-01-021-1/+1
| | | | | | | | | This should fix the build when setting TARGET but not TARGET_ARCH. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=356269
* Remove arm/arm as a valid target.Warner Losh2020-01-021-2/+1
| | | | | | | | | | | | | | | | | | | | | | | TARGET=arm now defaults to TARGET_ARCH=armv7 TARGET_ARCH=arm is no longer valid. Bump __FreeBSD_version to 1300073 Tested with make universe. Any stale LINT-V5 config files remaining in the tree will fail the universe build. However, LINT-V5 was removed in r355119. This retirement has been planned since last summer. The armv5 port is fragile: it works OK for some peeople, and fails badly for others. There's a number of subtle bugs in busdma, pmap and other MD parts of thee system that present themselves under load or in unusual circumstances (like fsck after a crash). stable/8, branched 10 years ago, was the last reliable release. Since the support burden is larger then the benefit, the consensus view is armv5 should be removed from the tree. Discussed with: arm@ mailing list and arm developer community. Notes: svn path=/head/; revision=356263
* Take arm.arm (armv5) out of universeConrad Meyer2019-11-031-1/+2
| | | | | | | | | | It's on the chopping block in two months, the CI tinderbox doesn't bother with it anymore either, and buildworld fails today due to an issue linking clang. It's not worth investigating and it just eats up CPU cycles running universe builds. Notes: svn path=/head/; revision=354290