diff options
author | imp <imp@FreeBSD.org> | 2016-03-11 03:38:10 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2016-03-11 03:38:10 +0000 |
commit | 4006aeb76ce367d441e21ef2042893daa8de4955 (patch) | |
tree | 2069389faeaef929a1c0d58bcd8a6cbb417a54cf | |
parent | 7dc9277bbcf0bc3c8ab1e322cbf565246556ca80 (diff) | |
download | FreeBSD-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.inc1 | 135 | ||||
-rw-r--r-- | Makefile.lib32 | 136 |
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$//} |