anael wrote:Good, let us know how it is going
Officially for Maratis I want to support only one building system, because it has been already very hard to have one working simply and cross-platform, it was a big work for Davide Bacchet and we have a linux build in a big part thanks to that.
If at some point a better, simpler alternative is working as good as scons for all platform, we can think about switching to it, why not. Some details are more difficult than others, compiling the 3rdparty libs, making MCore/MEngine dynamic libs and linked properly for the plugin system dependency etc
What is the exact difference with scons ? Is it generating make-file and native compilers projects ?
What do you need to be installed in your computer ?
Well premake is a self-contained build system that uses lua, so you don't need to install anything
you could even have it as a 3rdparty lib.
If the end user is building maratis from source then premake will bootstrap it's self and then
build the rest of maratis.
If maratis is pre-compiled then there is nothing to do.
Generating project files for different platforms:
--------------------------------
For Linux:
premake4 gmake
For Mac:
premake4 xcode3
For Windows & Visual Studio 2010
premake4 vs2010
Building Maratis in different modes is easy.
----------------------------------
1. Maratis Dynamic in Release Mode: Nothing to do just type
make
2. Maratis Dynamic in Debug Mode: Just do the following for all platforms.
make config=SharedDebug
3. Maratis Static in Release Mode:
make config=Static
4. Maratis Static in Debug Mode:
make config=StaticDebug
Right now I have MCore/MEngine/MGui/MaratisCommon(Plugin System) all building and linking properly.
The only thing left to do is Maratis Editor, Player and 3rdparty libs.
Scons uses Python and hard to use.
and
Premake uses Lua and is easy to use.
Here is the premake --help output.
premake4 --help
Premake 4.3, a build script generator
Copyright (C) 2002-2010 Jason Perkins and the Premake Project
Lua 5.1 Copyright (C) 1994-2008 Lua.org, PUC-Rio
Usage: premake4 [options] action [arguments]
OPTIONS
--cc=VALUE Choose a C/C++ compiler set; one of:
gcc GNU GCC (gcc/g++)
ow OpenWatcom
--dotnet=VALUE Choose a .NET compiler set; one of:
msnet Microsoft .NET (csc)
mono Novell Mono (mcs)
pnet Portable.NET (cscc)
--file=FILE Read FILE as a Premake script; default is 'premake4.lua'
--help Display this information
--os=VALUE Generate files for a different operating system; one of:
bsd OpenBSD, NetBSD, or FreeBSD
linux Linux
macosx Apple Mac OS X
solaris Solaris
windows Microsoft Windows
--platform=VALUE Add target architecture (if supported by action); one of:
x32 32-bit
x64 64-bit
universal Mac OS X Universal, 32- and 64-bit
universal32 Mac OS X Universal, 32-bit only
universal64 Mac OS X Universal, 64-bit only
ps3 Playstation 3 (experimental)
xbox360 Xbox 360 (experimental)
--scripts=path Search for additional scripts on the given path
--version Display version information
ACTIONS
clean Remove all binaries and generated files
codeblocks Generate Code::Blocks project files
codelite Generate CodeLite project files
gmake Generate GNU makefiles for POSIX, MinGW, and Cygwin
vs2002 Generate Microsoft Visual Studio 2002 project files
vs2003 Generate Microsoft Visual Studio 2003 project files
vs2005 Generate Microsoft Visual Studio 2005 project files
vs2008 Generate Microsoft Visual Studio 2008 project files
vs2010 Generate Visual Studio 2010 project files (experimental)
xcode3 Generate Apple Xcode 3 project files (experimental)
For additional information, see http://industriousone.com/premake