echo "set COMPAT_OPTIONS \"$(COMPAT_OPTIONS)\"" >> ./site.tmp; \
else true; \
fi
+ @if test "x@enable_darwin_at_rpath@" = "xyes" ; then \
+ echo "set ENABLE_DARWIN_AT_RPATH 1" >> ./site.tmp; \
+ fi
@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./site.tmp
@cat ./site.tmp > site.exp
@cat site.bak | sed \
# Load procedures from common libraries.
load_lib gfortran-dg.exp
+load_lib atomic-dg.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_FFLAGS
global gfortran_aux_module_flags
set gfortran_test_path $srcdir/$subdir
set gfortran_aux_module_flags $DEFAULT_FFLAGS
+
proc dg-compile-aux-modules { args } {
global gfortran_test_path
global gfortran_aux_module_flags
# Add -latomic only where supported. Assume built-in support elsewhere.
set maybe_atomic_lib ""
if [check_effective_target_libatomic_available] {
- set maybe_atomic_lib "-latomic"
+ if ![is_remote host] {
+ if [info exists TOOL_OPTIONS] {
+ set maybe_atomic_lib "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
+ } else {
+ set maybe_atomic_lib "[atomic_link_flags [get_multilibs]]"
+ }
+ }
+ set t [get_multilibs]
+ puts "maybe al $maybe_atomic_lib ml $t"
}
# Main loop.
foreach flags $option_list {
verbose "Testing $nshort (single), $flags" 1
set gfortran_aux_module_flags "-fcoarray=single $flags"
- dg-test $test "-fcoarray=single $flags $maybe_atomic_lib" ""
+ dg-test $test "-fcoarray=single $flags" $maybe_atomic_lib
cleanup-modules ""
}
foreach flags $option_list {
verbose "Testing $nshort (libcaf_single), $flags" 1
set gfortran_aux_module_flags "-fcoarray=lib $flags -lcaf_single"
- dg-test $test "-fcoarray=lib $flags -lcaf_single $maybe_atomic_lib" ""
+ dg-test $test "-fcoarray=lib $flags -lcaf_single" $maybe_atomic_lib
cleanup-modules ""
}
}
# Load support procs.
load_lib gfortran-dg.exp
+load_lib atomic-dg.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_FFLAGS
}
}
+# coarray tests might need libatomic. Assume that it is either not needed or
+# provided by builtins if it's not available.
+set maybe_atomic_lib ""
+if [check_effective_target_libatomic_available] {
+ if ![is_remote host] {
+ if [info exists TOOL_OPTIONS] {
+ set maybe_atomic_lib "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
+ } else {
+ set maybe_atomic_lib "[atomic_link_flags [get_multilibs]]"
+ }
+ } else {
+ set maybe_atomic_lib ""
+ }
+ set t [get_multilibs]
+ puts "dg set al $maybe_atomic_lib ml $t"
+}
+
+set all_flags $DEFAULT_FFLAGS
+if { $maybe_atomic_lib != "" } {
+ foreach f $maybe_atomic_lib {
+ lappend all_flags $f
+ }
+}
+
+puts "revised FFLAGS $all_flags"
+
# Main loop.
gfortran-dg-runtest [lsort \
- [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" $DEFAULT_FFLAGS
+ [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" $all_flags
gfortran-dg-runtest [lsort \
- [glob -nocomplain $srcdir/$subdir/g77/*.\[fF\] ] ] "" $DEFAULT_FFLAGS
-
+ [glob -nocomplain $srcdir/$subdir/g77/*.\[fF\] ] ] "" $all_flags
# All done.
dg-finish
|| [file exists "${gccpath}/libsanitizer/${lib}/.libs/lib${lib}.${shlib_ext}"] } {
append flags " -B${gccpath}/libsanitizer/ "
append flags " -B${gccpath}/libsanitizer/${lib}/ "
- append flags " -L${gccpath}/libsanitizer/${lib}/.libs "
+ append flags " -B${gccpath}/libsanitizer/${lib}/.libs "
append ld_library_path ":${gccpath}/libsanitizer/${lib}/.libs"
}
} else {
if { [file exists "${gccpath}/libatomic/.libs/libatomic.a"]
|| [file exists "${gccpath}/libatomic/.libs/libatomic.${shlib_ext}"] } {
append flags " -B${gccpath}/libatomic/ "
- append flags " -L${gccpath}/libatomic/.libs"
+ append flags " -B${gccpath}/libatomic/.libs"
append ld_library_path ":${gccpath}/libatomic/.libs"
}
} else {
global orig_dyld_library_path
global orig_path
global orig_gcc_exec_prefix
+ global ENABLE_DARWIN_AT_RPATH
global env
# Save the original GCC_EXEC_PREFIX.
#
# Doing this is somewhat of a hack as ld_library_path gets repeated in
# SHLIB_PATH and LD_LIBRARY_PATH when unix_load sets these variables.
+ if { ![istarget *-*-darwin*] } {
if { $orig_ld_library_path_saved } {
setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path"
} else {
} else {
setenv LD_LIBRARY_PATH_64 "$ld_library_path"
}
- if { $orig_dyld_library_path_saved } {
- setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
- } else {
- setenv DYLD_LIBRARY_PATH "$ld_library_path"
+ }
+ if { [istarget *-*-darwin*] } {
+ if { [info exists ENABLE_DARWIN_AT_RPATH] || [istarget *-*-darwin1\[5-9\]*]
+ || [istarget *-*-darwin20*] } {
+ # Either we are not using DYLD_LIBRARY_PATH or we're on a version of the
+ # OS for which it is not passed through system exes.
+ if [info exists env(DYLD_LIBRARY_PATH)] {
+ unsetenv DYLD_LIBRARY_PATH
+ }
+ } else {
+ if { $orig_dyld_library_path_saved } {
+ setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
+ } else {
+ setenv DYLD_LIBRARY_PATH "$ld_library_path"
+ }
+ }
}
if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } {
if { $orig_path_saved } {
}
}
+ verbose -log "set paths"
verbose -log "LD_LIBRARY_PATH=[getenv LD_LIBRARY_PATH]"
verbose -log "LD_RUN_PATH=[getenv LD_RUN_PATH]"
verbose -log "SHLIB_PATH=[getenv SHLIB_PATH]"
if { $blddir != "" } {
lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
- lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
+ if [istarget *-*-darwin*] {
+ lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/.libs"
+ } else {
+ lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
+ }
}
lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
- if [istarget *-*-darwin*] {
+ if [istarget *-*-darwin\[89\]*] {
lappend ALWAYS_CFLAGS "additional_flags=-shared-libgcc"
}
verbose "libffi_dir $libffi_dir"
if { $libffi_dir != "" } {
set libffi_dir [file dirname ${libffi_dir}]
- set libffi_link_flags "-L${libffi_dir}/.libs"
- lappend libffi_link_flags "-L${blddircxx}/src/.libs"
+ if [istarget *-*-darwin*] {
+ set libffi_link_flags "-B${libffi_dir}/.libs"
+ lappend libffi_link_flags "-B${blddircxx}/src/.libs"
+ } else {
+ set libffi_link_flags "-L${libffi_dir}/.libs"
+ lappend libffi_link_flags "-L${blddircxx}/src/.libs"
+ }
}
set_ld_library_path_env_vars
# Darwin needs a stack execution allowed flag.
if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
- || [istarget "*-*-darwin2*"] } {
+ || [istarget "x86_64-*-darwin2*"] } {
lappend options "additional_flags=-Wl,-allow_stack_execute"
lappend options "additional_flags=-Wl,-search_paths_first"
}
}
if [istarget *-*-darwin*] {
+ lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/.libs"
lappend ALWAYS_CFLAGS "additional_flags=-shared-libgcc"
}
# Gather a list of all tests.
set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
+ set stdcxxadder ""
if { $blddir != "" } {
set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
+ set stdcxxadder "-B ${blddir}/${lang_library_path}"
} else {
set ld_library_path "$always_ld_library_path"
}
}
# Main loop.
- dg-runtest $tests "" $libstdcxx_includes
+ dg-runtest $tests $stdcxxadder $libstdcxx_includes
}
# All done.