5202371725
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
137 lines
4.4 KiB
Makefile
137 lines
4.4 KiB
Makefile
# $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$//}
|