@@ -58,6 +58,14 @@ include JAVA_HOME.mk
58
58
59
59
include platform.mk
60
60
61
+ # Most of the time, GCC is called `gcc` and is installed from a `gcc` package.
62
+ # However, sometimes a distribution packages multiple versions of GCC. In this
63
+ # case, both the binary and package names of non-default versions are suffixed
64
+ # (e.g., `gcc-8`). We can't use the standard CC variable to adapt to this,
65
+ # because each target already overrides that variable with the name of the
66
+ # appropriate cross compiler.
67
+ GCC ?= gcc
68
+
61
69
# In all cases, we want to include the system JNI headers, our own headers,
62
70
# crank the optimization level, and compile position-independent code so that
63
71
# it will work as a library (dlopen(3) et al. can load it into any memory).
87
95
$(error $(NO_TARGET_PLATFORM_SPECIFIED ) )
88
96
89
97
crosstools :
90
- apt install --install-recommends \
91
- gcc -i686-linux-gnu \
92
- gcc -arm-linux-gnueabi \
93
- gcc -arm-linux-gnueabihf \
94
- gcc -aarch64-linux-gnu \
98
+ apt-get --assume-yes install \
99
+ $( GCC ) -i686-linux-gnu \
100
+ $( GCC ) -arm-linux-gnueabi \
101
+ $( GCC ) -arm-linux-gnueabihf \
102
+ $( GCC ) -aarch64-linux-gnu \
95
103
gcc-mingw-w64 \
96
- gcc -powerpc-linux-gnu
104
+ $( GCC ) -powerpc-linux-gnu
97
105
98
106
# Does not include Android, because Android toolchains are large, not commonly
99
107
# available, and the resulting library is not typically desired.
@@ -108,14 +116,15 @@ LINUX_CFLAGS += -U_FORTIFY_SOURCE
108
116
endif
109
117
110
118
# Requires gcc-i686-linux-gnu.
111
- linux32 : export CC := i686-linux-gnu-gcc
119
+ linux32 : export CC := i686-linux-gnu-$( GCC )
112
120
linux32 : export CFLAGS += $(LINUX_CFLAGS ) -m32
113
121
linux32 : export LDFLAGS += -m32
114
122
linux32 : export platform := linux/x86_32
115
123
linux32 :
116
124
$(MAKE ) -f natives.mk
117
125
118
126
# Requires gcc.
127
+ linux64 : export CC := $(GCC )
119
128
linux64 : export CFLAGS += $(LINUX_CFLAGS ) -m64
120
129
linux64 : export platform := linux/x86_64
121
130
linux64 :
@@ -127,7 +136,7 @@ arm: arm32v5 \
127
136
arm32v8 arm32v8HF arm64v8
128
137
129
138
# Requires gcc-arm-linux-gnueabi.
130
- arm32v5 : export CC := arm-linux-gnueabi-gcc
139
+ arm32v5 : export CC := arm-linux-gnueabi-$( GCC )
131
140
arm32v5 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv5t
132
141
arm32v5 : export LDFLAGS += -march=armv5t
133
142
arm32v5 : export platform := linux/ARM_32
@@ -136,7 +145,7 @@ arm32v5:
136
145
$(MAKE ) -f natives.mk
137
146
138
147
# Requires gcc-arm-linux-gnueabi.
139
- arm32v6 : export CC := arm-linux-gnueabi-gcc
148
+ arm32v6 : export CC := arm-linux-gnueabi-$( GCC )
140
149
arm32v6 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv6
141
150
arm32v6 : export LDFLAGS += -march=armv6
142
151
arm32v6 : export platform := linux/ARM_32
@@ -145,7 +154,7 @@ arm32v6:
145
154
$(MAKE ) -f natives.mk
146
155
147
156
# Requires gcc-arm-linux-gnueabihf.
148
- arm32v6HF : export CC := arm-linux-gnueabihf-gcc
157
+ arm32v6HF : export CC := arm-linux-gnueabihf-$( GCC )
149
158
arm32v6HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv6+fp -marm
150
159
arm32v6HF : export LDFLAGS += -march=armv6+fp -marm
151
160
arm32v6HF : export platform := linux/ARM_32
@@ -154,7 +163,7 @@ arm32v6HF:
154
163
$(MAKE ) -f natives.mk
155
164
156
165
# Requires gcc-arm-linux-gnueabi.
157
- arm32v7 : export CC := arm-linux-gnueabi-gcc
166
+ arm32v7 : export CC := arm-linux-gnueabi-$( GCC )
158
167
arm32v7 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv7-a
159
168
arm32v7 : export LDFLAGS += -march=armv7-a
160
169
arm32v7 : export platform := linux/ARM_32
@@ -163,7 +172,7 @@ arm32v7:
163
172
$(MAKE ) -f natives.mk
164
173
165
174
# Requires gcc-arm-linux-gnueabihf.
166
- arm32v7HF : export CC := arm-linux-gnueabihf-gcc
175
+ arm32v7HF : export CC := arm-linux-gnueabihf-$( GCC )
167
176
arm32v7HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv7-a+fp
168
177
arm32v7HF : export LDFLAGS += -march=armv7-a+fp
169
178
arm32v7HF : export platform := linux/ARM_32
@@ -172,7 +181,7 @@ arm32v7HF:
172
181
$(MAKE ) -f natives.mk
173
182
174
183
# Requires gcc-arm-linux-gnueabi.
175
- arm32v8 : export CC := arm-linux-gnueabi-gcc
184
+ arm32v8 : export CC := arm-linux-gnueabi-$( GCC )
176
185
arm32v8 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a
177
186
arm32v8 : export LDFLAGS += -march=armv8-a
178
187
arm32v8 : export platform := linux/ARM_32
@@ -181,7 +190,7 @@ arm32v8:
181
190
$(MAKE ) -f natives.mk
182
191
183
192
# Requires gcc-arm-linux-gnueabihf.
184
- arm32v8HF : export CC := arm-linux-gnueabihf-gcc
193
+ arm32v8HF : export CC := arm-linux-gnueabihf-$( GCC )
185
194
arm32v8HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a -mfpu=neon-fp-armv8
186
195
arm32v8HF : export LDFLAGS += -march=armv8-a -mfpu=neon-fp-armv8
187
196
arm32v8HF : export platform := linux/ARM_32
@@ -190,7 +199,7 @@ arm32v8HF:
190
199
$(MAKE ) -f natives.mk
191
200
192
201
# Requires gcc-aarch64-linux-gnu.
193
- arm64v8 : export CC := aarch64-linux-gnu-gcc
202
+ arm64v8 : export CC := aarch64-linux-gnu-$( GCC )
194
203
arm64v8 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a+fp
195
204
arm64v8 : export LDFLAGS += -march=armv8-a+fp
196
205
arm64v8 : export platform := linux/ARM_64
@@ -208,7 +217,7 @@ android:
208
217
$(MAKE ) -f natives.mk
209
218
210
219
# Requires gcc-powerpc-linux-gnu.
211
- ppc : export CC := powerpc-linux-gnu-gcc
220
+ ppc : export CC := powerpc-linux-gnu-$( GCC )
212
221
ppc : export CFLAGS += $(LINUX_CFLAGS )
213
222
ppc : export platform := linux/PPC
214
223
ppc :
0 commit comments