summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2016-03-11 03:38:10 +0000
committerimp <imp@FreeBSD.org>2016-03-11 03:38:10 +0000
commit4006aeb76ce367d441e21ef2042893daa8de4955 (patch)
tree2069389faeaef929a1c0d58bcd8a6cbb417a54cf
parent7dc9277bbcf0bc3c8ab1e322cbf565246556ca80 (diff)
downloadFreeBSD-src-4006aeb76ce367d441e21ef2042893daa8de4955.zip
FreeBSD-src-4006aeb76ce367d441e21ef2042893daa8de4955.tar.gz
Factor out lib32 generation to its own file. This is prep for a
similar Makefile.libsoft which will do the same for armv6 soft fp API libraries in prep for pulling the trigger on moving to armv6 hard float. Once there's two files, I'll work with bdrewery@ to merge the two files as they are mostly the same. The high rate of churn for Makefile* makes it quite difficult to make progress out of tree. Differential Review: https://reviews.freebsd.org/D5566
-rw-r--r--Makefile.inc1135
-rw-r--r--Makefile.lib32136
2 files changed, 138 insertions, 133 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index 85e1a60..36e464f 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -454,70 +454,11 @@ XCXXFLAGS+= ${BFLAGS}
.endif
.endif # ${XCC:M/*}
-WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP}
-
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
-# 32 bit world
-LIB32_OBJTREE= ${OBJTREE}${.CURDIR}/world32
-LIB32TMP= ${OBJTREE}${.CURDIR}/lib32
-
-.if ${TARGET_ARCH} == "amd64"
-.if empty(TARGET_CPUTYPE)
-LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
-.else
-LIB32CPUFLAGS= -march=${TARGET_CPUTYPE}
-.endif
-LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \
- MACHINE_CPU="i686 mmx sse sse2"
-LIB32WMAKEFLAGS= \
- AS="${XAS} --32" \
- LD="${XLD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \
- OBJCOPY="${XOBJCOPY}"
-
-.elif ${TARGET_ARCH} == "powerpc64"
-.if empty(TARGET_CPUTYPE)
-LIB32CPUFLAGS= -mcpu=powerpc
-.else
-LIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE}
-.endif
-LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc
-LIB32WMAKEFLAGS= \
- LD="${XLD} -m elf32ppc_fbsd" \
- OBJCOPY="${XOBJCOPY}"
+.include "Makefile.lib32"
.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}
-.endif
-
-# Yes, the flags are redundant.
-LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${LIB32_OBJTREE} \
- _LDSCRIPTROOT=${LIB32TMP} \
- 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 \
- -DLIBRARIES_ONLY \
- -DNO_CPU_CFLAGS \
- MK_CTF=no \
- -DNO_LINT \
- MK_TESTS=no
-
-LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \
- MK_MAN=no MK_HTML=no
-LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} \
- MK_TOOLCHAIN=no ${IMAKE_INSTALL}
-.endif
+WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP}
IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*}
IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
@@ -700,78 +641,6 @@ everything:
@echo ">>> stage 4.4: building everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; _PARALLEL_SUBDIR_OK=1 ${WMAKE} all
-.if defined(LIB32TMP)
-build32: .PHONY
- @echo
- @echo "--------------------------------------------------------------"
- @echo ">>> stage 5.1: building 32 bit shim libraries"
- @echo "--------------------------------------------------------------"
- mkdir -p ${LIB32TMP}/usr/include
- mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
- -p ${LIB32TMP}/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
-.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
-.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
-.endfor
-.for _dir in usr.bin/lex/lib
- ${_+_}cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} 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= \
- 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
-.for _t in obj depend all
- ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \
- -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t}
- ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \
- 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
- ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \
- PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//}
- ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} \
- ${.TARGET:S/32$//}
-.endif
WMAKE_TGTS=
WMAKE_TGTS+= _worldtmp _legacy
diff --git a/Makefile.lib32 b/Makefile.lib32
new file mode 100644
index 0000000..e385d53
--- /dev/null
+++ b/Makefile.lib32
@@ -0,0 +1,136 @@
+# $FreeBSD$
+
+# Makefile for the 32-bit compat libraries on PowerPC and AMD64.
+# could also be for mips, but that doesn't work today.
+
+# 32 bit world
+LIB32_OBJTREE= ${OBJTREE}${.CURDIR}/world32
+LIB32TMP= ${OBJTREE}${.CURDIR}/lib32
+
+.if ${TARGET_ARCH} == "amd64"
+.if empty(TARGET_CPUTYPE)
+LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
+.else
+LIB32CPUFLAGS= -march=${TARGET_CPUTYPE}
+.endif
+LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \
+ MACHINE_CPU="i686 mmx sse sse2"
+LIB32WMAKEFLAGS= \
+ AS="${XAS} --32" \
+ LD="${XLD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \
+ OBJCOPY="${XOBJCOPY}"
+
+.elif ${TARGET_ARCH} == "powerpc64"
+.if empty(TARGET_CPUTYPE)
+LIB32CPUFLAGS= -mcpu=powerpc
+.else
+LIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE}
+.endif
+LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc
+LIB32WMAKEFLAGS= \
+ LD="${XLD} -m elf32ppc_fbsd" \
+ OBJCOPY="${XOBJCOPY}"
+.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}
+.endif
+
+# Yes, the flags are redundant.
+LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${LIB32_OBJTREE} \
+ _LDSCRIPTROOT=${LIB32TMP} \
+ 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 \
+ -DLIBRARIES_ONLY \
+ -DNO_CPU_CFLAGS \
+ MK_CTF=no \
+ -DNO_LINT \
+ MK_TESTS=no
+
+LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \
+ MK_MAN=no MK_HTML=no
+LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} \
+ MK_TOOLCHAIN=no ${IMAKE_INSTALL}
+
+build32: .PHONY
+ @echo
+ @echo "--------------------------------------------------------------"
+ @echo ">>> stage 5.1: building 32 bit shim libraries"
+ @echo "--------------------------------------------------------------"
+ mkdir -p ${LIB32TMP}/usr/include
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
+ -p ${LIB32TMP}/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
+.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
+.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
+.endfor
+.for _dir in usr.bin/lex/lib
+ ${_+_}cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} 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= \
+ 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
+.for _t in obj depend all
+ ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \
+ -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t}
+ ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \
+ 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
+ ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \
+ PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//}
+ ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} \
+ ${.TARGET:S/32$//}
OpenPOWER on IntegriCloud