X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=57a47acc253529cdf91ab1e42e2660f5d2530f28;hb=aec81efd3fe43008551916aa6073eb0732a58210;hp=85ab3f28a023722781c20a1eb0d9d95d6898e666;hpb=cc002bd545b008b1cdc7c6d7cc0c616ba125d4d5;p=x264 diff --git a/configure b/configure index 85ab3f28..57a47acc 100755 --- a/configure +++ b/configure @@ -74,10 +74,9 @@ log_msg() { } cc_cflags() { - # several non gcc compilers issue an incredibly large number of warnings on any warning level, - # suppress them by disabling all warnings rather than having to use #pragmas to disable most of them + # several non gcc compilers issue an incredibly large number of warnings on high warning levels, + # suppress them by reducing the warning level rather than having to use #pragmas for arg in $*; do - [ "$arg" = -ffast-math ] && arg= [[ "$arg" = -falign-loops* ]] && arg= [ "$arg" = -fno-tree-vectorize ] && arg= [ "$arg" = -Wshadow ] && arg= @@ -86,14 +85,16 @@ cc_cflags() { [[ "$arg" = -l* ]] && arg= [[ "$arg" = -L* ]] && arg= if [ $compiler_style = MS ]; then - [ "$arg" = -Wall ] && arg=-W0 + [ "$arg" = -ffast-math ] && arg="-fp:fast" + [ "$arg" = -Wall ] && arg= [ "$arg" = -Werror ] && arg="-W3 -WX" [ "$arg" = -g ] && arg=-Z7 [ "$arg" = -fomit-frame-pointer ] && arg= [ "$arg" = -s ] && arg= [ "$arg" = -fPIC ] && arg= else - [ "$arg" = -Wall ] && arg=-w0 + [ "$arg" = -ffast-math ] && arg= + [ "$arg" = -Wall ] && arg= [ "$arg" = -Werror ] && arg="-w3 -Werror" fi [ $compiler = CL -a "$arg" = -O3 ] && arg=-O2 @@ -305,9 +306,22 @@ configure_system_override() { rm -f x264_config.h config.h config.mak config.log x264.pc x264.def conftest* -SRCPATH="$(cd $(dirname $0); pwd)" -[ "$SRCPATH" = "$(pwd)" ] && SRCPATH=. -[ -n "$(echo $SRCPATH | grep ' ')" ] && die "Out of tree builds are impossible with whitespace in source path." +# Construct a path to the specified directory relative to the working directory +relative_path() { + local base="${PWD%/}" + local path="$(cd "$1" >/dev/null; printf '%s/.' "${PWD%/}")" + local up='' + + while [[ $path != "$base/"* ]]; do + base="${base%/*}" + up="../$up" + done + + dirname "$up${path#"$base/"}" +} + +SRCPATH="$(relative_path "$(dirname "$0")")" +echo "$SRCPATH" | grep -q ' ' && die "Out of tree builds are impossible with whitespace in source path." [ -e "$SRCPATH/config.h" -o -e "$SRCPATH/x264_config.h" ] && die "Out of tree builds are impossible with config.h/x264_config.h in source dir." prefix='/usr/local' @@ -527,13 +541,11 @@ if [[ $host_os = mingw* || $host_os = cygwin* ]]; then fi elif [[ "$cc_base" = cl || "$cc_base" = cl[\ .]* ]]; then # Standard Microsoft Visual Studio - # Dependency creation includes absolute windows paths, Cygwin's make does not support Windows paths. - [[ $host_os = cygwin* ]] && die "Microsoft Visual Studio support requires MSYS" compiler=CL compiler_style=MS - CFLAGS="$CFLAGS -nologo -DHAVE_STRING_H -I\$(SRCPATH)/extras" - `$CC 2>&1 | grep -q 'for x86'` && host_cpu=i486 - `$CC 2>&1 | grep -q 'for x64'` && host_cpu=x86_64 + CFLAGS="$CFLAGS -nologo -GS- -DHAVE_STRING_H -I\$(SRCPATH)/extras" + `$CC 2>&1 | grep -q 'x86'` && host_cpu=i486 + `$CC 2>&1 | grep -q 'x64'` && host_cpu=x86_64 cpp_check '' '' '_MSC_VER > 1800 || (_MSC_VER == 1800 && _MSC_FULL_VER >= 180030324)' || die "Microsoft Visual Studio support requires Visual Studio 2013 Update 2 or newer" fi else @@ -591,7 +603,7 @@ case $host_os in ;; cygwin*) EXE=".exe" - if cc_check "" -mno-cygwin; then + if [ $compiler_style = GNU ] && cc_check "" -mno-cygwin; then CFLAGS="$CFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" fi @@ -658,7 +670,7 @@ case $host_cpu in CFLAGS="$CFLAGS -march=i686" fi if [[ "$asm" == auto && "$CFLAGS" != *-mfpmath* ]]; then - CFLAGS="$CFLAGS -mfpmath=sse -msse" + CFLAGS="$CFLAGS -mfpmath=sse -msse -msse2" fi CFLAGS="-m32 $CFLAGS" LDFLAGS="-m32 $LDFLAGS" @@ -683,7 +695,7 @@ case $host_cpu in elif [ "$SYS" = WINDOWS -o "$SYS" = CYGWIN ]; then ASFLAGS="$ASFLAGS -f win32 -DPREFIX" LDFLAGS="$LDFLAGS -Wl,--large-address-aware" - [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--nxcompat -Wl,--dynamicbase" + [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--dynamicbase,--nxcompat,--tsaware" [ $compiler = GNU ] && RCFLAGS="--target=pe-i386 $RCFLAGS" else ASFLAGS="$ASFLAGS -f elf32" @@ -705,7 +717,7 @@ case $host_cpu in ASFLAGS="$ASFLAGS -f win64" # only the GNU toolchain is inconsistent in prefixing function names with _ [ $compiler = GNU ] && cc_check "" "-S" && grep -q "_main:" conftest && ASFLAGS="$ASFLAGS -DPREFIX" - [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--nxcompat -Wl,--dynamicbase" + [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--dynamicbase,--nxcompat,--tsaware" [ $compiler = GNU ] && RCFLAGS="--target=pe-x86-64 $RCFLAGS" else ASFLAGS="$ASFLAGS -f elf64" @@ -840,9 +852,6 @@ if [ $asm = auto -a $ARCH = ARM ] ; then fi if [ $asm = auto -a $ARCH = AARCH64 ] ; then - # set flags so neon is built by default - echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu|-arch)' || CFLAGS="$CFLAGS -arch arm64 -mfpu=neon" - if cc_check '' '' '__asm__("cmeq v0.8h, v0.8h, #0");' ; then define HAVE_NEON ASFLAGS="$ASFLAGS -c" else @@ -1227,7 +1236,7 @@ cat > x264_config.h << EOF #define X264_CHROMA_FORMAT $config_chroma_format EOF -${SRCPATH}/version.sh "${SRCPATH}" >> x264_config.h +${SRCPATH}/version.sh >> x264_config.h if [ "$cli_libx264" = "system" ] ; then if [ "$shared" = "yes" ]; then @@ -1246,7 +1255,13 @@ DEPMT="${QPRE}MT" if [ $compiler_style = MS ]; then AR="lib -nologo -out:" LD="link -out:" - [ $compiler = ICL ] && AR="xi$AR" && LD="xi$LD" + if [ $compiler = ICL ]; then + AR="xi$AR" + LD="xi$LD" + else + mslink="$(dirname "$(command -v cl 2>/dev/null)")/link" + [ -x "$mslink" ] && LD="\"$mslink\" -out:" + fi HAVE_GETOPT_LONG=0 LDFLAGS="-nologo -incremental:no $(cl_ldflags $LDFLAGS)" LDFLAGSCLI="$(cl_ldflags $LDFLAGSCLI)"