]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/build/mk/Makefile.boot
amd64: use register macros for gdb_cpu_getreg()
[FreeBSD/FreeBSD.git] / tools / build / mk / Makefile.boot
1 # $FreeBSD$
2
3 CFLAGS+=        -I${WORLDTMP}/legacy/usr/include
4 DPADD+=         ${WORLDTMP}/legacy/usr/lib/libegacy.a
5 LDADD+=         -legacy
6 LDFLAGS+=       -L${WORLDTMP}/legacy/usr/lib
7
8 .if ${.MAKE.OS} != "FreeBSD"
9 # On MacOS using a non-mac ar will fail the build, similarly on Linux using
10 # nm may not work as expected if the nm for the target architecture comes in
11 # $PATH before a nm that supports the host architecture.
12 # To ensure that host binary compile as expected we use the tools from /usr/bin.
13 AR:=    /usr/bin/ar
14 RANLIB:=        /usr/bin/ranlib
15 NM:=    /usr/bin/nm
16
17 # Don't use lorder and tsort since lorder is not installed by default on most
18 # Linux systems and the FreeBSD lorder does not work on Linux. For the bootstrap
19 # tools the order of the .o files should not matter since we only care about
20 # a few individual files (and might soon require linking with lld anyway)
21 LORDER:=echo
22 TSORT:=cat
23 # When using cat as tsort we can't pass -q:
24 TSORTFLAGS:=
25
26 # Avoid stale dependecy warnings:
27 LIBC:=
28 LIBZ:=
29 LIBM:=
30 LIBUTIL:=
31 LIBCPLUSPLUS:=
32 LIBARCHIVE:=
33 LIBPTHREAD:=
34 LIBMD:=${WORLDTMP}/legacy/usr/lib/libmd.a
35 LIBNV:=${WORLDTMP}/legacy/usr/lib/libmd.a
36 LIBSBUF:=${WORLDTMP}/legacy/usr/lib/libsbuf.a
37 LIBY:=${WORLDTMP}/legacy/usr/lib/liby.a
38 LIBL:=${WORLDTMP}/legacy/usr/lib/libl.a
39 LIBROKEN:=${WORLDTMP}/legacy/usr/lib/libroken.a
40 LIBDWARF:=${WORLDTMP}/legacy/usr/lib/libdwarf.a
41 LIBELF:=${WORLDTMP}/legacy/usr/lib/libelf.a
42
43 # Add various -Werror flags to catch missing function declarations
44 CFLAGS+=        -Werror=implicit-function-declaration -Werror=implicit-int \
45                 -Werror=return-type -Wundef
46 CFLAGS+=        -DHAVE_NBTOOL_CONFIG_H=1
47 CFLAGS+=        -I${SRCTOP}/tools/build/cross-build/include/common
48
49 # b64_pton and b64_ntop is in libresolv on MacOS and Linux:
50 # TODO: only needed for uuencode and uudecode
51 LDADD+=-lresolv
52
53 .if ${.MAKE.OS} == "Linux"
54 CFLAGS+=        -I${SRCTOP}/tools/build/cross-build/include/linux
55 CFLAGS+=        -std=gnu99 -D_GNU_SOURCE=1
56 # Needed for sem_init, etc. on Linux (used by usr.bin/sort)
57 LDADD+= -pthread
58
59 .elif ${.MAKE.OS} == "Darwin"
60 CFLAGS+=        -D_DARWIN_C_SOURCE=1
61 CFLAGS+=        -I${SRCTOP}/tools/build/cross-build/include/mac
62 # The macOS ar and ranlib don't understand all the flags supported by the
63 # FreeBSD and Linux ar/ranlib
64 ARFLAGS:=       -crs
65 RANLIBFLAGS:=
66
67 # to get libarchive (needed for elftoolchain)
68 # MacOS ships /usr/lib/libarchive.dylib but doesn't provide the headers
69 CFLAGS+=        -idirafter ${SRCTOP}/contrib/libarchive/libarchive
70 .else
71 .error "Unsupported build OS: ${.MAKE.OS}"
72 .endif
73 .endif # ${.MAKE.OS} != "FreeBSD"
74
75 # we do not want to capture dependencies referring to the above
76 UPDATE_DEPENDFILE= no
77
78 # When building host tools we should never pull in headers from the source sys
79 # directory to avoid any ABI issues that might cause the built binary to crash.
80 # The only exceptions to this are sys/cddl/compat for dtrace bootstrap tools and
81 # sys/crypto for libmd bootstrap.
82 # We have to skip this check during make obj since bsd.crunchgen.mk will run
83 # make obj on every directory during the build-tools phase.
84 .if !make(obj)
85 .if !empty(CFLAGS:M*${SRCTOP}/sys)
86 .error Do not include $${SRCTOP}/sys when building bootstrap tools. \
87     Copy the header to $${WORLDTMP}/legacy in tools/build/Makefile instead. \
88     Error was caused by Makefile in ${.CURDIR}
89 .endif
90
91 # ${SRCTOP}/include should also never be used to avoid ABI issues
92 .if !empty(CFLAGS:M*${SRCTOP}/include*)
93 .error Do not include $${SRCTOP}/include when building bootstrap tools. \
94     Copy the header to $${WORLDTMP}/legacy in tools/build/Makefile instead. \
95     Error was caused by Makefile in ${.CURDIR}
96 .endif
97 .endif
98
99 # GCC doesn't allow silencing warn_unused_result calls with (void) casts.
100 CFLAGS.gcc+=-Wno-unused-result