-------- 5.0 (in progress) -------- * Completely overhauled the platform support; too many changes to list * Enabled per-project configurations and platforms * Enabled per-configuration file lists * Enabled per-configuration toolset selection * Added custom build rules * Added support for Visual Studio 2012 (mopey) * Added token expansion * Added external() to reference non-Premake generated projects * Added remove...() API to remove values from list fields * Folders containing single sub-folder now trimmed from top of source tree * Added debugformat with C7 support for Visual Studio * The error message for invalid flags now includes the offending value * The include() function will now include each file only once * The include() function can now include specific files * path.translate() now defaults to Windows-style backslashes * Added NoWarnings flag for Visual Studio (xpol) * Added debugcommand for Visual Studio (xpol) * Bug 1674173: Allow source files to have the same name * Added forceinclude() to specify forced include files * Visual Studio C# projects now support architectures * Visual Studio C# projects now support pre- and post-build commands * Added NoImplicitLink flag to force explicit linking from Visual Studio * Decoupled VS2010 smaller type checks (/RTCc) from extra warnings (/W4) * Added NoRuntimeChecks flag to disable Visual Studio default checks * Generated Visual Studio GUIDs are now deterministic * Added support for Visual Studio solution groups * Added dependson() to specify non-linking dependencies (Alexey Orlov) * Added startproject() to specify solution startup project ------- 4.4 (in progress) ------- * Feature 1590022: Source file filtering and grouping * Feature 3100379: C# support for Visual Studio 2010 * Feature 1657833: Set working directory for debugging * Added support for Haiku OS (Yuriy O'Donnell) * Patch 2963313: Enable setting .NET framework version (Justen Hyde) * Switched PS3 builds from GCC to SNC * Ignore NoRTTI flag for Managed C++ projects (Nick Darnell) * Added host.is64bit * Added os.getversion * Patch 3140456: Explicitly specify architecture for VS StaticLib (Brian Mazza) * Bug 3119793: Fixed ClCompile blocks with vs10 and PCH (Dan Dunham) * Bug 2920784: Symbol visibility in Xcode3 libraries (burnson2) * Bug 3133743: Sets ONLY_ACTIVE_ARCH = YES in Xcode debug builds (James Wynn) * Properly pass return codes back to shell in release builds * Bug 3135734: Remove WholeProgramOptimization setting in vs10 (doug) * Bug 3138377: Link dependencies ignored within "SharedLib" configuration * Bug 3163703: pdb file being set in the wrong section. (hodsondd) * Bug 3157645: Full path for xcode frameworks * Bug 3232160: Environment variables are cut off * Patch 3043933 Allow gmake to use static lib when shared lib of same name exists (Jonathan Derque) * Bug 3294459: vs10 x86_64 using incorrect debug format for minimal rebuild (learner) * Bug 3297634: Special characters in directory name Xcode3 (jdale) * Feature 3100194: English aliases for Optimize flags * Bug 3308203: Incorrect relative paths for gmake sibling static libraries (Adam) * Bug 3277343: SM_SERVERR2 is not always defined by default (Martin Ridgers) * Added os.stat * Bug 3381149: Path of PCH source file in VS10 not being translated (intyuh) * Patch 3021550: Add Wii homebrew platform (Pathogen David) * Patch 3035550: Make/Distcc outputs dependencies to wrong location * Patch 3138574: NoImportLib ignored in Windows makefiles dependencies (rjmyst3) * Patch 3367641: Remove warnings in Xcode 4 * Patch 3372345: Gmake action's PCHs don't work with Mingw (Martin Ridgers) * Patch 3317329: Support vstudio CompileAs for mixed-language projects (xpol) * Patch 3337372: Improved precompiled header support (Anders Ericsson) * Patch 3401184: Fix Gmake LDFLAGS generation order (Adam Petrone) * Patch 3381066: Fix VS2010 project references * Added debug environment variable support for Visual Studio * Added debug environment variable support for Codeblocks using gdb * Bug: Visual Studio 2010 forces x86 when platform is Native * Patch 3351583: _PREMAKE_COMMAND variable (Konstantin Tokarev) * Added new global _WORKING_DIR * Patch 3451928: VS2008 trying to build *.h files in C projects * Patch 3429777: Support for DragonFly BSD (Joachim de Groot) * Patch 3445049: Build fix for FreeBSD (Konstantin Tokarev) * Bug 3121217: Test suite fails on Linux x86_64: os.findlib broken * Patch 3428348: Add .gitignore file (Konstantin Tokarev) * Patch 3430158: Reorder LINKCMD for Gmake (rjmyst3) * Patch 3451212: Fix Visual Studio MFC with StaticRuntime * Patch 3463020: Add windres environment variable for makefiles (icebreaker) * Bug 3413866: Incorrect VS200x .csproj relative source paths * Patch 3111264: Allow path.join() to accept any number of args * Patch 3353975: Support usage of premake as a library (Konstantin Tokarev) * Patch 3505903: Fix VC2010 project reference paths (Pavel Czerný) * Patch 3305599: Add -Wextra to ExtraWarnings (ergosys) * Patch 3476176: Fix dependencies of precompiled header in makefile (Konstantin Tokarev) * Patch 3476176: Remove conditionals from makefile compiler assignments (Konstantin Tokarev) * Pull 1: Fixed path to Info.plist in Xcode projects (Adrien Anselme) * Patch 3367642: Add support for targetextension property to Xcode * Patch 3435716: Fix for PS3 config generation in VS2010 (Jake) * Patch 3441850: Use debug.traceback() as error handler (Konstantin Tokarev) * Patch 3462994: Make flag values case-insensitive (Konstantin Tokarev) * Patch 3466877: Removed -flat_namespace from Mac OS X flags (Konstantin Tokarev) * Pull 25: Add Unix support to os.getversion() (wfgleper) ------- 4.3 ------- * CHANGED LICENSE FROM GPLv2 TO BSD * Added Visual Studio 2010 C/C++ support (Liam Devine) * Added Solaris support (Dean Ross-Smith) * Added deployment and image options for Xbox360 (dvoid) * Patch 2963313: Enable setting .NET framework version (Justen Hyde) * Patch 2965229: Fix handling of '+' symbol in file patterns (Rachel Blum) * Patch 2997449: Print configuration with target (ergosys) * Patch 2997452: Suppress gmake's "nothing to be done" message (ergosys) * Patch 3011940: Add support for MFC (JTAnderson) * Patch 3053959: kind() crashes when called with no arguments (rjmyst3) * Bug 2997728: Project dependencies should be case-sensitive * Bug 3056381: Xcode project breaks on special chars * Bug 3007101: Generating PDB in Release builds is not supported * Bug 2971841: Gmake escaping of shell variable $(...) is broken * Fixed handling of icons in Xcode (bitshifter) * Added imagepath to set Xbox360 image file name (Jarod) * Patch 3063804: Set CompileAs flag for VS200x C projects (rjmyst3) * Implemented StaticRuntime flag for Xcode (William Burnson) * Improved portability of Mac OS X binaries (William Burnson) * Bug 3035545: The pattern { "./folder/*.c" } matches no files * Bug 3034222: StaticLib projects ignore linkoptions * Bug 3020382: GCC PCH not working * Bug 3016050: {"../Dir/file1.c","../../Dir/file2.c"} breaks Xcode (Stephane) * Bug 3015312: Makefiles are not quoted correctly * Bug 3097868: Removes relative paths from vs2010 filters (Robert Konrad) * Bug 3095274: Pre-compiled header support missing for VS2010 target * Bug 3100062: vs2010 Runtime library selection ------- 4.2.1 ------- * Feature 2944697: Add flag to disable Minimal Rebuild in Visual Studio * Patch 2928029: Add EnableSSE, EnableSSE2 flags * Patch 2936443: Expose configuration terms to scripts (Laurent Humbertclaude) * Bug 2928775: Error loading external Lua module with require() * Bug 2942438: Wrong runtime library linked * Bug 2931722: pchheader handling not consistent between tools * Bug 2958829: Files pattern matching including too many files * Bug 2953594: includedirs / libdirs converting absolute paths to relative * Bug 2936188: Improve handling for invalid values in lists ----- 4.2 ----- - Feature 1526976: Add support for Apple Xcode 3 - Feature 2900623: Add targetsuffix and implibsuffix properties - Added project kind to list of configuration filters - Feature 2839002: Add gcc switch to improve header dependency generation (Johannes Spohr) - Feature 2832906: Global variable (_SCRIPT) for current script path - Feature 2905303: Enable better folder matching in file lists - Feature 2919629: Add help target for makefiles - Feature 2820644: Add Xbox360 deployment and image options - Bug 2909463: Fix Xcode handling of Obj-C++ .mm files - Bug 2903430: Using relative instead of absolute paths with $() macro - Bug 2910691: Duplicate build options - Bug 2910639: Nil reference on dylib project dependency - Bug 2872066: Two test failures in 4.1.2 - Bug 2912756: dylibs missing lib prefix - Bug 2910202: Code::Blocks building C files as C++ - Bug 2926917: Use target name for Visual Studio PDB file - Bug 2927604: Unable to build Premake with Visual Studio - Clean action now removes MonoDevelop .pidb files correctly - Added os.executef() ------- 4.1.2 ------- - Fixed ManagedExtension setting for Visual Studio - Fixed os.match() bug for large result sets (David Raulo) - Patch 2840052: Order problem of static link - Patch 2802722: Floating Point Model Flags (Suigintou) - Patch 2865333: Support for ObjC and ObjC++ sources (Johannes Spohr) - Patch 2832852: Fix descriptions in cmd help (Sebastian Schuberth) - Patch 2832848: Show default script name in help (Sebastian Schuberth) ------- 4.1.1 ------- - Use libtool instead of ar for Mac OS X Universal static libraries - Fixed Xbox 360 linker settings in Visual Studio - Remove platform-specific intermediate objects on clean - Bug 2819232: Buildoptions not used when creating Makefile for C# - Bug 2813297: OS X universal config should be "univ" (William Burnson) - Bug 2814179: Xbox 360 precompiled headers not working ----- 4.1 ----- - Added support for cross-compiling target platforms - Added Xbox 360 support to Visual Studio 2005/2008 - Added Mac OS X universal binary support - Added Playstation 3 support - Added precompiled header support for GCC - Support links and libdirs for Visual Studio static libraries - Fail gracefully when list is assigned to string field - Changed GCC flags to -fno-exceptions and -fno-rtti - Improved performance of configuration building step - Fixed crash when configuration is missing a kind - Patch 2031626: Support for additional manifest files (Colin Graf) - Patch 2558089: workaround for --as-needed/correct link order (idl0r) - Patch 2609028: verbose linking in makefile (kaidokert) - Bug 2564404: FatalWarnings has no effect with gmake target - Bug 2550759: pchheader option has wrong type - Bug 1900333: Parentheses in build path - Bug 2790865: SharedLib on OSX fixes (Ash Berlin) - Bug 2790882: Trailing slash in path.getabsolute (Ash Berlin) RC2 -> RC3 - Bug 2805763: GCC PCH breaks on path - Bug 2709641: Location field does not propagate to projects - Bug 2675518: Dependencies wrong on config links - Bug 2152526: Code::Blocks doesn't build PCH correctly on GCC RC1 -> RC2 - Removed additional MonoDevelop files in clean action - Fixed naming of system libraries in Visual Studio link step - Set OS to Windows when generating for Visual Studio - Bug 2801257: Linker error LNK1112 when cross-compiling for x64 ----- 4.0 ----- This version is a complete rewrite of Premake. - A new, more readable and extensible syntax for projects - More robust syntax validation - A new command-line format, with better argument validation - Improved path handling across all project settings - Upgraded to Lua 5.1.4 - Many, many bug fixes RC4 -> Final - Set Mac OS X linker flags for Code::Blocks - Bug 2533504: Files above project root not added to project RC3 -> RC4 - Embed scripts instead of bytecodes to avoid portability issues - solution() and project() now only set the active object when called with a name; remains unchanged otherwise RC2 -> RC3 - Bug: GCC Windows release builds of Premake4 crash on script errors - Patched Lua to load precompiled bytecodes on PPC architectures. - Display paths of generated files RC1 -> RC2 - Enabled use of absolute Windows paths to different drive letter - Bug: Post-build commands run before build on Code::Blocks - Removed FatalWarnings build flag - Fixed GCC 4.2 warnings (Ryan Pusztai) - Enable Windows linking to shared libraries even with NoImportLib flag set (just in case) - Fixed handling of paths in links - Added "ToolsVersion" attribute to VS2005 and VS2008 C# projects - Fixed separator between library dependencies in C++ makefiles - Added missing os.copyfile() function - Bug: Sometimes takes a long time to complete on Linux - Enabled Lua popen support on Linux and Mac OS X ----- 3.7 ----- - Updated Lua to 5.1.3 - Added new CodeLite support target (Ryan Pusztai) - Added new cb-ow (Code::Blocks Open Watcom) target (Tim Channon) - Place OSX winexe's into Content/MacOS folder (William Burnson) - Sibling executables may now be listed in package.links - Bug 1520012: Improper Makefiles when filenames have spaces (Diaa Sami) - Bug 2045506: "no-exceptions" flag ignored for VS200x (Benoit Miller) - Bug 2034470: Error in cmd line error handler - Bug 2114152: package or config table isn't generated automatically ----- 3.6 ----- - Patch 1946122: Add support for VS2008 (Ryan Pusztai) - Patch 1913448: Win32 crash when using '--clean --usetargetpath' (David Walters) - Patch 1771168: luaL_getn speed optimization (Richard O'Grady) - Bug 1939089: Premake segfault on Linux/PPC (Fabio Till) - Fixed "bad argument #2 to 'chdir'" error - Disable -MMD on multiple -arch flags (poor man's Universal binary support) ----- 3.5 ----- - 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) - 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 ----- 3.4 ----- - 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) ----- 3.3 ----- - 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' ----- 3.2 ----- - 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 ----- 3.1 ----- - 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 ----- 3.0 ----- - 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 ----- 2.4 ----- - 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' ----- 2.3 ----- - 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 ----- 2.2 ----- - Worked around VS.NET bug for .NET assemblies > 64K. - Added --very-verbose flag to GNU generator. - GNU generator now supports assembly sources. ----- 2.1 ----- - File extension of generated binaries can now be set with config.targetextension. - Windows targets now handle .def files for DLLs. ----- 2.0 ----- - 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 ----- 1.9 ----- - 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. ----- 1.8 ----- - 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. ----- 1.7 ----- - 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. ------- 1.6.1 ------- - VS7 generator crashed if a package was built before one of its dependencies. Now immediately assigns UUID before processing. ----- 1.6 ----- - Added support for Visual Studio 2003 and SharpDevelop. - Added binaries directory as a reference path for VS7. ----- 1.5 ----- - 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. ----- 1.4 ----- - Bug fixes to the path manipulation routines. - GNU makefiles are regenerated when premake scripts change. ----- 1.3 ----- - 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 algorithm. ----- 1.2 ----- - 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. ----- 1.1 ----- - 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 eventually. - Major cleanup of the source code. ----- 1.0 ----- - 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. ------- 0.9.2 ------- - Added --with-mono and --with-pnet options. - VS7 C# projects will now properly use the configured library paths. ------- 0.9.1 ------- - 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. ------- 0.9.0 ------- - Initial public release.