diff options
Diffstat (limited to 'Makefile.libcompat')
-rw-r--r-- | Makefile.libcompat | 137 |
1 files changed, 64 insertions, 73 deletions
diff --git a/Makefile.libcompat b/Makefile.libcompat index eb2b12b6c7d2..a957c47598e6 100644 --- a/Makefile.libcompat +++ b/Makefile.libcompat @@ -1,109 +1,70 @@ -# $FreeBSD$ .if !targets(__<${_this:T}>__) __<${_this:T}>__: # Makefile for the compatibility libraries. -# - 32-bit compat libraries on MIPS, PowerPC, and AMD64. +# - 32-bit compat libraries on some 64-bit architectures + +.if defined(_LIBCOMPATS) .include <bsd.compat.mk> +.for libcompatidx _LIBCOMPAT libcompat in ${_LIBCOMPATS:range:@i@${i} ${_LIBCOMPATS:[$i]} ${libcompats:[$i]}@} + # Yes, the flags are redundant. -LIBCOMPATWMAKEENV+= \ +LIB${_LIBCOMPAT}WMAKEENV+= \ INSTALL="${INSTALL_CMD} -U" \ PATH=${TMPPATH} \ - SYSROOT=${LIBCOMPATTMP} \ + SYSROOT=${WORLDTMP} \ LIBDIR=/usr/lib${libcompat} \ SHLIBDIR=/usr/lib${libcompat} \ - DTRACE="${LIB$COMPATDTRACE:U${DTRACE}}" + LIBDATADIR=/usr/lib${libcompat} \ + DTRACE="${LIB${_LIBCOMPAT}DTRACE:U${DTRACE}}" .if ${MK_META_MODE} != "no" # Don't rebuild build-tools targets during normal build. -LIBCOMPATWMAKEENV+= BUILD_TOOLS_META=.NOMETA +LIB${_LIBCOMPAT}WMAKEENV+= BUILD_TOOLS_META=.NOMETA .endif -LIBCOMPATWMAKEFLAGS+= CC="${XCC} ${LIBCOMPATCFLAGS}" \ - CXX="${XCXX} ${LIBCOMPATCXXFLAGS} ${LIBCOMPATCFLAGS}" \ - CPP="${XCPP} ${LIBCOMPATCFLAGS}" \ - DESTDIR=${LIBCOMPATTMP} \ +LIB${_LIBCOMPAT}WMAKEFLAGS+= CC=${${XCC} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ + CXX=${${XCXX} ${LIB${_LIBCOMPAT}CXXFLAGS} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ + CPP=${${XCPP} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ + DESTDIR=${WORLDTMP} \ -DNO_CPU_CFLAGS \ + MK_BOOT=no \ MK_CTF=no \ - -DNO_LINT \ MK_TESTS=no -LIBCOMPATWMAKE+= ${TIME_ENV} ${LIBCOMPATWMAKEENV} ${MAKE} ${LIBCOMPATWMAKEFLAGS} \ - OBJTOP=${LIBCOMPAT_OBJTOP} \ +LIB${_LIBCOMPAT}WMAKE+= ${TIME_ENV} ${LIB${_LIBCOMPAT}WMAKEENV} ${MAKE} \ + ${LIB${_LIBCOMPAT}WMAKEFLAGS} \ + OBJTOP=${LIB${_LIBCOMPAT}_OBJTOP} \ OBJROOT='$${OBJTOP}/' \ + UNIVERSE_TOOLCHAIN_PATH=${UNIVERSE_TOOLCHAIN_PATH} \ MAKEOBJDIRPREFIX= \ + MK_INCLUDES=no \ MK_MAN=no MK_HTML=no -LIBCOMPATIMAKE+= ${LIBCOMPATWMAKE:NINSTALL=*:NDESTDIR=*} \ +LIB${_LIBCOMPAT}IMAKE+= ${LIB${_LIBCOMPAT}WMAKE:NINSTALL=*:NDESTDIR=*} \ ${IMAKE_INSTALL} \ -DLIBRARIES_ONLY -_LC_LIBDIRS.yes= lib -_LC_LIBDIRS.yes+= gnu/lib -_LC_LIBDIRS.${MK_CDDL:tl}+= cddl/lib -_LC_LIBDIRS.${MK_CRYPT:tl}+= secure/lib -_LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib - -_LC_INCDIRS= \ - include \ - lib/ncurses/tinfo \ - ${_LC_LIBDIRS.yes} - -.if ${MK_FILE} != "no" -_libmagic= lib/libmagic -.endif -.if ${MK_PMC} != "no" -_jevents= lib/libpmc/pmu-events -.endif - - # Shared logic build${libcompat}: .PHONY @echo @echo "--------------------------------------------------------------" - @echo ">>> stage 4.3: building lib${libcompat} shim libraries" + @echo ">>> stage 4.3.${libcompatidx}: building lib${libcompat} shim libraries" @echo "--------------------------------------------------------------" -.if ${MK_CLEAN} == "yes" - rm -rf ${LIBCOMPATTMP} -.else - ${_+_}@if [ -e "${LIBCOMPATTMP}" ]; then \ - echo ">>> Deleting stale files in build${libcompat} tree..."; \ - cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \ - DESTDIR=${LIBCOMPATTMP} \ - delete-old delete-old-libs >/dev/null; \ - fi -.endif # MK_CLEAN == "yes" - - mkdir -p ${LIBCOMPATTMP}/usr/include - ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ - -p ${LIBCOMPATTMP}/usr >/dev/null - ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \ - -p ${LIBCOMPATTMP}/usr/include >/dev/null ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ - -p ${LIBCOMPATTMP}/usr >/dev/null + -p ${WORLDTMP}/usr >/dev/null .if ${MK_DEBUG_FILES} != "no" - ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ - -p ${LIBCOMPATTMP}/usr/lib >/dev/null ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ - -p ${LIBCOMPATTMP}/usr/lib/debug/usr >/dev/null + -p ${WORLDTMP}/usr/lib/debug/usr >/dev/null .endif - mkdir -p ${WORLDTMP} - ln -sf ${.CURDIR}/sys ${WORLDTMP} -.for _t in ${_obj} includes -.for _dir in ${_LC_INCDIRS} - ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATWMAKE} MK_INCLUDES=yes \ - DIRPRFX=${_dir}/ ${_t} -.endfor -.endfor -.for _dir in lib/ncurses/tinfo ${_libmagic} ${_jevents} -.for _t in ${_obj} build-tools - ${_+_}cd ${.CURDIR}/${_dir}; \ + ${_+_}cd ${.CURDIR}; \ WORLDTMP=${WORLDTMP} \ MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \ - ${MAKE} DESTDIR= \ - OBJTOP=${LIBCOMPAT_OBJTOP} \ + ${MAKE} -f Makefile.inc1 \ + DESTDIR= \ + OBJTOP=${LIB${_LIBCOMPAT}_OBJTOP} \ OBJROOT='$${OBJTOP}/' \ + UNIVERSE_TOOLCHAIN_PATH=${UNIVERSE_TOOLCHAIN_PATH} \ MAKEOBJDIRPREFIX= \ - DIRPRFX=${_dir}/ \ -DNO_LINT \ -DNO_CPU_CFLAGS \ MK_ASAN=no \ @@ -112,15 +73,45 @@ build${libcompat}: .PHONY MK_SSP=no \ MK_UBSAN=no \ MK_WERROR=no \ - ${_t} -.endfor -.endfor + _lc_build-tools ${_+_}cd ${.CURDIR}; \ - ${LIBCOMPATWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries + ${LIB${_LIBCOMPAT}WMAKE} -f Makefile.inc1 -DNO_FSCHG libraries distribute${libcompat} install${libcompat}: .PHONY + ${_+_}cd ${.CURDIR}; \ + ${LIB${_LIBCOMPAT}IMAKE} -f Makefile.inc1 _lc_${.TARGET:S/${libcompat}$//} + +.endfor # libcompatidx _LIBCOMPAT libcompat + +.endif # defined(_LIBCOMPATS) + +# These depend on MK_*, which could vary between the native and compat +# architectures. Thus targets using them are run within a compat sub-make +# rather than the native make environment. + +_LC_LIBDIRS.yes= lib +_LC_LIBDIRS.yes+= gnu/lib +_LC_LIBDIRS.${MK_CDDL:tl}+= cddl/lib +_LC_LIBDIRS.${MK_CRYPT:tl}+= secure/lib +_LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib + +.if ${MK_FILE} != "no" +_libmagic= lib/libmagic +.endif +.if ${MK_PMC} != "no" +_jevents= lib/libpmc/pmu-events +.endif + +_lc_build-tools: +.for _dir in lib/ncurses/tinfo ${_libmagic} ${_jevents} +.for _t in ${_obj} build-tools + ${_+_}cd ${.CURDIR}/${_dir}; ${MAKE} DIRPRFX=${_dir}/ ${_t} +.endfor +.endfor + +_lc_distribute _lc_install: .for _dir in ${_LC_LIBDIRS.yes} - ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATIMAKE} ${.TARGET:S/${libcompat}$//} + ${_+_}cd ${.CURDIR}/${_dir}; ${MAKE} ${.TARGET:S/^_lc_//} .endfor .endif # !targets(__<${_this:T}>__) |