Mercurial > pt1.oyama
view configure @ 159:38f79bcba50d
modified to accept capitalization.
author | Naoya OYAMA <naoya.oyama@gmail.com> |
---|---|
date | Mon, 10 Sep 2012 20:43:22 +0900 |
parents | faa0bc5fc2f5 |
children | ac23a9b417a2 |
line wrap: on
line source
#!/bin/sh # # recpt1 configure script - (c) 2007 Benjamin Zores # # (fully inspirated from ffmpeg configure script, thanks to Fabrice Bellard) # # make sure we are running under a compatible shell unset foo (: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null if test "$?" != 0; then if test "x$USHARE_CONFIGURE_EXEC" = x; then USHARE_CONFIGURE_EXEC=1 export USHARE_CONFIGURE_EXEC exec bash "$0" "$@" exec ksh "$0" "$@" exec /usr/xpg4/bin/sh "$0" "$@" fi echo "No compatible shell script interpreter found." exit 1 fi show_help(){ echo "Usage: configure [options]" echo "Options: [defaults in brackets after descriptions]" echo echo "Standard options:" echo " --help print this message" echo " --log[=FILE|yes|no] log tests and output to FILE [config.log]" echo " --prefix=PREFIX install in PREFIX [$PREFIX]" echo " --bindir=DIR install binaries in DIR [PREFIX/bin]" echo " --sysconfdir=DIR configuration files DIR [PREFIX/etc]" echo " --localedir=DIR use locales from DIR [PREFIX/share/locale]" echo "" echo "Extended options:" echo " --enable-dlna enable DLNA support through libldna" echo " --disable-dlna disable DLNA support" echo " --disable-nls do not use Native Language Support" echo " --enable-b25 enable b25 support" echo "" echo "Search paths:" echo " --with-b25-dir=DIR check for libarib25 installed in DIR" echo "" echo "Advanced options (experts only):" echo " --enable-debug enable debugging symbols" echo " --disable-debug disable debugging symbols" echo " --disable-strip disable stripping of executables at installation" echo " --disable-optimize disable compiler optimization" echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]" echo " --cross-compile assume a cross-compiler is used" exit 1 } log(){ echo "$@" >>$logfile } log_file(){ log BEGIN $1 cat -n $1 >>$logfile log END $1 } echolog(){ log "$@" echo "$@" } clean(){ rm -f $TMPC $TMPO $TMPE $TMPS } die(){ echolog "$@" if enabled logging; then echo "See file \"$logfile\" produced by configure for more details." else echo "Rerun configure with logging enabled (do not use --log=no) for more details." fi clean exit 1 } enabled(){ eval test "x\$$1" = "xyes" } flags_saved(){ (: ${SAVE_CFLAGS?}) 2>/dev/null } save_flags(){ flags_saved && return SAVE_CFLAGS="$CFLAGS" SAVE_LDFLAGS="$LDFLAGS" SAVE_extralibs="$extralibs" } restore_flags(){ CFLAGS="$SAVE_CFLAGS" LDFLAGS="$SAVE_LDFLAGS" extralibs="$SAVE_extralibs" unset SAVE_CFLAGS unset SAVE_LDFLAGS unset SAVE_extralibs } temp_cflags(){ temp_append CFLAGS "$@" } temp_ldflags(){ temp_append LDFLAGS "$@" } temp_extralibs(){ temp_append extralibs "$@" } temp_append(){ local var var=$1 shift save_flags append_var "$var" "$@" } append_var(){ local var f var=$1 shift for f in $@; do if eval echo \$$var | grep -qv -e "$f"; then eval "$var=\"\$$var $f\"" fi done } append(){ local var var=$1 shift flags_saved && append_var "SAVE_$var" "$@" append_var "$var" "$@" } add_cflags(){ append CFLAGS "$@" } add_ldflags(){ append LDFLAGS "$@" } add_extralibs(){ append extralibs "$@" } add_clog(){ echo "#define $1 $2" >> $CONFIG_H } add_clog_str(){ echo "#define $1 \"$2\"" >> $CONFIG_H } check_cmd(){ log "$@" "$@" >>$logfile 2>&1 } check_cc(){ log check_cc "$@" cat >$TMPC log_file $TMPC check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC } check_cpp(){ log check_cpp "$@" cat >$TMPC log_file $TMPC check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC } check_ld(){ log check_ld "$@" check_cc || return check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs } check_exec(){ check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; } } check_cflags(){ log check_cflags "$@" check_cc "$@" <<EOF && add_cflags "$@" int x; EOF } check_ldflags(){ log check_ldflags "$@" check_ld "$@" <<EOF && add_ldflags "$@" int main(){ return 0; } EOF } check_header(){ local header log check_header "$@" header=$1 shift check_cpp "$@" <<EOF #include <$header> int x; EOF } check_func(){ local func log check_func "$@" func=$1 shift check_ld "$@" <<EOF extern int $func(); int main(){ $func(); return 0; } EOF } check_lib(){ local header func err log check_lib "$@" header="$1" func="$2" shift 2 temp_extralibs "$@" check_header $header && check_func $func && add_extralibs "$@" err=$? restore_flags return $err } check_lib_version() { check_cmd pkg-config "$1" --atleast-version="$2" err=$? return $err } append_config(){ echo "$@" >> $CONFIGFILE } expand_var(){ v="$1" while true; do eval t="$v" test "$t" = "$v" && break v="$t" done echo "$v" } # set temporary file name if test ! -z "$TMPDIR" ; then TMPDIR1="${TMPDIR}" elif test ! -z "$TEMPDIR" ; then TMPDIR1="${TEMPDIR}" else TMPDIR1="/tmp" fi TMPC="${TMPDIR1}/recpt1-${RANDOM}-$$-${RANDOM}.c" TMPO="${TMPDIR1}/recpt1-${RANDOM}-$$-${RANDOM}.o" TMPE="${TMPDIR1}/recpt1-${RANDOM}-$$-${RANDOM}" TMPS="${TMPDIR1}/recpt1-${RANDOM}-$$-${RANDOM}.S" CONFIGFILE="config.mak" CONFIG_H="config.h" ################################################# # set default parameters ################################################# logging="yes" logfile="config.log" PREFIX="/usr/local" bindir='${PREFIX}/bin' sysconfdir='${PREFIX}/etc' localedir='${PREFIX}/share/locale' #dlna="no" dlna="yes" nls="yes" b25="no" cc="gcc" make="make" strip="strip" cpu=`uname -m` optimize="yes" debug="no" dostrip="yes" extralibs="" installstrip="-s" cross_compile="no" INSTALL="/usr/bin/install -c" VERSION="1.1a" system_name=`uname -s 2>&1` ################################################# # set cpu variable and specific cpu flags ################################################# case "$cpu" in i386|i486|i586|i686|i86pc|BePC) cpu="x86" ;; x86_64|amd64) cpu="x86" canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`" if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then cpu="x86_64" fi fi ;; # armv4l is a subset of armv5tel arm|armv4l|armv5tel) cpu="armv4l" ;; alpha) cpu="alpha" ;; "Power Macintosh"|ppc|ppc64|powerpc) cpu="powerpc" ;; mips|mipsel|IP*) cpu="mips" ;; sun4u|sparc64) cpu="sparc64" ;; sparc) cpu="sparc" ;; sh4) cpu="sh4" ;; parisc|parisc64) cpu="parisc" ;; s390|s390x) cpu="s390" ;; m68k) cpu="m68k" ;; ia64) cpu="ia64" ;; bfin) cpu="bfin" ;; *) cpu="unknown" ;; esac # OS test booleans functions issystem() { test "`echo $system_name | tr A-Z a-z`" = "`echo $1 | tr A-Z a-z`" } linux() { issystem "Linux" || issystem "uClinux" ; return "$?" ; } sunos() { issystem "SunOS" ; return "$?" ; } hpux() { issystem "HP-UX" ; return "$?" ; } irix() { issystem "IRIX" ; return "$?" ; } aix() { issystem "AIX" ; return "$?" ; } cygwin() { issystem "CYGWIN" ; return "$?" ; } freebsd() { issystem "FreeBSD" || issystem "GNU/kFreeBSD"; return "$?" ; } netbsd() { issystem "NetBSD" ; return "$?" ; } bsdos() { issystem "BSD/OS" ; return "$?" ; } openbsd() { issystem "OpenBSD" ; return "$?" ; } bsd() { freebsd || netbsd || bsdos || openbsd ; return "$?" ; } qnx() { issystem "QNX" ; return "$?" ; } darwin() { issystem "Darwin" ; return "$?" ; } gnu() { issystem "GNU" ; return "$?" ; } mingw32() { issystem "MINGW32" ; return "$?" ; } morphos() { issystem "MorphOS" ; return "$?" ; } amigaos() { issystem "AmigaOS" ; return "$?" ; } win32() { cygwin || mingw32 ; return "$?" ; } beos() { issystem "BEOS" ; return "$?" ; } ################################################# # check options ################################################# for opt do optval="${opt#*=}" case "$opt" in --log) ;; --log=*) logging="$optval" ;; --prefix=*) PREFIX="$optval"; force_prefix=yes ;; --bindir=*) bindir="$optval"; ;; --sysconfdir=*) sysconfdir="$optval"; ;; --localedir=*) localedir="$optval"; ;; --with-b25-dir=*) libb25dir="$optval"; ;; --disable-nls) nls="no" ;; --enable-dlna) dlna="yes" ;; --disable-dlna) dlna="no" ;; --enable-b25) b25="yes" ;; --disable-b25) b25="no" ;; --enable-debug) debug="yes" ;; --disable-debug) debug="no" ;; --disable-strip) dostrip="no" ;; --disable-optimize) optimize="no" ;; --cross-prefix=*) cross_prefix="$optval" ;; --cross-compile) cross_compile="yes" ;; --help) show_help ;; *) echo "Unknown option \"$opt\"." echo "See $0 --help for available options." exit 1 ;; esac done if [ -n "$cross_prefix" ]; then cross_compile="yes" cc="${cross_prefix}${cc}" strip="${cross_prefix}${strip}" else [ -n "$CC" ] && cc="$CC" [ -n "$STRIP" ] && strip="$STRIP" fi [ -n "$MAKE" ] && make="$MAKE" ################################################# # create logging file ################################################# if test "$logging" != no; then enabled logging || logfile="$logging" echo "# $0 $@" >$logfile set >>$logfile else logfile=/dev/null fi ################################################# # check pt3 driver ################################################# if test -e pt3/auto_pull ; then if ! (cd pt3 && git pull --rebase) ; then echo "git pull failed, (re)move pt3/auto_pull to disable pulling" exit 1 fi fi if ! test -e pt3 ; then echo "No pt3 checkout, press enter to download one with git or CTRL+C to abort" read tmp if ! git clone https://github.com/m-tsudo/pt3.git; then rm -fr pt3 echo "Faild to get a PT3 checkout" exit 1; fi touch pt3/auto_pull fi ################################################# # compiler sanity check ################################################# echolog "Checking for compiler available..." check_exec <<EOF int main(){ return 0; } EOF if test "$?" != 0; then echo "$cc is unable to create an executable file." if test -z "$cross_prefix" -a "$cross_compile" = no; then echo "If $cc is a cross-compiler, use the --cross-compile option." fi die "C compiler test failed." fi ################################################# # check for target specific flags ################################################# # check for SIMD availability # AltiVec flags: The FSF version of GCC differs from the Apple version if test $cpu = "powerpc"; then if test $altivec = "yes"; then if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then add_cflags "-faltivec" else add_cflags "-maltivec -mabi=altivec" fi fi fi check_header altivec.h && _altivec_h=yes || _altivec_h=no # check if our compiler supports Motorola AltiVec C API if enabled altivec; then if enabled _altivec_h; then inc_altivec_h="#include <altivec.h>" else inc_altivec_h= fi check_cc <<EOF || altivec=no $inc_altivec_h int main(void) { vector signed int v1, v2, v3; v1 = vec_add(v2,v3); return 0; } EOF fi # mmi only available on mips if [ "$mmi" = "default" ]; then if [ "$cpu" = "mips" ]; then mmi="yes" else mmi="no" fi fi # check if our compiler supports mmi enabled mmi && check_cc <<EOF || mmi="no" int main(void) { __asm__ ("lq \$2, 0(\$2)"); return 0; } EOF # test gcc version to see if vector builtins can be used # currently only used on i386 for MMX builtins check_cc -msse <<EOF && builtin_vector=yes || builtin_vector=no #include <xmmintrin.h> int main(void) { #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) return 0; #else #error no vector builtins #endif } EOF # test for mm3dnow.h test "$cpu" = "x86_64" && march=k8 || march=athlon check_cc -march=$march <<EOF && mm3dnow=yes || mm3dnow=no #include <mm3dnow.h> int main(void) { __m64 b1; b1 = _m_pswapd(b1); _m_femms(); return 0; } EOF # --- # big/little-endian test if test "$cross_compile" = "no"; then check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes" #include <inttypes.h> int main(int argc, char ** argv){ volatile uint32_t i=0x01234567; return (*((uint8_t*)(&i))) == 0x67; } EOF else # programs cannot be launched if cross compiling, so make a static guess if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then bigendian="yes" fi fi # add some useful compiler flags if supported add_cflags -I.. add_cflags -I../driver check_cflags -W check_cflags -Wall check_cflags -D_LARGEFILE_SOURCE check_cflags -D_FILE_OFFSET_BITS=64 check_cflags -D_REENTRANT linux && add_cflags -D_GNU_SOURCE ################################################# # check for debug symbols ################################################# if enabled debug; then add_cflags -g3 add_cflags -DHAVE_DEBUG dostrip=no fi if enabled optimize; then if test -n "`$cc -v 2>&1 | grep xlc`"; then add_cflags "-O5" add_ldflags "-O5" else add_cflags "-O3" fi fi ################################################# # check for locales (optional) ################################################# echolog "Checking for locales ..." check_header locale.h && add_cflags -DHAVE_LOCALE_H check_lib locale.h setlocale "" && add_cflags -DHAVE_SETLOCALE ################################################# # check for ifaddr (optional) ################################################# echolog "Checking for ifaddrs ..." check_lib ifaddrs.h getifaddrs "" && add_cflags -DHAVE_IFADDRS_H ################################################# # check for langinfo (optional) ################################################# echolog "Checking for langinfo ..." check_header langinfo.h && add_cflags -DHAVE_LANGINFO_H check_lib langinfo.h nl_langinfo "" && add_cflags -DHAVE_LANGINFO_CODESET ################################################# # check for iconv (optional) ################################################# echolog "Checking for iconv ..." check_lib iconv.h iconv "" && add_cflags -DHAVE_ICONV ################################################# # check for libarib25 (mandatory if enabled) ################################################# if test "$b25" = "yes"; then b25_min_version="0.1.8" echolog "Checking for b25 >= $b25_min_version ..." if [ -n "$libb25dir" ]; then check_cflags -I$libb25dir/include/arib25 check_ldflags -L$libb25dir/lib fi check_lib arib_std_b25.h create_arib_std_b25 -larib25 -lpcsclite || die "Error, can't find libarib25 (install it or use --disable-b25) !" # check_lib_version libarib25 $libb25_min_version || die "Error, libb25 < $libb25_min_version !" add_cflags -DHAVE_LIBARIB25 add_cflags `pkg-config libarib25 pcsclite --cflags` add_extralibs `pkg-config libarib25 pcsclite --libs` fi ################################################# # check for libdlna ################################################# # force use DLNA if test "$dlna" = "yes"; then add_cflags -DHAVE_DLNA add_cflags `pkg-config libupnp --cflags` add_cflags `pkg-config libdlna --cflags` add_extralibs `pkg-config libupnp --libs` add_extralibs `pkg-config libdlna --libs` add_extralibs -lrt fi ################################################# # logging result ################################################# echolog "" echolog "recpt1: configure is OK" echolog " version $VERSION" test $b25 = yes && echolog " using libb25 `pkg-config libb25 --modversion`" echolog "configuration:" echolog " install prefix $PREFIX" echolog " configuration dir $sysconfdir" echolog " locales dir $localedir" echolog " NLS support $nls" echolog " B25 support $b25" echolog " DLNA support $dlna" echolog " C compiler $cc" echolog " STRIP $strip" echolog " make $make" echolog " CPU $cpu ($tune)" echolog " debug symbols $debug" echolog " strip symbols $dostrip" echolog " optimize $optimize" echolog "" echolog " CFLAGS $CFLAGS" echolog " LDFLAGS $LDFLAGS" echolog " extralibs $extralibs" echolog "" ################################################# # save configs attributes ################################################# echolog "Creating $CONFIGFILE ..." echo "# Automatically generated by configure - do not modify!" > $CONFIGFILE append_config "VERSION=$VERSION" append_config "PREFIX=$PREFIX" append_config "prefix=\$(DESTDIR)\$(PREFIX)" append_config "bindir=\$(DESTDIR)$bindir" append_config "sysconfdir=\$(DESTDIR)$sysconfdir" append_config "localedir=\$(DESTDIR)$localedir" append_config "MAKE=$make" append_config "CC=$cc" append_config "LN=ln" if enabled dostrip; then append_config "STRIP=$strip" append_config "INSTALLSTRIP=$installstrip" else append_config "STRIP=echo ignoring strip" append_config "INSTALLSTRIP=" fi append_config "EXTRALIBS=$extralibs" append_config "OPTFLAGS=$CFLAGS" append_config "LDFLAGS=$LDFLAGS" append_config "INSTALL=$INSTALL" append_config "DEBUG=$debug" echolog "Creating $CONFIG_H ..." echo "/* Automatically generated by configure - do not modify! */" > $CONFIG_H add_clog_str VERSION "$VERSION" add_clog_str PACKAGE "recpt1" add_clog_str PACKAGE_NAME "recpt1" add_clog_str SYSCONFDIR `expand_var "${sysconfdir}"` add_clog_str LOCALEDIR `expand_var "${localedir}"` test $nls = yes && add_clog CONFIG_NLS 1 clean exit 0