Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 May 2013 01:03:29 +0000 (UTC)
From:      "Simon J. Gerraty" <sjg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r250494 - projects/bmake/share/mk
Message-ID:  <201305110103.r4B13TZa037710@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sjg
Date: Sat May 11 01:03:29 2013
New Revision: 250494
URL: http://svnweb.freebsd.org/changeset/base/250494

Log:
  Cleanup some backwards compat stuff we do not need.
  Introduce TARGET_OBJ_SPEC (derrived from TARGET_SPEC_VARS)
  so we can build something like universe.

Modified:
  projects/bmake/share/mk/local.sys.mk

Modified: projects/bmake/share/mk/local.sys.mk
==============================================================================
--- projects/bmake/share/mk/local.sys.mk	Sat May 11 00:52:57 2013	(r250493)
+++ projects/bmake/share/mk/local.sys.mk	Sat May 11 01:03:29 2013	(r250494)
@@ -25,22 +25,12 @@ M_whence = ${M_type}:M/*
 # convert a path to a valid shell variable
 M_P2V = tu:C,[./-],_,g
 
-# convert path to absolute
-.if ${MAKE_VERSION:U0} > 20100408
-M_tA = tA
-.else
-M_tA = C,.*,('cd' & \&\& 'pwd') 2> /dev/null || echo &,:sh
-.endif
-
-# this is handy for forcing a space into something.
-AnEmptyVar=
-
 # absoulte path to what we are reading.
-_PARSEDIR = ${.PARSEDIR:${M_tA}}
+_PARSEDIR = ${.PARSEDIR:tA}
 
 .if !empty(SB)
 SB_SRC ?= ${SB}/src
-SB_OBJROOT ?= ${SB}/obj
+SB_OBJROOT ?= ${SB}/obj/
 # this is what we use below
 SRCTOP ?= ${SB_SRC}
 OBJROOT ?= ${SB_OBJROOT}
@@ -55,7 +45,21 @@ OBJROOT ?= ${SRCTOP:H}/obj/
 # we need HOST_TARGET etc below.
 .include <host-target.mk>
 
-OBJTOP ?= ${OBJROOT}${MACHINE}
+# from src/Makefile (for universe)
+TARGET_ARCHES_arm?=     arm armeb armv6 armv6eb
+TARGET_ARCHES_mips?=    mipsel mips mips64el mips64 mipsn32
+TARGET_ARCHES_powerpc?= powerpc powerpc64
+TARGET_ARCHES_pc98?=    i386
+
+# the list of machines we support
+ALL_MACHINE_LIST?= amd64 arm i386 ia64 mips pc98 powerpc sparc64
+.for m in ${ALL_MACHINE_LIST:O:u}
+MACHINE_ARCH_LIST.$m?= ${TARGET_ARCHES_${m}:U$m}
+MACHINE_ARCH.$m?= ${MACHINE_ARCH_LIST.$m:[1]}
+.endfor
+.if empty(MACHINE_ARCH)
+MACHINE_ARCH:= ${TARGET_ARCH:U${MACHINE_ARCH.${MACHINE}}}
+.endif
 
 .if !defined(_TARGETS)
 # some things we do only once
@@ -71,6 +75,36 @@ OBJROOT:= ${OBJROOT:H:tA}/${OBJROOT:T}
 .endif
 .endif
 
+# now because for universe we want to potentially
+# build for multiple MACHINE_ARCH per MACHINE
+# we need more than MACHINE in TARGET_SPEC
+TARGET_SPEC_VARS= MACHINE MACHINE_ARCH
+# see dirdeps.mk
+.if ${TARGET_SPEC:Uno:M*,*} != ""
+_tspec := ${TARGET_SPEC:S/,/ /g}
+MACHINE := ${_tspec:[1]}
+MACHINE_ARCH := ${_tspec:[2]}
+# etc.
+# We need to stop that TARGET_SPEC affecting any submakes
+# and deal with MACHINE=${TARGET_SPEC} in the environment.
+TARGET_SPEC=
+# export but do not track
+.export-env TARGET_SPEC 
+.export ${TARGET_SPEC_VARS}
+.for v in ${TARGET_SPEC_VARS:O:u}
+.if empty($v)
+.undef $v
+.endif
+.endfor
+.endif
+# make sure we know what TARGET_SPEC is
+# as we may need it to find Makefile.depend*
+TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+
+# to be consistent with src/Makefile just concatenate with '.'s
+TARGET_OBJ_SPEC:= ${TARGET_SPEC:S;,;.;g}
+OBJTOP:= ${OBJROOT}${TARGET_OBJ_SPEC}
+
 .if !empty(SRCTOP)
 .if ${.CURDIR} == ${SRCTOP}
 RELDIR = .
@@ -140,11 +174,11 @@ STAGE_ROOT?= ${OBJROOT}stage
 .if ${MACHINE} == "host"
 STAGE_MACHINE= ${HOST_TARGET}
 .else
-STAGE_MACHINE= ${MACHINE}
+STAGE_MACHINE:= ${TARGET_OBJ_SPEC}
 .endif
-STAGE_OBJTOP= ${STAGE_ROOT}/${STAGE_MACHINE}
-STAGE_COMMON_OBJTOP= ${STAGE_ROOT}/common
-STAGE_HOST_OBJTOP= ${STAGE_ROOT}/${HOST_TARGET}
+STAGE_OBJTOP:= ${STAGE_ROOT}/${STAGE_MACHINE}
+STAGE_COMMON_OBJTOP:= ${STAGE_ROOT}/common
+STAGE_HOST_OBJTOP:= ${STAGE_ROOT}/${HOST_TARGET}
 
 STAGE_LIBDIR= ${STAGE_OBJTOP}${LIBDIR:U/lib}
 # this is not the same as INCLUDEDIR



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305110103.r4B13TZa037710>