2 configurations {"debug", "release"}
4 WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS = {
6 "-Wno-c++98-compat-pedantic",
7 "-Wno-reserved-macro-identifier",
10 "-Wno-unused-parameter",
12 "-Wno-implicit-float-conversion",
14 "-Wno-sign-conversion",
15 "-Wno-inconsistent-missing-destructor-override",
16 "-Wno-nested-anon-types",
17 "-Wno-suggest-destructor-override",
18 "-Wno-non-virtual-dtor",
19 "-Wno-unknown-argument",
20 "-Wno-gnu-anonymous-struct",
23 "-Wno-ignored-qualifiers",
24 "-Wno-double-promotion",
25 "-Wno-tautological-unsigned-zero-compare",
26 "-Wno-unreachable-code-break",
27 "-Wno-global-constructors",
29 "-Wno-shorten-64-to-32",
30 "-Wno-missing-prototypes",
31 "-Wno-implicit-int-conversion",
33 "-Wno-deprecated-copy-with-user-provided-dtor",
34 "-Wno-missing-variable-declarations",
35 "-Wno-ctad-maybe-unsupported",
37 "-Wno-float-conversion",
38 "-Wno-gnu-zero-variadic-macro-arguments",
41 "-Wno-documentation-pedantic",
42 "-Wno-documentation-unknown-command",
43 "-Wno-suggest-override",
44 "-Wno-unused-exception-parameter",
46 "-Wno-deprecated-declarations",
48 "-Wno-nonportable-system-include-path",
49 "-Wno-reserved-identifier",
50 "-Wno-thread-safety-negative",
51 "-Wno-exit-time-destructors",
52 "-Wno-unreachable-code",
53 "-Wno-zero-as-null-pointer-constant",
63 targetdir "%{cfg.system}/bin/%{cfg.buildcfg}"
64 objdir "%{cfg.system}/obj/%{cfg.buildcfg}"
65 includedirs {"../include"}
67 files {"../src/**.cpp"}
70 "-Wall", "-fno-exceptions",
73 "-Wimplicit-int-conversion",
77 filter {"system:macosx" }
79 -- this triggers too much on linux, so just enable here for now
80 "-Wimplicit-float-conversion",
83 filter { "system:macosx", "configurations:release" }
84 buildoptions {"-flto=full"}
86 filter {"system:ios" }
87 buildoptions {"-flto=full"}
89 filter "system:windows"
91 defines {"_USE_MATH_DEFINES"}
92 buildoptions {WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS}
93 staticruntime "on" -- Match Skia's /MT flag for link compatibility
94 runtime "Release" -- Use /MT even in debug (/MTd is incompatible with Skia)
96 filter {"system:ios", "options:variant=system" }
97 buildoptions {"-mios-version-min=10.0 -fembed-bitcode -arch armv7 -arch arm64 -arch arm64e -isysroot " .. (os.getenv("IOS_SYSROOT") or "")}
99 filter {"system:ios", "options:variant=emulator" }
100 buildoptions {"-mios-version-min=10.0 -arch arm64 -arch x86_64 -arch i386 -isysroot " .. (os.getenv("IOS_SYSROOT") or "")}
101 targetdir "%{cfg.system}_sim/bin/%{cfg.buildcfg}"
102 objdir "%{cfg.system}_sim/obj/%{cfg.buildcfg}"
104 filter { "system:android", "configurations:release" }
105 buildoptions {"-flto=full"}
107 -- Is there a way to pass 'arch' as a variable here?
108 filter { "system:android", "options:arch=x86" }
109 targetdir "%{cfg.system}/x86/bin/%{cfg.buildcfg}"
110 objdir "%{cfg.system}/x86/obj/%{cfg.buildcfg}"
112 filter { "system:android", "options:arch=x64" }
113 targetdir "%{cfg.system}/x64/bin/%{cfg.buildcfg}"
114 objdir "%{cfg.system}/x64/obj/%{cfg.buildcfg}"
116 filter { "system:android", "options:arch=arm" }
117 targetdir "%{cfg.system}/arm/bin/%{cfg.buildcfg}"
118 objdir "%{cfg.system}/arm/obj/%{cfg.buildcfg}"
120 filter { "system:android", "options:arch=arm64" }
121 targetdir "%{cfg.system}/arm64/bin/%{cfg.buildcfg}"
122 objdir "%{cfg.system}/arm64/obj/%{cfg.buildcfg}"
124 filter "configurations:debug"
128 filter "configurations:release"
136 description = "Choose a particular variant to build",
138 { "system", "Builds the static library for the provided system" },
139 { "emulator", "Builds for an emulator/simulator for the provided system" }
147 description = "The ABI with the right toolchain for this build, generally with Android",