diff options
author | sjg <sjg@FreeBSD.org> | 2014-11-30 00:20:20 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2014-11-30 00:20:20 +0000 |
commit | 6134059396b964f73e95c703fcf185861c0cbb57 (patch) | |
tree | cccfb1631d9c3b519238efb58e573405281c0762 /targets/Makefile | |
parent | bfb497bec0ac2615b9f86e8c62c14a85717c46bb (diff) | |
download | FreeBSD-src-6134059396b964f73e95c703fcf185861c0cbb57.zip FreeBSD-src-6134059396b964f73e95c703fcf185861c0cbb57.tar.gz |
Rename pkgs to more generic targets (that's what they are)
Reviewed by: marcel
Diffstat (limited to 'targets/Makefile')
-rw-r--r-- | targets/Makefile | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/targets/Makefile b/targets/Makefile new file mode 100644 index 0000000..bf2a300 --- /dev/null +++ b/targets/Makefile @@ -0,0 +1,185 @@ +# $FreeBSD$ + +# This is the top-level makefile - derrived from the Junos version +# +# If a subdir that matches the requested target exists, we assume +# a build target and initialize DIRDEPS, dirdeps.mk does the rest. +# +# Otherwise we include Makefile.xtras and hope it knows what to do. +# + +# Copyright (c) 2010-2012, Juniper Networks, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +.if ${.MAKE.LEVEL} == 0 + +# this is our top-level makefile +.if make(pkg-*) +DIRDEPS_FILTER = Mpkgs/* +.endif + +# in theory, this is what we want +target_dirs = pkgs pkgs/pseudo +# these tweak how we do it +target_prefix = pkg- build- +DIRDEPS := ${.TARGETS:Nall:${target_prefix:@p@S,^$p,,@:ts:}:@t@${target_dirs:@d@$d/$t@}@:@d@${exists(${SRCTOP}/$d):?$d:}@} + +.if ${DIRDEPS:Mpkgs/pseudo/*} != "" +# all bets are off +PKG_MACHINE_LIST = ${ALL_MACHINE_LIST} +.endif + +.if make(check-commit) +# a special case +DIRDEPS = pkgs/pseudo/check-commit +.if defined(ALL_MACHINES) +CHECK_MACHINE_LIST = all +.undef ALL_MACHINES +.endif +SHIPDIR = no + +.else + +all_machine_list = ${ALL_MACHINE_LIST} host common +.if defined(ALL_MACHINES) +DIRDEPS := ${DIRDEPS:O:u:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@} +.undef ALL_MACHINES +PKG_MACHINE_LIST ?= ${DIRDEPS:E:O:u} +.elif defined(HOST_MACHINE) && ${MACHINE} == ${HOST_MACHINE} +# the above may be insufficient. +# some packages only support one machine which may not be ${MACHINE} +# some support multiple, in which case unless ALL_MACHINES is defined +# we only want ${MACHINE} +plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@} +.if ${plain} != ${DIRDEPS} +qual := ${DIRDEPS:${plain:${M_ListToSkip}}:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@} +DIRDEPS := ${plain} ${qual} +PKG_MACHINE_LIST ?= ${MACHINE} ${qual:E:O:u} +.endif +.else +# check that a .MAKE.DEPENDFILE exists +DIRDEPS := ${.MAKE.DEPENDFILE_PREFERENCE:T:@m@${DIRDEPS:@d@${exists(${SRCTOP}/$d/$m):?$d:}@}@:O:u} +.endif +.if !empty(PKG_MACHINE_LIST) +.if ${PKG_MACHINE_LIST:Mdepend} != "" +PKG_MACHINE_LIST = ${ALL_MACHINE_LIST} +.endif +PKG_MACHINE_LIST := ${PKG_MACHINE_LIST} +.endif +.endif + +# we don't use DIRDEPS_FILTER, since we only want it to +# apply to this initial list +.if !empty(REQUESTED_MACHINE) && !empty(DIRDEPS) +# this is a variant of the logic above, we want plain +# but need to filter the qualified DIRDEPS to REQUESTED_MACHINE +plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@} +.if ${plain} != ${DIRDEPS} +qual := ${DIRDEPS:${plain:${M_ListToSkip}}:M*.${REQUESTED_MACHINE}} +.if empty(qual) +qual := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE:T}):?$d.${.MAKE.DEPENDFILE:E}:}@} +.endif +DIRDEPS := ${plain} ${qual} +.endif +.if empty(DIRDEPS) +.error ${REQUESTED_MACHINE} is not appropriate for ${DEP_RELDIR:T} +.endif +.endif + +.if !empty(build_options) +build_options := ${build_options:O:u} +.for v in ${build_options} +$v = yes +.endfor +.export ${build_options} +.endif + +.if !empty(DIRDEPS) +# This is printed as we read the makefile +# so provides a useful clue as to when we really started. +# This allows us to work out how long reading +# Makefile.depend* takes. +.if ${.MAKEFLAGS:M-V} == "" +.info ${.newline}${TIME_STAMP} Start ${.TARGETS} +now_utc = ${%s:L:gmtime} +start_utc := ${now_utc} +.endif + +_begin = count-makefiles + +# by default, we clean pkgs/ which can otherwise accumulate a lot of cruft +.if ${NEED_CLEAN_PKGS:Uyes:tl} != "no" +_begin += clean-pkgs +.endif +.if defined(SHIPDIR) && ${NEED_CLEAN_SHIPDIR:Uno:tl} != "no" && exists(${SHIPDIR}) +_begin += clean-shipdir +.endif +.if ${NEED_CLEAN_ERROR_LOGS:Uyes:tl} == "yes" +_begin += clean-error-logs +.endif +.if !empty(_begin) && !make(clean*) +dirdeps: ${_begin} .WAIT +.endif + +.include "Makefile.inc" + +.include <dirdeps.mk> + +.for t in ${.TARGETS:Nall:Nclean*:${_begin:Uall:${M_ListToSkip}}} +$t: dirdeps +.endfor + +elapsed_time= seconds=`expr ${now_utc} - ${start_utc}` + +count-makefiles: .NOMETA + @echo "${TIME_STAMP} Makefiles read: total=${.MAKE.MAKEFILES:[#]} depend=${.MAKE.MAKEFILES:M*depend*:[#]} dirdeps=${.ALLTARGETS:M${SRCTOP}*:O:u:[#]} ${elapsed_time}" + +.END: _build_finish +_build_finish: .NOMETA + @echo "${TIME_STAMP} Finished ${.TARGETS} ${elapsed_time}" + +.ERROR: _build_failed +_build_failed: .NOMETA + @echo "${TIME_STAMP} Failed ${.TARGETS} ${elapsed_time}" + +.endif # !empty(DIRDEPS) + +clean-error-logs: .NOMETA + @test ! -d ${meta_error_log:H} || rm -f ${meta_error_log:H}/*log + +clean-pkgs: .NOMETA + @rm -rf ${ALL_MACHINE_LIST:N${MACHINE}:@m@${OBJROOT}$m/pkgs@} ${OBJROOT}${MACHINE}/pkgs/* + +clean-shipdir: .NOMETA + ${"${SHIPDIR:tl:Nno:N*\:*}":?rm -f ${SHIPDIR}/*:} + +.if !target(_DIRDEP_USE) +# we did not read dirdeps.mk above, the target may be here +.include "Makefile.xtras" +.endif + +.else +# dirdeps does it all +all: +.endif # .MAKE.LEVEL == 0 + |