188
189 AC_ARG_WITH(extra-ldflags, [AS_HELP_STRING([--with-extra-ldflags],
190 [extra flags to be used when linking jdk])])
191
192 AC_ARG_WITH(extra-asflags, [AS_HELP_STRING([--with-extra-asflags],
193 [extra flags to be passed to the assembler])])
194
195 USER_CFLAGS="$with_extra_cflags"
196 USER_CXXFLAGS="$with_extra_cxxflags"
197 USER_LDFLAGS="$with_extra_ldflags"
198 USER_ASFLAGS="$with_extra_asflags"
199 ])
200
201 # Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
202 # that configure can use them while detecting compilers.
203 # TOOLCHAIN_TYPE is available here.
204 # Param 1 - Optional prefix to all variables. (e.g BUILD_)
205 AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
206 [
207 if test "x[$]$1SYSROOT" != "x"; then
208 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
209 if test "x$OPENJDK_TARGET_OS" = xsolaris; then
210 # Solaris Studio does not have a concept of sysroot. Instead we must
211 # make sure the default include and lib dirs are appended to each
212 # compile and link command line. Must also add -I-xbuiltin to enable
213 # inlining of system functions and intrinsics.
214 $1SYSROOT_CFLAGS="-I-xbuiltin -I[$]$1SYSROOT/usr/include"
215 $1SYSROOT_LDFLAGS="-L[$]$1SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
216 -L[$]$1SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR"
217 # If the devkit contains the ld linker, make sure we use it.
218 AC_PATH_PROG(SOLARIS_LD, ld, , $DEVKIT_TOOLCHAIN_PATH:$DEVKIT_EXTRA_PATH)
219 # Make sure this ld is runnable.
220 if test -f "$SOLARIS_LD"; then
221 if "$SOLARIS_LD" -V > /dev/null 2> /dev/null; then
222 $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -Yl,$(dirname $SOLARIS_LD)"
223 else
224 AC_MSG_WARN([Could not run $SOLARIS_LD found in devkit, reverting to system ld])
225 fi
226 fi
227 fi
228 elif test "x$TOOLCHAIN_TYPE" = xgcc; then
229 $1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
230 $1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
231 elif test "x$TOOLCHAIN_TYPE" = xclang; then
232 $1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
233 $1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
234 fi
235 fi
236
237 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
238 # We also need -iframework<path>/System/Library/Frameworks
239 $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
240 $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
241 # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
242 # set this here so it doesn't have to be peppered throughout the forest
243 $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
244 $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
245 fi
246
247 AC_SUBST($1SYSROOT_CFLAGS)
248 AC_SUBST($1SYSROOT_LDFLAGS)
249 ])
250
251 AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
252 [
253 # We should always include user supplied flags
254 FLAGS_SETUP_USER_SUPPLIED_FLAGS
255 # The sysroot flags are needed for configure to be able to run the compilers
256 FLAGS_SETUP_SYSROOT_FLAGS
257
258 # For solstudio and xlc, the word size flag is required for correct behavior.
259 # For clang/gcc, the flag is only strictly required for reduced builds, but
260 # set it always where possible (x86, sparc and ppc).
261 if test "x$TOOLCHAIN_TYPE" = xxlc; then
262 MACHINE_FLAG="-q${OPENJDK_TARGET_CPU_BITS}"
263 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
264 MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
265 elif test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
266 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86 &&
267 test "x$OPENJDK_TARGET_CPU" != xx32 ||
268 test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc ||
269 test "x$OPENJDK_TARGET_CPU_ARCH" = xppc; then
270 MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
271 fi
272 fi
273
274 # FIXME: global flags are not used yet...
275 # The "global" flags will *always* be set. Without them, it is not possible to
276 # get a working compilation.
277 GLOBAL_CFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CFLAGS"
278 GLOBAL_CXXFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CXXFLAGS"
279 GLOBAL_LDFLAGS="$MACHINE_FLAG $SYSROOT_LDFLAGS $USER_LDFLAGS"
280 # FIXME: Don't really know how to do with this, but this was the old behavior
281 GLOBAL_CPPFLAGS="$SYSROOT_CFLAGS"
282 AC_SUBST(GLOBAL_CFLAGS)
283 AC_SUBST(GLOBAL_CXXFLAGS)
284 AC_SUBST(GLOBAL_LDFLAGS)
285 AC_SUBST(GLOBAL_CPPFLAGS)
286
287 # FIXME: For compatilibity, export this as EXTRA_CFLAGS for now.
288 EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
301 CXXFLAGS="$GLOBAL_CXXFLAGS"
302 LDFLAGS="$GLOBAL_LDFLAGS"
303 CPPFLAGS="$GLOBAL_CPPFLAGS"
304 ])
305
306 AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL],
307 [
308 # COMPILER_TARGET_BITS_FLAG : option for selecting 32- or 64-bit output
309 # COMPILER_COMMAND_FILE_FLAG : option for passing a command file to the compiler
310 # COMPILER_BINDCMD_FILE_FLAG : option for specifying a file which saves the binder
311 # commands produced by the link step (currently AIX only)
312 if test "x$TOOLCHAIN_TYPE" = xxlc; then
313 COMPILER_TARGET_BITS_FLAG="-q"
314 COMPILER_COMMAND_FILE_FLAG="-f"
315 COMPILER_BINDCMD_FILE_FLAG="-bloadmap:"
316 else
317 COMPILER_TARGET_BITS_FLAG="-m"
318 COMPILER_COMMAND_FILE_FLAG="@"
319 COMPILER_BINDCMD_FILE_FLAG=""
320
321 # The solstudio linker does not support @-files.
322 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
323 COMPILER_COMMAND_FILE_FLAG=
324 fi
325
326 # Check if @file is supported by gcc
327 if test "x$TOOLCHAIN_TYPE" = xgcc; then
328 AC_MSG_CHECKING([if @file is supported by gcc])
329 # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
330 $ECHO "" "--version" > command.file
331 if $CXX @command.file 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
332 AC_MSG_RESULT(yes)
333 COMPILER_COMMAND_FILE_FLAG="@"
334 else
335 AC_MSG_RESULT(no)
336 COMPILER_COMMAND_FILE_FLAG=
337 fi
338 $RM command.file
339 fi
340 fi
341
342 AC_SUBST(COMPILER_TARGET_BITS_FLAG)
343 AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
344 AC_SUBST(COMPILER_BINDCMD_FILE_FLAG)
345
359 # When compiling, how to specify the to be created object file.
360 CC_OUT_OPTION='-o$(SPACE)'
361 # When linking, how to specify the output
362 LD_OUT_OPTION='-o$(SPACE)'
363 # When archiving, how to specify the destination static archive.
364 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
365 AR_OUT_OPTION='-r -cs$(SPACE)'
366 else
367 AR_OUT_OPTION='-rcs$(SPACE)'
368 fi
369 fi
370 AC_SUBST(CC_OUT_OPTION)
371 AC_SUBST(LD_OUT_OPTION)
372 AC_SUBST(AR_OUT_OPTION)
373
374 # Generate make dependency files
375 if test "x$TOOLCHAIN_TYPE" = xgcc; then
376 C_FLAG_DEPS="-MMD -MF"
377 elif test "x$TOOLCHAIN_TYPE" = xclang; then
378 C_FLAG_DEPS="-MMD -MF"
379 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
380 C_FLAG_DEPS="-xMMD -xMF"
381 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
382 C_FLAG_DEPS="-qmakedep=gcc -MF"
383 fi
384 CXX_FLAG_DEPS="$C_FLAG_DEPS"
385 AC_SUBST(C_FLAG_DEPS)
386 AC_SUBST(CXX_FLAG_DEPS)
387 ])
388
389 AC_DEFUN_ONCE([FLAGS_POST_TOOLCHAIN],
390 [
391 FLAGS_SETUP_TOOLCHAIN_CONTROL
392
393 if test "x$BUILD_SYSROOT" != x; then
394 FLAGS_SETUP_SYSROOT_FLAGS([BUILD_])
395 else
396 if test "x$COMPILE_TYPE" != "xcross"; then
397 BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS"
398 BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
399 fi
400 fi
|
188
189 AC_ARG_WITH(extra-ldflags, [AS_HELP_STRING([--with-extra-ldflags],
190 [extra flags to be used when linking jdk])])
191
192 AC_ARG_WITH(extra-asflags, [AS_HELP_STRING([--with-extra-asflags],
193 [extra flags to be passed to the assembler])])
194
195 USER_CFLAGS="$with_extra_cflags"
196 USER_CXXFLAGS="$with_extra_cxxflags"
197 USER_LDFLAGS="$with_extra_ldflags"
198 USER_ASFLAGS="$with_extra_asflags"
199 ])
200
201 # Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
202 # that configure can use them while detecting compilers.
203 # TOOLCHAIN_TYPE is available here.
204 # Param 1 - Optional prefix to all variables. (e.g BUILD_)
205 AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
206 [
207 if test "x[$]$1SYSROOT" != "x"; then
208 if test "x$TOOLCHAIN_TYPE" = xgcc; then
209 $1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
210 $1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
211 elif test "x$TOOLCHAIN_TYPE" = xclang; then
212 $1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
213 $1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
214 fi
215 fi
216
217 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
218 # We also need -iframework<path>/System/Library/Frameworks
219 $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
220 $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
221 # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
222 # set this here so it doesn't have to be peppered throughout the forest
223 $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
224 $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
225 fi
226
227 AC_SUBST($1SYSROOT_CFLAGS)
228 AC_SUBST($1SYSROOT_LDFLAGS)
229 ])
230
231 AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
232 [
233 # We should always include user supplied flags
234 FLAGS_SETUP_USER_SUPPLIED_FLAGS
235 # The sysroot flags are needed for configure to be able to run the compilers
236 FLAGS_SETUP_SYSROOT_FLAGS
237
238 # For xlc, the word size flag is required for correct behavior.
239 # For clang/gcc, the flag is only strictly required for reduced builds, but
240 # set it always where possible (x86 and ppc).
241 if test "x$TOOLCHAIN_TYPE" = xxlc; then
242 MACHINE_FLAG="-q${OPENJDK_TARGET_CPU_BITS}"
243 elif test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
244 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86 &&
245 test "x$OPENJDK_TARGET_CPU" != xx32 ||
246 test "x$OPENJDK_TARGET_CPU_ARCH" = xppc; then
247 MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}"
248 fi
249 fi
250
251 # FIXME: global flags are not used yet...
252 # The "global" flags will *always* be set. Without them, it is not possible to
253 # get a working compilation.
254 GLOBAL_CFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CFLAGS"
255 GLOBAL_CXXFLAGS="$MACHINE_FLAG $SYSROOT_CFLAGS $USER_CXXFLAGS"
256 GLOBAL_LDFLAGS="$MACHINE_FLAG $SYSROOT_LDFLAGS $USER_LDFLAGS"
257 # FIXME: Don't really know how to do with this, but this was the old behavior
258 GLOBAL_CPPFLAGS="$SYSROOT_CFLAGS"
259 AC_SUBST(GLOBAL_CFLAGS)
260 AC_SUBST(GLOBAL_CXXFLAGS)
261 AC_SUBST(GLOBAL_LDFLAGS)
262 AC_SUBST(GLOBAL_CPPFLAGS)
263
264 # FIXME: For compatilibity, export this as EXTRA_CFLAGS for now.
265 EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
278 CXXFLAGS="$GLOBAL_CXXFLAGS"
279 LDFLAGS="$GLOBAL_LDFLAGS"
280 CPPFLAGS="$GLOBAL_CPPFLAGS"
281 ])
282
283 AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL],
284 [
285 # COMPILER_TARGET_BITS_FLAG : option for selecting 32- or 64-bit output
286 # COMPILER_COMMAND_FILE_FLAG : option for passing a command file to the compiler
287 # COMPILER_BINDCMD_FILE_FLAG : option for specifying a file which saves the binder
288 # commands produced by the link step (currently AIX only)
289 if test "x$TOOLCHAIN_TYPE" = xxlc; then
290 COMPILER_TARGET_BITS_FLAG="-q"
291 COMPILER_COMMAND_FILE_FLAG="-f"
292 COMPILER_BINDCMD_FILE_FLAG="-bloadmap:"
293 else
294 COMPILER_TARGET_BITS_FLAG="-m"
295 COMPILER_COMMAND_FILE_FLAG="@"
296 COMPILER_BINDCMD_FILE_FLAG=""
297
298 # Check if @file is supported by gcc
299 if test "x$TOOLCHAIN_TYPE" = xgcc; then
300 AC_MSG_CHECKING([if @file is supported by gcc])
301 # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
302 $ECHO "" "--version" > command.file
303 if $CXX @command.file 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
304 AC_MSG_RESULT(yes)
305 COMPILER_COMMAND_FILE_FLAG="@"
306 else
307 AC_MSG_RESULT(no)
308 COMPILER_COMMAND_FILE_FLAG=
309 fi
310 $RM command.file
311 fi
312 fi
313
314 AC_SUBST(COMPILER_TARGET_BITS_FLAG)
315 AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
316 AC_SUBST(COMPILER_BINDCMD_FILE_FLAG)
317
331 # When compiling, how to specify the to be created object file.
332 CC_OUT_OPTION='-o$(SPACE)'
333 # When linking, how to specify the output
334 LD_OUT_OPTION='-o$(SPACE)'
335 # When archiving, how to specify the destination static archive.
336 if test "x$OPENJDK_TARGET_OS" = xmacosx; then
337 AR_OUT_OPTION='-r -cs$(SPACE)'
338 else
339 AR_OUT_OPTION='-rcs$(SPACE)'
340 fi
341 fi
342 AC_SUBST(CC_OUT_OPTION)
343 AC_SUBST(LD_OUT_OPTION)
344 AC_SUBST(AR_OUT_OPTION)
345
346 # Generate make dependency files
347 if test "x$TOOLCHAIN_TYPE" = xgcc; then
348 C_FLAG_DEPS="-MMD -MF"
349 elif test "x$TOOLCHAIN_TYPE" = xclang; then
350 C_FLAG_DEPS="-MMD -MF"
351 elif test "x$TOOLCHAIN_TYPE" = xxlc; then
352 C_FLAG_DEPS="-qmakedep=gcc -MF"
353 fi
354 CXX_FLAG_DEPS="$C_FLAG_DEPS"
355 AC_SUBST(C_FLAG_DEPS)
356 AC_SUBST(CXX_FLAG_DEPS)
357 ])
358
359 AC_DEFUN_ONCE([FLAGS_POST_TOOLCHAIN],
360 [
361 FLAGS_SETUP_TOOLCHAIN_CONTROL
362
363 if test "x$BUILD_SYSROOT" != x; then
364 FLAGS_SETUP_SYSROOT_FLAGS([BUILD_])
365 else
366 if test "x$COMPILE_TYPE" != "xcross"; then
367 BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS"
368 BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
369 fi
370 fi
|