Edit

kc3-lang/libffi/testsuite/lib/target-libpath.exp

Branch :

  • Show log

    Commit

  • Author : Hans
    Date : 2022-09-18 01:56:25
    Hash : ee22ecbd
    Message : Add MSYS configuration files (#728) * Add MSYS configuration files MSYS behaves very similiar to Cygwin, e.g. also __CYGWIN__ is defined. Now 'make check' passes on MSYS without extra patches. * Fix warning extra tokens at end of #endif in closures.c Extra tokens converted into a comment. Also nearby indentations corrected. * Fix missing prototype warning mkostemp() on Cygwin Cygwin requires also _GNU_SOURCE to be defined to enable mkostemp() prototype. * Fix warning label ‘out’ defined but not used in ffi functions Define same preprocessor conditions for goto and label visibility. * Fix warning label ‘out’ defined but not used and related indentations. Define same preprocessor conditions for goto and label visibility. Correct also related indentations. Co-authored-by: Hannes Müller <>

  • testsuite/lib/target-libpath.exp
  • # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
    
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 3 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with GCC; see the file COPYING3.  If not see
    # <http://www.gnu.org/licenses/>.
    
    # This file was contributed by John David Anglin (dave.anglin@nrc-cnrc.gc.ca)
    
    set orig_environment_saved 0
    set orig_ld_library_path_saved 0
    set orig_ld_run_path_saved 0
    set orig_shlib_path_saved 0
    set orig_ld_libraryn32_path_saved 0
    set orig_ld_library64_path_saved 0
    set orig_ld_library_path_32_saved 0
    set orig_ld_library_path_64_saved 0
    set orig_dyld_library_path_saved 0
    set orig_path_saved 0
    
    #######################################
    # proc set_ld_library_path_env_vars { }
    #######################################
    
    proc set_ld_library_path_env_vars { } {
      global ld_library_path
      global orig_environment_saved
      global orig_ld_library_path_saved
      global orig_ld_run_path_saved
      global orig_shlib_path_saved
      global orig_ld_libraryn32_path_saved
      global orig_ld_library64_path_saved
      global orig_ld_library_path_32_saved
      global orig_ld_library_path_64_saved
      global orig_dyld_library_path_saved
      global orig_path_saved
      global orig_ld_library_path
      global orig_ld_run_path
      global orig_shlib_path
      global orig_ld_libraryn32_path
      global orig_ld_library64_path
      global orig_ld_library_path_32
      global orig_ld_library_path_64
      global orig_dyld_library_path
      global orig_path
      global GCC_EXEC_PREFIX
    
      # Set the relocated compiler prefix, but only if the user hasn't specified one.
      if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } {
        setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX"
      }
    
      # Setting the ld library path causes trouble when testing cross-compilers.
      if { [is_remote target] } {
        return
      }
    
      if { $orig_environment_saved == 0 } {
        global env
    
        set orig_environment_saved 1
    
        # Save the original environment.
        if [info exists env(LD_LIBRARY_PATH)] {
          set orig_ld_library_path "$env(LD_LIBRARY_PATH)"
          set orig_ld_library_path_saved 1
        }
        if [info exists env(LD_RUN_PATH)] {
          set orig_ld_run_path "$env(LD_RUN_PATH)"
          set orig_ld_run_path_saved 1
        }
        if [info exists env(SHLIB_PATH)] {
          set orig_shlib_path "$env(SHLIB_PATH)"
          set orig_shlib_path_saved 1
        }
        if [info exists env(LD_LIBRARYN32_PATH)] {
          set orig_ld_libraryn32_path "$env(LD_LIBRARYN32_PATH)"
          set orig_ld_libraryn32_path_saved 1
        }
        if [info exists env(LD_LIBRARY64_PATH)] {
          set orig_ld_library64_path "$env(LD_LIBRARY64_PATH)"
          set orig_ld_library64_path_saved 1
        }
        if [info exists env(LD_LIBRARY_PATH_32)] {
          set orig_ld_library_path_32 "$env(LD_LIBRARY_PATH_32)"
          set orig_ld_library_path_32_saved 1
        }
        if [info exists env(LD_LIBRARY_PATH_64)] {
          set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)"
          set orig_ld_library_path_64_saved 1
        }
        if [info exists env(DYLD_LIBRARY_PATH)] {
          set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)"
          set orig_dyld_library_path_saved 1
        }
        if [info exists env(PATH)] {
          set orig_path "$env(PATH)"
          set orig_path_saved 1
        }
      }
    
      # We need to set ld library path in the environment.  Currently,
      # unix.exp doesn't set the environment correctly for all systems.
      # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a
      # program.  We also need the environment set for compilations, etc.
      #
      # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
      # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
      # (for the 64-bit ABI).  The same applies to Darwin (DYLD_LIBRARY_PATH),
      # Solaris 32 bit (LD_LIBRARY_PATH_32), Solaris 64 bit (LD_LIBRARY_PATH_64),
      # and HP-UX (SHLIB_PATH).  In some cases, the variables are independent
      # of LD_LIBRARY_PATH, and in other cases LD_LIBRARY_PATH is used if the
      # variable is not defined.
      #
      # 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 { $orig_ld_library_path_saved } {
        setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path"
      } else {
        setenv LD_LIBRARY_PATH "$ld_library_path"
      }
      if { $orig_ld_run_path_saved } {
        setenv LD_RUN_PATH "$ld_library_path:$orig_ld_run_path"
      } else {
        setenv LD_RUN_PATH "$ld_library_path"
      }
      # The default shared library dynamic path search for 64-bit
      # HP-UX executables searches LD_LIBRARY_PATH before SHLIB_PATH.
      # LD_LIBRARY_PATH isn't used for 32-bit executables.  Thus, we
      # set LD_LIBRARY_PATH and SHLIB_PATH as if they were independent.
      if { $orig_shlib_path_saved } {
        setenv SHLIB_PATH "$ld_library_path:$orig_shlib_path"
      } else {
        setenv SHLIB_PATH "$ld_library_path"
      }
      if { $orig_ld_libraryn32_path_saved } {
        setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_libraryn32_path"
      } elseif { $orig_ld_library_path_saved } {
        setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_library_path"
      } else {
        setenv LD_LIBRARYN32_PATH "$ld_library_path"
      }
      if { $orig_ld_library64_path_saved } {
        setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library64_path"
      } elseif { $orig_ld_library_path_saved } {
        setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library_path"
      } else {
        setenv LD_LIBRARY64_PATH "$ld_library_path"
      }
      if { $orig_ld_library_path_32_saved } {
        setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path_32"
      } elseif { $orig_ld_library_path_saved } {
        setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path"
      } else {
        setenv LD_LIBRARY_PATH_32 "$ld_library_path"
      }
      if { $orig_ld_library_path_64_saved } {
        setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path_64"
      } elseif { $orig_ld_library_path_saved } {
        setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path"
      } 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 *-*-cygwin*] || [ istarget *-*-msys* ] || [istarget *-*-mingw*] } {
        if { $orig_path_saved } {
          setenv PATH "$ld_library_path:$orig_path"
        } else {
          setenv PATH "$ld_library_path"
        }
      }
    
      verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path"
    }
    
    #######################################
    # proc restore_ld_library_path_env_vars { }
    #######################################
    
    proc restore_ld_library_path_env_vars { } {
      global orig_environment_saved
      global orig_ld_library_path_saved
      global orig_ld_run_path_saved
      global orig_shlib_path_saved
      global orig_ld_libraryn32_path_saved
      global orig_ld_library64_path_saved
      global orig_ld_library_path_32_saved
      global orig_ld_library_path_64_saved
      global orig_dyld_library_path_saved
      global orig_path_saved
      global orig_ld_library_path
      global orig_ld_run_path
      global orig_shlib_path
      global orig_ld_libraryn32_path
      global orig_ld_library64_path
      global orig_ld_library_path_32
      global orig_ld_library_path_64
      global orig_dyld_library_path
      global orig_path
    
      if { $orig_environment_saved == 0 } {
        return
      }
    
      if { $orig_ld_library_path_saved } {
        setenv LD_LIBRARY_PATH "$orig_ld_library_path"
      } elseif [info exists env(LD_LIBRARY_PATH)] {
        unsetenv LD_LIBRARY_PATH
      }
      if { $orig_ld_run_path_saved } {
        setenv LD_RUN_PATH "$orig_ld_run_path"
      } elseif [info exists env(LD_RUN_PATH)] {
        unsetenv LD_RUN_PATH
      }
      if { $orig_shlib_path_saved } {
        setenv SHLIB_PATH "$orig_shlib_path"
      } elseif [info exists env(SHLIB_PATH)] {
        unsetenv SHLIB_PATH
      }
      if { $orig_ld_libraryn32_path_saved } {
        setenv LD_LIBRARYN32_PATH "$orig_ld_libraryn32_path"
      } elseif [info exists env(LD_LIBRARYN32_PATH)] {
        unsetenv LD_LIBRARYN32_PATH
      }
      if { $orig_ld_library64_path_saved } {
        setenv LD_LIBRARY64_PATH "$orig_ld_library64_path"
      } elseif [info exists env(LD_LIBRARY64_PATH)] {
        unsetenv LD_LIBRARY64_PATH
      }
      if { $orig_ld_library_path_32_saved } {
        setenv LD_LIBRARY_PATH_32 "$orig_ld_library_path_32"
      } elseif [info exists env(LD_LIBRARY_PATH_32)] {
        unsetenv LD_LIBRARY_PATH_32
      }
      if { $orig_ld_library_path_64_saved } {
        setenv LD_LIBRARY_PATH_64 "$orig_ld_library_path_64"
      } elseif [info exists env(LD_LIBRARY_PATH_64)] {
        unsetenv LD_LIBRARY_PATH_64
      }
      if { $orig_dyld_library_path_saved } {
        setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path"
      } elseif [info exists env(DYLD_LIBRARY_PATH)] {
        unsetenv DYLD_LIBRARY_PATH
      }
      if { $orig_path_saved } {
        setenv PATH "$orig_path"
      } elseif [info exists env(PATH)] {
        unsetenv PATH
      }
    }
    
    #######################################
    # proc get_shlib_extension { }
    #######################################
    
    proc get_shlib_extension { } {
        global shlib_ext
    
        if { [ istarget *-*-darwin* ] } {
    	set shlib_ext "dylib"
        } elseif { [ istarget *-*-cygwin* ] || [ istarget *-*-msys* ] || [ istarget *-*-mingw* ] } {
    	set shlib_ext "dll"
        } elseif { [ istarget hppa*-*-hpux* ] } {
    	set shlib_ext "sl"
        } else {
    	set shlib_ext "so"
        }
        return $shlib_ext
    }