Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / rive-cpp / build / premake5.lua
1 workspace "rive"
2     configurations {"debug", "release"}
3
4 WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS = {
5     "-Wno-c++98-compat",
6     "-Wno-c++98-compat-pedantic",
7     "-Wno-reserved-macro-identifier",
8     "-Wno-newline-eof",
9     "-Wno-old-style-cast",
10     "-Wno-unused-parameter",
11     "-Wno-float-equal",
12     "-Wno-implicit-float-conversion",
13     "-Wno-shadow",
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",
21     "-Wno-extra-semi",
22     "-Wno-cast-qual",
23     "-Wno-ignored-qualifiers",
24     "-Wno-double-promotion",
25     "-Wno-tautological-unsigned-zero-compare",
26     "-Wno-unreachable-code-break",
27     "-Wno-global-constructors",
28     "-Wno-switch-enum",
29     "-Wno-shorten-64-to-32",
30     "-Wno-missing-prototypes",
31     "-Wno-implicit-int-conversion",
32     "-Wno-unused-macros",
33     "-Wno-deprecated-copy-with-user-provided-dtor",
34     "-Wno-missing-variable-declarations",
35     "-Wno-ctad-maybe-unsupported",
36     "-Wno-vla-extension",
37     "-Wno-float-conversion",
38     "-Wno-gnu-zero-variadic-macro-arguments",
39     "-Wno-undef",
40     "-Wno-documentation",
41     "-Wno-documentation-pedantic",
42     "-Wno-documentation-unknown-command",
43     "-Wno-suggest-override",
44     "-Wno-unused-exception-parameter",
45     "-Wno-cast-align",
46     "-Wno-deprecated-declarations",
47     "-Wno-shadow-field",
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",
54     "-Wno-pedantic",
55     "-Wno-sign-compare",
56 }
57
58 project "rive"
59     kind "StaticLib"
60     language "C++"
61     cppdialect "C++17"
62     toolset "clang"
63     targetdir "%{cfg.system}/bin/%{cfg.buildcfg}"
64     objdir "%{cfg.system}/obj/%{cfg.buildcfg}"
65     includedirs {"../include"}
66
67     files {"../src/**.cpp"}
68
69     buildoptions {
70         "-Wall", "-fno-exceptions",
71         "-fno-rtti",
72         "-Werror=format",
73         "-Wimplicit-int-conversion",
74         "-Werror=vla",
75     }
76
77     filter {"system:macosx" }
78         buildoptions {
79             -- this triggers too much on linux, so just enable here for now
80             "-Wimplicit-float-conversion",
81         }
82
83     filter { "system:macosx", "configurations:release" }
84         buildoptions {"-flto=full"}
85
86     filter {"system:ios" }
87         buildoptions {"-flto=full"}
88
89     filter "system:windows"
90         architecture "x64"
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)
95
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 "")}
98     
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}"
103
104     filter { "system:android", "configurations:release" }
105         buildoptions {"-flto=full"}
106
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}"
111
112     filter { "system:android", "options:arch=x64" }
113         targetdir "%{cfg.system}/x64/bin/%{cfg.buildcfg}"
114         objdir "%{cfg.system}/x64/obj/%{cfg.buildcfg}"
115
116     filter { "system:android", "options:arch=arm" }
117         targetdir "%{cfg.system}/arm/bin/%{cfg.buildcfg}"
118         objdir "%{cfg.system}/arm/obj/%{cfg.buildcfg}"
119
120     filter { "system:android", "options:arch=arm64" }
121         targetdir "%{cfg.system}/arm64/bin/%{cfg.buildcfg}"
122         objdir "%{cfg.system}/arm64/obj/%{cfg.buildcfg}"
123
124     filter "configurations:debug"
125         defines {"DEBUG"}
126         symbols "On"
127
128     filter "configurations:release"
129         defines {"RELEASE"}
130         defines {"NDEBUG"}
131         optimize "On"
132
133 newoption {
134     trigger = "variant",
135     value = "type",
136     description = "Choose a particular variant to build",
137     allowed = {
138         { "system",   "Builds the static library for the provided system" },
139         { "emulator",  "Builds for an emulator/simulator for the provided system" }
140     },
141     default = "system"
142 }
143
144 newoption {
145     trigger = "arch",
146     value = "ABI",
147     description = "The ABI with the right toolchain for this build, generally with Android",
148     allowed = {
149         { "x86" },
150         { "x64" },
151         { "arm" },
152         { "arm64" }
153     }
154
155 }