1# $FreeBSD$ 2 3.if !targets(__<${_this:T}>__) 4__<${_this:T}>__: 5 6# ------------------------------------------------------------------- 7# 32 bit world 8.if ${TARGET_ARCH} == "amd64" 9HAS_COMPAT=32 10.if empty(TARGET_CPUTYPE) 11LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2 12.else 13LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} 14.endif 15.if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \ 16 (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) 17.else 18LIB32CPUFLAGS+= -target x86_64-unknown-freebsd13.0 19.endif 20LIB32CPUFLAGS+= -m32 21LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \ 22 MACHINE_CPU="i686 mmx sse sse2" 23LIB32WMAKEFLAGS= \ 24 AS="${XAS} --32" \ 25 LD="${XLD} -m elf_i386_fbsd -L${LIBCOMPATTMP}/usr/lib32" 26 27.elif ${TARGET_ARCH} == "powerpc64" 28HAS_COMPAT=32 29.if empty(TARGET_CPUTYPE) 30LIB32CPUFLAGS= -mcpu=powerpc 31.else 32LIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE} 33.endif 34LIB32CPUFLAGS+= -m32 35LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc 36LIB32WMAKEFLAGS= \ 37 LD="${XLD} -m elf32ppc_fbsd" 38 39.elif ${TARGET_ARCH:Mmips64*} != "" 40HAS_COMPAT=32 41.if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \ 42 (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) 43.if empty(TARGET_CPUTYPE) 44LIB32CPUFLAGS= -march=mips3 45.else 46LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} 47.endif 48.else 49.if ${TARGET_ARCH:Mmips64el*} != "" 50LIB32CPUFLAGS= -target mipsel-unknown-freebsd13.0 51.else 52LIB32CPUFLAGS= -target mips-unknown-freebsd13.0 53.endif 54.endif 55LIB32CPUFLAGS+= -mabi=32 56LIB32WMAKEENV= MACHINE=mips MACHINE_ARCH=mips 57.if ${TARGET_ARCH:Mmips64el*} != "" 58LIB32WMAKEFLAGS= LD="${XLD} -m elf32ltsmip_fbsd" 59.else 60LIB32WMAKEFLAGS= LD="${XLD} -m elf32btsmip_fbsd" 61.endif 62.endif 63 64LIB32WMAKEFLAGS+= NM="${XNM}" 65LIB32WMAKEFLAGS+= OBJCOPY="${XOBJCOPY}" 66 67LIB32CFLAGS= -DCOMPAT_32BIT 68LIB32DTRACE= ${DTRACE} -32 69LIB32WMAKEFLAGS+= -DCOMPAT_32BIT 70 71# ------------------------------------------------------------------- 72# soft-fp world 73.if ${TARGET_ARCH:Marmv[67]*} != "" 74HAS_COMPAT=SOFT 75LIBSOFTCFLAGS= -DCOMPAT_SOFTFP 76LIBSOFTCPUFLAGS= -mfloat-abi=softfp 77LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=${TARGET_ARCH} 78LIBSOFTWMAKEFLAGS= -DCOMPAT_SOFTFP 79.endif 80 81# ------------------------------------------------------------------- 82# In the program linking case, select LIBCOMPAT 83.if defined(NEED_COMPAT) 84.ifndef HAS_COMPAT 85.error NEED_COMPAT defined, but no LIBCOMPAT is available 86.elif !${HAS_COMPAT:M${NEED_COMPAT}} && ${NEED_COMPAT} != "any" 87.error NEED_COMPAT (${NEED_COMPAT}) defined, but not in HAS_COMPAT ($HAS_COMPAT) 88.elif ${NEED_COMPAT} == "any" 89.endif 90.ifdef WANT_COMPAT 91.error Both WANT_COMPAT and NEED_COMPAT defined 92.endif 93WANT_COMPAT:= ${NEED_COMPAT} 94.endif 95 96.if defined(HAS_COMPAT) && defined(WANT_COMPAT) 97.if ${WANT_COMPAT} == "any" 98_LIBCOMPAT:= ${HAS_COMPAT:[1]} 99.else 100_LIBCOMPAT:= ${WANT_COMPAT} 101.endif 102.endif 103 104 105# ------------------------------------------------------------------- 106# Generic code for each type. 107# Set defaults based on type. 108libcompat= ${_LIBCOMPAT:tl} 109_LIBCOMPAT_MAKEVARS= _OBJTOP TMP CPUFLAGS CFLAGS CXXFLAGS WMAKEENV \ 110 WMAKEFLAGS WMAKE 111.for _var in ${_LIBCOMPAT_MAKEVARS} 112.if !empty(LIB${_LIBCOMPAT}${_var}) 113LIBCOMPAT${_var}?= ${LIB${_LIBCOMPAT}${_var}} 114.endif 115.endfor 116 117# Shared flags 118LIBCOMPAT_OBJTOP?= ${OBJTOP}/obj-lib${libcompat} 119LIBCOMPATTMP?= ${LIBCOMPAT_OBJTOP}/tmp 120 121LIBCOMPATCFLAGS+= ${LIBCOMPATCPUFLAGS} \ 122 -L${LIBCOMPATTMP}/usr/lib${libcompat} \ 123 --sysroot=${LIBCOMPATTMP} \ 124 ${BFLAGS} 125 126# -B is needed to find /usr/lib32/crti.o for GCC and /usr/libsoft/crti.o for 127# Clang/GCC. 128LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat} 129 130.if defined(WANT_COMPAT) 131LIBDIR_BASE:= /usr/lib${libcompat} 132_LIB_OBJTOP= ${LIBCOMPAT_OBJTOP} 133CFLAGS+= ${LIBCOMPATCFLAGS} 134.endif 135 136.endif 137