|
@@ -0,0 +1,95 @@
|
|
|
|
|
+--
|
|
|
|
|
+-- Requires: Premake 5 (https://premake.github.io/)
|
|
|
|
|
+-- Usage: premake5 --file=premake5.lua [project / makefile format, refer to premake5 --help] --target=[target from below]
|
|
|
|
|
+--
|
|
|
|
|
+
|
|
|
|
|
+-- target option
|
|
|
|
|
+tbl_target_values =
|
|
|
|
|
+{
|
|
|
|
|
+ { "windows", "VS2015 projects targeting Windows 32/64 bits" },
|
|
|
|
|
+ { "macosx", "Xcode4 projects targeting OS X" },
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+newoption
|
|
|
|
|
+{
|
|
|
|
|
+ trigger = "target",
|
|
|
|
|
+ description = "Build environment and target to generate projects for.",
|
|
|
|
|
+ allowed = tbl_target_values
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+-- validation
|
|
|
|
|
+target_env = _OPTIONS["target"]
|
|
|
|
|
+if not target_env then
|
|
|
|
|
+ print "Command-line option --target is required with one of the following values:"
|
|
|
|
|
+ for _, v in ipairs(tbl_target_values) do
|
|
|
|
|
+ print(v[1])
|
|
|
|
|
+ end
|
|
|
|
|
+ os.exit(1)
|
|
|
|
|
+end
|
|
|
|
|
+
|
|
|
|
|
+-- solution
|
|
|
|
|
+workspace "tinyxml2"
|
|
|
|
|
+
|
|
|
|
|
+ tbl_platforms = {}
|
|
|
|
|
+ if target_env == "windows" then
|
|
|
|
|
+ tbl_platforms = {
|
|
|
|
|
+ "x86",
|
|
|
|
|
+ "x64",
|
|
|
|
|
+ }
|
|
|
|
|
+ elseif target_env == "macosx" then
|
|
|
|
|
+ tbl_platforms = {
|
|
|
|
|
+ "Universal64"
|
|
|
|
|
+ }
|
|
|
|
|
+ end
|
|
|
|
|
+ platforms(tbl_platforms)
|
|
|
|
|
+
|
|
|
|
|
+ tbl_configurations = {
|
|
|
|
|
+ "Debug",
|
|
|
|
|
+ "Release",
|
|
|
|
|
+ }
|
|
|
|
|
+ configurations(tbl_configurations)
|
|
|
|
|
+
|
|
|
|
|
+ sln_location = ".projects/"..target_env
|
|
|
|
|
+ location(sln_location)
|
|
|
|
|
+
|
|
|
|
|
+ bin_location = ".artifacts/"..target_env
|
|
|
|
|
+ obj_location = ".intermediate/"..target_env
|
|
|
|
|
+
|
|
|
|
|
+ for _, p in ipairs(tbl_platforms) do
|
|
|
|
|
+ for _, c in ipairs(tbl_configurations) do
|
|
|
|
|
+ local pc = p.."-"..c
|
|
|
|
|
+ filter{ "platforms:"..p, c }
|
|
|
|
|
+ targetdir(bin_location.."/"..pc)
|
|
|
|
|
+ libdirs(bin_location.."/"..pc)
|
|
|
|
|
+ objdir(obj_location.."/"..pc)
|
|
|
|
|
+ end
|
|
|
|
|
+ end
|
|
|
|
|
+
|
|
|
|
|
+ filter("not Release")
|
|
|
|
|
+ optimize "Debug"
|
|
|
|
|
+ symbols "On"
|
|
|
|
|
+ filter{ "Release" }
|
|
|
|
|
+ optimize "Full"
|
|
|
|
|
+ filter{}
|
|
|
|
|
+
|
|
|
|
|
+ -- projects
|
|
|
|
|
+ project "tinyxml2"
|
|
|
|
|
+
|
|
|
|
|
+ kind "staticlib"
|
|
|
|
|
+
|
|
|
|
|
+ files {
|
|
|
|
|
+ "tinyxml2.h",
|
|
|
|
|
+ "tinyxml2.cpp"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ project "xmltest"
|
|
|
|
|
+
|
|
|
|
|
+ kind "consoleapp"
|
|
|
|
|
+
|
|
|
|
|
+ links {
|
|
|
|
|
+ "tinyxml2"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ files {
|
|
|
|
|
+ "xmltest.cpp"
|
|
|
|
|
+ }
|