diff options
Diffstat (limited to 'scripts/toolchain.lua')
-rw-r--r-- | scripts/toolchain.lua | 636 |
1 files changed, 78 insertions, 558 deletions
diff --git a/scripts/toolchain.lua b/scripts/toolchain.lua index e596c06bfb0..59e8bdb504a 100644 --- a/scripts/toolchain.lua +++ b/scripts/toolchain.lua @@ -1,5 +1,5 @@ -- --- Copyright 2010-2015 Branimir Karadzic. All rights reserved. +-- Copyright 2010-2021 Branimir Karadzic. All rights reserved. -- License: https://github.com/bkaradzic/bx#license-bsd-2-clause -- @@ -17,8 +17,6 @@ newoption { allowed = { { "android-arm", "Android - ARM" }, { "android-arm64", "Android - ARM64" }, - { "android-mips", "Android - MIPS" }, - { "android-mips64","Android - MIPS64" }, { "android-x86", "Android - x86" }, { "android-x64", "Android - x64" }, { "asmjs", "Emscripten/asm.js" }, @@ -26,21 +24,16 @@ newoption { { "freebsd-clang", "FreeBSD (clang compiler)"}, { "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)" }, { "netbsd", "NetBSD" }, { "netbsd-clang", "NetBSD (clang compiler)"}, { "openbsd", "OpenBSD" }, + { "openbsd-clang", "OpenBSD (clang compiler)"}, { "osx", "OSX (GCC compiler)" }, { "osx-clang", "OSX (Clang compiler)" }, - { "pnacl", "Native Client - PNaCl" }, - { "rpi", "RaspberryPi" }, { "solaris", "Solaris" }, - { "steamlink", "Steam Link" }, - { "ci20", "Creator-Ci20" }, }, } @@ -49,66 +42,39 @@ newoption { value = "toolset", description = "Choose VS toolset", allowed = { - { "intel-14", "Intel C++ Compiler XE 14.0" }, { "intel-15", "Intel C++ Compiler XE 15.0" }, - { "vs2015-clang", "Clang 3.6" }, - { "vs2015-xp", "Visual Studio 2015 targeting XP" }, - { "vs2017-clang", "Clang 3.6" }, - { "vs2017-xp", "Visual Studio 2017 targeting XP" }, - { "winphone8", "Windows Phone 8.0" }, - { "winphone81", "Windows Phone 8.1" }, - { "winstore81", "Windows Store 8.1" }, - { "winstore82", "Universal Windows App" } + { "clangcl", "Visual Studio 2019 using Clang/LLVM" }, }, } 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-21).", + description = "Set Android platform version (default: android-24).", } -newoption { - trigger = "with-ios", - value = "#", - description = "Set iOS target version (default: 8.0).", -} +local android = {} -newoption { - trigger = "with-windows", - value = "#", - description = "Set the Windows target platform version (default: 10.0.10240.0).", -} +function androidToolchainRoot() + if android.toolchainRoot == nil then + local hostTags = { + windows = "windows-x86_64", + linux = "linux-x86_64", + macosx = "darwin-x86_64" + } + android.toolchainRoot = (os.getenv("ANDROID_NDK_HOME") or "") .. "/toolchains/llvm/prebuilt/" .. hostTags[os.get()] + end + + return android.toolchainRoot; +end function toolchain(_buildDir, _subDir) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION) - local androidPlatform = "android-24" + local androidApiLevel = 24 if _OPTIONS["with-android"] then - androidPlatform = "android-" .. _OPTIONS["with-android"] - elseif _OPTIONS["PLATFORM"]:find("64", -2) then - androidPlatform = "android-24" - end - - local iosPlatform = "" - if _OPTIONS["with-ios"] then - iosPlatform = _OPTIONS["with-ios"] - end - - local windowsPlatform = "10.0.10240.0" - if _OPTIONS["with-windows"] then - windowsPlatform = _OPTIONS["with-windows"] + androidApiLevel = _OPTIONS["with-android"] end if _ACTION == "gmake" or _ACTION == "ninja" then @@ -120,34 +86,18 @@ function toolchain(_buildDir, _subDir) if string.find(_OPTIONS["gcc"], "android") then -- 64-bit android platform requires >= 21 - if _OPTIONS["PLATFORM"]:find("64", -2) and tonumber(androidPlatform:sub(9)) < 21 then + if _OPTIONS["PLATFORM"]:find("64", -2) and (androidApiLevel < 21) then error("64-bit android requires platform 21 or higher") end - if not os.getenv("ANDROID_NDK_ROOT") then - print("Set ANDROID_NDK_ROOT environment variable.") - end - if not os.getenv("ANDROID_NDK_LLVM") then - print("Set ANDROID_NDK_LLVM envrionment variable.") - end - platform_ndk_env = "ANDROID_NDK_" .. _OPTIONS["PLATFORM"]:upper() - if not os.getenv(platform_ndk_env) then - print("Set " .. platform_ndk_env .. " environment variable.") + if not os.getenv("ANDROID_NDK_HOME") then + print("Set ANDROID_NDK_HOME environment variable.") end - local platformToolchainMap = { - ['arm'] = "arm-linux-androideabi", - ['arm64'] = "aarch64-linux-android", - ['mips64'] = "mips64el-linux-android", - ['mips'] = "mipsel-linux-android", - ['x86'] = "i686-linux-android", - ['x64'] = "x86_64-linux-android", - } - toolchainPrefix = os.getenv(platform_ndk_env) .. "/bin/" .. platformToolchainMap[_OPTIONS["PLATFORM"]] .. "-" + premake.gcc.cc = androidToolchainRoot() .. "/bin/clang" + premake.gcc.cxx = androidToolchainRoot() .. "/bin/clang++" + premake.gcc.ar = androidToolchainRoot() .. "/bin/llvm-ar" - premake.gcc.cc = "$(ANDROID_NDK_LLVM)/bin/clang" - premake.gcc.cxx = "$(ANDROID_NDK_LLVM)/bin/clang++" - premake.gcc.ar = toolchainPrefix .. "ar" premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-" .. _OPTIONS["PLATFORM"]) @@ -186,26 +136,11 @@ function toolchain(_buildDir, _subDir) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-openbsd") 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") + if "openbsd-clang" == _OPTIONS["gcc"] then + location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-openbsd-clang") 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 @@ -222,73 +157,29 @@ function toolchain(_buildDir, _subDir) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux-clang") end - if "steamlink" == _OPTIONS["gcc"] then - if not os.getenv("MARVELL_SDK_PATH") then - print("Set MARVELL_SDK_PATH envrionment variable.") - end - premake.gcc.cc = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-gcc" - premake.gcc.cxx = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-g++" - premake.gcc.ar = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-ar" - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-steamlink") - end - - if "rpi" == _OPTIONS["gcc"] then - if not os.getenv("RASPBERRY_SDK_PATH") then - print("Set RASPBERRY_SDK_PATH envrionment variable.") - end - premake.gcc.cc = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-gcc" - premake.gcc.cxx = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-g++" - premake.gcc.ar = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-ar" - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi") - end - - if "ci20" == _OPTIONS["gcc"] then - if not os.getenv("MIPS_LINUXGNU_ROOT") then - print("Set MIPS_LINUXGNU_ROOT envrionment variable.") - end - premake.gcc.cc = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-gcc" - premake.gcc.cxx = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-g++" - premake.gcc.ar = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-ar" - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20") - end - if "mingw32-gcc" == _OPTIONS["gcc"] then - if not os.getenv("MINGW32") then - print("Set MINGW32 envrionment variable.") - end if toolchainPrefix == nil or toolchainPrefix == "" then + if not os.getenv("MINGW32") then + print("Set MINGW32 environment variable.") + end toolchainPrefix = "$(MINGW32)/bin/i686-w64-mingw32-" end premake.gcc.cc = toolchainPrefix .. "gcc" premake.gcc.cxx = toolchainPrefix .. "g++" --- work around GCC 4.9.2 not having proper linker for LTO=1 usage - local version_4_ar = str_to_version(_OPTIONS["gcc_version"]) - if (version_4_ar < 50000) then - premake.gcc.ar = toolchainPrefix .. "ar" - end - if (version_4_ar >= 50000) then - premake.gcc.ar = toolchainPrefix .. "gcc-ar" - end + premake.gcc.ar = toolchainPrefix .. "gcc-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw32-gcc") end if "mingw64-gcc" == _OPTIONS["gcc"] then - if not os.getenv("MINGW64") then - print("Set MINGW64 envrionment variable.") - end if toolchainPrefix == nil or toolchainPrefix == "" then + if not os.getenv("MINGW64") then + print("Set MINGW64 environment variable.") + end toolchainPrefix = "$(MINGW64)/bin/x86_64-w64-mingw32-" end premake.gcc.cc = toolchainPrefix .. "gcc" premake.gcc.cxx = toolchainPrefix .. "g++" --- work around GCC 4.9.2 not having proper linker for LTO=1 usage - local version_4_ar = str_to_version(_OPTIONS["gcc_version"]) - if (version_4_ar < 50000) then - premake.gcc.ar = toolchainPrefix .. "ar" - end - if (version_4_ar >= 50000) then - premake.gcc.ar = toolchainPrefix .. "gcc-ar" - end + premake.gcc.ar = toolchainPrefix .. "gcc-ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw64-gcc") end @@ -315,154 +206,17 @@ function toolchain(_buildDir, _subDir) premake.gcc.ar = toolchainPrefix .. "ar" location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx-clang") end + elseif _ACTION == "vs2022" then - 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 "rpi" == _OPTIONS["gcc"] then - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi") - end - - if "ci20" == _OPTIONS["gcc"] then - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20") - end - elseif _ACTION == "vs2015" or _ACTION == "vs2015-fastbuild" 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 "winstore81" == _OPTIONS["vs"] then - premake.vstudio.toolset = "v120" - premake.vstudio.storeapp = "8.1" - platforms { "ARM" } - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81") - end - - if "winstore82" == _OPTIONS["vs"] then - premake.vstudio.toolset = "v140" - premake.vstudio.storeapp = "8.2" - - -- If needed, depending on GENie version, enable file-level configuration - if enablefilelevelconfig ~= nil then - enablefilelevelconfig() - end - - local action = premake.action.current() - action.vstudio.windowsTargetPlatformVersion = windowsPlatform - - platforms { "ARM" } - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82") - 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 ("vs2015-xp") == _OPTIONS["vs"] then - premake.vstudio.toolset = ("v140_xp") - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp") - end - elseif _ACTION == "vs2017" or _ACTION == "vs2017-fastbuild" then - - if (_ACTION .. "-clang") == _OPTIONS["vs"] then - premake.vstudio.toolset = ("LLVM-" .. _ACTION) + if "clangcl" == _OPTIONS["vs"] then + premake.vstudio.toolset = ("ClangCL") 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 "winstore81" == _OPTIONS["vs"] then - premake.vstudio.toolset = "v120" - premake.vstudio.storeapp = "8.1" - platforms { "ARM" } - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81") - end - - if "winstore82" == _OPTIONS["vs"] then - premake.vstudio.toolset = "v141" - premake.vstudio.storeapp = "8.2" - - -- If needed, depending on GENie version, enable file-level configuration - if enablefilelevelconfig ~= nil then - enablefilelevelconfig() - end - - local action = premake.action.current() - action.vstudio.windowsTargetPlatformVersion = windowsPlatform - - platforms { "ARM" } - location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82") - 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 ("vs2017-xp") == _OPTIONS["vs"] then - premake.vstudio.toolset = ("v141_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 @@ -474,6 +228,9 @@ function toolchain(_buildDir, _subDir) if (_OPTIONS["LD"] ~= nil) then premake.gcc.ld = _OPTIONS["LD"] end + if (_OPTIONS["AR"] ~= nil) then + premake.gcc.ar = _OPTIONS["AR"] + end configuration {} -- reset configuration @@ -497,16 +254,6 @@ function toolchain(_buildDir, _subDir) 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") @@ -530,15 +277,6 @@ function toolchain(_buildDir, _subDir) "-Qunused-arguments", } - configuration { "winphone8* or winstore8*" } - removeflags { - "StaticRuntime", - "NoExceptions", - } - flags { - "WinMain" - } - configuration { "mingw*" } defines { "WIN32" } @@ -562,117 +300,11 @@ function toolchain(_buildDir, _subDir) configuration { "x64", "mingw64-gcc", "Debug" } targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Debug") - configuration { "steamlink" } - objdir ( _buildDir .. "steamlink/obj") - defines { - "__STEAMLINK__=1", -- There is no special prefedined compiler symbol to detect SteamLink, faking it. - } - buildoptions { - "-marm", - "-mfloat-abi=hard", - "--sysroot=$(MARVELL_SDK_PATH)/rootfs", - } - linkoptions { - "-static-libgcc", - "-static-libstdc++", - "--sysroot=$(MARVELL_SDK_PATH)/rootfs", - } - - configuration { "steamlink", "Release" } - targetdir (_buildDir .. "steamlink/bin/Release") - - configuration { "steamlink", "Debug" } - targetdir (_buildDir .. "steamlink/bin/Debug") - - configuration { "rpi" } - objdir ( _buildDir .. "rpi/obj") - libdirs { - "$(RASPBERRY_SYSROOT)/opt/vc/lib", - } - includedirs { - "$(RASPBERRY_SYSROOT)/opt/vc/include", - "$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vcos/pthreads", - "$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vmcs_host/linux", - } - defines { - "__VCCOREVER__=0x04000000", -- There is no special prefedined compiler symbol to detect RaspberryPi, faking it. - } - linkoptions { - "-Wl,--gc-sections", - } - buildoptions { - "--sysroot=$(RASPBERRY_SYSROOT)", - } - linkoptions { - "-static-libgcc", - "-static-libstdc++", - "--sysroot=$(RASPBERRY_SYSROOT)", - } - - configuration { "rpi", "Release" } - targetdir (_buildDir .. "rpi/bin/Release") - - configuration { "rpi", "Debug" } - targetdir (_buildDir .. "rpi/bin/Debug") - - configuration { "ci20" } - objdir ( _buildDir .. "ci20/obj") - includedirs { - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu/c++/4.9", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9/backward", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/local/include", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include-fixed", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu", - "$(CI20_SYSROOT)/mipsel-r2-hard/usr/include", - } - links { - "c", - "dl", - "m", - "gcc", - "stdc++", - "gcc_s", - } - + configuration { "mingw-clang" } buildoptions { - "--sysroot=$(CI20_SYSROOT)", - "-Wno-pragmas", - "-Wno-undef", - "-EL", - "-mel", - "-march=mips32r2", - "-mllsc", - "-mabi=32", + "-femulated-tls", } linkoptions { - "--sysroot=$(CI20_SYSROOT)", - "-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu/", - "-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu/", - "-nostdlib", - "-EL", - "-mel", - "-march=mips32r2", - "-mllsc", - "-mabi=32", - "$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtbegin.o", - "$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtend.o", - "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9", - "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu", - "-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib", - "-L$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu", - "-L$(CI20_SYSROOT)/mipsel-r2-hard/lib", - } - - configuration { "ci20", "Release" } - targetdir (_buildDir .. "ci20/bin/Release") - - configuration { "ci20", "Debug" } - targetdir (_buildDir .. "ci20/bin/Debug") - - configuration { "mingw-clang" } - linkoptions { "-Wl,--allow-multiple-definition", } @@ -843,17 +475,6 @@ function toolchain(_buildDir, _subDir) configuration { "android-*" } objdir (_buildDir .. "android/obj/" .. _OPTIONS["PLATFORM"]) - includedirs { - MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include", - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/include", - "$(ANDROID_NDK_ROOT)/sysroot/usr/include", - "$(ANDROID_NDK_ROOT)/sources/android/support/include", - "$(ANDROID_NDK_ROOT)/sources/android/native_app_glue", - } - linkoptions { - "-nostdlib", - } flags { "NoImportLib", } @@ -863,138 +484,73 @@ function toolchain(_buildDir, _subDir) "m", "android", "log", - "c++_static", - "c++abi", - "stdc++", - "gcc", } buildoptions_c { - "-Wno-strict-prototypes", + "--gcc-toolchain=" .. androidToolchainRoot(), + "--sysroot=" .. androidToolchainRoot() .. "/sysroot", } buildoptions { + "--gcc-toolchain=" .. androidToolchainRoot(), + "--sysroot=" .. androidToolchainRoot() .. "/sysroot", "-fpic", "-ffunction-sections", "-funwind-tables", "-fstack-protector-strong", "-no-canonical-prefixes", - "-fno-integrated-as", - "-Wunused-value", - "-Wundef", - "-Wno-cast-align", - "-Wno-unknown-attributes", - "-Wno-macro-redefined", - "-DASIO_HAS_STD_STRING_VIEW", - "-Wno-unused-function", } linkoptions { - "-no-canonical-prefixes", + "--gcc-toolchain=" .. androidToolchainRoot(), + "--sysroot=" .. androidToolchainRoot() .. "/sysroot", "-Wl,--no-undefined", "-Wl,-z,noexecstack", "-Wl,-z,relro", "-Wl,-z,now", } - configuration { "android-arm" } - libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib", - } - includedirs { - "$(ANDROID_NDK_ROOT)/sysroot/usr/include/arm-linux-androideabi", - } buildoptions { - "-gcc-toolchain $(ANDROID_NDK_ARM)", - "-target armv7-none-linux-androideabi", + "--target=armv7-none-linux-android" .. androidApiLevel, "-march=armv7-a", "-mfloat-abi=softfp", - "-mfpu=vfpv3-d16", + "-mfpu=neon", "-mthumb", } - links { - "unwind", - } linkoptions { - "-gcc-toolchain $(ANDROID_NDK_ARM)", - "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o", - "-target armv7-none-linux-androideabi", + "--target=armv7-none-linux-android" .. androidApiLevel, "-march=armv7-a", - "-mthumb", } configuration { "android-arm64" } - libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/arm64-v8a", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib64", - } - includedirs { - "$(ANDROID_NDK_ROOT)/sysroot/usr/include/aarch64-linux-android", - } buildoptions { - "-gcc-toolchain $(ANDROID_NDK_ARM64)", - "-target aarch64-none-linux-android", + "--target=aarch64-none-linux-android" .. androidApiLevel, } linkoptions { - "-gcc-toolchain $(ANDROID_NDK_ARM64)", - "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtbegin_so.o", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtend_so.o", - "-target aarch64-none-linux-android", + "--target=aarch64-none-linux-android" .. androidApiLevel, } configuration { "android-x86" } - libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib", - } - includedirs { - "$(ANDROID_NDK_ROOT)/sysroot/usr/include/i686-linux-android", - } buildoptions { - "-gcc-toolchain $(ANDROID_NDK_X86)", - "-target i686-none-linux-android", - "-mssse3" + "--target=i686-none-linux-android" .. androidApiLevel, + "-mtune=atom", + "-mstackrealign", + "-msse3", + "-mfpmath=sse", } linkoptions { - "-gcc-toolchain $(ANDROID_NDK_X86)", - "-target i686-none-linux-android", - "-mssse3", - "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o", + "--target=i686-none-linux-android" .. androidApiLevel, } configuration { "android-x64" } - libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86_64", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64", - } - includedirs { - "$(ANDROID_NDK_ROOT)/sysroot/usr/include/x86_64-linux-android", - } buildoptions { - "-gcc-toolchain $(ANDROID_NDK_X64)", - "-target x86_64-none-linux-android", + "--target=x86_64-none-linux-android" .. androidApiLevel, } linkoptions { - "-gcc-toolchain $(ANDROID_NDK_X64)", - "-target x86_64-none-linux-android", - "--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtbegin_so.o", - "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtend_so.o", + "--target=x86_64-none-linux-android" .. androidApiLevel, } configuration { "asmjs" } targetdir (_buildDir .. "asmjs" .. "/bin") objdir (_buildDir .. "asmjs" .. "/obj") - includedirs { - "$(EMSCRIPTEN)/system/include", - "$(EMSCRIPTEN)/system/include/compat", - "$(EMSCRIPTEN)/system/include/libc", - "$(EMSCRIPTEN)/system/lib/libcxxabi/include", - } buildoptions { "-Wno-cast-align", "-Wno-tautological-compare", @@ -1007,70 +563,40 @@ function toolchain(_buildDir, _subDir) "-Wno-extern-c-compat", } - configuration { "pnacl" } - buildoptions { - "-U__STRICT_ANSI__", -- strcasecmp, setenv, unsetenv,... - "-fno-stack-protector", - "-fdiagnostics-show-option", - "-fdata-sections", - "-ffunction-sections", - "-Wunused-value", - } - - configuration { "pnacl" } - buildoptions { - "-Wno-tautological-undefined-compare", - "-Wno-cast-align", - } - includedirs { - "$(NACL_SDK_ROOT)/include", - "$(NACL_SDK_ROOT)/include/pnacl", - } - - 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" } + configuration { "osx*", "x32", "not arm64" } objdir (_buildDir .. "osx_clang" .. "/obj") buildoptions { "-m32", } - configuration { "osx*", "x32", "Release" } + configuration { "osx*", "x32", "not arm64", "Release" } targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Release") - configuration { "osx*", "x32", "Debug" } + configuration { "osx*", "x32", "not arm64", "Debug" } targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Debug") - configuration { "osx*", "x64" } + configuration { "osx*", "x64", "not arm64" } objdir (_buildDir .. "osx_clang" .. "/obj") buildoptions { "-m64", "-DHAVE_IMMINTRIN_H=1", } - configuration { "osx*", "x64", "Release" } + configuration { "osx*", "x64", "not arm64", "Release" } targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release") - configuration { "osx*", "x64", "Debug" } + configuration { "osx*", "x64", "not arm64", "Debug" } targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug") - configuration { "ios-arm" } - targetdir (_buildDir .. "ios-arm" .. "/bin") - objdir (_buildDir .. "ios-arm" .. "/obj") + configuration { "osx*", "arm64" } + objdir (_buildDir .. "osx_clang" .. "/obj") + buildoptions { + "-m64", "-DHAVE_IMMINTRIN_H=0", "-DSDL_DISABLE_IMMINTRIN_H=1", "-DHAVE_SSE=0" + } - configuration { "ios-simulator" } - targetdir (_buildDir .. "ios-simulator" .. "/bin") - objdir (_buildDir .. "ios-simulator" .. "/obj") + configuration { "osx*", "arm64", "Release" } + targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release") - configuration { "rpi" } - targetdir (_buildDir .. "rpi" .. "/bin") - objdir (_buildDir .. "rpi" .. "/obj") + configuration { "osx*", "arm64", "Debug" } + targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug") configuration {} -- reset configuration @@ -1094,7 +620,7 @@ function strip() "$(SILENT) " .. toolchainPrefix .. "strip -s \"$(TARGET)\"" } - configuration { "linux-* or rpi" } + configuration { "linux-*" } postbuildcommands { "$(SILENT) echo Stripping symbols.", "$(SILENT) strip -s \"$(TARGET)\"" @@ -1111,12 +637,6 @@ function strip() "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW32)/bin/") .. "strip -s \"$(TARGET)\"", } - configuration { "pnacl" } - postbuildcommands { - "$(SILENT) echo Running pnacl-finalize.", - "$(SILENT) " .. naclToolchain .. "finalize \"$(TARGET)\"" - } - configuration { "asmjs" } postbuildcommands { "$(SILENT) echo Running asmjs finalize.", |