summaryrefslogtreecommitdiffstats
path: root/tools/depends/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'tools/depends/configure.ac')
-rw-r--r--tools/depends/configure.ac856
1 files changed, 856 insertions, 0 deletions
diff --git a/tools/depends/configure.ac b/tools/depends/configure.ac
new file mode 100644
index 0000000..30adee3
--- /dev/null
+++ b/tools/depends/configure.ac
@@ -0,0 +1,856 @@
+AC_PREREQ(2.59)
+AC_INIT([xbmc-depends], [2.00], [https://github.com/xbmc/xbmc])
+:${CFLAGS=""}
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_FILES([native/config.site.native Makefile.include
+ target/config.site target/config-binaddons.site
+ target/Toolchain.cmake target/Toolchain_binaddons.cmake
+ native/Toolchain-Native.cmake])
+AC_CANONICAL_HOST
+AC_CANONICAL_BUILD
+
+m4_include([m4/xbmc_arch.m4])
+m4_include([m4/ax_cxx_compile_stdcxx.m4])
+m4_include([m4/ax_compare_version.m4])
+
+# check for not same cpu value
+AC_DEFUN([MC_CHECK_NOT_CPU],
+[
+ AC_MSG_CHECKING([for $2])
+ case $1 in
+ $2*)
+ AC_MSG_ERROR(error in configure of --with-cpu=$1)
+ ;;
+ *)
+ AC_MSG_RESULT([$1 is not $2])
+ esac
+])
+
+AC_ARG_ENABLE([debug],
+ [AS_HELP_STRING([--enable-debug],
+ [enable debugging information (default is yes)])],
+ [use_debug=$enableval],
+ [use_debug=yes])
+
+AC_ARG_ENABLE([ccache],
+ [AS_HELP_STRING([--disable-ccache],
+ [disable ccache])],
+ [use_ccache=no],
+ [use_ccache=yes])
+
+AC_ARG_WITH([linker],
+ [AS_HELP_STRING([--with-linker],
+ [specify linker to use.])],
+ [use_linker=$withval])
+
+AC_ARG_WITH([toolchain],
+ [AS_HELP_STRING([--with-toolchain],
+ [specify path to toolchain. Auto set for android. Defaults to xcode root for darwin, /usr for linux])],
+ [use_toolchain=$withval])
+
+AC_ARG_WITH([platform],
+ [AS_HELP_STRING([--with-platform],
+ [target platform [auto]])],
+ [use_platform=$withval],
+ [use_platform=auto])
+
+AC_ARG_WITH([firmware],
+ [AS_HELP_STRING([--with-firmware],
+ [platform specific firmware []])],
+ [use_firmware=$withval])
+
+AC_ARG_WITH([tarballs],
+ [AS_HELP_STRING([--with-tarballs],
+ [path where tarballs will be saved [prefix/xbmc-tarballs]])],
+ [use_tarballs=$withval])
+
+AC_ARG_WITH([cpu],
+ [AS_HELP_STRING([--with-cpu],
+ [optional. specify target cpu. guessed if not specified])],
+ [use_cpu=$withval],
+ [use_cpu=auto])
+
+AC_ARG_WITH([ndk-path],
+ [AS_HELP_STRING([--with-ndk-path],
+ [specify path to ndk (required for android only)])],
+ [use_ndk_path=$withval])
+
+AC_ARG_WITH([sdk-path],
+ [AS_HELP_STRING([--with-sdk-path],
+ [specify path to sdk (required for android only)])],
+ [use_sdk_path=$withval])
+
+AC_ARG_WITH([sdk],
+ [AS_HELP_STRING([--with-sdk],
+ [specify sdk platform version.])],
+ [use_sdk=$withval])
+
+AC_ARG_WITH([ndk-api],
+ [AS_HELP_STRING([--with-ndk-api],
+ [specify ndk level (optional for android), default is 21.])],
+ [use_ndk_api=$withval],
+ [use_ndk_api=21])
+
+AC_ARG_ENABLE([gplv3],
+ [AS_HELP_STRING([--enable-gplv3],
+ [enable gplv3 components. default is yes])],
+ [use_gplv3=$enableval],
+ [use_gplv3=yes])
+
+AC_ARG_WITH([rendersystem],
+ [AS_HELP_STRING([--with-rendersystem],
+ [render system to use])],
+ [app_rendersystem=$withval])
+
+AC_ARG_WITH([windowsystem],
+ [AS_HELP_STRING([--with-windowsystem],
+ [Windowing system to use])],
+ [app_winsystem=$withval])
+
+AC_ARG_WITH([target-cflags],
+ [AS_HELP_STRING([--with-target-cflags],
+ [C compiler flags (target)])],
+ [target_cflags=$withval])
+
+AC_ARG_WITH([target-cxxflags],
+ [AS_HELP_STRING([--with-target-cxxflags],
+ [C++ compiler flags (target)])],
+ [target_cxxflags=$withval],
+ [target_cxxflags=$target_cflags])
+
+AC_ARG_WITH([target-ldflags],
+ [AS_HELP_STRING([--with-target-ldflags],
+ [linker flags. Use e.g. for -l<lib> (target)])],
+ [target_ldflags=$withval])
+
+AC_ARG_WITH([ffmpeg-options],
+ [AS_HELP_STRING([--with-ffmpeg-options],
+ [FFmpeg configure options, e.g. --enable-vaapi (target)])],
+ [ffmpeg_options=$withval],
+ [ffmpeg_options=default])
+
+
+if test "$use_ccache" = "yes"; then
+ AC_CHECK_PROG(HAVE_CCACHE,ccache,"yes","no",)
+ if test "x$HAVE_CCACHE" = "xno" ; then
+ use_ccache=no
+ fi
+fi
+
+AC_PATH_PROG(CURL,curl,"no")
+if test "x$CURL" = "xno" ; then
+ AC_MSG_ERROR("Missing program: curl")
+fi
+
+AC_PATH_PROG(TAR,tar,"no")
+if test "x$TAR" = "xno" ; then
+ AC_MSG_ERROR("Missing program: tar")
+fi
+
+if test "x$use_linker" = "x" ; then
+ use_linker=ld
+fi
+
+if test "$use_debug" = "yes"; then
+ build_type="debug"
+else
+ build_type="release"
+fi
+
+use_host=$host_alias
+use_build=$build_cpu-$build_vendor-$build_os
+use_buildcpu=$build_cpu
+
+cross_compiling="yes"
+if test "x$host" = "x$build"; then
+ use_host=$build_cpu-$build_os
+ cross_compiling="no"
+fi
+
+deps_dir=$use_host-$build_type
+tool_dir=$build_cpu-$build_os-native
+cross_compiling="yes"
+
+case $build in
+ aarch64*-*-linux-gnu*|aarch64*-*-linux-uclibc*)
+ build_os="linux"
+ ;;
+ arm*-*-linux-gnu*|arm*-*-linux-uclibc*)
+ build_os="linux"
+ ;;
+ *i686*-linux-gnu*|i*86*-*-linux-uclibc*)
+ build_os="linux"
+ ;;
+ x86_64*-linux-gnu*|x86_64-*-linux-uclibc*)
+ build_os="linux"
+ android_toolchain_name="linux-x86_64"
+ ;;
+ *darwin*)
+ build_os="osx"
+ if test "x$build_cpu" = "xx86_64"; then
+ host_includes="-arch x86_64 -mmacosx-version-min=10.13"
+ else
+ host_includes="-arch arm64 -mmacosx-version-min=11.0"
+ fi
+ use_xcrun=xcrun
+
+ # acquire build platform (native) sdk sysroot.
+ build_platform=macosx
+ native_sdk_path=[`$use_xcrun --show-sdk-path`]
+ host_sysroot="$native_sdk_path"
+ host_includes="${host_includes} -isysroot $native_sdk_path"
+
+ CC_FOR_BUILD=[`$use_xcrun --find clang`]
+ use_build_toolchain=[`$CC_FOR_BUILD --version | grep InstalledDir | awk '{ print $2}'`]
+
+ # Android NDK currently only x86_64 prebuilts - Arctic Fox 2020.3.1
+ android_toolchain_name="darwin-x86_64"
+
+ host_cxxflags="-std=c++17 -stdlib=libc++"
+
+ if test "x$prefix" = "xNONE"; then
+ prefix=/Users/Shared/xbmc-depends
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR(unsupported native build platform: $build)
+esac
+
+
+if test "x$build_os" = "xosx"; then
+ AC_PATH_PROG(SHASUM,shasum,"no")
+ if test "x$SHASUM" = "xno" ; then
+ AC_MSG_ERROR("Missing program: shasum")
+ fi
+else
+ AC_PATH_PROG(SHA512SUM,sha512sum,"no")
+ if test "x$SHA512SUM" = "xno" ; then
+ AC_MSG_ERROR("Missing program: sha512sum")
+ fi
+
+ AC_PATH_PROG(SHA256SUM,sha256sum,"no")
+ if test "x$SHA256SUM" = "xno" ; then
+ AC_MSG_ERROR("Missing program: sha256sum")
+ fi
+fi
+
+if test -n $use_build_toolchain; then
+ PATH_FOR_BUILD=$use_build_toolchain:$use_build_toolchain/usr/bin:$use_toolchain/bin:$PATH
+else
+ PATH_FOR_BUILD=$PATH
+fi
+
+AC_PATH_PROG([RANLIB_FOR_BUILD], [ranlib], ranlib, $PATH_FOR_BUILD)
+AC_PATH_PROG([LD_FOR_BUILD], [ld], ld, $PATH_FOR_BUILD)
+AC_PATH_PROG([AR_FOR_BUILD], [ar], ar, $PATH_FOR_BUILD)
+AC_PATH_PROG([READELF_FOR_BUILD], [readelf],, $PATH_FOR_BUILD)
+AC_PATH_PROG([STRIP_FOR_BUILD], [strip], strip, $PATH_FOR_BUILD)
+AC_PATH_PROG([AS_FOR_BUILD], [as], as, $PATH_FOR_BUILD)
+AC_PATH_PROG([NM_FOR_BUILD], [nm], nm, $PATH_FOR_BUILD)
+AC_PATH_PROG([OBJDUMP_FOR_BUILD], [objdump], objdump, $PATH_FOR_BUILD)
+AC_PATH_PROG([CC_FOR_BUILD],[clang gcc llvm-gcc], gcc, $PATH_FOR_BUILD)
+AC_PATH_PROG([CXX_FOR_BUILD],[clang++ g++ llvm-g++], g++, $PATH_FOR_BUILD)
+
+platform_cc=gcc
+platform_cxx=g++
+
+case $host in
+ *-*linux-android*)
+ use_toolchain="${use_toolchain:-$use_ndk_path/toolchains/llvm/prebuilt/$android_toolchain_name}"
+ platform_cc=$use_host$use_ndk_api-clang
+ platform_cxx=$use_host$use_ndk_api-clang++
+
+ platform_tool_prefix=llvm-
+
+ case $host in
+ arm*-*linux-android*)
+ platform_cc=armv7a-linux-androideabi$use_ndk_api-clang
+ platform_cxx=armv7a-linux-androideabi$use_ndk_api-clang++
+ esac
+ ;;
+ *darwin*)
+ CC=[`$use_xcrun --find clang`]
+ platform_cxx=clang++
+ use_toolchain=[`$CC --version | grep InstalledDir | awk '{ print $2}'`]
+esac
+
+if test -n $use_toolchain; then
+ PATH_FOR_HOST=$use_toolchain:$use_toolchain/usr/bin:$use_toolchain/bin:$PATH
+else
+ PATH_FOR_HOST=$PATH
+fi
+
+AC_PATH_TOOL([RANLIB], [${platform_tool_prefix}ranlib],, $PATH_FOR_HOST)
+AC_PATH_TOOL([LD], [${use_linker}],, $PATH_FOR_HOST)
+AC_PATH_TOOL([AR], [${platform_tool_prefix}ar],, $PATH_FOR_HOST)
+AC_PATH_TOOL([READELF], [${platform_tool_prefix}readelf],, $PATH_FOR_HOST)
+AC_PATH_TOOL([STRIP], [${platform_tool_prefix}strip],, $PATH_FOR_HOST)
+AC_PATH_TOOL([AS], [${platform_tool_prefix}as],, $PATH_FOR_HOST)
+AC_PATH_TOOL([NM], [${platform_tool_prefix}nm],, $PATH_FOR_HOST)
+AC_PATH_TOOL([OBJDUMP], [${platform_tool_prefix}objdump],, $PATH_FOR_HOST)
+AC_PATH_TOOL([CC],[$platform_cc],,$PATH_FOR_HOST)
+AC_PATH_TOOL([CXX],[$platform_cxx],,$PATH_FOR_HOST)
+
+if test "x$LD" = "x"; then
+ AC_MSG_ERROR(No linker found with name ${use_linker}. You may want to provide using --with-linker=<linker>)
+fi
+
+case $build in
+ *darwin*)
+ # MacOS 11 requires explicit isysroot for autoconf compiler tests
+ # However we do not want to pollute CFLAGS/CXXFLAGS once compiler tests are complete
+ CFLAGS="${CFLAGS} $host_includes"
+ CXXFLAGS="${CXXFLAGS} $host_includes"
+esac
+
+AC_PROG_CPP
+
+case $build in
+ *darwin*)
+ CFLAGS=$(echo "$CFLAGS" | sed "s|$host_includes||")
+ CXXFLAGS=$(echo "$CXXFLAGS" | sed "s|$host_includes||")
+esac
+
+case $host in
+ *-*linux-android*)
+ deps_dir="$use_host-$use_ndk_api-$build_type"
+ platform_cflags="-DANDROID -D__ANDROID_API__=$use_ndk_api -fexceptions -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fPIC -DPIC"
+ optimize_flags="-Os"
+ platform_ldflags="-Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -L$prefix/$deps_dir/lib/android-$use_ndk_api"
+
+ case $host in
+ arm*-*linux-android*)
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu="armeabi-v7a"
+ fi
+ if test "x$use_cpu" = "xarmeabi-v7a"; then
+ platform_cflags="${platform_cflags} -march=armv7-a -mtune=cortex-a9 -mfloat-abi=softfp -mfpu=neon"
+ fi
+ platform_ldflags="${platform_ldflags} -Wl,--exclude-libs,libunwind.a"
+ meson_cpu="arm"
+ ;;
+ aarch64*-*linux-android*)
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu="arm64-v8a"
+ fi
+ if test "x$use_cpu" = "xarm64-v8a"; then
+ platform_cflags="${platform_cflags} -march=armv8-a -mtune=cortex-a53"
+ fi
+ meson_cpu="aarch64"
+ ;;
+ i*86*-linux-android*)
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu=$host_cpu
+ fi
+ meson_cpu="x86"
+ ;;
+ x86_64*-linux-android*)
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu=$host_cpu
+ fi
+ meson_cpu="x86_64"
+ ;;
+ *)
+ AC_MSG_ERROR(unsupported host ($use_host))
+ esac
+
+ platform_cxxflags="$platform_cflags -frtti"
+ platform_includes="-isystem $prefix/$deps_dir/include/android-$use_ndk_api"
+ platform_os="android"
+ meson_system="android"
+ #android builds are always cross
+ cross_compiling="yes"
+ ;;
+ arm*-*-linux-gnu*|arm*-*-linux-uclibc*|aarch64*-*-linux-gnu*|aarch*-*-linux-be*)
+ case $host in
+ arm*-*-linux-gnu*|arm*-*-linux-uclibc*)
+ meson_cpu="arm"
+ ;;
+ aarch64*-*-linux-gnu*|aarch*-*-linux-be*)
+ meson_cpu="aarch64"
+ ;;
+ esac
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu=$host_cpu
+ fi
+ use_toolchain="${use_toolchain:-/usr}"
+ platform_cflags="-fPIC -DPIC"
+ optimize_flags="-Os"
+ platform_ldflags="-Wl,-rpath-link=$prefix/$deps_dir/lib"
+ platform_cxxflags="$platform_cflags"
+ platform_os="linux"
+ meson_system="linux"
+ target_platform="wayland gbm"
+ ;;
+ *i686*-linux-gnu*|i*86*-*-linux-uclibc*|x86_64*-linux-gnu*|x86_64-*-linux-uclibc*)
+ case $host in
+ *i686*-linux-gnu*|i*86*-*-linux-uclibc*)
+ meson_cpu="x86"
+ ;;
+ x86_64*-linux-gnu*|x86_64-*-linux-uclibc*)
+ meson_cpu="x86_64"
+ ;;
+ esac
+ use_cpu=$host_cpu
+ use_toolchain="${use_toolchain:-/usr}"
+ platform_cflags="-fPIC -DPIC"
+ optimize_flags="-O2"
+ platform_cxxflags="$platform_cflags"
+ platform_os="linux"
+ meson_system="linux"
+ ffmpeg_options_default="--enable-vaapi --enable-vdpau --cpu=$use_cpu"
+ target_platform="x11 wayland gbm"
+ ;;
+ *darwin*)
+ # darwin builds are always cross
+ cross_compiling="yes"
+
+ meson_system="darwin"
+
+ platform_cflags="-fheinous-gnu-extensions"
+ platform_ldflags="-Wl,-search_paths_first"
+
+ case $use_platform in
+ tvos)
+ target_platform=appletvos
+ platform_os="darwin_embedded"
+ ;;
+ ios)
+ target_platform=iphoneos
+ platform_os="darwin_embedded"
+ ;;
+ macos)
+ target_platform=macosx
+ platform_os="osx"
+ ;;
+ *)
+ AC_MSG_ERROR(error in configure no platform provided --with-platform)
+ ;;
+ esac
+
+ found_sdk_version=[`$use_xcrun --sdk $target_platform --show-sdk-version`]
+ use_sdk="${use_sdk:-$found_sdk_version}"
+ use_sdk_path=$($use_xcrun --sdk $target_platform --show-sdk-path)
+ sdk_name=$target_platform$use_sdk
+
+ case $host in
+ x86_64-apple-darwin)
+ MC_CHECK_NOT_CPU([$use_cpu], "arm*")
+
+ # setup which cpu to use
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu=x86_64
+ meson_cpu=$use_cpu
+ else
+ AC_MSG_ERROR(invalid architecture (--with-cpu=$use_cpu))
+ fi
+
+ target_minver="10.13"
+
+ # check provided window system is valid_sdk
+ # if no window system supplied, default to SDL for now.
+ if test -n "$app_winsystem"; then
+ if test "$app_winsystem" != "native" && test "$app_winsystem" != "sdl"; then
+ AC_MSG_ERROR(Window system must be native or sdl)
+ fi
+ else
+ app_winsystem=sdl
+ fi
+ ;;
+ aarch64-apple-darwin*)
+ MC_CHECK_NOT_CPU([$use_cpu], "*86")
+
+ case $platform_os in
+ darwin_embedded)
+ target_minver="11.0"
+ ;;
+ osx)
+ target_minver="11.0"
+ app_winsystem=native
+ ;;
+ *)
+ AC_MSG_ERROR(invalid platform for architecture ($host))
+ ;;
+ esac
+
+ # setup which cpu to use
+ if test "x$use_cpu" = "xauto"; then
+ use_cpu=arm64
+ meson_cpu="aarch64"
+ else
+ AC_MSG_ERROR(invalid architecture (--with-cpu=$use_cpu))
+ fi
+
+ platform_cflags="${platform_cflags} -ftree-vectorize -pipe -Wno-trigraphs -fpascal-strings"
+ platform_cflags="${platform_cflags} -Wreturn-type -Wunused-variable -fmessage-length=0 -gdwarf-2"
+ optimize_flags="-O3"
+ platform_ldflags="${platform_ldflags} -L$use_sdk_path/usr/lib"
+ ;;
+ esac
+
+ AX_COMPARE_VERSION([$use_sdk], [ge], [$target_minver], , AC_MSG_ERROR("invalid SDK version provided (--with-sdk=$use_sdk) less than minimum supported ($target_minver)"))
+
+ platform_min_version="$target_platform-version-min=$target_minver"
+
+ platform_includes="-arch $use_cpu -m$platform_min_version -isysroot $use_sdk_path"
+ platform_ldflags="${platform_ldflags} $platform_includes -stdlib=libc++"
+ platform_cxxflags="${platform_cxxflags} -stdlib=libc++"
+ deps_dir="${sdk_name}_${use_cpu}-target-${build_type}"
+ ;;
+ *)
+ AC_MSG_ERROR(unsupported host ($use_host))
+esac
+
+case $use_platform in
+ ios|tvos|macos)
+ ;;
+ auto)
+ ;;
+ *)
+ AC_MSG_ERROR(unsupported platform ($use_platform))
+esac
+
+XBMC_SETUP_ARCH_DEFINES()
+
+case $build in
+ *darwin*)
+ if test "$platform_os" != "android"; then
+ # MacOS 11 requires explicit isysroot for autoconf link tests
+ # However we do not want to pollute LDFLAGS once lib link tests are complete
+ LDFLAGS="$platform_includes"
+ AC_CHECK_LIB([z], [main], has_zlib=1, AC_MSG_WARN("No zlib support in toolchain. Will build libz."); has_zlib=0)
+ fi
+esac
+
+if test "$platform_os" = "android"; then
+ need_libiconv=1
+else
+ AC_SEARCH_LIBS([iconv_open],iconv, link_iconv=$ac_cv_search_iconv_open, link_iconv=-liconv; AC_MSG_WARN("No iconv support in toolchain. Will build libiconv."); need_libiconv=1)
+fi
+
+case $build in
+ *darwin*)
+ LDFLAGS=$(echo "$LDFLAGS" | sed "s|$platform_includes||")
+esac
+
+if test "$link_iconv" = "none required"; then
+ link_iconv=
+fi
+
+if test "x$prefix" = "xNONE"; then
+ AC_MSG_ERROR([No prefix path defined. Use for ex: --prefix=/opt/xbmc-depends]);
+fi
+
+if test "$use_ccache" = "yes"; then
+ AC_PATH_TOOL([CCACHE], [ccache],, $PATH_FOR_HOST)
+fi
+
+if test -z $use_tarballs; then
+ use_tarballs=$prefix/xbmc-tarballs
+fi
+
+if test "$platform_os" = "linux"; then
+ if test "$app_rendersystem" != "gl" && test "$app_rendersystem" != "gles"; then
+ AC_MSG_ERROR(Rendersystem is required for linux - must be gl or gles)
+ fi
+fi
+
+if test "$platform_os" = "android"; then
+ if test -z $use_ndk_path; then
+ AC_MSG_ERROR("NDK path is required for android")
+ fi
+
+ if ([! test -f "$use_ndk_path/source.properties"] && [! test -f "$use_ndk_path/RELEASE.TXT"]) ; then
+ AC_MSG_ERROR("$use_ndk_path is not an NDK directory")
+ fi
+
+ if test -z $use_sdk_path; then
+ AC_MSG_ERROR("SDK path is required for android")
+ fi
+
+ if [ ! test -f $use_sdk_path/tools/bin/sdkmanager ]; then
+ AC_MSG_ERROR(verify sdk path)
+ fi
+
+ if [ ! test -f $use_ndk_path/sources/android/native_app_glue/android_native_app_glue.h ]; then
+ AC_MSG_ERROR(verify ndk path)
+ fi
+
+ #not all sort versions support -V - probe it...
+ SORT_PARAMS=""
+ sort -V /dev/null > /dev/null 2>&1 && SORT_PARAMS="-V"
+ build_tools_path=$use_sdk_path/tools:$use_sdk_path/platform-tools:$use_sdk_path/build-tools/`ls $use_sdk_path/build-tools | sort $SORT_PARAMS | tail -n 1`
+fi
+
+# darwin needs unzip in Codesign.command
+if test "$platform_os" = "android" || test "$platform_os" = "osx" || test "$platform_os" = "darwin_embedded"; then
+ AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
+ if test "x$HAVE_UNZIP" = "xno"; then
+ AC_MSG_ERROR("Missing program: unzip")
+ fi
+fi
+# darwin needs zip in Codesign.command
+# android needs zip in tools/android/packaging/Makefile sharedobb target
+if test "$platform_os" = "android" || test "$platform_os" = "osx" || test "$platform_os" = "darwin_embedded"; then
+ AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
+ if test "x$HAVE_ZIP" = "xno"; then
+ AC_MSG_ERROR("Missing program: zip")
+ fi
+fi
+
+# Some dumb checks to see if paths might be correct.
+if [ ! `mkdir -p $prefix/$deps_dir/include` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$deps_dir/include. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$deps_dir/lib` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$deps_dir/lib. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$deps_dir/share` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$deps_dir/share. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$tool_dir/include` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$tool_dir/include. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$tool_dir/lib` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$tool_dir/lib. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$tool_dir/share` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$tool_dir/share. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $prefix/$tool_dir/bin` ]; then
+ AC_MSG_ERROR(unable to create $prefix/$tool_dir/share. verify that the path and permissions are correct.)
+fi
+
+if [ ! `mkdir -p $use_tarballs` ]; then
+ AC_MSG_ERROR(unable to create tarballs dir. verify that the path and permissions are correct.)
+fi
+
+# remove unwanted optimization flags
+tmp_cflags=$(echo $CFLAGS $platform_cflags | sed 's/-O@<:@123@:>@//g;s/-g //g;s/ \{2,\}//g')
+tmp_cxxflags=$(echo $CXXFLAGS $platform_cxxflags | sed 's/-O@<:@123@:>@//g;s/-g //g;s/ \{2,\}//g')
+
+release_cflags="-DNDEBUG=1"
+
+# newer xcode version accept -Og flag, but debugging doesn't work with it
+if test "$platform_os" = "osx" || test "$platform_os" = "darwin_embedded"; then
+ debug_cflags="-g -D_DEBUG"
+else
+ CFLAGS="$tmp_cflags -Og -g -D_DEBUG"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([int foo;])],
+ [debug_cflags="-Og -g -D_DEBUG"],
+ [debug_cflags="-g -D_DEBUG"])
+fi
+
+# add user supplied flags to the end, so they override our defaults
+platform_cflags_release="$tmp_cflags $release_cflags $optimize_flags $target_cflags"
+platform_cxxflags_release="$tmp_cxxflags $release_cflags $optimize_flags $target_cxxflags"
+platform_cflags_debug="$tmp_cflags $debug_cflags $target_cflags"
+platform_cxxflags_debug="$tmp_cxxflags $debug_cflags $target_cxxflags"
+platform_ldflags="${platform_ldflags} $target_ldflags $LIBS"
+
+if test "$use_debug" = "yes"; then
+ platform_cflags="$platform_cflags_debug"
+ platform_cxxflags="$platform_cxxflags_debug"
+else
+ platform_cflags="$platform_cflags_release"
+ platform_cxxflags="$platform_cxxflags_release"
+fi
+
+CXXFLAGS="$platform_cxxflags $platform_includes"
+CXX_CACHED="$CXX"
+AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
+CXX="$CXX_CACHED"
+platform_cxxflags="${platform_cxxflags} -std=c++17"
+
+if test "$ffmpeg_options" = "default"; then
+ ffmpeg_options="$ffmpeg_options_default"
+fi
+
+if test "$platform_os" = "android"; then
+echo -e
+ AC_SUBST(use_sdk_path)
+ AC_SUBST(use_ndk_path)
+ AC_SUBST(use_ndk_api)
+ AC_SUBST(build_tools_path)
+fi
+
+AC_SUBST(meson_system)
+AC_SUBST(meson_cpu)
+AC_SUBST(use_debug)
+AC_SUBST(use_host)
+AC_SUBST(use_build)
+AC_SUBST(deps_dir)
+AC_SUBST(tool_dir)
+AC_SUBST(use_buildcpu)
+AC_SUBST(use_cpu)
+AC_SUBST(use_toolchain)
+AC_SUBST(use_build_toolchain)
+AC_SUBST(use_tarballs)
+AC_SUBST(target_platform)
+AC_SUBST(use_firmware)
+AC_SUBST(cross_compiling)
+AC_SUBST(platform_cflags)
+AC_SUBST(platform_cxxflags)
+AC_SUBST(platform_cflags_release)
+AC_SUBST(platform_cxxflags_release)
+AC_SUBST(platform_cflags_debug)
+AC_SUBST(platform_cxxflags_debug)
+AC_SUBST(platform_ldflags)
+AC_SUBST(platform_includes)
+AC_SUBST(platform_os)
+AC_SUBST(build_os)
+AC_SUBST(has_zlib)
+AC_SUBST(link_iconv)
+AC_SUBST(need_libiconv)
+AC_SUBST(use_gplv3)
+AC_SUBST(use_ccache)
+AC_SUBST(host_includes)
+AC_SUBST(host_sysroot)
+AC_SUBST(host_cxxflags)
+AC_SUBST(app_rendersystem)
+AC_SUBST(app_winsystem)
+AC_SUBST(ffmpeg_options)
+
+[
+if test "x$CCACHE" = "x"
+then
+ MESON_CC="'$CC'"
+ MESON_CXX="'$CXX'"
+else
+ MESON_CC="['$CCACHE', '$CC']"
+ MESON_CXX="['$CCACHE', '$CXX']"
+fi
+
+# Parse and handle CFLAGS
+read -r CFLAGS_ARRAY << EOF
+$platform_cflags $platform_includes -isystem $prefix/$deps_dir/include
+EOF
+
+count=1
+for flag in $CFLAGS_ARRAY; do
+ if test "$flag" != "-g"
+ then
+ if test "$flag" != "-gdwarf-2"
+ then
+ MESON_CFLAGS="${MESON_CFLAGS:+${MESON_CFLAGS}, }'$flag'"
+ count=$((count + 1))
+ fi
+ fi
+done
+if test "$count" -gt "2"
+then
+ MESON_CFLAGS="[$MESON_CFLAGS]"
+fi
+
+# Parse and handle CXXFLAGS
+read -r CXXFLAGS_ARRAY << EOF
+$platform_cxxflags $platform_includes -isystem $prefix/$deps_dir/include
+EOF
+
+count=1
+for flag in $CXXFLAGS_ARRAY; do
+ if test "$flag" != "-g"
+ then
+ if test "$flag" != "-gdwarf-2"
+ then
+ MESON_CXXFLAGS="${MESON_CXXFLAGS:+${MESON_CXXFLAGS}, }'$flag'"
+ count=$((count + 1))
+ fi
+ fi
+done
+if test "$count" -gt "2"
+then
+ MESON_CXXFLAGS="[$MESON_CXXFLAGS]"
+fi
+
+# Parse and handle LDFLAGS
+read -r LDFLAGS_ARRAY << EOF
+-L$prefix/$deps_dir/lib $platform_ldflags
+EOF
+
+count=1
+for flag in $LDFLAGS_ARRAY; do
+ MESON_LDFLAGS="${MESON_LDFLAGS:+${MESON_LDFLAGS}, }'$flag'"
+ count=$((count + 1))
+done
+if test "$count" -gt "2"
+then
+ MESON_LDFLAGS="[$MESON_LDFLAGS]"
+fi
+
+cat > $prefix/$deps_dir/share/cross-file.meson << EOF
+[binaries]
+c = $MESON_CC
+cpp = $MESON_CXX
+ar = '$AR'
+strip = '$STRIP'
+pkgconfig = '$prefix/$tool_dir/bin/pkg-config'
+
+[host_machine]
+system = '$meson_system'
+cpu_family = '$meson_cpu'
+cpu = '$use_cpu'
+endian = 'little'
+
+[properties]
+pkg_config_libdir = '$prefix/$deps_dir/lib/pkgconfig'
+
+[built-in options]
+c_args = $MESON_CFLAGS
+c_link_args = $MESON_LDFLAGS
+cpp_args = $MESON_CXXFLAGS
+cpp_link_args = $MESON_LDFLAGS
+default_library = 'static'
+prefix = '$prefix/$deps_dir'
+libdir = 'lib'
+bindir = 'bin'
+includedir = 'include'
+EOF
+]
+
+AC_OUTPUT
+
+if test "$platform_os" = "darwin_embedded"; then
+ if test "$use_platform" = "ios"; then
+ simulator_sdk_path=[`$use_xcrun --sdk iphonesimulator --show-sdk-path`]
+ echo -e "use simulator:\t $simulator_sdk_path"
+ fi
+fi
+
+cp -vf target/config.site $prefix/$deps_dir/share
+cp -vf target/config-binaddons.site $prefix/$tool_dir/share
+cp -vf target/Toolchain.cmake $prefix/$deps_dir/share
+cp -vf target/Toolchain_binaddons.cmake $prefix/$deps_dir/share
+cp -vf native/config.site.native $prefix/$tool_dir/share/config.site
+cp -vf native/Toolchain-Native.cmake $prefix/$tool_dir/share
+
+
+echo -e "\n\n#------- configuration -------#"
+echo -e "ccache:\t\t $use_ccache"
+echo -e "build type:\t\t $build_type"
+echo -e "build system:\t $use_build"
+echo -e "build cpu:\t\t $use_buildcpu"
+echo -e "build includes:\t $host_includes"
+echo -e "toolchain:\t\t $use_toolchain"
+echo -e "cpu:\t\t\t $use_cpu"
+echo -e "host:\t\t $use_host"
+echo -e "CC:\t\t $CC"
+echo -e "CXX:\t\t $CXX"
+echo -e "cflags:\t\t $platform_cflags"
+echo -e "cxxflags:\t\t $platform_cxxflags"
+echo -e "ldflags:\t\t $platform_ldflags"
+echo -e "platform_includes:\t $platform_includes"
+echo -e "ffmpeg options:\t $ffmpeg_options"
+echo -e "prefix:\t\t $prefix"
+echo -e "depends:\t\t $prefix/$deps_dir"
+if test "$platform_os" = "android"; then
+ echo -e "ndk-api-level:\t $use_ndk_api"
+ echo -e "build-tools:\t $build_tools_path"
+fi