Version 4.0 is a clean, almost-from-scratch rewrite of Premake. I am adding a new scripting syntax, more consistent file handling, and a full suite of automated tests for you hackers out there.
Here is what still need be completed before 4.0 can be considered complete, in no particular order. If you are trying to use the development version of 4.0 and running into problems, please check this list to ensure that your feature has been fully implemented before filing a bug report.
Set up basic application and testing frameworkSet up source code documentationEnable definition of one or more solutionsEnable definition of one of more projects per solutionGenerate C/C++ projects for GNU MakeEnable selection of source files per projectEnable use of wildcards in file selection listsSupport Cygwin and MinGW in GNU makefilesAllow project scripts to be split into multiple filesEnable listing of possible configurations per solutionEnable filtering values to particular configurationsAllow compiler symbols to be specified (defines)Allow output location to be set for generated project filesSpecify a console executableEnable generation of debugging symbolsEnable optimizing binary for speed, size, or bothAllow include file search directories to be setAllow library search directories to be setLink against existing librariesDisplay the program version information on--versionargumentDisplay the program help text on--helpargumentAllow general output locations to be set for binaries and librariesAllow the selection of a root script other than “premake4.lua”Allow location of binary target to be setAdd support for “windowed” executablesAdd support for shared librariesAdd support for static librariesAdd support for C language projectsAllow name and extension of binary target to be setAdd support for OSX dynamic libraries and application bundlesEnable extra warnings from the compilerEnable fatal warningsAllow 64-bit compatibility warnings to be disabledAllow C++ exception support to be disabledAllow frame pointers to be omittedAllow Windows DLL import libraries to be disabledAllow C++ RTTI support to be disabledEnable additional command line arguments for compiler and linkerAllow selection of source files to exclude from a projectAllow the directory for object/intermediate files to be setEnable testing for existence of files and directoriesEnable getting and setting current working directoryEnable creating and deleting directoriesAdd path manipulation functionsIdentify platform, architecture, and toolsetEnable spaces and other special characters in solution and project namesGenerate C/C++ projects for Visual Studio 2002Generate C/C++ projects for Visual Studio 2003Generate C/C++ projects for Visual Studio 2005Generate C/C++ projects for Visual Studio 2008Allow GUID value to be set on projectEnable “cleaning” all intermediate files and directories- Enable per-source file build actions
- Enable custom command-line actions and script handlers
- Enable custom command-line options
- Add support for C# language projects
- Enable managed C++ support
Enable wchar data type supportAllow edit-and-continue to be disabledEnable use of main() or WinMain()- Enable precompiled headers to be enabled or disabled
- Enable static linking against the system runtime libraries
Enable use of Unicode strings- Enable the use of unsafe code in .NET projects
- Provide a function to locate libraries installed on the system
- Enable appending one file to another
- Enable pre-build, post-build, and pre-link commands
- Enable selection of a specific .NET runtime version
- Enable verbose makefile output
- Add support for Code::Blocks
- Add support for SharpDevelop
- Add support for MonoDevelop
- Add support for CodeLite
- Anything that I forgot
Premake 4.1
- Support for Apple XCode
- Enable setting soname for shared libraries