Edit

kc3-lang/dlfcn-win32/configure

Branch :

  • Show log

    Commit

  • Author : Silvio Traversaro
    Date : 2020-09-13 19:26:54
    Hash : d240aff1
    Message : Rephrase configure script copyright notice

  • configure
  • #!/bin/sh
    # dlfcn-win32 configure script
    #
    # Copyright (c) 2007, 2009, 2012 Ramiro Polla
    # Copyright (c) 2014 Tiancheng "Timothy" Gu
    #
    # Differently from the rest of the dlfcn-win32 codebase that is licensed 
    # under the MIT license, this configure script is based in part on the FFmpeg
    # configure script, and so it is licensed under the GNU Lesser General Public
    # License version 2.1 or later (LGPL v2.1+). A copy of the LGPL v2.1 license
    # is available at https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
    
    set_all(){
        value=$1
        shift
        for var in $*; do
            eval $var=$value
        done
    }
    
    enable(){
        set_all yes $*
    }
    
    disable(){
        set_all no $*
    }
    
    enabled(){
        eval test "x\$$1" = "xyes"
    }
    
    disabled(){
        eval test "x\$$1" = "xno"
    }
    
    show_help(){
      echo "Usage: configure [options]"
      echo "Options: [defaults in brackets after descriptions]"
      echo "All \"enable\" options have \"disable\" counterparts"
      echo
      echo "  --help                    print this message"
      echo "  --prefix=PREFIX           install in PREFIX [$prefix]"
      echo "  --libdir=DIR              install libs in DIR [$libdir]"
      echo "  --incdir=DIR              install includes in DIR [$incdir]"
      echo "  --enable-shared           build shared libraries [no]"
      echo "  --enable-static           build static libraries [yes]"
      echo "  --enable-msvc             create msvc-compatible import lib [auto]"
      echo "  --enable-stripping        strip shared library [yes]"
      echo "  --enable-wine[=cmd]       use wine in tests [auto,cmd=$winecmd]"
      echo
      echo "  --cc=CC                   use C compiler CC [$cc_default]"
      echo "  --cross-prefix=PREFIX     use PREFIX for compilation tools [$cross_prefix]"
      exit 1
    }
    
    die_unknown(){
        echo "Unknown option \"$1\"."
        echo "See $0 --help for available options."
        exit 1
    }
    
    prefix="/mingw"
    libdir='${prefix}/lib'
    incdir='${prefix}/include'
    ar="ar"
    cc_default="gcc"
    ranlib="ranlib"
    strip="strip"
    winecmd="wine"
    
    DEFAULT="msvc
        wine
    "
    
    DEFAULT_NO="shared
    "
    
    DEFAULT_YES="static
        stripping
    "
    
    CMDLINE_SELECT="$DEFAULT
        $DEFAULT_NO
        $DEFAULT_YES
    "
    
    enable  $DEFAULT_YES
    disable $DEFAULT_NO
    
    for opt do
        optval="${opt#*=}"
        case "$opt" in
        --help)
            show_help
        ;;
        --prefix=*)
            prefix="$optval"
        ;;
        --libdir=*)
            libdir="$optval"
        ;;
        --incdir=*)
            incdir="$optval"
        ;;
        --cc=*)
            cc="$optval"
        ;;
        --cross-prefix=*)
            cross_prefix="$optval"
        ;;
        --enable-wine=*)
            winecmd="$optval"
            enable wine
        ;;
        --enable-?*|--disable-?*)
            eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
            echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
            $action $option
        ;;
        *)
            die_unknown $opt
        ;;
        esac
    done
    
    ar="${cross_prefix}${ar}"
    cc_default="${cross_prefix}${cc_default}"
    ranlib="${cross_prefix}${ranlib}"
    strip="${cross_prefix}${strip}"
    
    if ! test -z $cc; then
        cc_default="${cc}"
    fi
    cc="${cc_default}"
    
    disabled shared && disabled static && {
        echo "At least one library type must be set.";
        exit 1;
    }
    
    # simple cc test
    cat > tmptest.c << EOF
    #include <windows.h>
    void function(void)
    { LoadLibrary(NULL); }
    EOF
    echo testing compiler: $cc -shared -o tmptest.dll tmptest.c
    $cc -shared -o tmptest.dll tmptest.c
    
    test "$?" != 0 && {
        echo "$cc could not create shared file with Windows API functions.";
        echo "Make sure your MinGW system is working properly.";
        exit 1;
    }
    
    if enabled wine; then      # wine explicitly enabled
        $winecmd --version > /dev/null 2>&1 /dev/null || {
            echo "wine command not found."
            echo "Make sure wine is installed and its bin folder is in your \$PATH."
            exit 1
        }
    elif disabled wine; then   # explicitly disabled
        winecmd=""
    else                       # autodetect
        $winecmd --version > /dev/null 2>&1 /dev/null && enable wine || winecmd=""
    fi
    
    if ! enabled stripping; then
        strip="@echo ignoring strip"
    fi
    
    if enabled msvc; then      # msvc explicitly enabled
        disabled shared && {
            echo "MSVC understands static libraries created by gcc."
            echo "There's no need to create an import lib."
            exit 1
        }
        lib /? > /dev/null 2>&1 /dev/null || {
            echo "MSVC's lib command not found."
            echo "Make sure MSVC is installed and its bin folder is in your \$PATH."
            exit 1
        }
    fi
    
    if enabled shared; then    # msvc autodetected
        lib /? > /dev/null 2>&1 /dev/null && enable msvc || disable msvc
    fi
    
    enabled msvc && libcmd="lib" || libcmd="@echo ignoring lib"
    
    echo "# Automatically generated by configure" > config.mak
    echo "prefix=$prefix" >> config.mak
    echo "libdir=$libdir" >> config.mak
    echo "incdir=$incdir" >> config.mak
    echo "AR=$ar" >> config.mak
    echo "CC=$cc" >> config.mak
    echo "RANLIB=$ranlib" >> config.mak
    echo "STRIP=$strip" >> config.mak
    echo "BUILD_SHARED=$shared" >> config.mak
    echo "BUILD_STATIC=$static" >> config.mak
    echo "BUILD_MSVC=$msvc" >> config.mak
    echo "LIBCMD=$libcmd" >> config.mak
    echo "WINE=$winecmd" >> config.mak
    
    echo "prefix: $prefix"
    echo "libdir: $libdir"
    echo "incdir: $incdir"
    echo "ar:     $ar"
    echo "cc:     $cc"
    echo "ranlib: $ranlib"
    echo "strip:  $strip"
    echo "static: $static"
    echo "shared: $shared"
    if enabled shared; then
        echo "msvc:   $msvc";
        echo "strip:  $stripping";
    fi
    echo "wine:   $wine $winecmd"