common/autoconf/platform.m4

changeset 839
174a54ce39c4
parent 798
ac3f5137f84d
child 872
3c48e11c3901
equal deleted inserted replaced
838:ec48d637778a 839:174a54ce39c4
51 powerpc) 51 powerpc)
52 VAR_CPU=ppc 52 VAR_CPU=ppc
53 VAR_CPU_ARCH=ppc 53 VAR_CPU_ARCH=ppc
54 VAR_CPU_BITS=32 54 VAR_CPU_BITS=32
55 VAR_CPU_ENDIAN=big 55 VAR_CPU_ENDIAN=big
56 ;; 56 ;;
57 powerpc64) 57 powerpc64)
58 VAR_CPU=ppc64 58 VAR_CPU=ppc64
59 VAR_CPU_ARCH=ppc 59 VAR_CPU_ARCH=ppc
60 VAR_CPU_BITS=64 60 VAR_CPU_BITS=64
61 VAR_CPU_ENDIAN=big 61 VAR_CPU_ENDIAN=big
62 ;; 62 ;;
63 s390) 63 s390)
64 VAR_CPU=s390 64 VAR_CPU=s390
65 VAR_CPU_ARCH=s390 65 VAR_CPU_ARCH=s390
66 VAR_CPU_BITS=32 66 VAR_CPU_BITS=32
67 VAR_CPU_ENDIAN=big 67 VAR_CPU_ENDIAN=big
68 ;; 68 ;;
69 s390x) 69 s390x)
70 VAR_CPU=s390x 70 VAR_CPU=s390x
71 VAR_CPU_ARCH=s390 71 VAR_CPU_ARCH=s390
72 VAR_CPU_BITS=64 72 VAR_CPU_BITS=64
73 VAR_CPU_ENDIAN=big 73 VAR_CPU_ENDIAN=big
74 ;; 74 ;;
75 sparc) 75 sparc)
76 VAR_CPU=sparc 76 VAR_CPU=sparc
77 VAR_CPU_ARCH=sparc 77 VAR_CPU_ARCH=sparc
78 VAR_CPU_BITS=32 78 VAR_CPU_BITS=32
79 VAR_CPU_ENDIAN=big 79 VAR_CPU_ENDIAN=big
80 ;; 80 ;;
81 sparcv9) 81 sparcv9)
82 VAR_CPU=sparcv9 82 VAR_CPU=sparcv9
83 VAR_CPU_ARCH=sparc 83 VAR_CPU_ARCH=sparc
84 VAR_CPU_BITS=64 84 VAR_CPU_BITS=64
85 VAR_CPU_ENDIAN=big 85 VAR_CPU_ENDIAN=big
86 ;; 86 ;;
87 *) 87 *)
88 AC_MSG_ERROR([unsupported cpu $1]) 88 AC_MSG_ERROR([unsupported cpu $1])
89 ;; 89 ;;
90 esac 90 esac
91 ]) 91 ])
138 # Translate the standard triplet(quadruplet) definition 138 # Translate the standard triplet(quadruplet) definition
139 # of the target/build system into OPENJDK_TARGET_OS, OPENJDK_TARGET_CPU, 139 # of the target/build system into OPENJDK_TARGET_OS, OPENJDK_TARGET_CPU,
140 # OPENJDK_BUILD_OS, etc. 140 # OPENJDK_BUILD_OS, etc.
141 AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD], 141 AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
142 [ 142 [
143 # Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME 143 # Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME
144 # (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME 144 # (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME
145 # Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build, 145 # Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build,
146 # but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME. 146 # but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME.
147 OPENJDK_TARGET_AUTOCONF_NAME="$host" 147 OPENJDK_TARGET_AUTOCONF_NAME="$host"
148 OPENJDK_BUILD_AUTOCONF_NAME="$build" 148 OPENJDK_BUILD_AUTOCONF_NAME="$build"
149 AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME) 149 AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
150 AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME) 150 AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
151 151
152 # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables. 152 # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
153 PLATFORM_EXTRACT_VARS_FROM_OS($build_os) 153 PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
154 PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu) 154 PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
155 # ..and setup our own variables. (Do this explicitely to facilitate searching) 155 # ..and setup our own variables. (Do this explicitely to facilitate searching)
156 OPENJDK_BUILD_OS="$VAR_OS" 156 OPENJDK_BUILD_OS="$VAR_OS"
157 OPENJDK_BUILD_OS_API="$VAR_OS_API" 157 OPENJDK_BUILD_OS_API="$VAR_OS_API"
158 OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV" 158 OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV"
159 OPENJDK_BUILD_CPU="$VAR_CPU" 159 OPENJDK_BUILD_CPU="$VAR_CPU"
160 OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH" 160 OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
161 OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS" 161 OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
162 OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN" 162 OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
163 AC_SUBST(OPENJDK_BUILD_OS) 163 AC_SUBST(OPENJDK_BUILD_OS)
164 AC_SUBST(OPENJDK_BUILD_OS_API) 164 AC_SUBST(OPENJDK_BUILD_OS_API)
165 AC_SUBST(OPENJDK_BUILD_CPU) 165 AC_SUBST(OPENJDK_BUILD_CPU)
166 AC_SUBST(OPENJDK_BUILD_CPU_ARCH) 166 AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
167 AC_SUBST(OPENJDK_BUILD_CPU_BITS) 167 AC_SUBST(OPENJDK_BUILD_CPU_BITS)
168 AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN) 168 AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
169 169
170 AC_MSG_CHECKING([openjdk-build os-cpu]) 170 AC_MSG_CHECKING([openjdk-build os-cpu])
171 AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU]) 171 AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
172 172
173 # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables. 173 # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
174 PLATFORM_EXTRACT_VARS_FROM_OS($host_os) 174 PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
175 PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu) 175 PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
176 # ... and setup our own variables. (Do this explicitely to facilitate searching) 176 # ... and setup our own variables. (Do this explicitely to facilitate searching)
177 OPENJDK_TARGET_OS="$VAR_OS" 177 OPENJDK_TARGET_OS="$VAR_OS"
178 OPENJDK_TARGET_OS_API="$VAR_OS_API" 178 OPENJDK_TARGET_OS_API="$VAR_OS_API"
179 OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV" 179 OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
180 OPENJDK_TARGET_CPU="$VAR_CPU" 180 OPENJDK_TARGET_CPU="$VAR_CPU"
181 OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH" 181 OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
182 OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS" 182 OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
183 OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN" 183 OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
184 AC_SUBST(OPENJDK_TARGET_OS) 184 AC_SUBST(OPENJDK_TARGET_OS)
185 AC_SUBST(OPENJDK_TARGET_OS_API) 185 AC_SUBST(OPENJDK_TARGET_OS_API)
186 AC_SUBST(OPENJDK_TARGET_CPU) 186 AC_SUBST(OPENJDK_TARGET_CPU)
187 AC_SUBST(OPENJDK_TARGET_CPU_ARCH) 187 AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
188 AC_SUBST(OPENJDK_TARGET_CPU_BITS) 188 AC_SUBST(OPENJDK_TARGET_CPU_BITS)
189 AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN) 189 AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
190 190
191 AC_MSG_CHECKING([openjdk-target os-cpu]) 191 AC_MSG_CHECKING([openjdk-target os-cpu])
192 AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU]) 192 AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
193 ]) 193 ])
194 194
195 # Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour 195 # Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
196 # accordingly. Must be done after setting up build and target system, but before 196 # accordingly. Must be done after setting up build and target system, but before
197 # doing anything else with these values. 197 # doing anything else with these values.
198 AC_DEFUN([PLATFORM_SETUP_TARGET_CPU_BITS], 198 AC_DEFUN([PLATFORM_SETUP_TARGET_CPU_BITS],
199 [ 199 [
200 AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits], 200 AC_ARG_WITH(target-bits, [AS_HELP_STRING([--with-target-bits],
201 [build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])]) 201 [build 32-bit or 64-bit binaries (for platforms that support it), e.g. --with-target-bits=32 @<:@guessed@:>@])])
202 202
203 # We have three types of compiles: 203 # We have three types of compiles:
204 # native == normal compilation, target system == build system 204 # native == normal compilation, target system == build system
205 # cross == traditional cross compilation, target system != build system; special toolchain needed 205 # cross == traditional cross compilation, target system != build system; special toolchain needed
206 # reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines 206 # reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines
225 OPENJDK_TARGET_CPU=x86 225 OPENJDK_TARGET_CPU=x86
226 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then 226 elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
227 OPENJDK_TARGET_CPU=sparc 227 OPENJDK_TARGET_CPU=sparc
228 else 228 else
229 AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9]) 229 AC_MSG_ERROR([Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9])
230 fi 230 fi
231 elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then 231 elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
232 AC_MSG_ERROR([It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead.]) 232 AC_MSG_ERROR([It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead.])
233 elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then 233 elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
234 AC_MSG_NOTICE([--with-target-bits are set to build platform address size; argument has no meaning]) 234 AC_MSG_NOTICE([--with-target-bits are set to build platform address size; argument has no meaning])
235 else 235 else
236 AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!]) 236 AC_MSG_ERROR([--with-target-bits can only be 32 or 64, you specified $with_target_bits!])
237 fi 237 fi
238 fi 238 fi
239 AC_SUBST(COMPILE_TYPE) 239 AC_SUBST(COMPILE_TYPE)
240 240
241 AC_MSG_CHECKING([compilation type]) 241 AC_MSG_CHECKING([compilation type])
242 AC_MSG_RESULT([$COMPILE_TYPE]) 242 AC_MSG_RESULT([$COMPILE_TYPE])
243 ]) 243 ])
244 244
245 # Setup the legacy variables, for controlling the old makefiles. 245 # Setup the legacy variables, for controlling the old makefiles.
246 # 246 #
247 AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS], 247 AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
248 [ 248 [
249 # Also store the legacy naming of the cpu. 249 # Also store the legacy naming of the cpu.
250 # Ie i586 and amd64 instead of x86 and x86_64 250 # Ie i586 and amd64 instead of x86 and x86_64
251 OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU" 251 OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
252 if test "x$OPENJDK_TARGET_CPU" = xx86; then 252 if test "x$OPENJDK_TARGET_CPU" = xx86; then
253 OPENJDK_TARGET_CPU_LEGACY="i586" 253 OPENJDK_TARGET_CPU_LEGACY="i586"
254 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then 254 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
255 # On all platforms except MacOSX replace x86_64 with amd64. 255 # On all platforms except MacOSX replace x86_64 with amd64.
256 OPENJDK_TARGET_CPU_LEGACY="amd64" 256 OPENJDK_TARGET_CPU_LEGACY="amd64"
257 fi 257 fi
258 AC_SUBST(OPENJDK_TARGET_CPU_LEGACY) 258 AC_SUBST(OPENJDK_TARGET_CPU_LEGACY)
259 259
260 # And the second legacy naming of the cpu. 260 # And the second legacy naming of the cpu.
261 # Ie i386 and amd64 instead of x86 and x86_64. 261 # Ie i386 and amd64 instead of x86 and x86_64.
262 OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU" 262 OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
263 if test "x$OPENJDK_TARGET_CPU" = xx86; then 263 if test "x$OPENJDK_TARGET_CPU" = xx86; then
264 OPENJDK_TARGET_CPU_LEGACY_LIB="i386" 264 OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
265 elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then 265 elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
266 OPENJDK_TARGET_CPU_LEGACY_LIB="amd64" 266 OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
267 fi 267 fi
268 AC_SUBST(OPENJDK_TARGET_CPU_LEGACY_LIB) 268 AC_SUBST(OPENJDK_TARGET_CPU_LEGACY_LIB)
269 269
270 # This is the name of the cpu (but using i386 and amd64 instead of 270 # This is the name of the cpu (but using i386 and amd64 instead of
271 # x86 and x86_64, respectively), preceeded by a /, to be used when 271 # x86 and x86_64, respectively), preceeded by a /, to be used when
272 # locating libraries. On macosx, it's empty, though. 272 # locating libraries. On macosx, it's empty, though.
273 OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB" 273 OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
274 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 274 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
275 OPENJDK_TARGET_CPU_LIBDIR="" 275 OPENJDK_TARGET_CPU_LIBDIR=""
276 fi 276 fi
277 AC_SUBST(OPENJDK_TARGET_CPU_LIBDIR) 277 AC_SUBST(OPENJDK_TARGET_CPU_LIBDIR)
278 278
279 # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to 279 # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
280 # /amd64 or /sparcv9. This string is appended to some library paths, like this: 280 # /amd64 or /sparcv9. This string is appended to some library paths, like this:
281 # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so 281 # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
282 OPENJDK_TARGET_CPU_ISADIR="" 282 OPENJDK_TARGET_CPU_ISADIR=""
283 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 283 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
284 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then 284 if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
285 OPENJDK_TARGET_CPU_ISADIR="/amd64" 285 OPENJDK_TARGET_CPU_ISADIR="/amd64"
286 elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then 286 elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
287 OPENJDK_TARGET_CPU_ISADIR="/sparcv9" 287 OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
288 fi 288 fi
289 fi 289 fi
290 AC_SUBST(OPENJDK_TARGET_CPU_ISADIR) 290 AC_SUBST(OPENJDK_TARGET_CPU_ISADIR)
291 291
292 # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property 292 # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
293 OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU" 293 OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
294 if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then 294 if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
295 # On linux only, we replace x86 with i386. 295 # On linux only, we replace x86 with i386.
296 OPENJDK_TARGET_CPU_OSARCH="i386" 296 OPENJDK_TARGET_CPU_OSARCH="i386"
297 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then 297 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
298 # On all platforms except macosx, we replace x86_64 with amd64. 298 # On all platforms except macosx, we replace x86_64 with amd64.
299 OPENJDK_TARGET_CPU_OSARCH="amd64" 299 OPENJDK_TARGET_CPU_OSARCH="amd64"
300 fi 300 fi
301 AC_SUBST(OPENJDK_TARGET_CPU_OSARCH) 301 AC_SUBST(OPENJDK_TARGET_CPU_OSARCH)
302 302
303 OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU" 303 OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
304 if test "x$OPENJDK_TARGET_CPU" = xx86; then 304 if test "x$OPENJDK_TARGET_CPU" = xx86; then
305 OPENJDK_TARGET_CPU_JLI="i386" 305 OPENJDK_TARGET_CPU_JLI="i386"
306 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then 306 elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
307 # On all platforms except macosx, we replace x86_64 with amd64. 307 # On all platforms except macosx, we replace x86_64 with amd64.
308 OPENJDK_TARGET_CPU_JLI="amd64" 308 OPENJDK_TARGET_CPU_JLI="amd64"
309 fi 309 fi
310 # Now setup the -D flags for building libjli. 310 # Now setup the -D flags for building libjli.
311 OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'" 311 OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
312 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 312 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
313 if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then 313 if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
314 OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'" 314 OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
315 elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then 315 elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
316 OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'" 316 OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
317 fi 317 fi
318 fi 318 fi
319 AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS) 319 AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS)
320 320
321 # Setup OPENJDK_TARGET_OS_API_DIR, used in source paths. 321 # Setup OPENJDK_TARGET_OS_API_DIR, used in source paths.
322 if test "x$OPENJDK_TARGET_OS_API" = xposix; then 322 if test "x$OPENJDK_TARGET_OS_API" = xposix; then
323 OPENJDK_TARGET_OS_API_DIR="solaris" 323 OPENJDK_TARGET_OS_API_DIR="solaris"
324 fi 324 fi
325 if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then 325 if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then
326 OPENJDK_TARGET_OS_API_DIR="windows" 326 OPENJDK_TARGET_OS_API_DIR="windows"
327 fi 327 fi
328 AC_SUBST(OPENJDK_TARGET_OS_API_DIR) 328 AC_SUBST(OPENJDK_TARGET_OS_API_DIR)
329 329
330 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 330 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
331 A_LP64="LP64:=" 331 A_LP64="LP64:="
332 # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in 332 # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
333 # unpack200.exe 333 # unpack200.exe
334 if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then 334 if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
335 ADD_LP64="-D_LP64=1" 335 ADD_LP64="-D_LP64=1"
336 fi 336 fi
337 fi 337 fi
338 AC_SUBST(LP64,$A_LP64) 338 AC_SUBST(LP64,$A_LP64)
339 339
340 if test "x$COMPILE_TYPE" = "xcross"; then 340 if test "x$COMPILE_TYPE" = "xcross"; then
341 # FIXME: ... or should this include reduced builds..? 341 # FIXME: ... or should this include reduced builds..?
342 DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY" 342 DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
343 else
344 DEFINE_CROSS_COMPILE_ARCH=""
345 fi
346 AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
347
348 # ZERO_ARCHDEF is used to enable architecture-specific code
349 case "${OPENJDK_TARGET_CPU}" in
350 ppc*) ZERO_ARCHDEF=PPC ;;
351 s390*) ZERO_ARCHDEF=S390 ;;
352 sparc*) ZERO_ARCHDEF=SPARC ;;
353 x86_64*) ZERO_ARCHDEF=AMD64 ;;
354 x86) ZERO_ARCHDEF=IA32 ;;
355 *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
356 esac
357 AC_SUBST(ZERO_ARCHDEF)
358 ])
359
360 AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
361 [
362 if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
363 REQUIRED_OS_NAME=SunOS
364 REQUIRED_OS_VERSION=5.10
365 fi
366 if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
367 REQUIRED_OS_NAME=Linux
368 REQUIRED_OS_VERSION=2.6
369 fi
370 if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
371 REQUIRED_OS_NAME=Windows
372 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
373 REQUIRED_OS_VERSION=5.2
343 else 374 else
344 DEFINE_CROSS_COMPILE_ARCH="" 375 REQUIRED_OS_VERSION=5.1
345 fi 376 fi
346 AC_SUBST(DEFINE_CROSS_COMPILE_ARCH) 377 fi
347 378 if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
348 # ZERO_ARCHDEF is used to enable architecture-specific code 379 REQUIRED_OS_NAME=Darwin
349 case "${OPENJDK_TARGET_CPU}" in 380 REQUIRED_OS_VERSION=11.2
350 ppc*) ZERO_ARCHDEF=PPC ;; 381 fi
351 s390*) ZERO_ARCHDEF=S390 ;; 382
352 sparc*) ZERO_ARCHDEF=SPARC ;; 383 AC_SUBST(REQUIRED_OS_NAME)
353 x86_64*) ZERO_ARCHDEF=AMD64 ;; 384 AC_SUBST(REQUIRED_OS_VERSION)
354 x86) ZERO_ARCHDEF=IA32 ;;
355 *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
356 esac
357 AC_SUBST(ZERO_ARCHDEF)
358
359 ])
360
361 AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
362 [
363 if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
364 REQUIRED_OS_NAME=SunOS
365 REQUIRED_OS_VERSION=5.10
366 fi
367 if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
368 REQUIRED_OS_NAME=Linux
369 REQUIRED_OS_VERSION=2.6
370 fi
371 if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
372 REQUIRED_OS_NAME=Windows
373 if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
374 REQUIRED_OS_VERSION=5.2
375 else
376 REQUIRED_OS_VERSION=5.1
377 fi
378 fi
379 if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
380 REQUIRED_OS_NAME=Darwin
381 REQUIRED_OS_VERSION=11.2
382 fi
383
384 AC_SUBST(REQUIRED_OS_NAME)
385 AC_SUBST(REQUIRED_OS_VERSION)
386 ]) 385 ])
387 386
388 #%%% Build and target systems %%% 387 #%%% Build and target systems %%%
389 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET], 388 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET],
390 [ 389 [
391 # Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target" 390 # Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target"
392 # is confusing; it assumes you are cross-compiling a cross-compiler (!) and "target" is thus the target of the 391 # is confusing; it assumes you are cross-compiling a cross-compiler (!) and "target" is thus the target of the
393 # product you're building. The target of this build is called "host". Since this is confusing to most people, we 392 # product you're building. The target of this build is called "host". Since this is confusing to most people, we
394 # have not adopted that system, but use "target" as the platform we are building for. In some places though we need 393 # have not adopted that system, but use "target" as the platform we are building for. In some places though we need
395 # to use the configure naming style. 394 # to use the configure naming style.
396 AC_CANONICAL_BUILD 395 AC_CANONICAL_BUILD
397 AC_CANONICAL_HOST 396 AC_CANONICAL_HOST
398 AC_CANONICAL_TARGET 397 AC_CANONICAL_TARGET
399 398
400 PLATFORM_EXTRACT_TARGET_AND_BUILD 399 PLATFORM_EXTRACT_TARGET_AND_BUILD
401 PLATFORM_SETUP_TARGET_CPU_BITS 400 PLATFORM_SETUP_TARGET_CPU_BITS
402 PLATFORM_SET_RELEASE_FILE_OS_VALUES 401 PLATFORM_SET_RELEASE_FILE_OS_VALUES
403 PLATFORM_SETUP_LEGACY_VARS 402 PLATFORM_SETUP_LEGACY_VARS
404 ]) 403 ])
405 404
406 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION], 405 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
407 [ 406 [
408 ############################################################################### 407 ###############################################################################
409 408
410 # Note that this is the build platform OS version! 409 # Note that this is the build platform OS version!
411 410
412 OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`" 411 OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
413 OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`" 412 OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
414 OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`" 413 OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
415 OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`" 414 OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
416 AC_SUBST(OS_VERSION_MAJOR) 415 AC_SUBST(OS_VERSION_MAJOR)
417 AC_SUBST(OS_VERSION_MINOR) 416 AC_SUBST(OS_VERSION_MINOR)
418 AC_SUBST(OS_VERSION_MICRO) 417 AC_SUBST(OS_VERSION_MICRO)
419 ]) 418 ])
420 419
421 # Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS. 420 # Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
422 # Add -mX to various FLAGS variables. 421 # Add -mX to various FLAGS variables.
423 AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS], 422 AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS],
439 LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" 438 LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
440 ]) 439 ])
441 440
442 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS], 441 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
443 [ 442 [
444 ############################################################################### 443 ###############################################################################
445 # 444 #
446 # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code. 445 # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code.
447 # (The JVM can use 32 or 64 bit Java pointers but that decision 446 # (The JVM can use 32 or 64 bit Java pointers but that decision
448 # is made at runtime.) 447 # is made at runtime.)
449 # 448 #
450 449
451 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 450 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
452 # Always specify -m flags on Solaris 451 # Always specify -m flags on Solaris
453 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
454 elif test "x$COMPILE_TYPE" = xreduced; then
455 if test "x$OPENJDK_TARGET_OS" != xwindows; then
456 # Specify -m if running reduced on other Posix platforms
457 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 452 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
458 fi 453 elif test "x$COMPILE_TYPE" = xreduced; then
459 fi 454 if test "x$OPENJDK_TARGET_OS" != xwindows; then
460 455 # Specify -m if running reduced on other Posix platforms
461 # Make compilation sanity check 456 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
462 AC_CHECK_HEADERS([stdio.h], , [ 457 fi
463 AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.]) 458 fi
464 if test "x$COMPILE_TYPE" = xreduced; then 459
465 AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.]) 460 # Make compilation sanity check
466 elif test "x$COMPILE_TYPE" = xcross; then 461 AC_CHECK_HEADERS([stdio.h], , [
467 AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.]) 462 AC_MSG_NOTICE([Failed to compile stdio.h. This likely implies missing compile dependencies.])
468 fi 463 if test "x$COMPILE_TYPE" = xreduced; then
469 AC_MSG_ERROR([Cannot continue.]) 464 AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed.])
470 ]) 465 elif test "x$COMPILE_TYPE" = xcross; then
471 466 AC_MSG_NOTICE([You are doing a cross-compilation. Check that you have all target platform libraries installed.])
472 AC_CHECK_SIZEOF([int *], [1111]) 467 fi
473 468 AC_MSG_ERROR([Cannot continue.])
474 if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then 469 ])
475 # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html 470
476 SIZEOF_INT_P="$ac_cv_sizeof_int_p" 471 AC_CHECK_SIZEOF([int *], [1111])
477 fi 472
478 473 if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then
479 if test "x$SIZEOF_INT_P" = x; then 474 # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html
475 SIZEOF_INT_P="$ac_cv_sizeof_int_p"
476 fi
477
478 if test "x$SIZEOF_INT_P" = x; then
480 # The test failed, lets stick to the assumed value. 479 # The test failed, lets stick to the assumed value.
481 AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.]) 480 AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.])
482 else 481 else
483 TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P` 482 TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P`
484 483
485 if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then 484 if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
486 AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)]) 485 AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)])
487 fi 486 fi
488 fi 487 fi
489 488
490 AC_MSG_CHECKING([for target address size]) 489 AC_MSG_CHECKING([for target address size])
491 AC_MSG_RESULT([$OPENJDK_TARGET_CPU_BITS bits]) 490 AC_MSG_RESULT([$OPENJDK_TARGET_CPU_BITS bits])
492 ]) 491 ])
493 492
494 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS], 493 AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS],
495 [ 494 [
496 ############################################################################### 495 ###############################################################################
497 # 496 #
498 # Is the target little of big endian? 497 # Is the target little of big endian?
499 # 498 #
500 AC_C_BIGENDIAN([ENDIAN="big"],[ENDIAN="little"],[ENDIAN="unknown"],[ENDIAN="universal_endianness"]) 499 AC_C_BIGENDIAN([ENDIAN="big"],[ENDIAN="little"],[ENDIAN="unknown"],[ENDIAN="universal_endianness"])
501 500
502 if test "x$ENDIAN" = xuniversal_endianness; then 501 if test "x$ENDIAN" = xuniversal_endianness; then
503 AC_MSG_ERROR([Building with both big and little endianness is not supported]) 502 AC_MSG_ERROR([Building with both big and little endianness is not supported])
504 fi 503 fi
505 if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then 504 if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
506 AC_MSG_ERROR([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)]) 505 AC_MSG_ERROR([The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)])
507 fi 506 fi
508 ]) 507 ])

mercurial