don't build kernel twice
[unleashed.git] / Makefile
blob92b4ac4ba1ac927200ace3f3467260af84347569
1 SUBDIR = bin \
2 boot \
3 etc \
4 include \
5 kernel \
6 lib \
7 libexec \
8 share
10 .if !make(build) && !make(gen-config)
11 .if !exists(${.CURDIR}/cfgparam.mk)
12 .error run make gen-config to generate cfgparam.mk
13 .endif
14 .include "cfgparam.mk"
15 .endif
17 .if make(build) && !defined(DESTDIR)
18 .MAKEFLAGS+= DESTDIR=${.CURDIR}/proto/root_i386
19 .endif
20 build::
21 .if !exists(${.CURDIR}/cfgparam.mk)
22 ${.MAKE} gen-config
23 .endif
24 ${.MAKE} obj
25 ${.MAKE} -C include # kernel/ depends on these; build separately
26 ${.MAKE}
27 ${.MAKE} install
28 ${.MAKE} -C lib build32 # special multiarch target
29 ${.MAKE} -C usr install # dmake expects libs to already be in DESTDIR
30 ${.MAKE} -C tools/postbuild clean obj
31 ${.MAKE} -C tools/postbuild
33 .include <unleashed.mk>
34 .include <subdir.mk>
36 cleandir: clean_artifacts clean_tools clean_cfgparam
37 clean_artifacts::
38 rm -rf ${.CURDIR}/proto/root_i386 ${.CURDIR}/packages/i386/nightly/repo.redist
39 # tools/ is not in SUBDIR
40 clean_tools::
41 ${.MAKE} -C tools cleandir
42 # FIXME this is pretty dumb: we need cfgparam.mk to clean some subdirs. this is
43 # because eg. include/ has additional subdirs based on some config...
44 clean_cfgparam:: ${SUBDIR}
45 rm -f ${.CURDIR}/cfgparam.mk ${.CURDIR}/usr/src/Makefile.cfgparam ${.CURDIR}/include/sys/cfgparam.h
48 # Config related support
51 .if !empty(BUILD_ARCH)
52 CFGARCH=${BUILD_ARCH}
53 .elif ${MACHINE} == "i86pc" || ${MACHINE} == "i386" || ${MACHINE} == "amd64"
54 CFGARCH=x86
55 .elif ${MACHINE} == "sparc"
56 CFGARCH=sparc
57 .else
58 .error "Unknown machine architecture ${MACHINE}; override it via BUILD_ARCH"
59 .endif
61 CFGFILE=arch/${CFGARCH}/Sconfig
63 gen-config::
64 ${.MAKE} -C tools obj
65 ${.MAKE} -C tools
66 ${.CURDIR}/tools/mkconfig/obj/mkconfig -I _SYS_CFGPARAM_H -H -o include/sys/cfgparam.h ${CFGFILE}
67 ${.CURDIR}/tools/mkconfig/obj/mkconfig -m -o usr/src/Makefile.cfgparam ${CFGFILE}
68 ${.CURDIR}/tools/mkconfig/obj/mkconfig -M -o cfgparam.mk ${CFGFILE}