Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 10 Dec 2013 00:56:49 +0000 (01:56 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 10 Dec 2013 00:56:49 +0000 (01:56 +0100)
* qatar/master:
  configure: Split host and target libc detection

Conflicts:
configure

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure

diff --cc configure
+++ b/configure
@@@ -1128,26 -1004,10 +1128,30 @@@ require_pkg_config()
      add_extralibs $(get_safe ${pkg}_libs)
  }
  
 +require_libfreetype(){
 +    log require_libfreetype "$@"
 +    pkg="freetype2"
 +    check_cmd $pkg_config --exists --print-errors $pkg \
 +      || die "ERROR: $pkg not found"
 +    pkg_cflags=$($pkg_config --cflags $pkg)
 +    pkg_libs=$($pkg_config --libs $pkg)
 +    {
 +        echo "#include <ft2build.h>"
 +        echo "#include FT_FREETYPE_H"
 +        echo "long check_func(void) { return (long) FT_Init_FreeType; }"
 +        echo "int main(void) { return 0; }"
 +    } | check_ld "cc" $pkg_cflags $pkg_libs \
 +      && set_safe ${pkg}_cflags $pkg_cflags \
 +      && set_safe ${pkg}_libs   $pkg_libs \
 +      || die "ERROR: $pkg not found"
 +    add_cflags    $(get_safe ${pkg}_cflags)
 +    add_extralibs $(get_safe ${pkg}_libs)
 +}
 +
+ hostcc_e(){
+     eval printf '%s\\n' $HOSTCC_E
+ }
  hostcc_o(){
      eval printf '%s\\n' $HOSTCC_O
  }
  
  # determine libc flavour
  
- # uclibc defines __GLIBC__, so it needs to be checked before glibc.
- if check_cpp_condition features.h "defined __UCLIBC__"; then
-     libc_type=uclibc
-     add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
- elif check_cpp_condition features.h "defined __GLIBC__"; then
-     libc_type=glibc
-     add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
- # MinGW headers can be installed on Cygwin, so check for newlib first.
- elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
-     libc_type=newlib
-     add_cppflags -U__STRICT_ANSI__
- # MinGW64 is backwards compatible with MinGW32, so check for it first.
- elif check_cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
-     libc_type=mingw64
-     if check_cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
-         add_compat msvcrt/snprintf.o
-         add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
-     else
-         add_cppflags -D__USE_MINGW_ANSI_STDIO=1
+ probe_libc(){
+     pfx=$1
+     # uclibc defines __GLIBC__, so it needs to be checked before glibc.
+     if check_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
+         eval ${pfx}libc_type=uclibc
+         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
+     elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then
+         eval ${pfx}libc_type=glibc
+         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
+     # MinGW headers can be installed on Cygwin, so check for newlib first.
+     elif check_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
+         eval ${pfx}libc_type=newlib
+         add_${pfx}cppflags -U__STRICT_ANSI__
+     # MinGW64 is backwards compatible with MinGW32, so check for it first.
+     elif check_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
+         eval ${pfx}libc_type=mingw64
++        if check_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
++            add_compat msvcrt/snprintf.o
++            add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
++        else
++            add_${pfx}cppflags -D__USE_MINGW_ANSI_STDIO=1
++        fi
+         add_${pfx}cppflags -U__STRICT_ANSI__
+     elif check_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
+         eval ${pfx}libc_type=mingw32
+         check_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
+             (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
+             die "ERROR: MinGW32 runtime version must be >= 3.15."
+         add_${pfx}cppflags -U__STRICT_ANSI__
+     elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
+         eval ${pfx}libc_type=msvcrt
+         # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
+         # 0x601 by default unless something else is set by the user.
+         # This can easily lead to us detecting functions only present
+         # in such new versions and producing binaries requiring windows 7.0.
+         # Therefore explicitly set the default to XP unless the user has
+         # set something else on the command line.
+         check_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
+             add_${pfx}cppflags -D_WIN32_WINNT=0x0502
+     elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
+         eval ${pfx}libc_type=klibc
+     elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
+         eval ${pfx}libc_type=bionic
+     elif check_${pfx}cpp_condition sys/brand.h "defined SOLARIS_BRAND_NAME"; then
+         eval ${pfx}libc_type=solaris
+         add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
      fi
-     add_cppflags -U__STRICT_ANSI__
- elif check_cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
-     libc_type=mingw32
-     check_cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
-         (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
-         die "ERROR: MinGW32 runtime version must be >= 3.15."
-     add_cppflags -U__STRICT_ANSI__
- elif check_cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
-     libc_type=msvcrt
-     # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
-     # 0x601 by default unless something else is set by the user.
-     # This can easily lead to us detecting functions only present
-     # in such new versions and producing binaries requiring windows 7.0.
-     # Therefore explicitly set the default to XP unless the user has
-     # set something else on the command line.
-     check_cpp_condition stdlib.h "defined(_WIN32_WINNT)" || add_cppflags -D_WIN32_WINNT=0x0502
- elif check_cpp_condition stddef.h "defined __KLIBC__"; then
-     libc_type=klibc
- elif check_cpp_condition sys/cdefs.h "defined __BIONIC__"; then
-     libc_type=bionic
- elif check_cpp_condition sys/brand.h "defined SOLARIS_BRAND_NAME"; then
-     libc_type=solaris
-     add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
- fi
+ }
  
+ probe_libc
  test -n "$libc_type" && enable libc_$libc_type
+ probe_libc host_
+ test -n "$host_libc_type" && enable host_libc_$host_libc_type
  
  case $libc_type in
      bionic)