-- Copyright (C) 1997-2016 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages -- arising from the use of this software. -- -- Permission is granted to anyone to use this software for any purpose, -- including commercial applications, and to alter it and redistribute it -- freely. -- -- Meta-build system using premake created and maintained by -- Benjamin Henning --[[ sdl_gen_config.lua Given a series of set configuration values from the project definitions, this file contains a series of functions that generate valid preprocessor definitions to enable or disable various features of the SDL2 library. These definitions are pasted into a template SDL config header file, which is then saved in the local directory and referenced to in generated project files. This file depends on sdl_file.lua. ]] -- The line that must exist in the template file in order to properly paste -- the generated definitions. local searchKey = "/%* Paste generated code here %*/\n" local configFile, templateFileContents local insertLocation -- This function begins config header generation given the name of the generated -- file and the name of the template file to use. function startGeneration(file, template) configFile = fileopen(file, "w") templateFileContents = readfile(template, "r") insertLocation = templateFileContents:find(searchKey) if insertLocation then configFile:write(templateFileContents:sub(1, insertLocation - 1)) end end -- Adds a table of configuration values to the generated file. Each -- configuration line is wrapped around a preprocessor definition check, so they -- can be manually overwritten by the developer if necessary. The definition -- pastes string versions of both the key and the value on the line, where -- either is allowed to be empty. That means the table stores key-value pairs. function addConfig(tbl) -- if no insert location, don't paste anything if not insertLocation then return end for k,v in pairs(tbl) do configFile:print(0, "#ifndef " .. k) configFile:print(0, "#define " .. tostring(k) .. " " .. tostring(v)) configFile:print(0, "#endif") end end -- Finishes the generation and writes the remains of the template file into the -- generated config file. function endGeneration() if insertLocation then configFile:write(templateFileContents:sub(insertLocation + #searchKey - 2)) else -- write entire file since nothing is being pasted configFile:write(templateFileContents) end configFile:close() end