Advertisement
Guest User

Untitled

a guest
Sep 17th, 2014
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 19.56 KB | None | 0 0
  1. #
  2. # $FreeBSD: stable/10/Makefile 266383 2014-05-18 00:21:14Z ian $
  3. #
  4. # The user-driven targets are:
  5. #
  6. # universe            - *Really* build *everything* (buildworld and
  7. #                       all kernels on all architectures).
  8. # tinderbox           - Same as universe, but presents a list of failed build
  9. #                       targets and exits with an error if there were any.
  10. # buildworld          - Rebuild *everything*, including glue to help do
  11. #                       upgrades.
  12. # installworld        - Install everything built by "buildworld".
  13. # world               - buildworld + installworld, no kernel.
  14. # buildkernel         - Rebuild the kernel and the kernel-modules.
  15. # installkernel       - Install the kernel and the kernel-modules.
  16. # installkernel.debug
  17. # reinstallkernel     - Reinstall the kernel and the kernel-modules.
  18. # reinstallkernel.debug
  19. # kernel              - buildkernel + installkernel.
  20. # kernel-toolchain    - Builds the subset of world necessary to build a kernel
  21. # kernel-toolchains   - Build kernel-toolchain for all universe targets.
  22. # doxygen             - Build API documentation of the kernel, needs doxygen.
  23. # update              - Convenient way to update your source tree(s).
  24. # check-old           - List obsolete directories/files/libraries.
  25. # check-old-dirs      - List obsolete directories.
  26. # check-old-files     - List obsolete files.
  27. # check-old-libs      - List obsolete libraries.
  28. # delete-old          - Delete obsolete directories/files.
  29. # delete-old-dirs     - Delete obsolete directories.
  30. # delete-old-files    - Delete obsolete files.
  31. # delete-old-libs     - Delete obsolete libraries.
  32. # targets             - Print a list of supported TARGET/TARGET_ARCH pairs
  33. #                       for world and kernel targets.
  34. # toolchains          - Build a toolchain for all world and kernel targets.
  35. # xdev                - xdev-build + xdev-install for the architecture
  36. #                       specified with XDEV and XDEV_ARCH.
  37. # xdev-build          - Build cross-development tools.
  38. # xdev-install        - Install cross-development tools.
  39. #
  40. # "quick" way to test all kernel builds:
  41. #   _jflag=`sysctl -n hw.ncpu`
  42. #   _jflag=$(($_jflag * 2))
  43. #   [ $_jflag -gt 12 ] && _jflag=12
  44. #   make universe -DMAKE_JUST_KERNELS JFLAG=-j${_jflag}
  45. #
  46. # This makefile is simple by design. The FreeBSD make automatically reads
  47. # the /usr/share/mk/sys.mk unless the -m argument is specified on the
  48. # command line. By keeping this makefile simple, it doesn't matter too
  49. # much how different the installed mk files are from those in the source
  50. # tree. This makefile executes a child make process, forcing it to use
  51. # the mk files from the source tree which are supposed to DTRT.
  52. #
  53. # Most of the user-driven targets (as listed above) are implemented in
  54. # Makefile.inc1.  The exceptions are universe, tinderbox and targets.
  55. #
  56. # If you want to build your system from source be sure that /usr/obj has
  57. # at least 1GB of diskspace available.  A complete 'universe' build requires
  58. # about 15GB of space.
  59. #
  60. # For individuals wanting to build from the sources currently on their
  61. # system, the simple instructions are:
  62. #
  63. # 1.  `cd /usr/src'  (or to the directory containing your source tree).
  64. # 2.  Define `HISTORICAL_MAKE_WORLD' variable (see README).
  65. # 3.  `make world'
  66. #
  67. # For individuals wanting to upgrade their sources (even if only a
  68. # delta of a few days):
  69. #
  70. #  1.  `cd /usr/src'       (or to the directory containing your source tree).
  71. #  2.  `make buildworld'
  72. #  3.  `make buildkernel KERNCONF=YOUR_KERNEL_HERE'     (default is GENERIC).
  73. #  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE'   (default is GENERIC).
  74. #       [steps 3. & 4. can be combined by using the "kernel" target]
  75. #  5.  `reboot'        (in single user mode: boot -s from the loader prompt).
  76. #  6.  `mergemaster -p'
  77. #  7.  `make installworld'
  78. #  8.  `mergemaster'        (you may wish to use -i, along with -U or -F).
  79. #  9.  `make delete-old'
  80. # 10.  `reboot'
  81. # 11.  `make delete-old-libs' (in case no 3rd party program uses them anymore)
  82. #
  83. # See src/UPDATING `COMMON ITEMS' for more complete information.
  84. #
  85. # If TARGET=machine (e.g. ia64, sparc64, ...) is specified you can
  86. # cross build world for other machine types using the buildworld target,
  87. # and once the world is built you can cross build a kernel using the
  88. # buildkernel target.
  89. #
  90. # Define the user-driven targets. These are listed here in alphabetical
  91. # order, but that's not important.
  92. #
  93. # Targets that begin with underscore are internal targets intended for
  94. # developer convenience only.  They are intentionally not documented and
  95. # completely subject to change without notice.
  96. #
  97. # For more information, see the build(7) manual page.
  98. #
  99. TGTS=   all all-man buildenv buildenvvars buildkernel buildworld \
  100.     check-old check-old-dirs check-old-files check-old-libs \
  101.     checkdpadd clean cleandepend cleandir \
  102.     delete-old delete-old-dirs delete-old-files delete-old-libs \
  103.     depend distribute distributekernel distributekernel.debug \
  104.     distributeworld distrib-dirs distribution doxygen \
  105.     everything hier hierarchy install installcheck installkernel \
  106.     installkernel.debug packagekernel packageworld \
  107.     reinstallkernel reinstallkernel.debug \
  108.     installworld kernel-toolchain libraries lint maninstall \
  109.     obj objlink regress rerelease showconfig tags toolchain update \
  110.     _worldtmp _legacy _bootstrap-tools _cleanobj _obj \
  111.     _build-tools _cross-tools _includes _libraries _depend \
  112.     build32 builddtb distribute32 install32 xdev xdev-build xdev-install \
  113.  
  114. TGTS+=  ${SUBDIR_TARGETS}
  115.  
  116. BITGTS= files includes
  117. BITGTS:=${BITGTS} ${BITGTS:S/^/build/} ${BITGTS:S/^/install/}
  118. TGTS+=  ${BITGTS}
  119.  
  120. .ORDER: buildworld installworld
  121. .ORDER: buildworld distributeworld
  122. .ORDER: buildworld buildkernel
  123. .ORDER: buildkernel installkernel
  124. .ORDER: buildkernel installkernel.debug
  125. .ORDER: buildkernel reinstallkernel
  126. .ORDER: buildkernel reinstallkernel.debug
  127.  
  128. PATH=   /sbin:/bin:/usr/sbin:/usr/bin
  129. MAKEOBJDIRPREFIX?=  /usr/obj
  130. _MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} \
  131.     ${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} __MAKE_CONF=${__MAKE_CONF} \
  132.     -f /dev/null -V MAKEOBJDIRPREFIX dummy
  133. .if !empty(_MAKEOBJDIRPREFIX)
  134. .error MAKEOBJDIRPREFIX can only be set in environment, not as a global\
  135.     (in make.conf(5)) or command-line variable.
  136. .endif
  137.  
  138. # We often need to use the tree's version of make to build it.
  139. # Choices add to complexity though.
  140. # We cannot blindly use a make which may not be the one we want
  141. # so be exlicit - until all choice is removed.
  142. .if !defined(WITHOUT_BMAKE)
  143. WANT_MAKE=  bmake
  144. .else
  145. WANT_MAKE=  fmake
  146. .endif
  147. MYMAKE=     ${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}/${WANT_MAKE}
  148. .if defined(.PARSEDIR)
  149. HAVE_MAKE=  bmake
  150. .else
  151. HAVE_MAKE=  fmake
  152. .endif
  153. .if exists(${MYMAKE})
  154. SUB_MAKE:= ${MYMAKE} -m ${.CURDIR}/share/mk
  155. .elif ${WANT_MAKE} != ${HAVE_MAKE} || ${WANT_MAKE} != "bmake"
  156. # It may not exist yet but we may cause it to.
  157. # In the case of fmake, upgrade_checks may cause a newer version to be built.
  158. SUB_MAKE= `test -x ${MYMAKE} && echo ${MYMAKE} || echo ${MAKE}` \
  159.     -m ${.CURDIR}/share/mk
  160. .else
  161. SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk
  162. .endif
  163.  
  164. _MAKE=  PATH=${PATH} ${SUB_MAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH}
  165.  
  166. # Guess machine architecture from machine type, and vice versa.
  167. .if !defined(TARGET_ARCH) && defined(TARGET)
  168. _TARGET_ARCH=   ${TARGET:S/pc98/i386/}
  169. .elif !defined(TARGET) && defined(TARGET_ARCH) && \
  170.     ${TARGET_ARCH} != ${MACHINE_ARCH}
  171. _TARGET=        ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/}
  172. .endif
  173. # Legacy names, for another transition period mips:mips(n32|64)?eb -> mips:mips\1
  174. .if defined(TARGET) && defined(TARGET_ARCH) && \
  175.     ${TARGET} == "mips" && ${TARGET_ARCH:Mmips*eb}
  176. _TARGET_ARCH=       ${TARGET_ARCH:C/eb$//}
  177. .warning "TARGET_ARCH of ${TARGET_ARCH} is deprecated in favor of ${_TARGET_ARCH}"
  178. .endif
  179. .if defined(TARGET) && ${TARGET} == "mips" && defined(TARGET_BIG_ENDIAN)
  180. .warning "TARGET_BIG_ENDIAN is no longer necessary for MIPS.  Big-endian is not the default."
  181. .endif
  182. # arm with TARGET_BIG_ENDIAN -> armeb
  183. .if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN)
  184. .warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated.  use armeb"
  185. _TARGET_ARCH=armeb
  186. .endif
  187. .if defined(TARGET) && !defined(_TARGET)
  188. _TARGET=${TARGET}
  189. .endif
  190. .if defined(TARGET_ARCH) && !defined(_TARGET_ARCH)
  191. _TARGET_ARCH=${TARGET_ARCH}
  192. .endif
  193. # Otherwise, default to current machine type and architecture.
  194. _TARGET?=   ${MACHINE}
  195. _TARGET_ARCH?=  ${MACHINE_ARCH}
  196.  
  197. #
  198. # Make sure we have an up-to-date make(1). Only world and buildworld
  199. # should do this as those are the initial targets used for upgrades.
  200. # The user can define ALWAYS_CHECK_MAKE to have this check performed
  201. # for all targets.
  202. #
  203. .if defined(ALWAYS_CHECK_MAKE)
  204. ${TGTS}: upgrade_checks
  205. .else
  206. buildworld: upgrade_checks
  207. .endif
  208.  
  209. #
  210. # This 'cleanworld' target is not included in TGTS, because it is not a
  211. # recursive target.  All of the work for it is done right here.   It is
  212. # expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be
  213. # created by bsd.obj.mk, except that we don't want to .include that file
  214. # in this makefile.  
  215. #
  216. # In the following, the first 'rm' in a series will usually remove all
  217. # files and directories.  If it does not, then there are probably some
  218. # files with file flags set, so this unsets them and tries the 'rm' a
  219. # second time.  There are situations where this target will be cleaning
  220. # some directories via more than one method, but that duplication is
  221. # needed to correctly handle all the possible situations.  Removing all
  222. # files without file flags set in the first 'rm' instance saves time,
  223. # because 'chflags' will need to operate on fewer files afterwards.
  224. #
  225. BW_CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
  226. cleanworld:
  227. .if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
  228. .if exists(${BW_CANONICALOBJDIR}/)
  229.     -rm -rf ${BW_CANONICALOBJDIR}/*
  230.     -chflags -R 0 ${BW_CANONICALOBJDIR}
  231.     rm -rf ${BW_CANONICALOBJDIR}/*
  232. .endif
  233.     #   To be safe in this case, fall back to a 'make cleandir'
  234.     ${_+_}@cd ${.CURDIR}; ${_MAKE} cleandir
  235. .else
  236.     -rm -rf ${.OBJDIR}/*
  237.     -chflags -R 0 ${.OBJDIR}
  238.     rm -rf ${.OBJDIR}/*
  239. .endif
  240.  
  241. #
  242. # Handle the user-driven targets, using the source relative mk files.
  243. #
  244.  
  245. .if empty(.MAKEFLAGS:M-n)
  246. # skip this for -n to avoid changing previous behavior of
  247. # 'make -n buildworld' etc.
  248. ${TGTS}: .MAKE
  249. tinderbox toolchains kernel-toolchains: .MAKE
  250. .endif
  251.  
  252. ${TGTS}:
  253.     ${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET}
  254.  
  255. # The historic default "all" target creates files which may cause stale
  256. # or (in the cross build case) unlinkable results. Fail with an error
  257. # when no target is given. The users can explicitly specify "all"
  258. # if they want the historic behavior.
  259. .MAIN:  _guard
  260.  
  261. _guard:
  262.     @echo
  263.     @echo "Explicit target required (use \"all\" for historic behavior)"
  264.     @echo
  265.     @false
  266.  
  267. STARTTIME!= LC_ALL=C date
  268. CHECK_TIME!= find ${.CURDIR}/sys/sys/param.h -mtime -0s ; echo
  269. .if !empty(CHECK_TIME)
  270. .error check your date/time: ${STARTTIME}
  271. .endif
  272.  
  273. .if defined(HISTORICAL_MAKE_WORLD) || defined(DESTDIR)
  274. #
  275. # world
  276. #
  277. # Attempt to rebuild and reinstall everything. This target is not to be
  278. # used for upgrading an existing FreeBSD system, because the kernel is
  279. # not included. One can argue that this target doesn't build everything
  280. # then.
  281. #
  282. world: upgrade_checks
  283.     @echo "--------------------------------------------------------------"
  284.     @echo ">>> make world started on ${STARTTIME}"
  285.     @echo "--------------------------------------------------------------"
  286. .if target(pre-world)
  287.     @echo
  288.     @echo "--------------------------------------------------------------"
  289.     @echo ">>> Making 'pre-world' target"
  290.     @echo "--------------------------------------------------------------"
  291.     ${_+_}@cd ${.CURDIR}; ${_MAKE} pre-world
  292. .endif
  293.     ${_+_}@cd ${.CURDIR}; ${_MAKE} buildworld
  294.     ${_+_}@cd ${.CURDIR}; ${_MAKE} -B installworld
  295. .if target(post-world)
  296.     @echo
  297.     @echo "--------------------------------------------------------------"
  298.     @echo ">>> Making 'post-world' target"
  299.     @echo "--------------------------------------------------------------"
  300.     ${_+_}@cd ${.CURDIR}; ${_MAKE} post-world
  301. .endif
  302.     @echo
  303.     @echo "--------------------------------------------------------------"
  304.     @echo ">>> make world completed on `LC_ALL=C date`"
  305.     @echo "                   (started ${STARTTIME})"
  306.     @echo "--------------------------------------------------------------"
  307. .else
  308. world:
  309.     @echo "WARNING: make world will overwrite your existing FreeBSD"
  310.     @echo "installation without also building and installing a new"
  311.     @echo "kernel.  This can be dangerous.  Please read the handbook,"
  312.     @echo "'Rebuilding world', for how to upgrade your system."
  313.     @echo "Define DESTDIR to where you want to install FreeBSD,"
  314.     @echo "including /, to override this warning and proceed as usual."
  315.     @echo ""
  316.     @echo "Bailing out now..."
  317.     @false
  318. .endif
  319.  
  320. #
  321. # kernel
  322. #
  323. # Short hand for `make buildkernel installkernel'
  324. #
  325. kernel: buildkernel installkernel
  326.  
  327. #
  328. # Perform a few tests to determine if the installed tools are adequate
  329. # for building the world.
  330. #
  331. # Note: if we ever need to care about the version of bmake, simply testing
  332. # MAKE_VERSION against a required version should suffice.
  333. #
  334. upgrade_checks:
  335. .if ${HAVE_MAKE} != ${WANT_MAKE}
  336.     @(cd ${.CURDIR} && ${MAKE} ${WANT_MAKE:S,^f,,})
  337. .elif ${WANT_MAKE} == "fmake"
  338.     @if ! (cd ${.CURDIR}/tools/build/make_check && \
  339.         PATH=${PATH} ${BINMAKE} obj >/dev/null 2>&1 && \
  340.         PATH=${PATH} ${BINMAKE} >/dev/null 2>&1); \
  341.     then \
  342.         (cd ${.CURDIR} && ${MAKE} make); \
  343.     fi
  344. .endif
  345.  
  346. #
  347. # Upgrade make(1) to the current version using the installed
  348. # headers, libraries and tools.  Also, allow the location of
  349. # the system bsdmake-like utility to be overridden.
  350. #
  351. MMAKEENV=   MAKEOBJDIRPREFIX=${MYMAKE:H} \
  352.         DESTDIR= \
  353.         INSTALL="sh ${.CURDIR}/tools/install.sh"
  354. MMAKE=      ${MMAKEENV} ${MAKE} \
  355.         -D_UPGRADING \
  356.         -DNOMAN -DNO_MAN -DNOSHARED -DNO_SHARED \
  357.         -DNO_CPU_CFLAGS -DNO_WERROR \
  358.         DESTDIR= MK_TESTS=no PROGNAME=${MYMAKE:T}
  359.  
  360. make bmake: .PHONY
  361.     @echo
  362.     @echo "--------------------------------------------------------------"
  363.     @echo ">>> Building an up-to-date make(1)"
  364.     @echo "--------------------------------------------------------------"
  365.     ${_+_}@cd ${.CURDIR}/usr.bin/${.TARGET}; \
  366.         ${MMAKE} obj && \
  367.         ${MMAKE} depend && \
  368.         ${MMAKE} all && \
  369.         ${MMAKE} install DESTDIR=${MYMAKE:H} BINDIR=
  370.  
  371. tinderbox toolchains kernel-toolchains: upgrade_checks
  372.  
  373. tinderbox:
  374.     @cd ${.CURDIR} && ${SUB_MAKE} DOING_TINDERBOX=YES universe
  375.  
  376. toolchains:
  377.     @cd ${.CURDIR} && ${SUB_MAKE} UNIVERSE_TARGET=toolchain universe
  378.  
  379. kernel-toolchains:
  380.     @cd ${.CURDIR} && ${SUB_MAKE} UNIVERSE_TARGET=kernel-toolchain universe
  381.  
  382. #
  383. # universe
  384. #
  385. # Attempt to rebuild *everything* for all supported architectures,
  386. # with a reasonable chance of success, regardless of how old your
  387. # existing system is.
  388. #
  389. .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets)
  390. TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64
  391. TARGET_ARCHES_arm?= arm armeb armv6
  392. TARGET_ARCHES_mips?=    mipsel mips mips64el mips64 mipsn32
  393. TARGET_ARCHES_powerpc?= powerpc powerpc64
  394. TARGET_ARCHES_pc98?=    i386
  395. .for target in ${TARGETS}
  396. TARGET_ARCHES_${target}?= ${target}
  397. .endfor
  398.  
  399. .if defined(UNIVERSE_TARGET)
  400. MAKE_JUST_WORLDS=   YES
  401. .else
  402. UNIVERSE_TARGET?=   buildworld
  403. .endif
  404. KERNSRCDIR?=        ${.CURDIR}/sys
  405.  
  406. targets:
  407.     @echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
  408. .for target in ${TARGETS}
  409. .for target_arch in ${TARGET_ARCHES_${target}}
  410.     @echo "    ${target}/${target_arch}"
  411. .endfor
  412. .endfor
  413.  
  414. .if defined(DOING_TINDERBOX)
  415. FAILFILE=${.CURDIR}/_.tinderbox.failed
  416. MAKEFAIL=tee -a ${FAILFILE}
  417. .else
  418. MAKEFAIL=cat
  419. .endif
  420.  
  421. universe_prologue:  upgrade_checks
  422. universe: universe_prologue
  423. universe_prologue:
  424.     @echo "--------------------------------------------------------------"
  425.     @echo ">>> make universe started on ${STARTTIME}"
  426.     @echo "--------------------------------------------------------------"
  427. .if defined(DOING_TINDERBOX)
  428.     @rm -f ${FAILFILE}
  429. .endif
  430. .for target in ${TARGETS}
  431. universe: universe_${target}
  432. universe_epilogue: universe_${target}
  433. universe_${target}: universe_${target}_prologue
  434. universe_${target}_prologue: universe_prologue
  435.     @echo ">> ${target} started on `LC_ALL=C date`"
  436. .if !defined(MAKE_JUST_KERNELS)
  437. .for target_arch in ${TARGET_ARCHES_${target}}
  438. universe_${target}: universe_${target}_${target_arch}
  439. universe_${target}_${target_arch}: universe_${target}_prologue .MAKE
  440.     @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`"
  441.     @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
  442.         ${SUB_MAKE} ${JFLAG} ${UNIVERSE_TARGET} \
  443.         TARGET=${target} \
  444.         TARGET_ARCH=${target_arch} \
  445.         > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \
  446.         (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \
  447.         "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \
  448.         ${MAKEFAIL}))
  449.     @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`"
  450. .endfor
  451. .endif
  452. .if !defined(MAKE_JUST_WORLDS)
  453. # If we are building world and kernels wait for the required worlds to finish
  454. .if !defined(MAKE_JUST_KERNELS)
  455. .for target_arch in ${TARGET_ARCHES_${target}}
  456. universe_${target}_kernels: universe_${target}_${target_arch}
  457. .endfor
  458. .endif
  459. universe_${target}: universe_${target}_kernels
  460. universe_${target}_kernels: universe_${target}_prologue .MAKE
  461. .if exists(${KERNSRCDIR}/${target}/conf/NOTES)
  462.     @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
  463.         ${SUB_MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \
  464.         (echo "${target} 'make LINT' failed," \
  465.         "check _.${target}.makeLINT for details"| ${MAKEFAIL}))
  466. .endif
  467.     @cd ${.CURDIR} && ${SUB_MAKE} ${.MAKEFLAGS} TARGET=${target} \
  468.         universe_kernels
  469. .endif
  470.     @echo ">> ${target} completed on `LC_ALL=C date`"
  471. .endfor
  472. universe_kernels: universe_kernconfs
  473. .if !defined(TARGET)
  474. TARGET!=    uname -m
  475. .endif
  476. .if defined(MAKE_ALL_KERNELS)
  477. _THINNER=cat
  478. .else
  479. _THINNER=xargs grep -L "^.NO_UNIVERSE"
  480. .endif
  481. KERNCONFS!= cd ${KERNSRCDIR}/${TARGET}/conf && \
  482.         find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \
  483.         ! -name DEFAULTS ! -name NOTES | \
  484.         ${_THINNER}
  485. universe_kernconfs:
  486. .for kernel in ${KERNCONFS}
  487. TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/conf && \
  488.     config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \
  489.     grep -v WARNING: | cut -f 2
  490. .if empty(TARGET_ARCH_${kernel})
  491. .error "Target architecture for ${TARGET}/conf/${kernel} unknown.  config(8) likely too old."
  492. .endif
  493. universe_kernconfs: universe_kernconf_${TARGET}_${kernel}
  494. universe_kernconf_${TARGET}_${kernel}: .MAKE
  495.     @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
  496.         ${SUB_MAKE} ${JFLAG} buildkernel \
  497.         TARGET=${TARGET} \
  498.         TARGET_ARCH=${TARGET_ARCH_${kernel}} \
  499.         KERNCONF=${kernel} \
  500.         > _.${TARGET}.${kernel} 2>&1 || \
  501.         (echo "${TARGET} ${kernel} kernel failed," \
  502.         "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL}))
  503. .endfor
  504. universe: universe_epilogue
  505. universe_epilogue:
  506.     @echo "--------------------------------------------------------------"
  507.     @echo ">>> make universe completed on `LC_ALL=C date`"
  508.     @echo "                      (started ${STARTTIME})"
  509.     @echo "--------------------------------------------------------------"
  510. .if defined(DOING_TINDERBOX)
  511.     @if [ -e ${FAILFILE} ] ; then \
  512.         echo "Tinderbox failed:" ;\
  513.         cat ${FAILFILE} ;\
  514.         exit 1 ;\
  515.     fi
  516. .endif
  517. .endif
  518.  
  519. buildLINT:
  520.     ${MAKE} -C ${.CURDIR}/sys/${_TARGET}/conf LINT
  521.  
  522. .if defined(.PARSEDIR)
  523. .if make(universe)
  524. # we do not want a failure of one branch abort all.
  525. MAKE_JOB_ERROR_TOKEN= no
  526. .export MAKE_JOB_ERROR_TOKEN
  527. .endif
  528. .endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement