set_project("NativeRenderPlugin") set_languages("cxx20", "c11") if (is_plat("windows")) then add_defines("NOMINMAX") add_cxflags("/EHsc") end option("use_dx11") set_showmenu(true) set_default(false) option("use_dx12") set_showmenu(true) set_default(false) option("use_vulkan") set_showmenu(true) set_default(false) option("use_metal") set_showmenu(true) set_default(false) option("use_gles") set_default(false) option_end() target("GfxPluginNativeRender") add_includedirs("./gl3w") add_includedirs("./Unity") 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 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") add_includedirs("external/include") add_linkdirs("external/lib") add_links("libxess") add_includedirs("features/") add_headerfiles("features/**.h") add_files("features/**.cpp") end end if has_config("use_vulkan") then set_kind("shared") add_defines("SUPPORT_VULKAN=1") -- 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 if has_config("use_metal") then add_defines("SUPPORT_METAL=1") add_ldflags("-fPIE", "-fPIC") if is_plat("iphoneos") then set_kind("static") add_defines("TARGET_OS_IOS=1") else set_kind("shared") add_cxflags("-shared") add_defines("UNITY_OSX=1") end add_files("./*.mm") add_frameworks("MetalKit") add_frameworks("MetalFX") end if has_config("use_gles") then set_kind("shared") add_defines("SUPPORT_OPENGL_UNIFIED=1") add_defines("SUPPORT_OPENGL_ES=1") if not is_plat("windows") then add_links("EGL") add_links("GLESv3") end end if is_plat("harmonyos") then add_links("xengine") add_links("framegeneration") add_defines("OHOS=1") end add_files("./*.cpp") 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") set_bindir("C:/Users/xinyt/AppData/Local/OpenHarmony/Sdk/12/native/llvm/bin") -- 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") -- 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()