1dba75e9fSBryan Drewery# $FreeBSD$ 2dba75e9fSBryan Drewery 3dba75e9fSBryan Drewery.if !targets(__<${_this:T}>__) 4dba75e9fSBryan Drewery__<${_this:T}>__: 5dba75e9fSBryan Drewery 6dba75e9fSBryan Drewery# Makefile for the compatibility libraries. 7a1b67573SMike Karels# - 32-bit compat libraries on some 64-bit architectures 8dba75e9fSBryan Drewery 991d7edd5SJessica Clarke.if defined(_LIBCOMPATS) 1091d7edd5SJessica Clarke 11bbcf7eddSBrooks Davis.include <bsd.compat.mk> 1207394091SBryan Drewery 1391d7edd5SJessica Clarke.for libcompatidx _LIBCOMPAT libcompat in ${_LIBCOMPATS:range:@i@${i} ${_LIBCOMPATS:[$i]} ${libcompats:[$i]}@} 1491d7edd5SJessica Clarke 15dba75e9fSBryan Drewery# Yes, the flags are redundant. 1691d7edd5SJessica ClarkeLIB${_LIBCOMPAT}WMAKEENV+= \ 177eb9f755SWarner Losh INSTALL="${INSTALL_CMD} -U" \ 18dba75e9fSBryan Drewery PATH=${TMPPATH} \ 19724123b9SBrooks Davis SYSROOT=${WORLDTMP} \ 20dba75e9fSBryan Drewery LIBDIR=/usr/lib${libcompat} \ 21dba75e9fSBryan Drewery SHLIBDIR=/usr/lib${libcompat} \ 22ac175bd3SAlex Richardson LIBDATADIR=/usr/lib${libcompat} \ 23*8aaa1230SJessica Clarke DTRACE="${LIB${_LIBCOMPAT}DTRACE:U${DTRACE}}" 24d1dd034dSBryan Drewery.if ${MK_META_MODE} != "no" 25d1dd034dSBryan Drewery# Don't rebuild build-tools targets during normal build. 2691d7edd5SJessica ClarkeLIB${_LIBCOMPAT}WMAKEENV+= BUILD_TOOLS_META=.NOMETA 27d1dd034dSBryan Drewery.endif 285d4f8df4SJessica ClarkeLIB${_LIBCOMPAT}WMAKEFLAGS+= CC=${${XCC} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ 295d4f8df4SJessica Clarke CXX=${${XCXX} ${LIB${_LIBCOMPAT}CXXFLAGS} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ 305d4f8df4SJessica Clarke CPP=${${XCPP} ${LIB${_LIBCOMPAT}CFLAGS}:L:Q} \ 31724123b9SBrooks Davis DESTDIR=${WORLDTMP} \ 32dba75e9fSBryan Drewery -DNO_CPU_CFLAGS \ 3303f6e182SWarner Losh MK_BOOT=no \ 34dba75e9fSBryan Drewery MK_CTF=no \ 3503f6e182SWarner Losh MK_TESTS=no 3691d7edd5SJessica ClarkeLIB${_LIBCOMPAT}WMAKE+= ${TIME_ENV} ${LIB${_LIBCOMPAT}WMAKEENV} ${MAKE} \ 3791d7edd5SJessica Clarke ${LIB${_LIBCOMPAT}WMAKEFLAGS} \ 3891d7edd5SJessica Clarke OBJTOP=${LIB${_LIBCOMPAT}_OBJTOP} \ 391031b94fSBryan Drewery OBJROOT='$${OBJTOP}/' \ 401c024976SJohn Baldwin UNIVERSE_TOOLCHAIN_PATH=${UNIVERSE_TOOLCHAIN_PATH} \ 41996e4759SBryan Drewery MAKEOBJDIRPREFIX= \ 420a5e35a7SJessica Clarke MK_INCLUDES=no \ 43dba75e9fSBryan Drewery MK_MAN=no MK_HTML=no 4491d7edd5SJessica ClarkeLIB${_LIBCOMPAT}IMAKE+= ${LIB${_LIBCOMPAT}WMAKE:NINSTALL=*:NDESTDIR=*} \ 4552f9bacbSJohn Baldwin ${IMAKE_INSTALL} \ 46429882e6SBryan Drewery -DLIBRARIES_ONLY 47dba75e9fSBryan Drewery 4810afc5eaSJessica Clarke# Shared logic 4910afc5eaSJessica Clarkebuild${libcompat}: .PHONY 5010afc5eaSJessica Clarke @echo 5110afc5eaSJessica Clarke @echo "--------------------------------------------------------------" 5291d7edd5SJessica Clarke @echo ">>> stage 4.3.${libcompatidx}: building lib${libcompat} shim libraries" 5310afc5eaSJessica Clarke @echo "--------------------------------------------------------------" 5410afc5eaSJessica Clarke ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ 5510afc5eaSJessica Clarke -p ${WORLDTMP}/usr >/dev/null 5610afc5eaSJessica Clarke.if ${MK_DEBUG_FILES} != "no" 5710afc5eaSJessica Clarke ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ 5810afc5eaSJessica Clarke -p ${WORLDTMP}/usr/lib/debug/usr >/dev/null 5910afc5eaSJessica Clarke.endif 6010afc5eaSJessica Clarke ${_+_}cd ${.CURDIR}; \ 6110afc5eaSJessica Clarke WORLDTMP=${WORLDTMP} \ 6210afc5eaSJessica Clarke MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \ 6310afc5eaSJessica Clarke ${MAKE} -f Makefile.inc1 \ 6410afc5eaSJessica Clarke DESTDIR= \ 6591d7edd5SJessica Clarke OBJTOP=${LIB${_LIBCOMPAT}_OBJTOP} \ 6610afc5eaSJessica Clarke OBJROOT='$${OBJTOP}/' \ 6710afc5eaSJessica Clarke MAKEOBJDIRPREFIX= \ 6810afc5eaSJessica Clarke -DNO_LINT \ 6910afc5eaSJessica Clarke -DNO_CPU_CFLAGS \ 7010afc5eaSJessica Clarke MK_ASAN=no \ 7110afc5eaSJessica Clarke MK_CTF=no \ 7210afc5eaSJessica Clarke MK_RETPOLINE=no \ 7310afc5eaSJessica Clarke MK_SSP=no \ 7410afc5eaSJessica Clarke MK_UBSAN=no \ 7510afc5eaSJessica Clarke MK_WERROR=no \ 7610afc5eaSJessica Clarke _lc_build-tools 7710afc5eaSJessica Clarke ${_+_}cd ${.CURDIR}; \ 7891d7edd5SJessica Clarke ${LIB${_LIBCOMPAT}WMAKE} -f Makefile.inc1 -DNO_FSCHG libraries 7910afc5eaSJessica Clarke 8010afc5eaSJessica Clarkedistribute${libcompat} install${libcompat}: .PHONY 8110afc5eaSJessica Clarke ${_+_}cd ${.CURDIR}; \ 8291d7edd5SJessica Clarke ${LIB${_LIBCOMPAT}IMAKE} -f Makefile.inc1 _lc_${.TARGET:S/${libcompat}$//} 8391d7edd5SJessica Clarke 8491d7edd5SJessica Clarke.endfor # libcompatidx _LIBCOMPAT libcompat 8591d7edd5SJessica Clarke 8691d7edd5SJessica Clarke.endif # defined(_LIBCOMPATS) 8710afc5eaSJessica Clarke 8810afc5eaSJessica Clarke# These depend on MK_*, which could vary between the native and compat 8910afc5eaSJessica Clarke# architectures. Thus targets using them are run within a compat sub-make 9010afc5eaSJessica Clarke# rather than the native make environment. 9110afc5eaSJessica Clarke 92ad91146cSEd Maste_LC_LIBDIRS.yes= lib 930d849865SEd Maste_LC_LIBDIRS.yes+= gnu/lib 94048ce093SBryan Drewery_LC_LIBDIRS.${MK_CDDL:tl}+= cddl/lib 95048ce093SBryan Drewery_LC_LIBDIRS.${MK_CRYPT:tl}+= secure/lib 96048ce093SBryan Drewery_LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib 97dba75e9fSBryan Drewery 98127b666cSBryan Drewery.if ${MK_FILE} != "no" 99127b666cSBryan Drewery_libmagic= lib/libmagic 100127b666cSBryan Drewery.endif 101689c7e79SMitchell Horne.if ${MK_PMC} != "no" 1026f1f2b19SBryan Drewery_jevents= lib/libpmc/pmu-events 1036f1f2b19SBryan Drewery.endif 1046f1f2b19SBryan Drewery 10510afc5eaSJessica Clarke_lc_build-tools: 106cc46927fSBaptiste Daroussin.for _dir in lib/ncurses/tinfo ${_libmagic} ${_jevents} 107c4273800SBryan Drewery.for _t in ${_obj} build-tools 10810afc5eaSJessica Clarke ${_+_}cd ${.CURDIR}/${_dir}; ${MAKE} DIRPRFX=${_dir}/ ${_t} 109c4273800SBryan Drewery.endfor 110dba75e9fSBryan Drewery.endfor 111dba75e9fSBryan Drewery 11210afc5eaSJessica Clarke_lc_distribute _lc_install: 113dba75e9fSBryan Drewery.for _dir in ${_LC_LIBDIRS.yes} 11410afc5eaSJessica Clarke ${_+_}cd ${.CURDIR}/${_dir}; ${MAKE} ${.TARGET:S/^_lc_//} 115dba75e9fSBryan Drewery.endfor 116dba75e9fSBryan Drewery 117a4330302SBrooks Davis.endif # !targets(__<${_this:T}>__) 118