1. Jason McKesson
  2. premake for usage


premake for usage / CHANGES.txt

 4.0 (in progress)
This version is a complete rewrite of Premake.

* New, more readable syntax for project information
* Better validation of command-line arguments
* Standardized path handling across all project settings
* Upgraded to Lua 5.1.2


* Prevent creation of import libraries on OS X
* Improved handling of dylibs on OS X
* Patch 1771977: Ability to compile C source as C++ in Code::Blocks (Ryan Pusztai)
* Patch 1771168: luaL_getn speed optimization (Richard O'Grady)
* Bug 1804810: out-implib not present in linux gnu compler toolchain
* Bug 1806949: .Net reference paths are broken when bindir is specified
* Bug 1806960: Make clean does not remove .mdb files
* Bug 1831389: Makefiles stored in subdirs contain no targets on first run


* Added `no-pch` flag to suppress precompiled headers
* Added App.config support to GNU makefiles
* Add os.mkdir() to script environment
* Makefile now creates target directory before copying .NET references
* Feature 1520182: Enhanced file-handling functions
* Bug 531878: Problems with relative paths
* Bug 1723867: Config-specific post-build on GNU target (Benoit Miller)
* Bug 1596826: XML targets doesn't escape xml entities
* Bug 1600155: Core dump due to newpackage() and matchfiles()
* Bug 1608895: resgen command shown
* Bug 1639730: Output filename is not set
* Bug 1729227: non-portable executable with relative library path
* Bug 1559951: default clean rule removes package dir
* Patch 1733674: PCH support for Code::Block targets (Ryan Pusztai)
* Patch 1746563: Ability to specify GUID for VS targets (Ryan Pusztai)
* Patch 1754867: Creating import lib of different name (Ryan Pusztai)


* Added support for prebuild, prelink, and postbuild commands
* Added `target` global variable to script environment
* Added build flag `no-edit-and-continue`
* Added build flags `native-wchar` and `no-native-wchar`
* Added build flag `no-manifest`
* Added build flag `seh-exceptions` (VS2005 only)
* Added `resdefines`, `respaths`, and `resoptions`
* Added `prebuildcommands`, `prelinkcommands`, and `postbuildcommands`
* Added `pchheader` and `pchsource` (Visual Studio only)
* Feature 1337547: Package-level bindir and libdir
* Bug 1565755: Generated makefiles do not work with MSYS
* Bug 1587955: Target path ignored for libs
* Bug 1574725: Static library extension for "gnu" target
* Bug 1522861: Fixed by using "ar -rcs" instead of "ar -cr && ranlib"
* Bug 1656816: Mkdir set wrong directory rights
* Bug 1655595: Compile/build problem on FreeBSD
* Bug: "gnu" clean rule doesn't work in cmd.exe
* Improved behavior of Linux findlib()
* Updated Code::Blocks support to latest project version (major="1" minor="6")
* Patch 1681666: GNU targets always show the console if kind = 'winexe'


* Added support for Code::Blocks
* Updated MonoDevelop support
* Upgraded Lua to 5.0.3
* Added new matchdirs() to Lua script environment
* Expose list of packages as _PACKAGES global in Lua
* Turn off edit-and-continue in release builds with symbols
* Bug 1559873: libpaths inserts extra space after -L


* Added support for Visual Studio 2005
* Added support for Windows resources to GNU make target
* Added path handling functions to Lua environment
* Added matchrecursive() for recursive file searches
* Added os.fileexists() function to Lua environment
* Added os.appendfile() function to Lua environment
* Changed `monoresgen` to `resgen` to keep up with Mono project
* Added `mono2` .NET compiler set for Mono .NET 2.0 support
* Feature 1096677: exclude files from matchfiles (package.excludes)
* Bug 1439463: VS2003 RTTI problem
* Bug 1439446: GNU Makefile problem under Mingw32
* Bug 1422068: package.path="." causes bad makefiles
* Bug 1431530: makefile target fails when project path specified


* Upgraded Lua interpreter to version 5.0.1
* The options table now stores simple values, rather than tables
* Completed MonoDevelop support
* Improved .NET resource handling for GNU generator
* Added unit test suite
* Merged Scott Graham unicode build flag patch
* Removed package.warninglevel in favor of extra-warnings flag
* Added package.targetprefix 
* Overhauled structure of generated GNU makefiles
* Added --os command line option
* Fixed bug 1268588: Use gcc to link C packages
* Fixed bug 1363306: GNU C# should copy referenced DLLs


* Added chdir() to Lua script environment
* Merged Thomas Harning's patch for .NET resources on GNU
* Fixed bug 1194702: Can't put multiple packages in same directory
* Fixed bug in GNU shared library builds (doh!)
* Added target 'vs2002' to replace 'vs7'


* Added 'project.config[]' with 'bindir' and 'libdir'
* Merged Scott Graham's "warninglevel" patch.
* Fixed bug 1153484: Import lib in wrong directory.
* Fixed bug 1013352: Stack overflow with large projects.
* Fixed bug 945406: package.files, bad value = crash


* Worked around VS.NET bug for .NET assemblies > 64K.
* Added --very-verbose flag to GNU generator.
* GNU generator now supports assembly sources.

* File extension of generated binaries can now be set
  with config.targetextension.
* Windows targets now handle .def files for DLLs.


* Can now specify build actions per file
* Include paths are now passed to VC7 resource compiler
* Removed _WIN32 define from Cygwin makefiles
* Added package.objdir to set intermediates directory
* Added rmdir() to Lua script environment
* A big bag of bug fixes


* Made verbose mode even more verbose.
* posix.c now builds properly as C.
* Fixed package dependency generation for GNU and VS2003.
* Display Lua version number in usage text.
* Fixed VS link between *.aspx and *.aspx.cs files.
* Fixed VS link between *.resx and *.cs files.
* Fixed *.d file generation for gcc 2.9x.
* Unified various help options under '--help'.
* Bin and Lib paths can now be arbitrarily long.
* linkoptions are now applied in VC6 and VC7 projects.


* Added support for ASP.NET projects.
* Fixed a bug in VC6 support for static libraries.
* matchfiles() now uses package path instead of script path.
* Added --verbose option.
* No longer apply no-rtti and no-exceptions to *.c files.


* Location of generated project files can now be specified with
  the project.path variable.
* Inter-package dependencies are fixed for GNU makefiles.
* No longer need to execute in same directory as project script.
* Added "c" language specifier.
* Added support for .resx and .config files to C# projects.
* Added support for full assembly names in .NET references.
* Fixed handling of paths in package.target variable.
* Improved support for SharpDevelop.
* Started support for OS X.
* Added support for Digital Mars compiler.


* VS7 generator crashed if a package was built before one of its
  dependencies. Now immediately assigns UUID before processing.
* Added support for Visual Studio 2003 and SharpDevelop.
* Added binaries directory as a reference path for VS7.

* Added initial support for building static libraries.
* Added "no-main" flag, prevents overriding WinMain() on 
  Windows builds.
* Added "--no-rtti" and "no-exceptions" build flags to
  disable those C++ features.
* Display error message when project has no packages.
* Moved VC7 *.pdb files into intermediates directory.

* Bug fixes to the path manipulation routines.
* GNU makefiles are regenerated when premake scripts change.

* Added support for the Cygwin environment.
* Added "static-runtime" build flag to statically link against C/C++
  standard runtime libraries.
* Bug fixes to Visual Studio 6 and 7 generators and path reversing


* Standardized format of command-line options.
* Can now handle custom command-line options in script.
* Added new function findlib().
* Added new C++ build flag "managed" for writing C++ .NET code.
* Can now use open-source C# compilers in VS6 generator.
* Several bug fixes to the VS7 generator.


* Added support for custom build configurations. Added "optimize",
  "optimize-size", "optimize-speed", and "no-symbols" flags to control
  build settings.
* Added matchfiles() to select files using wildcards.
* Added "unsafe" flag for C# projects.
* Added newpackage() function for creating new package objects inline,
  instead of creating separate scripts.
* Changed include() to dopackage() and option() to addoption(). The old
  versions have been kept for compatibility, but will be deprecated
* Major cleanup of the source code.


* Fixed a bug related to the reference paths in VS7 C# projects.
* Display a warning message if a reference path can't be found.
* Automatically create bin and lib directories if they do not exist.
* GNU C# projects will now properly use the configured library paths.
* Added --with-mono and --with-pnet options.
* VS7 C# projects will now properly use the configured library paths.
* Switched to Lua (http://www.lua.org/) for project script parsing.
* Add support for custom project options.
* Changed 'type' to 'kind' to avoid conflict with Lua function of the same name.
* Changed 'conexe' to 'exe' because I liked it better.
* Changed 'library' to 'dll' for C# projects to keep things consistent.


* Initial public release.