-- -- Copyright 2010-2015 Branimir Karadzic. All rights reserved. -- License: https://github.com/bkaradzic/bx#license-bsd-2-clause -- local naclToolchain = "" newoption { trigger = "gcc", value = "GCC", description = "Choose GCC flavor", allowed = { { "android-arm", "Android - ARM" }, { "android-mips", "Android - MIPS" }, { "android-x86", "Android - x86" }, { "asmjs", "Emscripten/asm.js" }, { "freebsd", "FreeBSD" }, { "linux-gcc", "Linux (GCC compiler)" }, { "linux-clang", "Linux (Clang compiler)" }, { "ios-arm", "iOS - ARM" }, { "ios-simulator", "iOS - Simulator" }, { "mingw32-gcc", "MinGW32" }, { "mingw64-gcc", "MinGW64" }, { "mingw-clang", "MinGW (clang compiler)" }, { "nacl", "Native Client" }, { "nacl-arm", "Native Client - ARM" }, { "osx", "OSX (GCC compiler)" }, { "osx-clang", "OSX (Clang compiler)" }, { "pnacl", "Native Client - PNaCl" }, { "qnx-arm", "QNX/Blackberry - ARM" }, { "rpi", "RaspberryPi" }, { "solaris", "Solaris" }, }, } newoption { trigger = "vs", value = "toolset", description = "Choose VS toolset", allowed = { { "intel-14", "Intel C++ Compiler XE 14.0" }, { "intel-15", "Intel C++ Compiler XE 15.0" }, { "vs2012-clang", "Clang 3.6" }, { "vs2013-clang", "Clang 3.6" }, { "vs2012-xp", "Visual Studio 2012 targeting XP" }, { "vs2013-xp", "Visual Studio 2013 targeting XP" }, { "winphone8", "Windows Phone 8.0" }, { "winphone81", "Windows Phone 8.1" }, }, } newoption { trigger = "xcode", value = "xcode_target", description = "Choose XCode target", allowed = { { "osx", "OSX" }, { "ios", "iOS" }, } } newoption { trigger = "with-android", value = "#", description = "Set Android platform version (default: android-14).", } newoption { trigger = "with-ios", value = "#", description = "Set iOS target version (default: 8.0).", } function toolchain(_buildDir, _subDir) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION) local androidPlatform = "android-14" if _OPTIONS["with-android"] then androidPlatform = "android-" .. _OPTIONS["with-android"] end local iosPlatform = "" if _OPTIONS["with-ios"] then iosPlatform = _OPTIONS["with-ios"] end if _ACTION == "gmake" then if nil == _OPTIONS["gcc"] or nil == _OPTIONS["gcc_version"] then print("GCC flavor and version must be specified!") os.exit(1) end if "android-arm" == _OPTIONS["gcc"] then if not os.getenv("ANDROID_NDK_ARM") or not os.getenv("ANDROID_NDK_ROOT") then print("Set ANDROID_NDK_ARM and ANDROID_NDK_ROOT envrionment variables.") end premake.gcc.cc = "$(ANDROID_NDK_ARM)/bin/arm-linux-androideabi-gcc" premake.gcc.cxx = "$(ANDROID_NDK_ARM)/bin/arm-linux-androideabi-g++" premake.gcc.ar = "$(ANDROID_NDK_ARM)/bin/arm-linux-androideabi-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-arm") end if "android-mips" == _OPTIONS["gcc"] then if not os.getenv("ANDROID_NDK_MIPS") or not os.getenv("ANDROID_NDK_ROOT") then print("Set ANDROID_NDK_MIPS and ANDROID_NDK_ROOT envrionment variables.") end premake.gcc.cc = "$(ANDROID_NDK_MIPS)/bin/mipsel-linux-android-gcc" premake.gcc.cxx = "$(ANDROID_NDK_MIPS)/bin/mipsel-linux-android-g++" premake.gcc.ar = "$(ANDROID_NDK_MIPS)/bin/mipsel-linux-android-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-mips") end if "android-x86" == _OPTIONS["gcc"] then if not os.getenv("ANDROID_NDK_X86") or not os.getenv("ANDROID_NDK_ROOT") then print("Set ANDROID_NDK_X86 and ANDROID_NDK_ROOT envrionment variables.") end premake.gcc.cc = "$(ANDROID_NDK_X86)/bin/i686-linux-android-gcc" premake.gcc.cxx = "$(ANDROID_NDK_X86)/bin/i686-linux-android-g++" premake.gcc.ar = "$(ANDROID_NDK_X86)/bin/i686-linux-android-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-x86") end if "asmjs" == _OPTIONS["gcc"] then if not os.getenv("EMSCRIPTEN") then print("Set EMSCRIPTEN enviroment variables.") end premake.gcc.cc = "$(EMSCRIPTEN)/emcc" premake.gcc.cxx = "$(EMSCRIPTEN)/em++" premake.gcc.ar = "$(EMSCRIPTEN)/emar" premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-asmjs") end if "freebsd" == _OPTIONS["gcc"] then location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd") end if "ios-arm" == _OPTIONS["gcc"] then premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" premake.gcc.ar = "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-arm") end if "ios-simulator" == _OPTIONS["gcc"] then premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" premake.gcc.ar = "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-simulator") end if "linux-gcc" == _OPTIONS["gcc"] then -- Force gcc-4.2 on ubuntu-intrepid if _OPTIONS["distro"]=="ubuntu-intrepid" then premake.gcc.cc = "@gcc -V 4.2" premake.gcc.cxx = "@g++-4.2" end premake.gcc.ar = "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux") end if "solaris" == _OPTIONS["gcc"] then location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-solaris") end if "linux-clang" == _OPTIONS["gcc"] then premake.gcc.cc = "clang" premake.gcc.cxx = "clang++" premake.gcc.ar = "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux-clang") end if "mingw32-gcc" == _OPTIONS["gcc"] then if not os.getenv("MINGW32") or not os.getenv("MINGW32") then print("Set MINGW32 envrionment variable.") end premake.gcc.cc = "$(MINGW32)/bin/i686-w64-mingw32-gcc" premake.gcc.cxx = "$(MINGW32)/bin/i686-w64-mingw32-g++" premake.gcc.ar = "$(MINGW32)/bin/ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw32-gcc") end if "mingw64-gcc" == _OPTIONS["gcc"] then if not os.getenv("MINGW64") or not os.getenv("MINGW64") then print("Set MINGW64 envrionment variable.") end premake.gcc.cc = "$(MINGW64)/bin/x86_64-w64-mingw32-gcc" premake.gcc.cxx = "$(MINGW64)/bin/x86_64-w64-mingw32-g++" premake.gcc.ar = "$(MINGW64)/bin/ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw64-gcc") end if "mingw-clang" == _OPTIONS["gcc"] then premake.gcc.cc = "$(CLANG)/bin/clang" premake.gcc.cxx = "$(CLANG)/bin/clang++" premake.gcc.ar = "$(CLANG)/bin/llvm-ar" premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw-clang") end if "nacl" == _OPTIONS["gcc"] then if not os.getenv("NACL_SDK_ROOT") then print("Set NACL_SDK_ROOT enviroment variables.") end naclToolchain = "$(NACL_SDK_ROOT)/toolchain/win_x86_newlib/bin/x86_64-nacl-" if os.is("macosx") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/mac_x86_newlib/bin/x86_64-nacl-" elseif os.is("linux") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/linux_x86_newlib/bin/x86_64-nacl-" end premake.gcc.cc = naclToolchain .. "gcc" premake.gcc.cxx = naclToolchain .. "g++" premake.gcc.ar = naclToolchain .. "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-nacl") end if "nacl-arm" == _OPTIONS["gcc"] then if not os.getenv("NACL_SDK_ROOT") then print("Set NACL_SDK_ROOT enviroment variables.") end naclToolchain = "$(NACL_SDK_ROOT)/toolchain/win_arm_newlib/bin/arm-nacl-" if os.is("macosx") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/mac_arm_newlib/bin/arm-nacl-" elseif os.is("linux") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/linux_arm_newlib/bin/arm-nacl-" end premake.gcc.cc = naclToolchain .. "gcc" premake.gcc.cxx = naclToolchain .. "g++" premake.gcc.ar = naclToolchain .. "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-nacl-arm") end if "osx" == _OPTIONS["gcc"] then if os.is("linux") then local osxToolchain = "x86_64-apple-darwin13-" premake.gcc.cc = osxToolchain .. "clang" premake.gcc.cxx = osxToolchain .. "clang++" premake.gcc.ar = osxToolchain .. "ar" end location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx") end if "osx-clang" == _OPTIONS["gcc"] then premake.gcc.cc = "clang" premake.gcc.cxx = "clang++" premake.gcc.ar = "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx-clang") end if "pnacl" == _OPTIONS["gcc"] then if not os.getenv("NACL_SDK_ROOT") then print("Set NACL_SDK_ROOT enviroment variables.") end naclToolchain = "$(NACL_SDK_ROOT)/toolchain/win_pnacl/bin/pnacl-" if os.is("macosx") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/mac_pnacl/bin/pnacl-" elseif os.is("linux") then naclToolchain = "$(NACL_SDK_ROOT)/toolchain/linux_pnacl/bin/pnacl-" end premake.gcc.cc = naclToolchain .. "clang" premake.gcc.cxx = naclToolchain .. "clang++" premake.gcc.ar = naclToolchain .. "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-pnacl") end if "qnx-arm" == _OPTIONS["gcc"] then if not os.getenv("QNX_HOST") then print("Set QNX_HOST enviroment variables.") end premake.gcc.cc = "$(QNX_HOST)/usr/bin/arm-unknown-nto-qnx8.0.0eabi-gcc" premake.gcc.cxx = "$(QNX_HOST)/usr/bin/arm-unknown-nto-qnx8.0.0eabi-g++" premake.gcc.ar = "$(QNX_HOST)/usr/bin/arm-unknown-nto-qnx8.0.0eabi-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-qnx-arm") end if "rpi" == _OPTIONS["gcc"] then location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi") end elseif _ACTION == "vs2012" or _ACTION == "vs2013" or _ACTION == "vs2015" then if (_ACTION .. "-clang") == _OPTIONS["vs"] then premake.vstudio.toolset = ("LLVM-" .. _ACTION) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang") end if "winphone8" == _OPTIONS["vs"] then premake.vstudio.toolset = "v110_wp80" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone8") end if "winphone81" == _OPTIONS["vs"] then premake.vstudio.toolset = "v120_wp81" platforms { "ARM" } location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone81") end if "intel-14" == _OPTIONS["vs"] then premake.vstudio.toolset = "Intel C++ Compiler XE 14.0" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel") end if "intel-15" == _OPTIONS["vs"] then premake.vstudio.toolset = "Intel C++ Compiler XE 15.0" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel") end if ("vs2012-xp") == _OPTIONS["vs"] then premake.vstudio.toolset = ("v110_xp") location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp") end if ("vs2013-xp") == _OPTIONS["vs"] then premake.vstudio.toolset = ("v120_xp") location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp") end elseif _ACTION == "xcode4" then if "osx" == _OPTIONS["xcode"] then premake.xcode.toolset = "macosx" location (path.join(_buildDir, "projects", _ACTION .. "-osx")) elseif "ios" == _OPTIONS["xcode"] then premake.xcode.toolset = "iphoneos" location (path.join(_buildDir, "projects", _ACTION .. "-ios")) end end if (_OPTIONS["CC"] ~= nil) then premake.gcc.cc = _OPTIONS["CC"] end if (_OPTIONS["CXX"] ~= nil) then premake.gcc.cxx = _OPTIONS["CXX"] end if (_OPTIONS["LD"] ~= nil) then premake.gcc.ld = _OPTIONS["LD"] end configuration {} -- reset configuration configuration { "x32", "vs*" } objdir (_buildDir .. _ACTION .. "/obj") configuration { "x32", "vs*", "Release" } targetdir (_buildDir .. _ACTION .. "/bin/x32/Release") configuration { "x32", "vs*", "Debug" } targetdir (_buildDir .. _ACTION .. "/bin/x32/Debug") configuration { "x64", "vs*" } defines { "_WIN64" } objdir (_buildDir .. _ACTION .. "/obj") configuration { "x64", "vs*", "Release" } targetdir (_buildDir .. _ACTION .. "/bin/x64/Release") configuration { "x64", "vs*", "Debug" } targetdir (_buildDir .. _ACTION .. "/bin/x64/Debug") configuration { "ARM", "vs*" } targetdir (_buildDir .. _ACTION .. "/bin/ARM") objdir (_buildDir .. _ACTION .. "/obj") configuration { "ARM", "vs*", "Release" } targetdir (_buildDir .. _ACTION .. "/bin/ARM/Release") configuration { "ARM", "vs*", "Debug" } targetdir (_buildDir .. _ACTION .. "/bin/ARM/Debug") configuration { "x32", "vs*-clang" } objdir (_buildDir .. _ACTION .. "-clang/obj") configuration { "x32", "vs*-clang", "Release" } targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Release") configuration { "x32", "vs*-clang", "Debug" } targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Debug") configuration { "x64", "vs*-clang" } objdir (_buildDir .. _ACTION .. "-clang/obj") configuration { "x64", "vs*-clang", "Release" } targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Release") configuration { "x64", "vs*-clang", "Debug" } targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Debug") configuration { "vs*-clang" } buildoptions { "-Qunused-arguments", } configuration { "mingw*" } defines { "WIN32" } configuration { "x32", "mingw32-gcc" } objdir (_buildDir .. "mingw-gcc" .. "/obj") buildoptions { "-m32" } configuration { "x32", "mingw32-gcc", "Release" } targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Release") configuration { "x32", "mingw32-gcc", "Debug" } targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Debug") configuration { "x64", "mingw64-gcc" } objdir (_buildDir .. "mingw-gcc" .. "/obj") buildoptions { "-m64" } configuration { "x64", "mingw64-gcc", "Release" } targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Release") configuration { "x64", "mingw64-gcc", "Debug" } targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Debug") configuration { "mingw-clang" } linkoptions { "-Qunused-arguments", "-Wno-error=unused-command-line-argument-hard-error-in-future", "-Wl,--allow-multiple-definition", } configuration { "x32", "mingw-clang" } objdir ( _buildDir .. "mingw-clang/obj") buildoptions { "-m32" } buildoptions { "-isystem$(MINGW32)/i686-w64-mingw32/include/c++", "-isystem$(MINGW32)/i686-w64-mingw32/include/c++/i686-w64-mingw32", "-isystem$(MINGW32)/i686-w64-mingw32/include", } configuration { "x32", "mingw-clang", "Release" } targetdir (_buildDir .. "mingw-clang/bin/x32/Release") configuration { "x32", "mingw-clang", "Debug" } targetdir (_buildDir .. "win32_mingw-clang/bin/x32/Debug") configuration { "x64", "mingw-clang" } objdir (_buildDir .. "mingw-clang/obj") buildoptions { "-m64" } buildoptions { "-isystem$(MINGW64)/x86_64-w64-mingw32/include/c++", "-isystem$(MINGW64)/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32", "-isystem$(MINGW64)/x86_64-w64-mingw32/include", } configuration { "x64", "mingw-clang", "Release" } targetdir (_buildDir .. "mingw-clang/bin/x64/Release") configuration { "x64", "mingw-clang", "Debug" } targetdir (_buildDir .. "mingw-clang/bin/x64/Debug") configuration { "linux-gcc", "x32" } objdir (_buildDir .. "linux_gcc" .. "/obj") buildoptions { "-m32", } configuration { "linux-gcc", "x32", "Release" } targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Release") configuration { "linux-gcc", "x32", "Debug" } targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Debug") configuration { "linux-gcc", "x64" } objdir (_buildDir .. "linux_gcc" .. "/obj") buildoptions { "-m64", } configuration { "linux-gcc", "x64", "Release" } targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Release") configuration { "linux-gcc", "x64", "Debug" } targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Debug") configuration { "linux-clang", "x32" } objdir (_buildDir .. "linux_clang" .. "/obj") buildoptions { "-m32", } configuration { "linux-clang", "x32", "Release" } targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Release") configuration { "linux-clang", "x32", "Debug" } targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Debug") configuration { "linux-clang", "x64" } objdir (_buildDir .. "linux_clang" .. "/obj") buildoptions { "-m64", } configuration { "linux-clang", "x64", "Release" } targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Release") configuration { "linux-clang", "x64", "Debug" } targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Debug") configuration { "solaris", "x32" } objdir (_buildDir .. "solaris" .. "/obj") buildoptions { "-m32", } configuration { "solaris", "x32", "Release" } targetdir (_buildDir .. "solaris" .. "/bin/x32/Release") configuration { "solaris", "x32", "Debug" } targetdir (_buildDir .. "solaris" .. "/bin/x32/Debug") configuration { "solaris", "x64" } objdir (_buildDir .. "solaris" .. "/obj") buildoptions { "-m64", } configuration { "solaris", "x64", "Release" } targetdir (_buildDir .. "solaris" .. "/bin/x64/Release") configuration { "solaris", "x64", "Debug" } targetdir (_buildDir .. "solaris" .. "/bin/x64/Debug") configuration { "freebsd", "x32" } objdir (_buildDir .. "freebsd" .. "/obj") buildoptions { "-m32", } configuration { "freebsd", "x32", "Release" } targetdir (_buildDir .. "freebsd" .. "/bin/x32/Release") configuration { "freebsd", "x32", "Debug" } targetdir (_buildDir .. "freebsd" .. "/bin/x32/Debug") configuration { "freebsd", "x64" } objdir (_buildDir .. "freebsd" .. "/obj") buildoptions { "-m64", } configuration { "freebsd", "x64", "Release" } targetdir (_buildDir .. "freebsd" .. "/bin/x64/Release") configuration { "freebsd", "x64", "Debug" } targetdir (_buildDir .. "freebsd" .. "/bin/x64/Debug") configuration { "android-*" } includedirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include", "$(ANDROID_NDK_ROOT)/sources/android/native_app_glue", } linkoptions { "-nostdlib", "-static-libgcc", } flags { "NoImportLib", } links { "c", "dl", "m", "android", "log", "gnustl_static", "gcc", } buildoptions { "-fPIC", "-no-canonical-prefixes", "-Wa,--noexecstack", "-fstack-protector", "-ffunction-sections", "-Wno-cast-align", "-Wno-psabi", -- note: the mangling of 'va_list' has changed in GCC 4.4.0 "-Wunused-value", "-Wundef", } linkoptions { "-no-canonical-prefixes", "-Wl,--no-undefined", "-Wl,-z,noexecstack", "-Wl,-z,relro", "-Wl,-z,now", } configuration { "android-arm" } targetdir (_buildDir .. "android-arm" .. "/bin") objdir (_buildDir .. "android-arm" .. "/obj") libdirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib", } includedirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/include", } buildoptions { "-mthumb", "-march=armv7-a", "-mfloat-abi=softfp", "-mfpu=neon", "-Wunused-value", "-Wundef", } linkoptions { "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o", "-march=armv7-a", "-Wl,--fix-cortex-a8", } configuration { "android-mips" } targetdir (_buildDir .. "android-mips" .. "/bin") objdir (_buildDir .. "android-mips" .. "/obj") libdirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/", } includedirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/include", } buildoptions { "-Wunused-value", "-Wundef", } linkoptions { "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtbegin_so.o", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtend_so.o", } configuration { "android-x86" } targetdir (_buildDir .. "android-x86" .. "/bin") objdir (_buildDir .. "android-x86" .. "/obj") libdirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib", } includedirs { "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/include", } buildoptions { "-march=i686", "-mtune=atom", "-mstackrealign", "-msse3", "-mfpmath=sse", "-Wunused-value", "-Wundef", } linkoptions { "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o", } configuration { "asmjs" } targetdir (_buildDir .. "asmjs" .. "/bin") objdir (_buildDir .. "asmjs" .. "/obj") buildoptions { "-isystem$(EMSCRIPTEN)/system/include", "-isystem$(EMSCRIPTEN)/system/include/compat", "-isystem$(EMSCRIPTEN)/system/include/libc", "-Wno-cast-align", "-Wno-tautological-compare", "-Wno-self-assign-field", "-Wno-format-security", "-Wno-inline-new-delete", "-Wno-constant-logical-operand", "-Wno-absolute-value", "-Wno-unknown-warning-option", "-Wno-extern-c-compat", } configuration { "nacl or nacl-arm or pnacl" } buildoptions { "-U__STRICT_ANSI__", -- strcasecmp, setenv, unsetenv,... "-fno-stack-protector", "-fdiagnostics-show-option", "-fdata-sections", "-ffunction-sections", "-Wunused-value", } configuration { "nacl or nacl-arm" } includedirs { "$(NACL_SDK_ROOT)/include", "$(NACL_SDK_ROOT)/include/newlib", } configuration { "pnacl" } buildoptions { "-Wno-tautological-undefined-compare", "-Wno-cast-align", } includedirs { "$(NACL_SDK_ROOT)/include", "$(NACL_SDK_ROOT)/include/pnacl", } configuration { "x32", "nacl" } targetdir (_buildDir .. "nacl-x86" .. "/bin/x32") objdir (_buildDir .. "nacl-x86" .. "/obj") configuration { "x32", "nacl", "Debug" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_x86_32/Debug" } configuration { "x32", "nacl", "Release" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_x86_32/Release" } configuration { "x64", "nacl" } targetdir (_buildDir .. "nacl-x64" .. "/bin/x64") objdir (_buildDir .. "nacl-x64" .. "/obj") configuration { "x64", "nacl", "Debug" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_x86_64/Debug" } configuration { "x64", "nacl", "Release" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_x86_64/Release" } configuration { "nacl-arm" } targetdir (_buildDir .. "nacl-arm" .. "/bin") objdir (_buildDir .. "nacl-arm" .. "/obj") configuration { "nacl-arm", "Debug" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_arm/Debug" } configuration { "nacl-arm", "Release" } libdirs { "$(NACL_SDK_ROOT)/lib/newlib_arm/Release" } configuration { "pnacl" } targetdir (_buildDir .. "pnacl" .. "/bin") objdir (_buildDir .. "pnacl" .. "/obj") configuration { "pnacl", "Debug" } libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Debug" } configuration { "pnacl", "Release" } libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Release" } configuration { "osx*", "x32" } objdir (_buildDir .. "osx_clang" .. "/obj") buildoptions { "-m32", } configuration { "osx*", "x32", "Release" } targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Release") configuration { "osx*", "x32", "Debug" } targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Debug") configuration { "osx*", "x64" } objdir (_buildDir .. "osx_clang" .. "/obj") buildoptions { "-m64", } configuration { "osx*", "x64", "Release" } targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release") configuration { "osx*", "x64", "Debug" } targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug") configuration { "ios-arm" } targetdir (_buildDir .. "ios-arm" .. "/bin") objdir (_buildDir .. "ios-arm" .. "/obj") configuration { "ios-simulator" } targetdir (_buildDir .. "ios-simulator" .. "/bin") objdir (_buildDir .. "ios-simulator" .. "/obj") configuration { "qnx-arm" } targetdir (_buildDir .. "qnx-arm" .. "/bin") objdir (_buildDir .. "qnx-arm" .. "/obj") configuration { "rpi" } targetdir (_buildDir .. "rpi" .. "/bin") objdir (_buildDir .. "rpi" .. "/obj") configuration {} -- reset configuration return true end function strip() configuration { "android-arm", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) $(ANDROID_NDK_ARM)/bin/arm-linux-androideabi-strip -s \"$(TARGET)\"" } configuration { "android-mips", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) $(ANDROID_NDK_MIPS)/bin/mipsel-linux-android-strip -s \"$(TARGET)\"" } configuration { "android-x86", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) $(ANDROID_NDK_X86)/bin/i686-linux-android-strip -s \"$(TARGET)\"" } configuration { "linux-* or rpi", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) strip -s \"$(TARGET)\"" } configuration { "mingw*", "x64", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) $(MINGW64)/bin/strip -s \"$(TARGET)\"", } configuration { "mingw*", "x32", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) $(MINGW32)/bin/strip -s \"$(TARGET)\"" } configuration { "pnacl" } postbuildcommands { "$(SILENT) echo Running pnacl-finalize.", "$(SILENT) " .. naclToolchain .. "finalize \"$(TARGET)\"" } configuration { "*nacl*", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) " .. naclToolchain .. "strip -s \"$(TARGET)\"" } configuration { "asmjs" } postbuildcommands { "$(SILENT) echo Running asmjs finalize.", "$(SILENT) $(EMSCRIPTEN)/emcc -O2 -s TOTAL_MEMORY=268435456 \"$(TARGET)\" -o \"$(TARGET)\".html" -- ALLOW_MEMORY_GROWTH } configuration {} -- reset configuration end