Blob Blame History Raw
#!/bin/bash
#
# Module for building shared libraries
# Sets:
#  WITH_GNULD | WITH_OSXLD
#  WITH_LDS  - linker script support
mkl_require pic

function checks {

    mkl_mkvar_append LIB_LDFLAGS LIB_LDFLAGS '-shared'

    # Check what arguments to pass to CC or LD for shared libraries
    mkl_meta_set gnulib name "GNU-compatible linker options"
    mkl_meta_set osxlib name "OSX linker options"

    if mkl_compile_check gnulib WITH_GNULD cont CC \
	"-shared -Wl,-soname,mkltest.0" "" ; then
	# GNU linker
	mkl_mkvar_append LIB_LDFLAGS LIB_LDFLAGS '-Wl,-soname,$(LIBFILENAME)'

    elif mkl_compile_check osxlib WITH_OSXLD cont CC \
	"-dynamiclib -Wl,-install_name,/tmp/mkltest.so.0" ; then
	# OSX linker
        mkl_mkvar_append LIB_LDFLAGS LIB_LDFLAGS '-dynamiclib -Wl,-install_name,$(DESTDIR)$(libdir)/$(LIBFILENAME)'
    fi

    # Check what argument is needed for passing linker script.
    local ldsfile=$(mktemp _mkltmpXXXXXX)
    echo "{
 global:
  *;
};
" > $ldsfile

    mkl_meta_set ldsflagvs name "GNU linker-script ld flag"
    mkl_meta_set ldsflagm name "Solaris linker-script ld flag"
    if mkl_compile_check ldsflagvs "" cont CC \
	"-shared -Wl,--version-script=$ldsfile"; then
	mkl_mkvar_set ldsflagvs LDFLAG_LINKERSCRIPT "-Wl,--version-script="
	mkl_mkvar_set lib_lds WITH_LDS y
    elif mkl_compile_check ldsflagm ""  ignore CC \
	"-shared -Wl,-M$ldsfile"; then
	mkl_mkvar_set ldsflagm LDFLAG_LINKERSCRIPT "-Wl,-M"
	mkl_mkvar_set lib_lds WITH_LDS y
    fi

    rm -f "$ldsfile"
}