Difference between revisions of "Compiling for Windows with scons"

From The Powder Toy
Jump to: navigation, search
m (note: doesn't have ide setup)
(broken libs zip, scons options summary, etc)
Line 26: Line 26:
 
To test if this worked, you can use git bash (if you already have this open, close it and restart it). Open your start menu, find "Git bash" somewhere there, probably in the git folder. Run it, it will display a shell. Type `cc` without the quotes and press enter, it should say something like "cc.exe: fatal error: no input files, compilation terminated." That is alright, means that it sees the compiler and everything works correctly. If it instead says "cc: command not found", then you did something wrong and it wasn't properly added to path. Check it again and make sure you typed it exactly.
 
To test if this worked, you can use git bash (if you already have this open, close it and restart it). Open your start menu, find "Git bash" somewhere there, probably in the git folder. Run it, it will display a shell. Type `cc` without the quotes and press enter, it should say something like "cc.exe: fatal error: no input files, compilation terminated." That is alright, means that it sees the compiler and everything works correctly. If it instead says "cc: command not found", then you did something wrong and it wasn't properly added to path. Check it again and make sure you typed it exactly.
 
<br>Now type `python -h` (no quotes), if you see "python: command not found", it can't find python, you probably didn't add it to path correctly, so check again. If it did work correctly it will print a large amount of help text and exit.
 
<br>Now type `python -h` (no quotes), if you see "python: command not found", it can't find python, you probably didn't add it to path correctly, so check again. If it did work correctly it will print a large amount of help text and exit.
<br>Lastly, to check if scons is in path, type `scons.py`, it should say "scons: *** No SConstruct file found", that's alright, since we don't even have the source at this point. If it says "scons.py: command not found", it means you've probably done something wrong in python's path setup.
+
<br>Lastly, to check if scons is in path, type `scons.py`, it should say "scons: *** No SConstruct file found", that's alright, since we don't even have the source at this point. If it says "scons.py: command not found", it means you've probably done something wrong in path setup.
  
 
== Getting Needed Libraries ==
 
== Getting Needed Libraries ==
Line 35: Line 35:
  
 
The other libraries are SDL, lua, regex and fftw. They can't be downloaded so easily, so you have to download them manually here:
 
The other libraries are SDL, lua, regex and fftw. They can't be downloaded so easily, so you have to download them manually here:
<br>https://dl.dropboxusercontent.com/u/43784416/PowderToy/MingwLibraries.zip
+
<br>http://dropcanvas.com/ch5gt/1
 
<br>Copy both of the folders into your C:\MinGW
 
<br>Copy both of the folders into your C:\MinGW
  
Line 50: Line 50:
  
 
== Compiling ==
 
== Compiling ==
Now to compile, run `scons.py --win --release`. It should check for libraries, then should start compiling (if anything fails, check config.log in the folder). Depending on your computer it will take from a few, to a few dozen minutes.
+
Now to compile, run `scons.py --win`. It should check for libraries, then should start compiling (if anything fails, check config.log in the folder). Depending on your computer it will take from a few, to a few dozen minutes.
 
If your compilation succeeds, the exe will be placed in the build/ folder, so go run it and hope it works. If it does, you can now start modding tpt.
 
If your compilation succeeds, the exe will be placed in the build/ folder, so go run it and hope it works. If it does, you can now start modding tpt.
<br>P.S., if you have a multicore processor, use `scons.py --win -j#`, replacing # with the number of cores you have, ex. -j4 for 4 cores. This will make it compile with all the cores, making it go much faster, since it can be slow especially the first time.
+
<br>P.S. If you have a multicore processor, use `scons.py --win -j#`, replacing # with the number of cores you have, ex. -j4 for 4 cores. This will make it compile with all the cores, making it go much faster, since it can be slow especially the first time.
 
 
  
 +
P.P.S. You can append a few more options after --win, for instance --release makes a release version (that is, non-beta), --debugging adds a few debug features, --64bit (if you manage to install 64-bit mingw somehow) produces a 64-bit executable.
  
 
-- written by mniip, edited by jacob1
 
-- written by mniip, edited by jacob1

Revision as of 06:37, 22 June 2013

This guide is for compiling tpt from git with scons, the official build system of tpt. You will need to install git, mingw, python, and scons in order to follow this guide. Setting everything up and then compiling tpt could take from 30 minutes to an hour depending on your internet connection and cpu speed.

Note: This guide does not include info on how to set up an ide and edit the code. You will have to get an ide yourself if you want to code easily. You may want to look at Code::Blocks or Eclipse, both good ide's, or just use what you prefer. You can configure them to automatically run the correct build command when done. If you want to use visual studio, follow that guide instead.

If you get any problems, ask for help in the Development assistance section on The Powder Toy forums.

Downloads

Start by downloading msys at: http://msysgit.github.io/
Install with the default settings.

Next, download mingw, the compiler: http://sourceforge.net/projects/mingw/files/latest/download?source=files
When it'll ask you what folder to install, make sure it's "C:\MinGW"
When it'll ask for additional components to install, select "C compiler" and "C++ compiler". Do not select "MSYS", you already have that.

Now, download python at: http://python.org/download/
Do *NOT* download version 3.x, it isn't compatible. Download 2.x instead (2.7.5 at the moment of writing.) It is also recommended you download the 32 bit version and not the 64 bit, since if not the scons install may not work. When installing make sure the installation dir is "C:\Python27\". Everything else is default.

Finally, get scons, the build system, here: http://sourceforge.net/projects/scons/files/scons/2.3.0/scons-2.3.0-setup.exe/download
Hopefully it will find your python installation automatically. There pretty much aren't any settings to adjust.

Add variables to Path

You need to add the mingw and python tools you just installed to your %path% in order to compile. Open Control panel, and go into System -> Advanced -> Environment variables. In windows 7 may be located in System and Security -> System, and then hit "Advanced System settings" on the left and click "Environment variables" at the bottom. At the bottom of here there is a list, find "Path" there, select it, click Edit. It will give you a [rather small] window for editing.
At the end you should add a semicolon and the mingw binaries directory, python bin directory, and scons script directory. That is, at the end you should add ";C:\Mingw\bin;C:\Python27;C:\Python27\Scripts\". If for some reason one of these is already in the path, don't add it again.

To test if this worked, you can use git bash (if you already have this open, close it and restart it). Open your start menu, find "Git bash" somewhere there, probably in the git folder. Run it, it will display a shell. Type `cc` without the quotes and press enter, it should say something like "cc.exe: fatal error: no input files, compilation terminated." That is alright, means that it sees the compiler and everything works correctly. If it instead says "cc: command not found", then you did something wrong and it wasn't properly added to path. Check it again and make sure you typed it exactly.
Now type `python -h` (no quotes), if you see "python: command not found", it can't find python, you probably didn't add it to path correctly, so check again. If it did work correctly it will print a large amount of help text and exit.
Lastly, to check if scons is in path, type `scons.py`, it should say "scons: *** No SConstruct file found", that's alright, since we don't even have the source at this point. If it says "scons.py: command not found", it means you've probably done something wrong in path setup.

Getting Needed Libraries

Now we need to get a few libraries to compile TPT successfully.

Let's start with easy ones, bz2 and zlib. In the git bash window still open, type this without quotes:
`mingw-get install mingw32-libbz2 bzip2 mingw32-libz zlib `

The other libraries are SDL, lua, regex and fftw. They can't be downloaded so easily, so you have to download them manually here:
http://dropcanvas.com/ch5gt/1
Copy both of the folders into your C:\MinGW

Getting the Source

Now we're actually going to get TPT's source. We're going to behave like a pro, and use git (we have git bash after all?).
Use `cd` to switch to some folder, i'll create a folder named "TPT" on my desktop and use it. (You may cd into any other folder you want to store the code, if you don't want it on your desktop. The location doesn't matter). Do these commands without the quotes
`cd Desktop`
`mkdir TPT`
`cd TPT`
The following command will actually obtain the source and all historically important information about it.
`git clone http://github.com/FacialTurd/The-Powder-Toy.git .`
The download size is ~23 megabytes, so, if you have a slow internet, go eat something meanwhile.
After the command has finished, you'll find out that the folder (TPT on desktop in my case) contains a lot of stuff, like, umm, TPT source.

Compiling

Now to compile, run `scons.py --win`. It should check for libraries, then should start compiling (if anything fails, check config.log in the folder). Depending on your computer it will take from a few, to a few dozen minutes. If your compilation succeeds, the exe will be placed in the build/ folder, so go run it and hope it works. If it does, you can now start modding tpt.
P.S. If you have a multicore processor, use `scons.py --win -j#`, replacing # with the number of cores you have, ex. -j4 for 4 cores. This will make it compile with all the cores, making it go much faster, since it can be slow especially the first time.

P.P.S. You can append a few more options after --win, for instance --release makes a release version (that is, non-beta), --debugging adds a few debug features, --64bit (if you manage to install 64-bit mingw somehow) produces a 64-bit executable.

-- written by mniip, edited by jacob1