#!/bin/sh # dlfcn-win32 configure script # # Parts copied from FFmpeg's configure # 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 [$PREFIX/lib]" echo " --incdir=DIR install includes in DIR [$PREFIX/include]" 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-strip strip shared library [yes]" echo echo " --cc=CC use C compiler CC [$cc]" echo " --make=MAKE use specified make [$make]" 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" cc="gcc" DEFAULT="msvc " DEFAULT_NO="shared " DEFAULT_YES="static strip " 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" ;; --make=*) make="$optval" ;; --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 disabled shared && disabled static && { echo "At least one library type must be set."; exit 1; } # simple cc test cat > /tmp/test.c << EOF #include void function(void) { LoadLibrary(NULL); } EOF $cc -shared -o /tmp/test.dll /tmp/test.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 msvc; then 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 || { 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 lib /? >& /dev/null && enable msvc || disable msvc fi echo "# Automatically generated by configure" > config.mak echo "PREFIX=$PREFIX" >> config.mak echo "libdir=$libdir" >> config.mak echo "incdir=$incdir" >> config.mak echo "CC=$cc" >> config.mak echo "BUILD_SHARED=$shared" >> config.mak echo "BUILD_STATIC=$static" >> config.mak echo "BUILD_MSVC=$msvc" >> config.mak echo "DO_STRIP=$strip" >> config.mak echo "prefix: $PREFIX" echo "libdir: $libdir" echo "incdir: $incdir" echo "cc: $cc" echo "static: $static" echo "shared: $shared" enabled shared && { echo "msvc: $msvc"; echo "strip: $strip"; }