mirror of
				https://github.com/Laupetin/OpenAssetTools.git
				synced 2025-10-31 02:26:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| catch2 = {}
 | |
| 
 | |
| function catch2:include(includes)
 | |
| 	if includes:handle(self:name()) then
 | |
| 		includedirs {
 | |
| 			path.join(ThirdPartyFolder(), "catch2", "src"),
 | |
| 			"%{wks.location}/thirdparty/catch2"
 | |
| 		}
 | |
| 	end
 | |
| end
 | |
| 
 | |
| function catch2:link(links)
 | |
| 	links:add(self:name())
 | |
| end
 | |
| 
 | |
| function catch2:use()
 | |
| 	
 | |
| end
 | |
| 
 | |
| function catch2:name()
 | |
|     return "catch2"
 | |
| end
 | |
| 
 | |
| function catch2:project()
 | |
| 	local folder = ThirdPartyFolder()
 | |
| 	local includes = Includes:create()
 | |
| 
 | |
| 	self:writeUserConfig()
 | |
| 
 | |
| 	project(self:name())
 | |
|         targetdir(TargetDirectoryLib)
 | |
| 		location "%{wks.location}/thirdparty/%{prj.name}"
 | |
| 		kind "StaticLib"
 | |
| 		language "C++"
 | |
| 
 | |
| 		files { 
 | |
| 			path.join(folder, "catch2/src/**.cpp"),
 | |
| 			path.join(folder, "catch2/src/**.hpp"),
 | |
| 			"%{wks.location}/thirdparty/%{prj.name}/**.cpp",
 | |
| 			"%{wks.location}/thirdparty/%{prj.name}/**.hpp"
 | |
|         }
 | |
| 		
 | |
|         vpaths {
 | |
| 			["*"] = {
 | |
| 				path.join(folder, "catch2/src"),
 | |
| 				"%{wks.location}/thirdparty/%{prj.name}"
 | |
| 			}
 | |
| 		}
 | |
|         
 | |
|         defines {
 | |
|             "DO_NOT_USE_WMAIN",
 | |
| 			"CATCH_AMALGAMATED_CUSTOM_MAIN",
 | |
|             "_CRT_SECURE_NO_WARNINGS"
 | |
|         }
 | |
| 		
 | |
|         self:include(includes)
 | |
| 
 | |
| 		-- Disable warnings. They do not have any value to us since it is not our code.
 | |
| 		warnings "off"
 | |
| end
 | |
| 
 | |
| function catch2:writeUserConfig()
 | |
| 	local folder = ThirdPartyFolder()
 | |
| 	local inputFileName = path.join(folder, "catch2/src/catch2/catch_user_config.hpp.in")
 | |
| 	local outputFileName = path.getabsolute("build/thirdparty/catch2/catch2/catch_user_config.hpp")
 | |
| 
 | |
| 	local inputInfo = os.stat(inputFileName)
 | |
| 	local outputInfo = os.stat(outputFileName)
 | |
| 
 | |
| 	if inputInfo == nil then
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	if outputInfo ~= nil and inputInfo.mtime <= outputInfo.mtime then
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
| 	local fileData = io.readfile(inputFileName)
 | |
| 	fileData = string.gsub(fileData, '#cmakedefine[^\n]*', '')
 | |
| 	fileData = string.gsub(fileData, '@CATCH_CONFIG_CONSOLE_WIDTH@', '80')
 | |
| 	fileData = string.gsub(fileData, '@CATCH_CONFIG_DEFAULT_REPORTER@', 'console')
 | |
| 
 | |
| 	os.mkdir(path.getdirectory(outputFileName))
 | |
| 	os.writefile_ifnotequal(fileData, outputFileName)
 | |
| end |