Index: Makefile =================================================================== --- Makefile +++ Makefile @@ -125,7 +125,8 @@ obj objlink rerelease showconfig tags toolchain update \ _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _build-tools _cross-tools _includes _libraries _depend \ - build32 builddtb distribute32 install32 xdev xdev-build xdev-install \ + build32 distribute32 install32 buildsoft distributesoft installsoft \ + builddtb xdev xdev-build xdev-install \ xdev-links native-xtools installconfig \ TGTS+= ${SUBDIR_TARGETS} Index: Makefile.inc1 =================================================================== --- Makefile.inc1 +++ Makefile.inc1 @@ -457,6 +457,9 @@ .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" .include "Makefile.lib32" .endif +.if ${TARGET_ARCH} == "armv6" +.include "Makefile.libsoft" +.endif WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP} @@ -516,6 +519,9 @@ .if defined(LIB32TMP) rm -rf ${LIB32TMP} .endif +.if defined(LIBSOFTTMP) + rm -rf ${LIBSOFTTMP} +.endif .else rm -rf ${WORLDTMP}/legacy/usr/include # XXX - These can depend on any header file. @@ -554,6 +560,16 @@ -p ${WORLDTMP}/usr/lib/debug/usr >/dev/null .endif .endif +.if ${MK_LIBSOFT} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${WORLDTMP}/usr >/dev/null +.if ${MK_DEBUG_FILES} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${WORLDTMP}/legacy/usr/lib/debug/usr >/dev/null + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${WORLDTMP}/usr/lib/debug/usr >/dev/null +.endif +.endif .if ${MK_TESTS} != "no" mkdir -p ${WORLDTMP}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ @@ -589,6 +605,9 @@ .if defined(LIB32TMP) ${_+_}cd ${.CURDIR}; ${LIB32WMAKE} -f Makefile.inc1 ${CLEANDIR} .endif +.if defined(LIBSOFTTMP) + ${_+_}cd ${.CURDIR}; ${LIBSOFTWMAKE} -f Makefile.inc1 ${CLEANDIR} +.endif .endif _obj: @echo @@ -656,6 +675,9 @@ .if defined(LIB32TMP) && ${MK_LIB32} != "no" && empty(SUBDIR_OVERRIDE) WMAKE_TGTS+= build32 .endif +.if defined(LIBSOFTTMP) && ${MK_LIBSOFT} != "no" && empty(SUBDIR_OVERRIDE) +WMAKE_TGTS+= buildsoft +.endif buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue .ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue @@ -694,7 +716,7 @@ @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:Nbuild32:Nbuildsoft} toolchain: ${TOOLCHAIN_TGTS} kernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} @@ -791,6 +813,9 @@ .if defined(LIB32TMP) && ${MK_LIB32} != "no" EXTRA_DISTRIBUTIONS+= lib32 .endif +.if defined(LIBSOFTTMP) && ${MK_LIBSOFT} != "no" +EXTRA_DISTRIBUTIONS+= libsoft +.endif .if ${MK_TESTS} != "no" EXTRA_DISTRIBUTIONS+= tests .endif @@ -849,6 +874,14 @@ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null .endif .endif +.if ${MK_LIBSOFT} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null +.if ${MK_DEBUG_FILES} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null +.endif +.endif .if ${MK_TESTS} != "no" && ${dist} == "tests" -mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ @@ -869,6 +902,10 @@ ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.lib32.dist | \ sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG} .endif +.if ${MK_LIBSOFT} != "no" + ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist | \ + sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG} +.endif .endif .endfor -mkdir ${DESTDIR}/${DISTDIR}/base @@ -954,6 +991,9 @@ .if defined(LIB32TMP) && ${MK_LIB32} != "no" ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 .endif +.if defined(LIBSOFTTMP) && ${MK_LIBSOFT} != "no" + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 installsoft +.endif redistribute: .MAKE .PHONY @echo "--------------------------------------------------------------" @@ -964,6 +1004,10 @@ ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 \ DISTRIBUTION=lib32 .endif +.if defined(LIBSOFTTMP) && ${MK_LIBSOFT} != "no" + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distributesoft \ + DISTRIBUTION=libsoft +.endif distrib-dirs distribution: .MAKE .PHONY ${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ @@ -1025,7 +1069,7 @@ .endif .endfor -${WMAKE_TGTS:N_worldtmp:Nbuild32} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY +${WMAKE_TGTS:N_worldtmp:Nbuild32:Nbuildsoft} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY # # buildkernel @@ -2278,6 +2322,10 @@ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib32.dist \ -p ${XDDESTDIR}/usr >/dev/null .endif +.if ${MK_LIBSOFT} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${XDDESTDIR}/usr >/dev/null +.endif .if ${MK_TESTS} != "no" mkdir -p ${XDDESTDIR}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ Index: Makefile.libsoft =================================================================== --- Makefile.libsoft +++ Makefile.libsoft @@ -1,136 +1,99 @@ # $FreeBSD$ +# + +# soft-fp world +LIBSOFT_OBJTREE= ${OBJTREE}${.CURDIR}/worldsoft +LIBSOFTTMP= ${OBJTREE}${.CURDIR}/libsoft -# 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 +LIBSOFTCPUFLAGS= +LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=armv6 +LIBSOFTWMAKEFLAGS= +LIBSOFTFLAGS= -isystem ${LIBSOFTTMP}/usr/include/ -DCOMPAT_SOFTFP \ + -L${LIBSOFTTMP}/usr/libsoft \ + -B${LIBSOFTTMP}/usr/libsoft .if ${XCC:N${CCACHE_BIN}:M/*} -LIB32FLAGS+= --sysroot=${WORLDTMP} +LIBSOFTFLAGS+= --sysroot=${WORLDTMP} .endif # Yes, the flags are redundant. -LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${LIB32_OBJTREE} \ - _LDSCRIPTROOT=${LIB32TMP} \ +LIBSOFTWMAKEENV+= MAKEOBJDIRPREFIX=${LIBSOFT_OBJTREE} \ + _LDSCRIPTROOT=${LIBSOFTTMP} \ 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/libsoft \ + SHLIBDIR=/usr/libsoft \ + DTRACE="${DTRACE}" +LIBSOFTWMAKEFLAGS+= CC="${XCC} ${LIBSOFTFLAGS}" \ + CXX="${XCXX} ${LIBSOFTFLAGS}" \ + DESTDIR=${LIBSOFTTMP} \ + -DCOMPAT_SOFTFP \ -DLIBRARIES_ONLY \ -DNO_CPU_CFLAGS \ MK_CTF=no \ -DNO_LINT \ MK_TESTS=no +LIBSOFTWMAKE= ${LIBSOFTWMAKEENV} ${MAKE} ${LIBSOFTWMAKEFLAGS} \ + MK_MAN=no MK_HTML=no +LIBSOFTIMAKE= ${LIBSOFTWMAKE: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} - -build32: .PHONY +buildsoft: .PHONY @echo @echo "--------------------------------------------------------------" - @echo ">>> stage 5.1: building 32 bit shim libraries" + @echo ">>> stage 5.1: building softfp shim libraries" @echo "--------------------------------------------------------------" - mkdir -p ${LIB32TMP}/usr/include + mkdir -p ${LIBSOFTTMP}/usr/include mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ - -p ${LIB32TMP}/usr >/dev/null + -p ${LIBSOFTTMP}/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 ${LIBSOFTTMP}/usr/include >/dev/null + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${LIBSOFTTMP}/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 ${LIBSOFTTMP}/usr/lib >/dev/null + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.libsoft.dist \ + -p ${LIBSOFTTMP}/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} + ${_+_}cd ${.CURDIR}/include; ${LIBSOFTWMAKE} DIRPRFX=include/ ${_t} + ${_+_}cd ${.CURDIR}/lib; ${LIBSOFTWMAKE} DIRPRFX=lib/ ${_t} .if ${MK_CDDL} != "no" - ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32WMAKE} DIRPRFX=cddl/lib/ ${_t} + ${_+_}cd ${.CURDIR}/cddl/lib; ${LIBSOFTWMAKE} DIRPRFX=cddl/lib/ ${_t} .endif - ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32WMAKE} DIRPRFX=gnu/lib/ ${_t} + ${_+_}cd ${.CURDIR}/gnu/lib; ${LIBSOFTWMAKE} DIRPRFX=gnu/lib/ ${_t} .if ${MK_CRYPT} != "no" - ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32WMAKE} DIRPRFX=secure/lib/ ${_t} + ${_+_}cd ${.CURDIR}/secure/lib; ${LIBSOFTWMAKE} DIRPRFX=secure/lib/ ${_t} .endif .if ${MK_KERBEROS} != "no" - ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32WMAKE} DIRPRFX=kerberos5/lib ${_t} + ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIBSOFTWMAKE} DIRPRFX=kerberos5/lib ${_t} .endif .endfor .for _dir in usr.bin/lex/lib - ${_+_}cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} DIRPRFX=${_dir}/ obj + ${_+_}cd ${.CURDIR}/${_dir}; ${LIBSOFTWMAKE} 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=${LIBSOFT_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 + ${LIBSOFTWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries -distribute32 install32: .MAKE .PHONY - ${_+_}cd ${.CURDIR}/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} +distributesoft installsoft: .MAKE .PHONY + ${_+_}cd ${.CURDIR}/lib; ${LIBSOFTIMAKE} ${.TARGET:S/soft$//} .if ${MK_CDDL} != "no" - ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} + ${_+_}cd ${.CURDIR}/cddl/lib; ${LIBSOFTIMAKE} ${.TARGET:S/soft$//} .endif - ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} + ${_+_}cd ${.CURDIR}/gnu/lib; ${LIBSOFTIMAKE} ${.TARGET:S/soft$//} .if ${MK_CRYPT} != "no" - ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} + ${_+_}cd ${.CURDIR}/secure/lib; ${LIBSOFTIMAKE} ${.TARGET:S/soft$//} .endif .if ${MK_KERBEROS} != "no" - ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} + ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIBSOFTIMAKE} ${.TARGET:S/soft$//} .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$//} Index: lib/Makefile =================================================================== --- lib/Makefile +++ lib/Makefile @@ -172,7 +172,7 @@ _libcasper= libcasper .endif -.if ${MK_CLANG} != "no" && !defined(COMPAT_32BIT) +.if ${MK_CLANG} != "no" && !defined(COMPAT_32BIT) && !defined(COMPAT_SOFTFP) _clang= clang .endif