Home | History | Annotate | Download | only in tinyxml2
      1 --
      2 -- Requires: Premake 5 (https://premake.github.io/)
      3 -- Usage: premake5 --file=premake5.lua [project / makefile format, refer to premake5 --help] --target=[target from below]
      4 --
      5 
      6 -- target option
      7 tbl_target_values =
      8 {
      9 	{ "windows", "VS2015 projects targeting Windows 32/64 bits" },
     10 	{ "macosx", "Xcode4 projects targeting OS X" },
     11 }
     12 
     13 newoption
     14 {
     15 	trigger = "target",
     16 	description = "Build environment and target to generate projects for.",
     17 	allowed = tbl_target_values
     18 }
     19 
     20 -- validation
     21 target_env = _OPTIONS["target"]
     22 if not target_env then
     23 	print "Command-line option --target is required with one of the following values:"
     24 	for _, v in ipairs(tbl_target_values) do
     25 		print(v[1])
     26 	end
     27 	os.exit(1)
     28 end
     29 
     30 -- solution
     31 workspace "tinyxml2"
     32 
     33 	tbl_platforms = {}
     34     if target_env == "windows" then
     35         tbl_platforms = {
     36             "x86",
     37             "x64",
     38         }
     39     elseif target_env == "macosx" then
     40         tbl_platforms = {
     41             "Universal64"
     42         }
     43     end
     44 	platforms(tbl_platforms)
     45 
     46 	tbl_configurations = {
     47 		"Debug",
     48 		"Release",
     49 	}
     50 	configurations(tbl_configurations)
     51 
     52 	sln_location = ".projects/"..target_env
     53 	location(sln_location)
     54 
     55 	bin_location = ".artifacts/"..target_env
     56 	obj_location = ".intermediate/"..target_env
     57 
     58 	for _, p in ipairs(tbl_platforms) do
     59 		for _, c in ipairs(tbl_configurations) do
     60 			local pc = p.."-"..c
     61 			filter{ "platforms:"..p, c }
     62 				targetdir(bin_location.."/"..pc)
     63 				libdirs(bin_location.."/"..pc)
     64 				objdir(obj_location.."/"..pc)
     65 		end
     66 	end
     67 
     68 	filter("not Release")
     69 		optimize "Debug"
     70 		symbols "On"
     71 	filter{ "Release" }
     72 		optimize "Full"
     73 	filter{}
     74 
     75 	-- projects
     76 	project "tinyxml2"
     77 
     78 		kind "staticlib"
     79 
     80 		files {
     81 			"tinyxml2.h",
     82 			"tinyxml2.cpp"
     83 		}
     84 
     85 	project "xmltest"
     86 
     87 		kind "consoleapp"
     88 
     89 		links {
     90 			"tinyxml2"
     91 		}
     92 
     93 		files {
     94 		    "xmltest.cpp"
     95         }
     96