SDL 2.0 and its Meta-Build System; you can help!

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64,
ppc, etc.) If you would like to list more information about your hardware,
that would be fine, too.

Thanks,
Ben Henning

I would suggest prioritizing generating the Visual C++ projects. The
automake scripts are fairly baked at this point and automatically include
new files, but having to update 3 different sets of Visual Studio projects
every time you want to add a source file is really time consuming and error
prone.

Ideally I could have a set of template projects that didn’t include any
source files, but had the correct compiler settings for each compiler, and
then pass a project name, source file list and dependencies to the tool and
it would spit out complete projects. I could use this to very quickly
output projects for all the SDL_* libraries I maintain.

If it could eventually do the same for Xcode (both Mac OS X and iOS) that
would be awesome.

To answer your question, I regularly build SDL in these environments:

  • Windows with mingw-w64 32/64-bit
  • Windows with Visual Studio 2008 32/64-bit
  • Mac OS X with Xcode 4.6.2
  • Ubuntu 12.04 32/64-bit
  • iOS with Xcode 4.6.2
  • Android with ndk-r8eOn Sat, Jun 1, 2013 at 9:15 AM, Ben Henning <henning.benmax at gmail.com>wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who
reads this post what development platforms they regularly use SDL 2.0 on?
I’d like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7,
iOS, etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86,
amd64, ppc, etc.) If you would like to list more information about your
hardware, that would be fine, too.

Thanks,
Ben Henning


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

I do most of my development on linux (LFS), and use cross compilation
to the destination

linux -> x86_64-w64-mingw32 (mingw64), gcc 4.8.0, binutils 2.32.2
linux -> x86_64-apple-darwin11 (unsuccessful in actually compiling
SDL2 last I tried), gcc 4.8.0, odcctools Last time I tried to cross
compile SDL2, it complained about pascal strings (no longer part of
gcc) so instead just found a mac w/ xcode to make SDL2.framework and
SDL2_mixer.framework [but now that SDL2 rc1 is out, I’ll probably use
the pregenerated versions]. Also I don’t have a mac/xcode.
linux -> x86_64-ubuntu1304-linux-gnu, gcc 4.8.0, binutils 2.32.2 (made
up arch, I wanted to compile for ubuntu’s libs instead of mine).
and I wanted to build a similar toolchain for fedora as well.

someday, wanted to build a linux -> haiku cross compiler, and see how
far I can get, although not sure if SDL2 (or the other libraries I
use) support it. [I just like making cross compilers, not sure if there’s a valid reason(for me) compiling to haiku. But life would be less interesting if everything needed a reason].On Sat, Jun 1, 2013 at 1:06 PM, Sam Lantinga wrote:

I would suggest prioritizing generating the Visual C++ projects. The
automake scripts are fairly baked at this point and automatically include
new files, but having to update 3 different sets of Visual Studio projects
every time you want to add a source file is really time consuming and error
prone.

Ideally I could have a set of template projects that didn’t include any
source files, but had the correct compiler settings for each compiler, and
then pass a project name, source file list and dependencies to the tool and
it would spit out complete projects. I could use this to very quickly
output projects for all the SDL_* libraries I maintain.

If it could eventually do the same for Xcode (both Mac OS X and iOS) that
would be awesome.

To answer your question, I regularly build SDL in these environments:

  • Windows with mingw-w64 32/64-bit
  • Windows with Visual Studio 2008 32/64-bit
  • Mac OS X with Xcode 4.6.2
  • Ubuntu 12.04 32/64-bit
  • iOS with Xcode 4.6.2
  • Android with ndk-r8e

On Sat, Jun 1, 2013 at 9:15 AM, Ben Henning <henning.benmax at gmail.com> wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who
reads this post what development platforms they regularly use SDL 2.0 on?
I’d like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7,
iOS, etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86,
amd64, ppc, etc.) If you would like to list more information about your
hardware, that would be fine, too.

Thanks,
Ben Henning


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


Nathan Coulson (conathan)

Location: British Columbia, Canada
Timezone: PST (-8)
Webpage: http://www.nathancoulson.com

I use Mac OS X 10.6-10.8 with clang to build x86/x86_64 binaries.

Can you at least explain why you have chosen premake instead of other possible
solutions (cmake, gyp, etc.)? The last official release of premake, according
to http://industriousone.com/premake, is 4.3, happened in November 2010, so the
project doesn’t seemed to be very active, how does it support current versions
of common IDEs such as VS2012 and Xcode 4.6? Do you intend to use a fork like
https://bitbucket.org/premake/premake-dev? How solid is that fork? Will you
spend more time fixing premake than actually making a meta build system for SDL?

  • JiangOn Sat, Jun 1, 2013 at 6:15 PM, Ben Henning <henning.benmax at gmail.com> wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads
this post what development platforms they regularly use SDL 2.0 on? I’d like
Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS, etc.),
Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64, ppc,
etc.) If you would like to list more information about your hardware, that
would be fine, too.

I looked at premake’s syntax, so far it’s the simplest I’ve seen, so I
imagine that’s the reason. My biggest grip is that to build premake
you need premake -_-’ Yes, I know there are prebuilt binaries, but
that sounds like chicken and egg to me.

2013/6/1, Jiang Jiang :> On Sat, Jun 1, 2013 at 6:15 PM, Ben Henning <henning.benmax at gmail.com> wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who
reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like
Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.),
Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64, ppc,
etc.) If you would like to list more information about your hardware,
that
would be fine, too.

I use Mac OS X 10.6-10.8 with clang to build x86/x86_64 binaries.

Can you at least explain why you have chosen premake instead of other
possible
solutions (cmake, gyp, etc.)? The last official release of premake,
according
to http://industriousone.com/premake, is 4.3, happened in November 2010, so
the
project doesn’t seemed to be very active, how does it support current
versions
of common IDEs such as VS2012 and Xcode 4.6? Do you intend to use a fork
like
https://bitbucket.org/premake/premake-dev? How solid is that fork? Will you
spend more time fixing premake than actually making a meta build system for
SDL?

  • Jiang

SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Thanks for all the replies so far, especially about prioritizing the Visual
Studio generated projects.

Jiang Jiang, I chose premake because of its portability and simplicity. It
may not have been updated in a while, but it’s proved stable in the past.
It’s currently the first choice, but not the only choice. There is the
option of using a fork for premake, like you mentioned, but that will only
happen if getting newer functionality is necessary. I’ve found another meta
build system called waf that looks promising, but it seems to only support
Eclipse, Visual Studio, and XCode projects. It may work initially, but the
best idea is a catch-all solution.

In terms of premake as opposed to say, cmake, premake is a steal in
portability. All you need to do is include the binary for the platform
you’re generating the build files (which can just be thrown into the SDL
repository, since premake is quite small) and run it one time, presuming
you don’t make any changes of your own to the build files. Beyond that, lua
is quite nice and a lot of other meta build systems have a tendency to use
their own language, versus an existing language perfectly suitable for
things like configurations.

Thanks,
BenOn Sat, Jun 1, 2013 at 3:33 PM, Sik the hedgehog <sik.the.hedgehog at gmail.com wrote:

I looked at premake’s syntax, so far it’s the simplest I’ve seen, so I
imagine that’s the reason. My biggest grip is that to build premake
you need premake -_-’ Yes, I know there are prebuilt binaries, but
that sounds like chicken and egg to me.

2013/6/1, Jiang Jiang :

On Sat, Jun 1, 2013 at 6:15 PM, Ben Henning <@Ben_Henning> wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who
reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like
Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.),
Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64,
ppc,

etc.) If you would like to list more information about your hardware,
that
would be fine, too.

I use Mac OS X 10.6-10.8 with clang to build x86/x86_64 binaries.

Can you at least explain why you have chosen premake instead of other
possible
solutions (cmake, gyp, etc.)? The last official release of premake,
according
to http://industriousone.com/premake, is 4.3, happened in November
2010, so
the
project doesn’t seemed to be very active, how does it support current
versions
of common IDEs such as VS2012 and Xcode 4.6? Do you intend to use a fork
like
https://bitbucket.org/premake/premake-dev? How solid is that fork? Will
you
spend more time fixing premake than actually making a meta build system
for
SDL?

  • Jiang

SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

premake4 - as software - is not outdated at all.

What is outdated is its website (kind of). It does not mention the bitbucket repo at all, and the documentation regarding how to use it do not contain the new targets supported by version 4.4 (XCode 4, Visual Studio 2012). However, the scripting reference section is up-to-date, and the people at the forums are willing to help you.

Anyway, the latest premake4 version can be found at http://bitbucket.org/premake/premake-stable. Recently, stable support for Visual studio 2012 was added, and
https://bitbucket.org/premake/premake-stable/wiki/Using%20Premake is the updated guide to using premake [but it doesn’t mention xcode4]------------------------
C is the God’s Programming Language

Does it mean that premake doesn’t have stable support for Xcode 4?

  • JiangOn Sun, Jun 2, 2013 at 10:22 AM, neoaggelos wrote:

premake4 - as software - is not outdated at all.

What is outdated is its website (kind of). It does not mention the bitbucket
repo at all, and the documentation regarding how to use it do not contain
the new targets supported by version 4.4 (XCode 4, Visual Studio 2012).
However, the scripting reference section is up-to-date, and the people at
the forums are willing to help you.

Anyway, the latest premake4 version can be found at
http://bitbucket.org/premake/premake-stable. Recently, stable support for
Visual studio 2012 was added, and
https://bitbucket.org/premake/premake-stable/wiki/Using%20Premake is the
updated guide to using premake [but it doesn’t mention xcode4]

Nope…

As far as I know, xcode 4 support has grown stable enough------------------------
C is the God’s Programming Language

On, Sat Jun 01, 2013, Ben Henning wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64,
ppc, etc.) If you would like to list more information about your hardware,
that would be fine, too.

FreeBSD 8.x & 9.x, amd64 and x86, gcc + clang
ArchLinux x86_64, gcc
Windows XP 32- and 64-bit, Visual Studio 10
Windows 7 64-bit, Visual Studio 10

Different hardware and software configurations, some more Linux
derivates within VirtualBox.

Cheers
Marcus
-------------- next part --------------
A non-text attachment was scrubbed…
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20130602/f08e2e0c/attachment.pgp

  • Debian 7.0 Wheezy amd64 with free Nouveau Nvidia OpenGL driver, g++, gcc,
    autotools, i686-w64-mingw32-gcc/g++ to cross-compile Win32
    OpenGL/Direct3D 9.0. (main dev platform)

  • Ubuntu 12.04 LTS with proprietary Nvidia OpenGL driver (otherwise
    same as Debian above)

  • Windows Vista 32bit, Windows 7 64bit, Visual Studio 8 (will install
    MinGW toolchain later too).

  • Mac OSX 10.6 and 10.7 with XCode 4, gcc, g++, autotools. Used for Mac

    • iOS builds/testing.

Most development done on Debian machine such as building Linux
32/64bit, Win32 OpenGL, Win32 Direct3D9 and Android. Mac is used for
building/testing Mac + iOS.

Cheers,
AndreasOn Sat, Jun 01, 2013 at 09:15:38AM -0700, Ben Henning wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64,
ppc, etc.) If you would like to list more information about your hardware,
that would be fine, too.

Ben Henning wrote:

Finally, I can definitely use some help preliminarily. Can anyone who reads this post what development platforms they regularly use SDL 2.0 on? I’d like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS, etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64, ppc, etc.) If you would like to list more information about your hardware, that would be fine, too.

Hi Ben,

I typically build, and use SDL with the following:

  • iOS, via the latest Xcode (currently 4.6.2) plus Clang, using whatever the latest iOS SDK is (currently 6.1), all running on OS X Mountain Lion (10.8.x). I currently target iOS 4.3+ for deployment. For CPU architectures, I target armv7 and x86 (the latter of which is for iOS Simulator use).
  • Windows, via Visual C++ 2012, for 32-bit Windows desktop apps, using Windows 8 as a build platform. For CPU architectures, I target 32-bit x86.
  • OS X, via the latest Xcode (currently 4.6.2) plus Clang, using whatever the latest OS X SDK is (currently 10.8), running on OS X Mountain Lion. I currently target OS X 10.6+ for deployment. For CPU architectures, I target both 32-bit and 64-bit Intel.

Cheers,
– David Ludwig

We currently are using the SDL makefile to generate static versions of the SDL library for 32-bit Windows and Mac libraries, and both 32- and 64-bit binaries for Linux.

We have legacy support for webOS, which used SDL (included in the OS) and we also compile the BlackBerry SDL port.

This is either dynamically or statically linked with a platform binary for each target for the above target platforms. Users don’t have to compile SDL, and can target each platform with a single build command using our own custom build process.

Each target is done without the use of a template project file, with the exception of Xcode for our own iOS target implementation (it does not use SDL for licensing reasons) since that is necessary. It’s also a headache.

We are looking at moving to something new. There are obviously fixes and improvements in SDL 2.0 that would be nice. Having 64-bit support on Mac would be nice, and (possibly) moving away from our own Android and iOS low-level implementations to a shared SDL implementation would be ideal. However, it is important that we be able to keep the user workflow the same. This means that SDL is compiled in advance, so the user never touches an SDL make process.

Is it feasible to make SDL 2.0 simple to compile on Windows, Mac and Linux (and for iOS and Android) with a minimum level of dependencies (and hopefully ones that play nice on each platform… make is not the best on Windows) but then not require an SDL-based make process when we are preparing a user’s application?

Thank you!On Sat, 01 Jun 2013 09:15:38 -0700, Ben Henning <henning.benmax at gmail.com> wrote:

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace cmake with premake. I have a blog that I’ll be updating throughout the summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads this post what development platforms they regularly use SDL 2.0 on? I’d like Operating >System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS, etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64, ppc, etc.) If you >would like to list more information about your hardware, that would be fine, too.

Thanks,
Ben Henning


Using Opera’s mail client: http://www.opera.com/mail/

2013/6/3 Joshua Granick

**
We currently are using the SDL makefile to generate static versions of the
SDL library for 32-bit Windows and Mac libraries, and both 32- and 64-bit
binaries for Linux.

We have legacy support for webOS, which used SDL (included in the OS) and
we also compile the BlackBerry SDL port.

This is either dynamically or statically linked with a platform binary for
each target for the above target platforms. Users don’t have to compile
SDL, and can target each platform with a single build command using our own
custom build process.

Each target is done without the use of a template project file, with the
exception of Xcode for our own iOS target implementation (it does not use
SDL for licensing reasons) since that is necessary. It’s also a headache.

We are looking at moving to something new. There are obviously fixes and
improvements in SDL 2.0 that would be nice. Having 64-bit support on Mac
would be nice, and (possibly) moving away from our own Android and iOS
low-level implementations to a shared SDL implementation would be ideal.
However, it is important that we be able to keep the user workflow the
same. This means that SDL is compiled in advance, so the user never touches
an SDL make process.

Is it feasible to make SDL 2.0 simple to compile on Windows, Mac and Linux
(and for iOS and Android) with a minimum level of dependencies (and
hopefully ones that play nice on each platform… make is not the best on
Windows) but then not require an SDL-based make process when we are
preparing a user’s application?

Thank you!

SDL 2.0 is already “simple” (at least in developer terms) to compile on Mac
and Linux from the command line, non interactively, I compile it with the
configure;make method (and appropriate environment variables to cross
compile where needed) from Linux to Linux i386/x86_64, Windows 32bits, plus
Android ARM and Android Intel using the Android.mk files SDL provides. From
OS X I build it for OS X i386 and x86_64, iOS armv6, armv7 and armv7s,
Windows 32, and Android as well. Native Windows builds are a mystery to me,
but the preferred approach seems to be using the Visual Studio projects,
though a similar method to that of *nix systems should be possible using
Cygwin/Mingw. For a list of platforms and maybe some tricks required to
configure SDL, check out [1].

That being said, while the project Ben is engaging will eventually have the
side effect of making SDL easier to build for the end user, the main goal
(as I see it at least), is to make it easier for us SDL devs to maintain
the mess of VS and Xcode projects. As an end user you’ll probably won’t see
much of a difference, except in the number of uncaught bugs that spring up
every time a source file gets added or moved around.

[1]
https://bitbucket.org/gabomdq/ignifuga/src/8c4c6dd6431bc1a2a6f13af5cea6ffe54a34d0a4/tools/modules/sdl?at=default--
Gabriel.

Message-ID:
<CAGxTCezkttzMv51GP=sj3H+Nuzrexdhhk0AL_FHORc99oRjcow at mail.gmail.com>
Content-Type: text/plain; charset=“iso-8859-1”

Hey guys,

I’m tasked with creating a unified meta-build system for SDL and replace
cmake with premake. I have a blog that I’ll be updating throughout the
summer:

http://gsocben.blogspot.com/

Feel free to comment about it on here or on there. All feedback is
encouraged!

Finally, I can definitely use some help preliminarily. Can anyone who reads
this post what development platforms they regularly use SDL 2.0 on? I’d
like Operating System (e.g. Ubuntu, Mac OSX Mountain Lion, Windows 7, iOS,
etc.), Compiler (MinGW/GCC, GCC, MSVC, etc.), and architecture (x86, amd64,
ppc, etc.) If you would like to list more information about your hardware,
that would be fine, too.

Thanks,
Ben Henning

Windows XP 32 bit, using MinGW/MSys> Date: Sat, 1 Jun 2013 09:15:38 -0700

From: Ben Henning <henning.benmax at gmail.com>
To: SDL Development List
Subject: [SDL] SDL 2.0 and its Meta-Build System; you can help!

Windows 7 / Cygwin / x86_64