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
This commit is contained in:
parent
7dc9277bbc
commit
4006aeb76c
135
Makefile.inc1
135
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
|
||||
|
136
Makefile.lib32
Normal file
136
Makefile.lib32
Normal file
@ -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$//}
|
Loading…
Reference in New Issue
Block a user