|
Packit |
2997f0 |
#!/bin/bash
|
|
Packit |
2997f0 |
#
|
|
Packit |
2997f0 |
# Compiler detection
|
|
Packit |
2997f0 |
# Sets:
|
|
Packit |
2997f0 |
# CC, CXX, CFLAGS, CPPFLAGS, LDFLAGS, ARFLAGS, PKG_CONFIG, INSTALL, MBITS
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
mkl_require host
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
function checks {
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# C compiler
|
|
Packit |
2997f0 |
mkl_meta_set "ccenv" "name" "C compiler from CC env"
|
|
Packit |
2997f0 |
if ! mkl_command_check "ccenv" "WITH_CC" cont "$CC --version"; then
|
|
Packit |
2997f0 |
if mkl_command_check "gcc" "WITH_GCC" cont "gcc --version"; then
|
|
Packit |
2997f0 |
CC=gcc
|
|
Packit |
2997f0 |
elif mkl_command_check "clang" "WITH_CLANG" cont "clang --version"; then
|
|
Packit |
2997f0 |
CC=clang
|
|
Packit |
2997f0 |
elif mkl_command_check "cc" "WITH_CC" fail "cc --version"; then
|
|
Packit |
2997f0 |
CC=cc
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
export CC="${CC}"
|
|
Packit |
2997f0 |
mkl_mkvar_set CC CC "$CC"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if [[ $MKL_CC_WANT_CXX == 1 ]]; then
|
|
Packit |
2997f0 |
# C++ compiler
|
|
Packit |
2997f0 |
mkl_meta_set "cxxenv" "name" "C++ compiler from CXX env"
|
|
Packit |
2997f0 |
if ! mkl_command_check "cxxenv" "WITH_CXX" cont "$CXX --version" ; then
|
|
Packit |
2997f0 |
mkl_meta_set "gxx" "name" "C++ compiler (g++)"
|
|
Packit |
2997f0 |
mkl_meta_set "clangxx" "name" "C++ compiler (clang++)"
|
|
Packit |
2997f0 |
mkl_meta_set "cxx" "name" "C++ compiler (c++)"
|
|
Packit |
2997f0 |
if mkl_command_check "gxx" "WITH_GXX" cont "g++ --version"; then
|
|
Packit |
2997f0 |
CXX=g++
|
|
Packit |
2997f0 |
elif mkl_command_check "clangxx" "WITH_CLANGXX" cont "clang++ --version"; then
|
|
Packit |
2997f0 |
CXX=clang++
|
|
Packit |
2997f0 |
elif mkl_command_check "cxx" "WITH_CXX" fail "c++ --version"; then
|
|
Packit |
2997f0 |
CXX=c++
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
export CXX="${CXX}"
|
|
Packit |
2997f0 |
mkl_mkvar_set "CXX" CXX "$CXX"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Handle machine bits, if specified.
|
|
Packit |
2997f0 |
if [[ ! -z "$MBITS" ]]; then
|
|
Packit |
2997f0 |
mkl_meta_set mbits_m name "mbits compiler flag (-m$MBITS)"
|
|
Packit |
2997f0 |
if mkl_compile_check mbits_m "" fail CC "-m$MBITS"; then
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-m$MBITS"
|
|
Packit |
2997f0 |
mkl_mkvar_append LDFLAGS LDFLAGS "-m$MBITS"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
if [[ -z "$ARFLAGS" && $MBITS == 64 && $MKL_DISTRO == "SunOS" ]]; then
|
|
Packit |
2997f0 |
# Turn on 64-bit archives on SunOS
|
|
Packit |
2997f0 |
mkl_mkvar_append ARFLAGS ARFLAGS "S"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Provide prefix and checks for various other build tools.
|
|
Packit |
2997f0 |
local t=
|
|
Packit |
2997f0 |
for t in LD:ld NM:nm OBJDUMP:objdump STRIP:strip ; do
|
|
Packit |
2997f0 |
local tenv=${t%:*}
|
|
Packit |
2997f0 |
t=${t#*:}
|
|
Packit |
2997f0 |
local tval="${!tenv}"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
[[ -z $tval ]] && tval="$t"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if mkl_prog_check "$t" "" disable "$tval" ; then
|
|
Packit |
2997f0 |
if [[ $tval != ${!tenv} ]]; then
|
|
Packit |
2997f0 |
export "$tenv"="$tval"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
mkl_mkvar_set $tenv $tenv "$tval"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
done
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Compiler and linker flags
|
|
Packit |
2997f0 |
[[ ! -z $CFLAGS ]] && mkl_mkvar_set "CFLAGS" "CFLAGS" "$CFLAGS"
|
|
Packit |
2997f0 |
[[ ! -z $CPPFLAGS ]] && mkl_mkvar_set "CPPFLAGS" "CPPFLAGS" "$CPPFLAGS"
|
|
Packit |
2997f0 |
[[ ! -z $CXXFLAGS ]] && mkl_mkvar_set "CXXFLAGS" "CXXFLAGS" "$CXXFLAGS"
|
|
Packit |
2997f0 |
[[ ! -z $LDFLAGS ]] && mkl_mkvar_set "LDFLAGS" "LDFLAGS" "$LDFLAGS"
|
|
Packit |
2997f0 |
[[ ! -z $ARFLAGS ]] && mkl_mkvar_set "ARFLAGS" "ARFLAGS" "$ARFLAGS"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if [[ $MKL_NO_DEBUG_SYMBOLS != "y" ]]; then
|
|
Packit |
2997f0 |
# Add debug symbol flag (-g)
|
|
Packit |
2997f0 |
# OSX 10.9 requires -gstrict-dwarf for some reason.
|
|
Packit |
2997f0 |
mkl_meta_set cc_g_dwarf name "debug symbols compiler flag (-g...)"
|
|
Packit |
2997f0 |
if [[ $MKL_DISTRO == "osx" ]]; then
|
|
Packit |
2997f0 |
if mkl_compile_check cc_g_dwarf "" cont CC "-gstrict-dwarf"; then
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-gstrict-dwarf"
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-g"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-g"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# pkg-config
|
|
Packit |
2997f0 |
if [ -z "$PKG_CONFIG" ]; then
|
|
Packit |
2997f0 |
PKG_CONFIG=pkg-config
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if mkl_command_check "pkgconfig" "WITH_PKGCONFIG" cont "$PKG_CONFIG --version"; then
|
|
Packit |
2997f0 |
export PKG_CONFIG
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
mkl_mkvar_set "pkgconfig" PKG_CONFIG $PKG_CONFIG
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
[[ ! -z "$PKG_CONFIG_PATH" ]] && mkl_env_append PKG_CONFIG_PATH "$PKG_CONFIG_PATH"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# install
|
|
Packit |
2997f0 |
if [ -z "$INSTALL" ]; then
|
|
Packit |
2997f0 |
if [[ $MKL_DISTRO == "SunOS" ]]; then
|
|
Packit |
2997f0 |
mkl_meta_set ginstall name "GNU install"
|
|
Packit |
2997f0 |
if mkl_command_check ginstall "" ignore "ginstall --version"; then
|
|
Packit |
2997f0 |
INSTALL=ginstall
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
INSTALL=install
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
INSTALL=install
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if mkl_command_check "install" "WITH_INSTALL" cont "$INSTALL --version"; then
|
|
Packit |
2997f0 |
export INSTALL
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
mkl_mkvar_set "install" INSTALL $INSTALL
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Enable profiling if desired
|
|
Packit |
2997f0 |
if [[ $WITH_PROFILING == y ]]; then
|
|
Packit |
2997f0 |
mkl_allvar_set "" "WITH_PROFILING" "y"
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-pg"
|
|
Packit |
2997f0 |
mkl_mkvar_append LDFLAGS LDFLAGS "-pg"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Optimization
|
|
Packit |
2997f0 |
if [[ $WITHOUT_OPTIMIZATION == n ]]; then
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-O2"
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
mkl_mkvar_append CPPFLAGS CPPFLAGS "-O0"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Static linking
|
|
Packit |
2997f0 |
if [[ $WITH_STATIC_LINKING == y ]]; then
|
|
Packit |
2997f0 |
# LDFLAGS_STATIC is the LDFLAGS needed to enable static linking
|
|
Packit |
2997f0 |
# of sub-sequent libraries, while
|
|
Packit |
2997f0 |
# LDFLAGS_DYNAMIC is the LDFLAGS needed to enable dynamic linking.
|
|
Packit |
2997f0 |
if [[ $MKL_DISTRO != "osx" ]]; then
|
|
Packit |
2997f0 |
mkl_mkvar_set staticlinking LDFLAGS_STATIC "-Wl,-Bstatic"
|
|
Packit |
2997f0 |
mkl_mkvar_set staticlinking LDFLAGS_DYNAMIC "-Wl,-Bdynamic"
|
|
Packit |
2997f0 |
mkl_mkvar_set staticlinking HAS_LDFLAGS_STATIC y
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
# OSX linker can't enable/disable static linking so we'll
|
|
Packit |
2997f0 |
# need to find the .a through STATIC_LIB_libname env var
|
|
Packit |
2997f0 |
mkl_mkvar_set staticlinking HAS_LDFLAGS_STATIC n
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
}
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
mkl_option "Compiler" "env:CC" "--cc=CC" "Build using C compiler CC" "\$CC"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "env:CXX" "--cxx=CXX" "Build using C++ compiler CXX" "\$CXX"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "ARCH" "--arch=ARCH" "Build for architecture" "$(uname -m)"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "CPU" "--cpu=CPU" "Build and optimize for specific CPU" "generic"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "MBITS" "--mbits=BITS" "Machine bits (32 or 64)" ""
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
for n in CFLAGS CPPFLAGS CXXFLAGS LDFLAGS ARFLAGS; do
|
|
Packit |
2997f0 |
mkl_option "Compiler" "mk:$n" "--$n=$n" "Add $n flags"
|
|
Packit |
2997f0 |
done
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
mkl_option "Compiler" "env:PKG_CONFIG_PATH" "--pkg-config-path" "Extra paths for pkg-config"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
mkl_option "Compiler" "WITH_PROFILING" "--enable-profiling" "Enable profiling"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "WITH_STATIC_LINKING" "--enable-static" "Enable static linking"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "WITHOUT_OPTIMIZATION" "--disable-optimization" "Disable optimization flag to compiler" "n"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "env:MKL_NO_DEBUG_SYMBOLS" "--disable-debug-symbols" "Disable debugging symbols" "n"
|
|
Packit |
2997f0 |
mkl_option "Compiler" "env:MKL_WANT_WERROR" "--enable-werror" "Enable compiler warnings as errors" "n"
|