From add7a65f3f20c28b4c9fc24be5751b2cdd4093b5 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 25 Feb 2016 20:43:40 +0100 Subject: [PATCH] Make Android targets compile but not link, using clang compiler in NDK, since GCC will be removed in next one (nw) --- 3rdparty/bgfx/src/image.cpp | 4 +- 3rdparty/bgfx/src/image.h | 2 +- scripts/genie.lua | 5 +++ scripts/src/3rdparty.lua | 15 ++++++-- scripts/src/main.lua | 11 ++++++ scripts/toolchain.lua | 73 +++++++++++++++++++------------------ 6 files changed, 69 insertions(+), 41 deletions(-) diff --git a/3rdparty/bgfx/src/image.cpp b/3rdparty/bgfx/src/image.cpp index 34dcae9e54c..3a5c0d592b5 100644 --- a/3rdparty/bgfx/src/image.cpp +++ b/3rdparty/bgfx/src/image.cpp @@ -2211,9 +2211,9 @@ namespace bgfx } } - const Memory* imageAlloc(ImageContainer& _imageContainer, TextureFormat::Enum _format, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _mips) + const Memory* imageAlloc(ImageContainer& _imageContainer, TextureFormat::Enum _format, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _mipsActive) { - const uint8_t numMips = _mips ? imageGetNumMips(_format, _width, _height) : 1; + const uint8_t numMips = _mipsActive ? imageGetNumMips(_format, _width, _height) : 1; uint32_t size = imageGetSize(_format, _width, _height, 0, false, numMips); const Memory* image = alloc(size); diff --git a/3rdparty/bgfx/src/image.h b/3rdparty/bgfx/src/image.h index 458d7e51c46..1baba0bae68 100644 --- a/3rdparty/bgfx/src/image.h +++ b/3rdparty/bgfx/src/image.h @@ -121,7 +121,7 @@ namespace bgfx bool imageConvert(void* _dst, TextureFormat::Enum _dstFormat, const void* _src, TextureFormat::Enum _srcFormat, uint32_t _width, uint32_t _height); /// - const Memory* imageAlloc(ImageContainer& _imageContainer, TextureFormat::Enum _format, uint16_t _width, uint16_t _height, uint16_t _depth = 0, bool _cubeMap = false, bool _mips = false); + const Memory* imageAlloc(ImageContainer& _imageContainer, TextureFormat::Enum _format, uint16_t _width, uint16_t _height, uint16_t _depth = 0, bool _cubeMap = false, bool _mipsActive = false); /// void imageFree(const Memory* _memory); diff --git a/scripts/genie.lua b/scripts/genie.lua index a48c9ca24cd..5f226315e47 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -1025,10 +1025,15 @@ configuration { "asmjs" } configuration { "android*" } buildoptions { "-Wno-undef", + "-Wno-typedef-redefinition", + "-Wno-unknown-warning-option", } buildoptions_cpp { "-x c++", "-std=c++14", + "-Wno-extern-c-compat", + "-Wno-tautological-constant-out-of-range-compare", + "-Wno-tautological-pointer-compare", } archivesplit_size "20" diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua index 066ee85befb..36547209ac7 100644 --- a/scripts/src/3rdparty.lua +++ b/scripts/src/3rdparty.lua @@ -537,10 +537,14 @@ project "luv" "-Wno-unused-function", "-Wno-strict-prototypes", "-Wno-unused-variable", - "-Wno-maybe-uninitialized", "-Wno-undef", } + configuration { "not android-*" } + buildoptions_c { + "-Wno-maybe-uninitialized", + } + configuration { "vs2015" } buildoptions { "/wd4701", -- warning C4701: potentially uninitialized local variable 'xxx' used @@ -749,6 +753,11 @@ end MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", } + configuration { "android-*"} + buildoptions { + "-Wno-macro-redefined", + } + configuration { "vs*" } includedirs { MAME_DIR .. "3rdparty/bx/include/compat/msvc", @@ -890,7 +899,7 @@ end local version = str_to_version(_OPTIONS["gcc_version"]) if (_OPTIONS["gcc"]~=nil) then - if string.find(_OPTIONS["gcc"], "clang") then + if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android") then buildoptions_c { "-Wno-unknown-warning-option", "-Wno-absolute-value", @@ -1024,7 +1033,7 @@ project "uv" local version = str_to_version(_OPTIONS["gcc_version"]) if (_OPTIONS["gcc"]~=nil) then - if string.find(_OPTIONS["gcc"], "clang") then + if string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "android") then buildoptions_c { "-Wno-unknown-warning-option", "-Wno-unknown-attributes", diff --git a/scripts/src/main.lua b/scripts/src/main.lua index b8125bf1989..ad71d0a5cb7 100644 --- a/scripts/src/main.lua +++ b/scripts/src/main.lua @@ -25,6 +25,17 @@ else end uuid (os.uuid(_target .."_" .. _subtarget)) kind "ConsoleApp" + + configuration { "android*" } + targetextension ".so" + linkoptions { + "-shared", + } + links { + "EGL", + "GLESv2", + } + configuration { } addprojectflags() flags { diff --git a/scripts/toolchain.lua b/scripts/toolchain.lua index 79af9a8c4c6..058c10a4bcc 100644 --- a/scripts/toolchain.lua +++ b/scripts/toolchain.lua @@ -106,9 +106,10 @@ function toolchain(_buildDir, _subDir) 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.cc = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang.exe" + premake.gcc.cxx = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang++.exe" premake.gcc.ar = "$(ANDROID_NDK_ARM)/bin/arm-linux-androideabi-ar" + premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-arm") end @@ -118,9 +119,10 @@ function toolchain(_buildDir, _subDir) 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.cc = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang.exe" + premake.gcc.cxx = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang++.exe" premake.gcc.ar = "$(ANDROID_NDK_MIPS)/bin/mipsel-linux-android-ar" + premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-mips") end @@ -130,9 +132,10 @@ function toolchain(_buildDir, _subDir) 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.cc = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang.exe" + premake.gcc.cxx = "$(ANDROID_NDK_ROOT)/toolchains/llvm-3.6/prebuilt/windows-x86_64/bin/clang++.exe" premake.gcc.ar = "$(ANDROID_NDK_X86)/bin/i686-linux-android-ar" + premake.gcc.llvm = true location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-x86") end @@ -629,11 +632,12 @@ function toolchain(_buildDir, _subDir) configuration { "android-*" } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include", + MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include", + "$(ANDROID_NDK_ROOT)/sources/android/support/include", "$(ANDROID_NDK_ROOT)/sources/android/native_app_glue", } linkoptions { - "-nostdlib", "-static-libgcc", } flags { @@ -645,19 +649,18 @@ function toolchain(_buildDir, _subDir) "m", "android", "log", - "gnustl_static", "gcc", } buildoptions { - "-fPIC", - "-no-canonical-prefixes", - "-Wa,--noexecstack", - "-fstack-protector", + "-fpic", "-ffunction-sections", - "-Wno-cast-align", - "-Wno-psabi", -- note: the mangling of 'va_list' has changed in GCC 4.4.0 + "-funwind-tables", + "-fstack-protector-strong", + "-no-canonical-prefixes", + "-fno-integrated-as", "-Wunused-value", "-Wundef", + "-Wno-cast-align", } linkoptions { "-no-canonical-prefixes", @@ -672,44 +675,46 @@ function toolchain(_buildDir, _subDir) targetdir (_buildDir .. "android-arm" .. "/bin") objdir (_buildDir .. "android-arm" .. "/obj") libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/include", } buildoptions { - "-mthumb", + "-gcc-toolchain $(ANDROID_NDK_ARM)", + "-target armv7-none-linux-androideabi", "-march=armv7-a", "-mfloat-abi=softfp", - "-mfpu=neon", - "-Wunused-value", - "-Wundef", + "-mfpu=vfpv3-d16", + "-mthumb", } linkoptions { + "-gcc-toolchain $(ANDROID_NDK_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", "-march=armv7-a", - "-Wl,--fix-cortex-a8", + "-mthumb", } configuration { "android-mips" } targetdir (_buildDir .. "android-mips" .. "/bin") objdir (_buildDir .. "android-mips" .. "/obj") libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/mips", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/mips", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/mips/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/include", } buildoptions { - "-Wunused-value", - "-Wundef", + "-gcc-toolchain $(ANDROID_NDK_MIPS)", + "-target mipsel-none-linux-android", } linkoptions { + "-gcc-toolchain $(ANDROID_NDK_MIPS)", + "-target mipsel-none-linux-android", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtbegin_so.o", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtend_so.o", } @@ -718,23 +723,21 @@ function toolchain(_buildDir, _subDir) targetdir (_buildDir .. "android-x86" .. "/bin") objdir (_buildDir .. "android-x86" .. "/obj") libdirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/include", } buildoptions { - "-march=i686", - "-mtune=atom", - "-mstackrealign", - "-msse3", - "-mfpmath=sse", - "-Wunused-value", - "-Wundef", + "-gcc-toolchain $(ANDROID_NDK_X86)", + "-target i686-none-linux-android", + "-mssse3" } linkoptions { + "-gcc-toolchain $(ANDROID_NDK_X86)", + "-target i686-none-linux-android", + "-mssse3", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o", "$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o", }