@@ -58,6 +58,14 @@ include JAVA_HOME.mk
5858
5959include platform.mk
6060
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+
6169# In all cases, we want to include the system JNI headers, our own headers,
6270# crank the optimization level, and compile position-independent code so that
6371# it will work as a library (dlopen(3) et al. can load it into any memory).
8795 $(error $(NO_TARGET_PLATFORM_SPECIFIED ) )
8896
8997crosstools :
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 \
95103 gcc-mingw-w64 \
96- gcc -powerpc-linux-gnu
104+ $( GCC ) -powerpc-linux-gnu
97105
98106# Does not include Android, because Android toolchains are large, not commonly
99107# available, and the resulting library is not typically desired.
@@ -108,14 +116,15 @@ LINUX_CFLAGS += -U_FORTIFY_SOURCE
108116endif
109117
110118# Requires gcc-i686-linux-gnu.
111- linux32 : export CC := i686-linux-gnu-gcc
119+ linux32 : export CC := i686-linux-gnu-$( GCC )
112120linux32 : export CFLAGS += $(LINUX_CFLAGS ) -m32
113121linux32 : export LDFLAGS += -m32
114122linux32 : export platform := linux/x86_32
115123linux32 :
116124 $(MAKE ) -f natives.mk
117125
118126# Requires gcc.
127+ linux64 : export CC := $(GCC )
119128linux64 : export CFLAGS += $(LINUX_CFLAGS ) -m64
120129linux64 : export platform := linux/x86_64
121130linux64 :
@@ -127,7 +136,7 @@ arm: arm32v5 \
127136 arm32v8 arm32v8HF arm64v8
128137
129138# Requires gcc-arm-linux-gnueabi.
130- arm32v5 : export CC := arm-linux-gnueabi-gcc
139+ arm32v5 : export CC := arm-linux-gnueabi-$( GCC )
131140arm32v5 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv5t
132141arm32v5 : export LDFLAGS += -march=armv5t
133142arm32v5 : export platform := linux/ARM_32
@@ -136,7 +145,7 @@ arm32v5:
136145 $(MAKE ) -f natives.mk
137146
138147# Requires gcc-arm-linux-gnueabi.
139- arm32v6 : export CC := arm-linux-gnueabi-gcc
148+ arm32v6 : export CC := arm-linux-gnueabi-$( GCC )
140149arm32v6 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv6
141150arm32v6 : export LDFLAGS += -march=armv6
142151arm32v6 : export platform := linux/ARM_32
@@ -145,7 +154,7 @@ arm32v6:
145154 $(MAKE ) -f natives.mk
146155
147156# Requires gcc-arm-linux-gnueabihf.
148- arm32v6HF : export CC := arm-linux-gnueabihf-gcc
157+ arm32v6HF : export CC := arm-linux-gnueabihf-$( GCC )
149158arm32v6HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv6+fp -marm
150159arm32v6HF : export LDFLAGS += -march=armv6+fp -marm
151160arm32v6HF : export platform := linux/ARM_32
@@ -154,7 +163,7 @@ arm32v6HF:
154163 $(MAKE ) -f natives.mk
155164
156165# Requires gcc-arm-linux-gnueabi.
157- arm32v7 : export CC := arm-linux-gnueabi-gcc
166+ arm32v7 : export CC := arm-linux-gnueabi-$( GCC )
158167arm32v7 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv7-a
159168arm32v7 : export LDFLAGS += -march=armv7-a
160169arm32v7 : export platform := linux/ARM_32
@@ -163,7 +172,7 @@ arm32v7:
163172 $(MAKE ) -f natives.mk
164173
165174# Requires gcc-arm-linux-gnueabihf.
166- arm32v7HF : export CC := arm-linux-gnueabihf-gcc
175+ arm32v7HF : export CC := arm-linux-gnueabihf-$( GCC )
167176arm32v7HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv7-a+fp
168177arm32v7HF : export LDFLAGS += -march=armv7-a+fp
169178arm32v7HF : export platform := linux/ARM_32
@@ -172,7 +181,7 @@ arm32v7HF:
172181 $(MAKE ) -f natives.mk
173182
174183# Requires gcc-arm-linux-gnueabi.
175- arm32v8 : export CC := arm-linux-gnueabi-gcc
184+ arm32v8 : export CC := arm-linux-gnueabi-$( GCC )
176185arm32v8 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a
177186arm32v8 : export LDFLAGS += -march=armv8-a
178187arm32v8 : export platform := linux/ARM_32
@@ -181,7 +190,7 @@ arm32v8:
181190 $(MAKE ) -f natives.mk
182191
183192# Requires gcc-arm-linux-gnueabihf.
184- arm32v8HF : export CC := arm-linux-gnueabihf-gcc
193+ arm32v8HF : export CC := arm-linux-gnueabihf-$( GCC )
185194arm32v8HF : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a -mfpu=neon-fp-armv8
186195arm32v8HF : export LDFLAGS += -march=armv8-a -mfpu=neon-fp-armv8
187196arm32v8HF : export platform := linux/ARM_32
@@ -190,7 +199,7 @@ arm32v8HF:
190199 $(MAKE ) -f natives.mk
191200
192201# Requires gcc-aarch64-linux-gnu.
193- arm64v8 : export CC := aarch64-linux-gnu-gcc
202+ arm64v8 : export CC := aarch64-linux-gnu-$( GCC )
194203arm64v8 : export CFLAGS += $(LINUX_CFLAGS ) -march=armv8-a+fp
195204arm64v8 : export LDFLAGS += -march=armv8-a+fp
196205arm64v8 : export platform := linux/ARM_64
@@ -208,7 +217,7 @@ android:
208217 $(MAKE ) -f natives.mk
209218
210219# Requires gcc-powerpc-linux-gnu.
211- ppc : export CC := powerpc-linux-gnu-gcc
220+ ppc : export CC := powerpc-linux-gnu-$( GCC )
212221ppc : export CFLAGS += $(LINUX_CFLAGS )
213222ppc : export platform := linux/PPC
214223ppc :
0 commit comments