@@ -11,6 +11,10 @@ AC_CONFIG_MACRO_DIR([m4])
1111ac_clean_files=a.out.dSYM
1212AM_MAINTAINER_MODE
1313
14+ AC_CANONICAL_BUILD
15+ AC_CANONICAL_HOST
16+ AC_CANONICAL_TARGET
17+
1418#
1519# Command line argument to specify build variant (default to release).
1620# Impacts default value of CFLAGS et al. so must come before AC_PROG_CC
@@ -56,6 +60,53 @@ AC_PROG_CXX([clang++ g++ c++])
5660AC_PROG_OBJC ( [ clang gcc cc] )
5761AC_PROG_OBJCXX ( [ clang++ g++ c++] )
5862
63+ #
64+ # Android cross-compilation support
65+ #
66+ AC_ARG_WITH ( [ android-ndk] ,
67+ [ AS_HELP_STRING ( [ --with-android-ndk] ,
68+ [ Android NDK location] ) ] , [
69+ android_ndk=${withval}
70+ ] )
71+ AC_ARG_WITH ( [ android-ndk-gcc-version] ,
72+ [ AS_HELP_STRING ( [ --with-android-ndk-gcc-version] ,
73+ [ Android NDK GCC version [ defaults=4.9] ] ) ] ,
74+ [ android_ndk_gcc_version=${withval}] , [ android_ndk_gcc_version=4.9] )
75+ AC_ARG_WITH ( [ android-api-level] ,
76+ [ AS_HELP_STRING ( [ --with-android-api-level] ,
77+ [ Android API level to link with] ) ] , [
78+ android_api_level=${withval}
79+ ] )
80+ AC_ARG_ENABLE ( [ android] ,
81+ [ AS_HELP_STRING ( [ --enable-android] ,
82+ [ Compile for Android] ) ] , [
83+ android=true
84+
85+ # Override values until there's real support for multiple Android platforms
86+ host=armv7-none-linux-androideabi
87+ host_alias=arm-linux-androideabi
88+ host_cpu=armv7
89+ host_os=linux-androideabi
90+ host_vendor=unknown
91+ arch=arm
92+
93+ sysroot=${android_ndk}/platforms/android-${android_api_level}/arch-${arch}
94+ toolchain=${android_ndk}/toolchains/${host_alias}-${android_ndk_gcc_version}/prebuilt/linux-${build_cpu}
95+
96+ CFLAGS="$CFLAGS -target ${host_alias} --sysroot=${sysroot} -B${toolchain}/${host_alias}/bin"
97+ CXXFLAGS="$CXXFLAGS -target ${host_alias} --sysroot=${sysroot} -B${toolchain}/${host_alias}/bin"
98+ SWIFTC_FLAGS="-target ${host} -sdk ${sysroot} -L${toolchain}/lib/gcc/${host_alias}/${android_ndk_gcc_version}.x"
99+ LIBS="$LIBS -L${toolchain}/lib/gcc/${host_alias}/${android_ndk_gcc_version}.x"
100+ LDFLAGS="$LDFLAGS -Wc,'-target','${host_alias}','-B${toolchain}/${host_alias}/bin'"
101+
102+ # FIXME: empty CFLAGS and CXXFLAGS are assumed for this to work.
103+ # FIXME: there should be a more elegant way to do this
104+ ac_configure_args=`echo $ac_configure_args | sed -e "s/ 'CFLAGS='//" -e "s/ 'CXXFLAGS='//"`
105+ # CFLAGS, CXXFLAGS and LIBS needs to be passed to libkqueue and libpwq
106+ ac_configure_args="$ac_configure_args --enable-bionic-libc 'CFLAGS=$CFLAGS' 'CXXFLAGS=$CXXFLAGS' 'LIBS=$LIBS'"
107+ ] , [ android=false] )
108+ AM_CONDITIONAL(ANDROID, $android)
109+
59110#
60111# On Mac OS X, some required header files come from other source packages;
61112# allow specifying where those are.
@@ -134,8 +185,6 @@ AS_IF([test "x$enable_apple_tsd_optimizations" = "xyes"],
134185 [ Define to use non-portable pthread TSD optimizations for Mac OS X)] ) ]
135186)
136187
137- AC_CANONICAL_TARGET
138-
139188#
140189# Enable building Swift overlay support into libdispatch
141190#
@@ -164,6 +213,7 @@ AC_ARG_WITH([swift-toolchain],
164213)
165214AM_CONDITIONAL(HAVE_SWIFT, $have_swift)
166215AC_SUBST ( [ SWIFTC] )
216+ AC_SUBST ( [ SWIFTC_FLAGS] )
167217AC_SUBST ( [ SWIFT_LIBDIR] )
168218
169219#
@@ -473,6 +523,13 @@ AC_COMPILE_IFELSE(
473523 [ AC_DEFINE ( HAVE_NORETURN_BUILTIN_TRAP , 1 , [ Define if __builtin_trap marked noreturn] ) ]
474524)
475525
526+ #
527+ # Add option to avoid building tests
528+ #
529+ AC_ARG_ENABLE ( [ build-tests] ,
530+ [ AS_HELP_STRING ( [ --disable-build-tests] , [ Disable tests compilation] ) ] )
531+ AM_CONDITIONAL(BUILD_TESTS, [ test "x$enable_build_tests" != "xno"] )
532+
476533#
477534# Generate Makefiles.
478535#
0 commit comments