From owner-svn-src-all@freebsd.org Thu Oct 31 20:37:20 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E6179165A0E; Thu, 31 Oct 2019 20:37:20 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 473xvh5nvsz3KG8; Thu, 31 Oct 2019 20:37:20 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AA92B28D; Thu, 31 Oct 2019 20:37:20 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9VKbKww031525; Thu, 31 Oct 2019 20:37:20 GMT (envelope-from brooks@FreeBSD.org) Received: (from brooks@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9VKbK1k031523; Thu, 31 Oct 2019 20:37:20 GMT (envelope-from brooks@FreeBSD.org) Message-Id: <201910312037.x9VKbK1k031523@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: brooks set sender to brooks@FreeBSD.org using -f From: Brooks Davis Date: Thu, 31 Oct 2019 20:37:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r354227 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: brooks X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 354227 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Oct 2019 20:37:21 -0000 Author: brooks Date: Thu Oct 31 20:37:19 2019 New Revision: 354227 URL: https://svnweb.freebsd.org/changeset/base/354227 Log: Allow bsd.compat.mk to be reliably included outside Makefile.inc1. Replace explicit TARGET_* variables with COMPAT_* versions defined based on where the file is being included. Also, require that bsd.compat.mk be included directly. It's not going to be widely used so always loading it in bsd.prog.mk doesn't make sense. Instead users can include it directly. Reviewed by: imp, bdrewery (prior revision) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D22059 Modified: head/share/mk/bsd.README head/share/mk/bsd.compat.mk head/share/mk/bsd.prog.mk Modified: head/share/mk/bsd.README ============================================================================== --- head/share/mk/bsd.README Thu Oct 31 20:29:45 2019 (r354226) +++ head/share/mk/bsd.README Thu Oct 31 20:37:19 2019 (r354227) @@ -379,10 +379,6 @@ LINKMODE Mode of links created with LINKS [${BINMODE}] MAN Manual pages. If no MAN variable is defined, "MAN=${PROG}.1" is assumed. See bsd.man.mk for more details. -NEED_COMPAT Build and link targeting a compatability ABI or fail if it - is not available. Supported values are "32", "soft", and - "any" being a wildcard. - PROG The name of the program to build. If not supplied, nothing is built. @@ -445,9 +441,6 @@ SUBDIR A list of subdirectories that should be built Each of the targets will execute the same target in the subdirectories. -WANT_COMPAT Similar to NEED_COMPAT, but build with the base ABI if - the specified ABI is not available. - The include file includes the file named "../Makefile.inc" if it exists, as well as the include file . @@ -470,6 +463,20 @@ If foo does not have a manual page at all, add the lin If foo has multiple source files, add the line: SRCS= a.c b.c c.c d.c + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file, , allows programs (built with +) to be built for one the ABI(s) supported by the +top-level Makefile.libcompat. It requires that also be +included. + +NEED_COMPAT Build and link targeting a compatibility ABI or fail if it + is not available. Supported values are "32", "soft", and + "any" being a wildcard. + +WANT_COMPAT Similar to NEED_COMPAT, but build with the base ABI if + the specified ABI is not available. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Modified: head/share/mk/bsd.compat.mk ============================================================================== --- head/share/mk/bsd.compat.mk Thu Oct 31 20:29:45 2019 (r354226) +++ head/share/mk/bsd.compat.mk Thu Oct 31 20:37:19 2019 (r354227) @@ -3,14 +3,22 @@ .if !targets(__<${_this:T}>__) __<${_this:T}>__: +.if defined(_LIBCOMPAT) +COMPAT_ARCH= ${TARGET_ARCH} +COMPAT_CPUTYPE= ${TARGET_CPUTYPE} +.else +COMPAT_ARCH= ${MACHINE_ARCH} +COMPAT_CPUTYPE= ${CPUTYPE} +.endif + # ------------------------------------------------------------------- # 32 bit world -.if ${TARGET_ARCH} == "amd64" +.if ${COMPAT_ARCH} == "amd64" HAS_COMPAT=32 -.if empty(TARGET_CPUTYPE) +.if empty(COMPAT_CPUTYPE) LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2 .else -LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} +LIB32CPUFLAGS= -march=${COMPAT_CPUTYPE} .endif .if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \ (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) @@ -24,29 +32,29 @@ LIB32WMAKEFLAGS= \ AS="${XAS} --32" \ LD="${XLD} -m elf_i386_fbsd -L${LIBCOMPATTMP}/usr/lib32" -.elif ${TARGET_ARCH} == "powerpc64" +.elif ${COMPAT_ARCH} == "powerpc64" HAS_COMPAT=32 -.if empty(TARGET_CPUTYPE) +.if empty(COMPAT_CPUTYPE) LIB32CPUFLAGS= -mcpu=powerpc .else -LIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE} +LIB32CPUFLAGS= -mcpu=${COMPAT_CPUTYPE} .endif LIB32CPUFLAGS+= -m32 LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc LIB32WMAKEFLAGS= \ LD="${XLD} -m elf32ppc_fbsd" -.elif ${TARGET_ARCH:Mmips64*} != "" +.elif ${COMPAT_ARCH:Mmips64*} != "" HAS_COMPAT=32 .if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \ (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) -.if empty(TARGET_CPUTYPE) +.if empty(COMPAT_CPUTYPE) LIB32CPUFLAGS= -march=mips3 .else -LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} +LIB32CPUFLAGS= -march=${COMPAT_CPUTYPE} .endif .else -.if ${TARGET_ARCH:Mmips64el*} != "" +.if ${COMPAT_ARCH:Mmips64el*} != "" LIB32CPUFLAGS= -target mipsel-unknown-freebsd13.0 .else LIB32CPUFLAGS= -target mips-unknown-freebsd13.0 @@ -54,7 +62,7 @@ LIB32CPUFLAGS= -target mips-unknown-freebsd13.0 .endif LIB32CPUFLAGS+= -mabi=32 LIB32WMAKEENV= MACHINE=mips MACHINE_ARCH=mips -.if ${TARGET_ARCH:Mmips64el*} != "" +.if ${COMPAT_ARCH:Mmips64el*} != "" LIB32WMAKEFLAGS= LD="${XLD} -m elf32ltsmip_fbsd" .else LIB32WMAKEFLAGS= LD="${XLD} -m elf32btsmip_fbsd" @@ -70,11 +78,11 @@ LIB32WMAKEFLAGS+= -DCOMPAT_32BIT # ------------------------------------------------------------------- # soft-fp world -.if ${TARGET_ARCH:Marmv[67]*} != "" +.if ${COMPAT_ARCH:Marmv[67]*} != "" HAS_COMPAT=SOFT LIBSOFTCFLAGS= -DCOMPAT_SOFTFP LIBSOFTCPUFLAGS= -mfloat-abi=softfp -LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=${TARGET_ARCH} +LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=${COMPAT_ARCH} LIBSOFTWMAKEFLAGS= -DCOMPAT_SOFTFP .endif Modified: head/share/mk/bsd.prog.mk ============================================================================== --- head/share/mk/bsd.prog.mk Thu Oct 31 20:29:45 2019 (r354226) +++ head/share/mk/bsd.prog.mk Thu Oct 31 20:37:19 2019 (r354227) @@ -2,7 +2,6 @@ # $FreeBSD$ .include -# .include .include .include