Author: bdrewery
Date: Fri Mar 11 23:56:33 2016
New Revision: 296709
URL: https://svnweb.freebsd.org/changeset/base/296709

Log:
  Move Makefile.lib32 to Makefile.libcompat and generalize it.
  
  This is in preparation for LIBSOFT.
  
  This file only supports *1* LIBCOMPAT value currently and must be capitalized.
  In Makefile.libcompat given LIBCOMPAT=FOO there can be values set for
  LIBFOOCFLAGS, LIBFOOCPUFLAGS, LIBFOOWMAKEENV, LIBFOOWMAKEFLAGS, 
LIBFOOCPUFLAGS,
  and LIBFOODTRACE.  These will have the standard cross-build values appended
  onto them.
  
  This could be extended to support multiple libcompat libraries in the future
  once there is a need.
  
  Reviewed by:  imp
  Sponsored by: EMC / Isilon Storage Division
  Differential Revision:        https://reviews.freebsd.org/D5612

Added:
  head/Makefile.libcompat
     - copied, changed from r296708, head/Makefile.lib32
Deleted:
  head/Makefile.lib32
Modified:
  head/Makefile.inc1

Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1  Fri Mar 11 23:45:59 2016        (r296708)
+++ head/Makefile.inc1  Fri Mar 11 23:56:33 2016        (r296709)
@@ -454,8 +454,10 @@ XCXXFLAGS+=        ${BFLAGS}
 .endif
 .endif # ${XCC:M/*}
 
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-.include "Makefile.lib32"
+.if ${MK_LIB32} != "no" && (${TARGET_ARCH} == "amd64" || \
+    ${TARGET_ARCH} == "powerpc64")
+LIBCOMPAT= 32
+.include "Makefile.libcompat"
 .endif
 
 WMAKE=         ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 
DESTDIR=${WORLDTMP}
@@ -513,8 +515,8 @@ _worldtmp: .PHONY
        @echo "--------------------------------------------------------------"
 .if !defined(NO_CLEAN)
        rm -rf ${WORLDTMP}
-.if defined(LIB32TMP)
-       rm -rf ${LIB32TMP}
+.if defined(LIBCOMPAT)
+       rm -rf ${LIBCOMPATTMP}
 .endif
 .else
        rm -rf ${WORLDTMP}/legacy/usr/include
@@ -544,13 +546,13 @@ _worldtmp: .PHONY
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
            -p ${WORLDTMP}/usr/lib >/dev/null
 .endif
-.if ${MK_LIB32} != "no"
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+.if defined(LIBCOMPAT)
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${WORLDTMP}/usr >/dev/null
 .if ${MK_DEBUG_FILES} != "no"
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${WORLDTMP}/legacy/usr/lib/debug/usr >/dev/null
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${WORLDTMP}/usr/lib/debug/usr >/dev/null
 .endif
 .endif
@@ -586,8 +588,8 @@ _cleanobj:
        @echo ">>> stage 2.1: cleaning up the object tree"
        @echo "--------------------------------------------------------------"
        ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR}
-.if defined(LIB32TMP)
-       ${_+_}cd ${.CURDIR}; ${LIB32WMAKE} -f Makefile.inc1 ${CLEANDIR}
+.if defined(LIBCOMPAT)
+       ${_+_}cd ${.CURDIR}; ${LIBCOMPATWMAKE} -f Makefile.inc1 ${CLEANDIR}
 .endif
 .endif
 _obj:
@@ -653,8 +655,8 @@ WMAKE_TGTS+=        _includes _libraries
 WMAKE_TGTS+=   _depend
 .endif
 WMAKE_TGTS+=   everything
-.if defined(LIB32TMP) && ${MK_LIB32} != "no" && empty(SUBDIR_OVERRIDE)
-WMAKE_TGTS+=   build32
+.if defined(LIBCOMPAT) && empty(SUBDIR_OVERRIDE)
+WMAKE_TGTS+=   build${libcompat}
 .endif
 
 buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
@@ -694,7 +696,7 @@ buildenv: .PHONY
        @cd ${BUILDENV_DIR} && env ${WMAKEENV} BUILDENV=1 ${BUILDENV_SHELL} \
            || true
 
-TOOLCHAIN_TGTS=        ${WMAKE_TGTS:N_depend:Neverything:Nbuild32}
+TOOLCHAIN_TGTS=        ${WMAKE_TGTS:N_depend:Neverything:Nbuild${libcompat}}
 toolchain: ${TOOLCHAIN_TGTS}
 kernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries}
 
@@ -788,8 +790,8 @@ ITOOLS+=makewhatis
 
 # Non-base distributions produced by the base system
 EXTRA_DISTRIBUTIONS=   doc
-.if defined(LIB32TMP) && ${MK_LIB32} != "no"
-EXTRA_DISTRIBUTIONS+=  lib32
+.if defined(LIBCOMPAT)
+EXTRA_DISTRIBUTIONS+=  lib${libcompat}
 .endif
 .if ${MK_TESTS} != "no"
 EXTRA_DISTRIBUTIONS+=  tests
@@ -841,11 +843,11 @@ distributeworld installworld: _installch
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
            -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
 .endif
-.if ${MK_LIB32} != "no"
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+.if defined(LIBCOMPAT)
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
 .if ${MK_DEBUG_FILES} != "no"
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null
 .endif
 .endif
@@ -865,8 +867,8 @@ distributeworld installworld: _installch
            sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
        ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \
            sed -e 's#^\./#./${dist}/usr/include/#' >> ${METALOG}
-.if ${MK_LIB32} != "no"
-       ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.lib32.dist | \
+.if defined(LIBCOMPAT)
+       ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist | 
\
            sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
 .endif
 .endif
@@ -951,8 +953,8 @@ reinstall: .MAKE .PHONY
        @echo ">>> Installing everything"
        @echo "--------------------------------------------------------------"
        ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
-.if defined(LIB32TMP) && ${MK_LIB32} != "no"
-       ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32
+.if defined(LIBCOMPAT)
+       ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install${libcompat}
 .endif
 
 redistribute: .MAKE .PHONY
@@ -960,9 +962,9 @@ redistribute: .MAKE .PHONY
        @echo ">>> Distributing everything"
        @echo "--------------------------------------------------------------"
        ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute
-.if defined(LIB32TMP) && ${MK_LIB32} != "no"
-       ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 \
-           DISTRIBUTION=lib32
+.if defined(LIBCOMPAT)
+       ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute${libcompat} \
+           DISTRIBUTION=lib${libcompat}
 .endif
 
 distrib-dirs distribution: .MAKE .PHONY
@@ -1025,7 +1027,7 @@ INSTALLKERNEL= ${_kernel}
 .endif
 .endfor
 
-${WMAKE_TGTS:N_worldtmp:Nbuild32} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY
+${WMAKE_TGTS:N_worldtmp:Nbuild${libcompat}} ${.ALLTARGETS:M_*:N_worldtmp}: 
.MAKE .PHONY
 
 #
 # buildkernel
@@ -2274,8 +2276,8 @@ _xi-mtree: .PHONY
            -p ${XDDESTDIR}/usr >/dev/null
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
            -p ${XDDESTDIR}/usr/include >/dev/null
-.if ${MK_LIB32} != "no"
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
+.if defined(LIBCOMPAT)
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
            -p ${XDDESTDIR}/usr >/dev/null
 .endif
 .if ${MK_TESTS} != "no"

Copied and modified: head/Makefile.libcompat (from r296708, head/Makefile.lib32)
==============================================================================
--- head/Makefile.lib32 Fri Mar 11 23:45:59 2016        (r296708, copy source)
+++ head/Makefile.libcompat     Fri Mar 11 23:56:33 2016        (r296709)
@@ -1,12 +1,14 @@
 # $FreeBSD$
 
-# Makefile for the 32-bit compat libraries on PowerPC and AMD64.
-# could also be for mips, but that doesn't work today.
+.if !targets(__<${_this:T}>__)
+__<${_this:T}>__:
 
-# 32 bit world
-LIB32_OBJTREE= ${OBJTREE}${.CURDIR}/world32
-LIB32TMP=      ${OBJTREE}${.CURDIR}/lib32
+# Makefile for the compatibility libraries.
+# - 32-bit compat libraries on PowerPC and AMD64.
+#   could also be for mips, but that doesn't work today.
 
+# -------------------------------------------------------------------
+# 32 bit world
 .if ${TARGET_ARCH} == "amd64"
 .if empty(TARGET_CPUTYPE)
 LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
@@ -17,7 +19,7 @@ LIB32WMAKEENV=        MACHINE=i386 MACHINE_ARCH
                MACHINE_CPU="i686 mmx sse sse2"
 LIB32WMAKEFLAGS=       \
                AS="${XAS} --32" \
-               LD="${XLD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \
+               LD="${XLD} -m elf_i386_fbsd -Y P,${LIBCOMPATTMP}/usr/lib32" \
                OBJCOPY="${XOBJCOPY}"
 
 .elif ${TARGET_ARCH} == "powerpc64"
@@ -33,104 +35,118 @@ LIB32WMAKEFLAGS=  \
 .endif
 
 
-LIB32FLAGS=    -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \
-               -isystem ${LIB32TMP}/usr/include/ \
-               -L${LIB32TMP}/usr/lib32 \
-               -B${LIB32TMP}/usr/lib32
-.if ${XCC:N${CCACHE_BIN}:M/*}
-LIB32FLAGS+=           --sysroot=${WORLDTMP}
+LIB32CFLAGS=   -m32 -DCOMPAT_32BIT
+LIB32DTRACE=   ${DTRACE} -32
+LIB32WMAKEFLAGS+=      -DCOMPAT_32BIT
+
+# -------------------------------------------------------------------
+# Generic code for each type.
+# Set defaults based on type.
+libcompat=     ${LIBCOMPAT:tl}
+_LIBCOMPAT_MAKEVARS=   _OBJTREE TMP CFLAGS WMAKEENV WMAKEFLAGS WMAKE
+.for _var in ${_LIBCOMPAT_MAKEVARS}
+.if !empty(LIB${LIBCOMPAT}${_var})
+LIBCOMPAT${_var}?=     ${LIB${LIBCOMPAT}${_var}}
 .endif
+.endfor
+
+# Shared flags
+LIBCOMPAT_OBJTREE?=    ${OBJTREE}${.CURDIR}/world${libcompat}
+LIBCOMPATTMP?=         ${OBJTREE}${.CURDIR}/lib${libcompat}
+
+LIBCOMPATCFLAGS+=      ${LIBCOMPATCPUFLAGS} \
+                       -isystem ${LIBCOMPATTMP}/usr/include/ \
+                       -L${LIBCOMPATTMP}/usr/lib${libcompat} \
+                       -B${LIBCOMPATTMP}/usr/lib${libcompat}
 
 # Yes, the flags are redundant.
-LIB32WMAKEENV+=        MAKEOBJDIRPREFIX=${LIB32_OBJTREE} \
-               _LDSCRIPTROOT=${LIB32TMP} \
+LIBCOMPATWMAKEENV+= MAKEOBJDIRPREFIX=${LIBCOMPAT_OBJTREE} \
+               _LDSCRIPTROOT=${LIBCOMPATTMP} \
                INSTALL="sh ${.CURDIR}/tools/install.sh" \
                PATH=${TMPPATH} \
-               LIBDIR=/usr/lib32 \
-               SHLIBDIR=/usr/lib32 \
-               DTRACE="${DTRACE} -32"
-LIB32WMAKEFLAGS+= CC="${XCC} ${LIB32FLAGS}" \
-               CXX="${XCXX} ${LIB32FLAGS}" \
-               DESTDIR=${LIB32TMP} \
-               -DCOMPAT_32BIT \
+               LIBDIR=/usr/lib${libcompat} \
+               SHLIBDIR=/usr/lib${libcompat} \
+               DTRACE="${LIB$COMPATDTRACE:U${DTRACE}}"
+LIBCOMPATWMAKEFLAGS+= CC="${XCC} ${LIBCOMPATCFLAGS}" \
+               CXX="${XCXX} ${LIBCOMPATCFLAGS}" \
+               DESTDIR=${LIBCOMPATTMP} \
                -DLIBRARIES_ONLY \
                -DNO_CPU_CFLAGS \
                MK_CTF=no \
                -DNO_LINT \
                MK_TESTS=no
+LIBCOMPATWMAKE+=       ${LIBCOMPATWMAKEENV} ${MAKE} ${LIBCOMPATWMAKEFLAGS} \
+                       MK_MAN=no MK_HTML=no
+LIBCOMPATIMAKE+=       
${LIBCOMPATWMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} \
+                       MK_TOOLCHAIN=no ${IMAKE_INSTALL}
 
-LIB32WMAKE=    ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \
-               MK_MAN=no MK_HTML=no
-LIB32IMAKE=    ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} \
-               MK_TOOLCHAIN=no ${IMAKE_INSTALL}
+.if ${XCC:N${CCACHE_BIN}:M/*}
+LIBCOMPATCFLAGS+=      --sysroot=${WORLDTMP}
+.endif
 
-build32: .PHONY
+_LC_LIBDIRS.yes=               lib gnu/lib
+_LC_LIBDIRS.${MK_CDDL:tl}=     cddl/lib
+_LC_LIBDIRS.${MK_CRYPT:tl}=    secure/lib
+_LC_LIBDIRS.${MK_KERBEROS:tl}= kerberos5/lib
+
+# Shared logic
+build${libcompat}: .PHONY
        @echo
        @echo "--------------------------------------------------------------"
-       @echo ">>> stage 5.1: building 32 bit shim libraries"
+       @echo ">>> stage 5.1: building lib${libcompat} shim libraries"
        @echo "--------------------------------------------------------------"
-       mkdir -p ${LIB32TMP}/usr/include
+       mkdir -p ${LIBCOMPATTMP}/usr/include
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-           -p ${LIB32TMP}/usr >/dev/null
+           -p ${LIBCOMPATTMP}/usr >/dev/null
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-           -p ${LIB32TMP}/usr/include >/dev/null
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
-           -p ${LIB32TMP}/usr >/dev/null
+           -p ${LIBCOMPATTMP}/usr/include >/dev/null
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
+           -p ${LIBCOMPATTMP}/usr >/dev/null
 .if ${MK_DEBUG_FILES} != "no"
        mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-           -p ${LIB32TMP}/usr/lib >/dev/null
-       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \
-           -p ${LIB32TMP}/usr/lib/debug/usr >/dev/null
+           -p ${LIBCOMPATTMP}/usr/lib >/dev/null
+       mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
+           -p ${LIBCOMPATTMP}/usr/lib/debug/usr >/dev/null
 .endif
        mkdir -p ${WORLDTMP}
        ln -sf ${.CURDIR}/sys ${WORLDTMP}
 .for _t in obj includes
-       ${_+_}cd ${.CURDIR}/include; ${LIB32WMAKE} DIRPRFX=include/ ${_t}
-       ${_+_}cd ${.CURDIR}/lib; ${LIB32WMAKE} DIRPRFX=lib/ ${_t}
-.if ${MK_CDDL} != "no"
-       ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32WMAKE} DIRPRFX=cddl/lib/ ${_t}
-.endif
-       ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32WMAKE} DIRPRFX=gnu/lib/ ${_t}
-.if ${MK_CRYPT} != "no"
-       ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32WMAKE} DIRPRFX=secure/lib/ ${_t}
-.endif
-.if ${MK_KERBEROS} != "no"
-       ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32WMAKE} DIRPRFX=kerberos5/lib 
${_t}
-.endif
+       ${_+_}cd ${.CURDIR}/include; ${LIBCOMPATWMAKE} DIRPRFX=include/ ${_t}
+.for _dir in ${_LC_LIBDIRS.yes}
+       ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATWMAKE} DIRPRFX=${_dir}/ ${_t}
+.endfor
 .endfor
 .for _dir in usr.bin/lex/lib
-       ${_+_}cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} DIRPRFX=${_dir}/ obj
+       ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATWMAKE} DIRPRFX=${_dir}/ obj
 .endfor
 .for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic
        ${_+_}cd ${.CURDIR}/${_dir}; \
            WORLDTMP=${WORLDTMP} \
            MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \
-           MAKEOBJDIRPREFIX=${LIB32_OBJTREE} ${MAKE} SSP_CFLAGS= DESTDIR= \
+           MAKEOBJDIRPREFIX=${LIBCOMPAT_OBJTREE} ${MAKE} SSP_CFLAGS= DESTDIR= \
            DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
            build-tools
 .endfor
        ${_+_}cd ${.CURDIR}; \
-           ${LIB32WMAKE} -f Makefile.inc1 -DNO_FSCHG libraries
+           ${LIBCOMPATWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries
+.if ${libcompat} == "32"
 .for _t in obj depend all
-       ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \
+       ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 
${LIBCOMPATWMAKE} \
            -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t}
-       ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \
+       ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIBCOMPATWMAKE} \
            DIRPRFX=usr.bin/ldd ${_t}
 .endfor
-
-distribute32 install32: .MAKE .PHONY
-       ${_+_}cd ${.CURDIR}/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
-.if ${MK_CDDL} != "no"
-       ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
-.endif
-       ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
-.if ${MK_CRYPT} != "no"
-       ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
-.endif
-.if ${MK_KERBEROS} != "no"
-       ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
 .endif
+
+distribute${libcompat} install${libcompat}: .PHONY
+.for _dir in ${_LC_LIBDIRS.yes}
+       ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATIMAKE} 
${.TARGET:S/${libcompat}$//}
+.endfor
+.if ${libcompat} == "32"
        ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \
-           PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//}
-       ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} \
+           PROG=ld-elf32.so.1 ${LIBCOMPATIMAKE} ${.TARGET:S/32$//}
+       ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIBCOMPATIMAKE} \
            ${.TARGET:S/32$//}
+.endif
+
+.endif
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to