bsd.compat.mk (b2dcde7e9e75dd35124d12e68036e56ee650d568) bsd.compat.mk (91d7edd549f52d09dbb12ecf5f0cf2298287f1c8)
1# $FreeBSD$
2
3.if !targets(__<${_this:T}>__)
4__<${_this:T}>__:
5
1# $FreeBSD$
2
3.if !targets(__<${_this:T}>__)
4__<${_this:T}>__:
5
6.if defined(_LIBCOMPAT)
6_ALL_LIBCOMPATS:= 32
7
8.if defined(_LIBCOMPATS)
7COMPAT_ARCH?= ${TARGET_ARCH}
9COMPAT_ARCH?= ${TARGET_ARCH}
8COMPAT_CPUTYPE?= ${CPUTYPE_${_LIBCOMPAT}}
10.for _LIBCOMPAT in ${_ALL_LIBCOMPATS}
11LIB${_LIBCOMPAT}CPUTYPE?= ${CPUTYPE_${_LIBCOMPAT}}
12.endfor
9.if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \
10 (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc)
11COMPAT_COMPILER_TYPE= gcc
12.else
13COMPAT_COMPILER_TYPE= clang
14.endif
15.else
16COMPAT_ARCH= ${MACHINE_ARCH}
13.if (defined(WANT_COMPILER_TYPE) && ${WANT_COMPILER_TYPE} == gcc) || \
14 (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc)
15COMPAT_COMPILER_TYPE= gcc
16.else
17COMPAT_COMPILER_TYPE= clang
18.endif
19.else
20COMPAT_ARCH= ${MACHINE_ARCH}
17COMPAT_CPUTYPE= ${CPUTYPE}
21.for _LIBCOMPAT in ${_ALL_LIBCOMPATS}
22LIB${_LIBCOMPAT}CPUTYPE= ${CPUTYPE}
23.endfor
18.include <bsd.compiler.mk>
19COMPAT_COMPILER_TYPE=${COMPILER_TYPE}
20.endif
21
22# -------------------------------------------------------------------
23# 32 bit world
24.if ${COMPAT_ARCH} == "amd64"
24.include <bsd.compiler.mk>
25COMPAT_COMPILER_TYPE=${COMPILER_TYPE}
26.endif
27
28# -------------------------------------------------------------------
29# 32 bit world
30.if ${COMPAT_ARCH} == "amd64"
25HAS_COMPAT=32
26.if empty(COMPAT_CPUTYPE)
31HAS_COMPAT+= 32
32.if empty(LIB32CPUTYPE)
27LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
28.else
33LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
34.else
29LIB32CPUFLAGS= -march=${COMPAT_CPUTYPE}
35LIB32CPUFLAGS= -march=${LIB32CPUTYPE}
30.endif
31.if ${COMPAT_COMPILER_TYPE} == gcc
32.else
33LIB32CPUFLAGS+= -target x86_64-unknown-freebsd${OS_REVISION}
34.endif
35LIB32CPUFLAGS+= -m32
36LIB32_MACHINE= i386
37LIB32_MACHINE_ARCH= i386
38LIB32WMAKEENV= MACHINE_CPU="i686 mmx sse sse2"
39LIB32WMAKEFLAGS= \
40 LD="${XLD} -m elf_i386_fbsd"
41
42.elif ${COMPAT_ARCH} == "powerpc64"
36.endif
37.if ${COMPAT_COMPILER_TYPE} == gcc
38.else
39LIB32CPUFLAGS+= -target x86_64-unknown-freebsd${OS_REVISION}
40.endif
41LIB32CPUFLAGS+= -m32
42LIB32_MACHINE= i386
43LIB32_MACHINE_ARCH= i386
44LIB32WMAKEENV= MACHINE_CPU="i686 mmx sse sse2"
45LIB32WMAKEFLAGS= \
46 LD="${XLD} -m elf_i386_fbsd"
47
48.elif ${COMPAT_ARCH} == "powerpc64"
43HAS_COMPAT=32
44.if empty(COMPAT_CPUTYPE)
49HAS_COMPAT+= 32
50.if empty(LIB32CPUTYPE)
45LIB32CPUFLAGS= -mcpu=powerpc
46.else
51LIB32CPUFLAGS= -mcpu=powerpc
52.else
47LIB32CPUFLAGS= -mcpu=${COMPAT_CPUTYPE}
53LIB32CPUFLAGS= -mcpu=${LIB32CPUTYPE}
48.endif
49
50.if ${COMPAT_COMPILER_TYPE} == "gcc"
51LIB32CPUFLAGS+= -m32
52.else
53LIB32CPUFLAGS+= -target powerpc-unknown-freebsd${OS_REVISION}
54.endif
55

--- 28 unchanged lines hidden (view full) ---

84.ifdef WANT_COMPAT
85.error Both WANT_COMPAT and NEED_COMPAT defined
86.endif
87WANT_COMPAT:= ${NEED_COMPAT}
88.endif
89
90.if defined(HAS_COMPAT) && defined(WANT_COMPAT)
91.if ${WANT_COMPAT} == "any"
54.endif
55
56.if ${COMPAT_COMPILER_TYPE} == "gcc"
57LIB32CPUFLAGS+= -m32
58.else
59LIB32CPUFLAGS+= -target powerpc-unknown-freebsd${OS_REVISION}
60.endif
61

--- 28 unchanged lines hidden (view full) ---

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"
92_LIBCOMPAT:= ${HAS_COMPAT:[1]}
98USE_COMPAT:= ${HAS_COMPAT:[1]}
93.else
99.else
94_LIBCOMPAT:= ${WANT_COMPAT}
100USE_COMPAT:= ${WANT_COMPAT}
95.endif
101.endif
102
103_LIBCOMPATS= ${USE_COMPAT}
96.endif
97
104.endif
105
106libcompats= ${_LIBCOMPATS:tl}
107
98# -------------------------------------------------------------------
99# Generic code for each type.
100# Set defaults based on type.
108# -------------------------------------------------------------------
109# Generic code for each type.
110# Set defaults based on type.
101libcompat= ${_LIBCOMPAT:tl}
102_LIBCOMPAT_MAKEVARS= _OBJTOP TMP CPUFLAGS CFLAGS CXXFLAGS LDFLAGS \
103 _MACHINE _MACHINE_ARCH _MACHINE_ABI \
104 WMAKEENV WMAKEFLAGS WMAKE WORLDTMP
105.for _var in ${_LIBCOMPAT_MAKEVARS}
106.if !empty(LIB${_LIBCOMPAT}${_var})
107LIBCOMPAT${_var}?= ${LIB${_LIBCOMPAT}${_var}}
108.endif
109.endfor
110
111.for _LIBCOMPAT _libcompat in ${_LIBCOMPATS:@v@${v} ${v:tl}@}
111WORLDTMP?= ${SYSROOT}
112
113# Shared flags
112WORLDTMP?= ${SYSROOT}
113
114# Shared flags
114LIBCOMPAT_OBJTOP?= ${OBJTOP}/obj-lib${libcompat}
115LIB${_LIBCOMPAT}_OBJTOP?= ${OBJTOP}/obj-lib${_libcompat}
115
116
116LIBCOMPATCFLAGS+= ${LIBCOMPATCPUFLAGS} \
117LIB${_LIBCOMPAT}CFLAGS+= ${LIB${_LIBCOMPAT}CPUFLAGS} \
117 --sysroot=${WORLDTMP} \
118 ${BFLAGS}
119
118 --sysroot=${WORLDTMP} \
119 ${BFLAGS}
120
120LIBCOMPATLDFLAGS+= -L${WORLDTMP}/usr/lib${libcompat}
121LIB${_LIBCOMPAT}LDFLAGS+= -L${WORLDTMP}/usr/lib${_libcompat}
121
122
122LIBCOMPATWMAKEENV+= MACHINE=${LIBCOMPAT_MACHINE}
123LIBCOMPATWMAKEENV+= MACHINE_ARCH=${LIBCOMPAT_MACHINE_ARCH}
123LIB${_LIBCOMPAT}WMAKEENV+= MACHINE=${LIB${_LIBCOMPAT}_MACHINE}
124LIB${_LIBCOMPAT}WMAKEENV+= MACHINE_ARCH=${LIB${_LIBCOMPAT}_MACHINE_ARCH}
124
125# -B is needed to find /usr/lib32/crti.o for gcc.
125
126# -B is needed to find /usr/lib32/crti.o for gcc.
126LIBCOMPATCFLAGS+= -B${WORLDTMP}/usr/lib${libcompat}
127LIB${_LIBCOMPAT}CFLAGS+= -B${WORLDTMP}/usr/lib${_libcompat}
128.endfor
127
129
128.if defined(WANT_COMPAT)
130.if defined(USE_COMPAT)
131libcompat= ${USE_COMPAT:tl}
132
133_LIBCOMPAT_MAKEVARS= _OBJTOP TMP CPUFLAGS CFLAGS CXXFLAGS LDFLAGS \
134 _MACHINE _MACHINE_ARCH _MACHINE_ABI \
135 WMAKEENV WMAKEFLAGS WMAKE WORLDTMP
136.for _var in ${_LIBCOMPAT_MAKEVARS}
137.if !empty(LIB${USE_COMPAT}${_var})
138LIBCOMPAT${_var}?= ${LIB${USE_COMPAT}${_var}}
139.endif
140.endfor
141
129LIBDIR_BASE:= /usr/lib${libcompat}
130LIBDATADIR:= /usr/lib${libcompat}
131_LIB_OBJTOP= ${LIBCOMPAT_OBJTOP}
132CFLAGS+= ${LIBCOMPATCFLAGS}
133LDFLAGS+= ${CFLAGS} ${LIBCOMPATLDFLAGS}
134MACHINE= ${LIBCOMPAT_MACHINE}
135MACHINE_ARCH= ${LIBCOMPAT_MACHINE_ARCH}
136.endif
137
138.endif
142LIBDIR_BASE:= /usr/lib${libcompat}
143LIBDATADIR:= /usr/lib${libcompat}
144_LIB_OBJTOP= ${LIBCOMPAT_OBJTOP}
145CFLAGS+= ${LIBCOMPATCFLAGS}
146LDFLAGS+= ${CFLAGS} ${LIBCOMPATLDFLAGS}
147MACHINE= ${LIBCOMPAT_MACHINE}
148MACHINE_ARCH= ${LIBCOMPAT_MACHINE_ARCH}
149.endif
150
151.endif