1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- -- Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
- --
- -- 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 <b.henning@digipen.edu>
- --[[
- 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, "wt")
- templateFileContents = readfile(template, "rt")
- 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
|