177 lines
5.3 KiB
Lua
Raw Normal View History

2024-11-01 16:55:46 +08:00
set_project("NativeRenderPlugin")
set_languages("cxx20", "c11")
if (is_plat("windows")) then
add_defines("NOMINMAX")
add_cxflags("/EHsc")
end
2024-12-11 17:42:08 +08:00
option("use_dx11")
set_showmenu(true)
set_default(false)
option("use_dx12")
set_showmenu(true)
set_default(false)
2024-11-01 16:55:46 +08:00
option("use_vulkan")
set_showmenu(true)
set_default(false)
option("use_metal")
set_showmenu(true)
set_default(false)
option("use_gles")
set_default(false)
2024-11-22 12:09:31 +08:00
option_end()
2024-11-01 16:55:46 +08:00
2024-11-22 12:09:31 +08:00
target("GfxPluginNativeRender")
2024-11-01 16:55:46 +08:00
add_includedirs("./gl3w")
add_includedirs("./Unity")
2024-11-22 12:09:31 +08:00
add_headerfiles("./*.h")
if is_plat("windows") then
add_includedirs("C:/VulkanSDK/1.3.283.0/Include")
add_linkdirs("C:/VulkanSDK/1.3.283.0/Lib")
end
2024-11-01 16:55:46 +08:00
2024-12-11 17:42:08 +08:00
if is_plat("windows") then
set_kind("shared")
if has_config("use_dx11") then
add_defines("SUPPORT_D3D11=1")
end
if has_config("use_dx12") then
add_defines("SUPPORT_D3D12=1")
2024-12-12 17:41:33 +08:00
add_includedirs("external/include")
add_linkdirs("external/lib")
add_links("libxess")
add_includedirs("features/")
add_headerfiles("features/**.h")
add_files("features/**.cpp")
2024-12-11 17:42:08 +08:00
end
end
2024-11-01 16:55:46 +08:00
if has_config("use_vulkan") then
set_kind("shared")
add_defines("SUPPORT_VULKAN=1")
2024-11-22 12:09:31 +08:00
-- add_links("EGL")
if is_plat("windows") then
add_links("vulkan-1")
else
add_links("vulkan")
end
if is_plat("android") then
local target = "aarch64-linux-android31"
add_cxflags("--target=" .. target)
add_asflags("--target=" .. target)
add_ldflags("--target=" .. target)
add_shflags("--target=" .. target)
end
end
2024-12-18 17:53:48 +08:00
-- xmake config -p macosx --use_gles=false --use_vulkan=false -a arm64 --use_metal=true --toolchain=xcode
-- xmake config -p iphoneos --use_gles=false --use_vulkan=false -a arm64 --use_metal=true
2024-11-22 12:09:31 +08:00
if has_config("use_metal") then
2024-11-01 16:55:46 +08:00
add_defines("SUPPORT_METAL=1")
2024-12-17 21:39:46 +08:00
add_ldflags("-fPIE", "-fPIC")
2024-12-17 20:35:00 +08:00
if is_plat("iphoneos") then
2024-12-17 21:39:46 +08:00
set_kind("static")
2024-12-17 20:35:00 +08:00
add_defines("TARGET_OS_IOS=1")
else
2024-12-17 21:39:46 +08:00
set_kind("shared")
add_cxflags("-shared")
2024-12-17 20:35:00 +08:00
add_defines("UNITY_OSX=1")
end
2024-11-01 16:55:46 +08:00
add_files("./*.mm")
2024-12-18 17:53:48 +08:00
add_frameworks("Metal")
2024-12-17 21:39:46 +08:00
add_frameworks("MetalKit")
add_frameworks("MetalFX")
2024-11-22 12:09:31 +08:00
end
if has_config("use_gles") then
2024-11-01 16:55:46 +08:00
set_kind("shared")
add_defines("SUPPORT_OPENGL_UNIFIED=1")
add_defines("SUPPORT_OPENGL_ES=1")
2024-11-22 12:09:31 +08:00
if not is_plat("windows") then
add_links("EGL")
add_links("GLESv3")
end
end
2024-11-01 16:55:46 +08:00
2024-11-22 12:09:31 +08:00
if is_plat("harmonyos") then
add_links("xengine")
2025-02-19 17:51:58 +08:00
add_cxxflags("-fPIE", "-fPIC")
add_ldflags("-fPIE", "-fPIC")
2024-11-22 14:45:23 +08:00
add_links("framegeneration")
2024-11-22 12:09:31 +08:00
add_defines("OHOS=1")
2024-11-01 16:55:46 +08:00
end
add_files("./*.cpp")
2024-11-22 12:09:31 +08:00
target_end()
-- xmake f --ndk=E:/NDK -a arm64-v8a -p android --use_gles=true --use_vulkan=true --vs=2022 -m debug
-- xmake f --toolchain=ohndk -p harmonyos -a aarch64 --use_gles=true --vs=2022 -m debug
toolchain("ohndk")
-- mark as standalone toolchain
set_kind("standalone")
2025-02-19 17:51:58 +08:00
-- set_bindir("C:/Users/xinyt/AppData/Local/OpenHarmony/Sdk/12/native/llvm/bin")
set_bindir("D:/tj/2022.3.48t2/Editor/Data/PlaybackEngines/OpenHarmonyPlayer/SDK/12/native/llvm/bin")
2024-11-22 12:09:31 +08:00
-- set toolset
set_toolset("cc", "clang")
set_toolset("cxx", "clang", "clang++")
set_toolset("ld", "clang++", "clang")
set_toolset("sh", "clang++", "clang")
set_toolset("ar", "llvm-ar")
set_toolset("ex", "llvm-ar")
set_toolset("strip", "llvm-strip")
set_toolset("mm", "llvm-mm")
set_toolset("mxx", "clang", "clang++")
set_toolset("as", "llvm-as")
add_defines("MYCLANG")
add_defines("OHOS_STL=c++_shared")
on_check(function (toolchain)
return true
end)
-- on load
on_load(function (toolchain)
-- init cxflags for the target kind: binary
toolchain:add("binary.cxflags", "-fPIE", "-pie")
-- add "-fPIE -pie" to ldflags
toolchain:add("ldflags", "-fPIE")
toolchain:add("ldflags", "-pie")
toolchain:add("ldflags", "-fPIC")
2024-11-22 12:09:31 +08:00
-- add some builtin flags
toolchain:add("cxflags", "-D__MUSL__")
local target = "aarch64-linux-ohos"
toolchain:add("cxflags", "--target=" .. target)
toolchain:add("asflags", "--target=" .. target)
toolchain:add("ldflags", "--target=" .. target)
toolchain:add("shflags", "--target=" .. target)
local sysroot = "C:/Users/xinyt/AppData/Local/OpenHarmony/Sdk/12/native/sysroot"
toolchain:add("cxflags", "--sysroot=" .. sysroot)
toolchain:add("asflags", "--sysroot=" .. sysroot)
toolchain:add("ldflags", "--sysroot=" .. sysroot)
toolchain:add("shflags", "--sysroot=" .. sysroot)
-- toolchain:add("includedirs", "C:/Program Files/Huawei/DevEco Studio/sdk/default/openharmony/native/sysroot/usr/include")
toolchain:add("includedirs", "C:/Program Files/Huawei/DevEco Studio/sdk/default/hms/native/sysroot/usr/include")
toolchain:add("linkdirs", "C:/Program Files/Huawei/DevEco Studio/sdk/default/hms/native/sysroot/usr/lib/aarch64-linux-ohos")
end)
toolchain_end()