Development Roadmap

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 framework
  • Set up source code documentation
  • Enable definition of one or more solutions
  • Enable definition of one of more projects per solution
  • Generate C/C++ projects for GNU Make
  • Enable selection of source files per project
  • Enable use of wildcards in file selection lists
  • Support Cygwin and MinGW in GNU makefiles
  • Allow project scripts to be split into multiple files
  • Enable listing of possible configurations per solution
  • Enable filtering values to particular configurations
  • Allow compiler symbols to be specified (defines)
  • Allow output location to be set for generated project files
  • Specify a console executable
  • Enable generation of debugging symbols
  • Enable optimizing binary for speed, size, or both
  • Allow include file search directories to be set
  • Allow library search directories to be set
  • Link against existing libraries
  • Display the program version information on --version argument
  • Display the program help text on --help argument
  • Allow general output locations to be set for binaries and libraries
  • Allow the selection of a root script other than “premake4.lua”
  • Allow location of binary target to be set
  • Add support for “windowed” executables
  • Add support for shared libraries
  • Add support for static libraries
  • Add support for C language projects
  • Allow name and extension of binary target to be set
  • Add support for OSX dynamic libraries and application bundles
  • Enable extra warnings from the compiler
  • Enable fatal warnings
  • Allow 64-bit compatibility warnings to be disabled
  • Allow C++ exception support to be disabled
  • Allow frame pointers to be omitted
  • Allow Windows DLL import libraries to be disabled
  • Allow C++ RTTI support to be disabled
  • Enable additional command line arguments for compiler and linker
  • Allow selection of source files to exclude from a project
  • Allow the directory for object/intermediate files to be set
  • Enable testing for existence of files and directories
  • Enable getting and setting current working directory
  • Enable creating and deleting directories
  • Add path manipulation functions
  • Identify platform, architecture, and toolset
  • Enable spaces and other special characters in solution and project names
  • Generate C/C++ projects for Visual Studio 2002
  • Generate C/C++ projects for Visual Studio 2003
  • Generate C/C++ projects for Visual Studio 2005
  • Generate C/C++ projects for Visual Studio 2008
  • Allow GUID value to be set on project
  • Enable “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 support
  • Allow edit-and-continue to be disabled
  • Enable 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