User Tools

Site Tools


proton:linux_setup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
proton:linux_setup [2012/02/26 14:42] akiproton:linux_setup [2023/06/08 07:42] – [Grabbing Proton SDK] seth
Line 3: Line 3:
 In order to build the examples on Linux you first need some dependencies installed on your system. All of the needed dependencies are common in Linux distributions so you'll probably find everything needed through your distribution's package manager. The name of the packages vary slightly from distribution to another so you'll might need to search for the specific names a little. In order to build the examples on Linux you first need some dependencies installed on your system. All of the needed dependencies are common in Linux distributions so you'll probably find everything needed through your distribution's package manager. The name of the packages vary slightly from distribution to another so you'll might need to search for the specific names a little.
  
-The build scripts available for Linux use [[http://www.cmake.org/|cmake]] so you have to have that installed. In addition you need a bunch of other usual build tools like gcc, libc, make and possibly others. The Linux version uses SDL so you'll also need some development packages for SDL. It's usually called SDL-devel and in order to hear sounds you'll also need SDL_mixer-devel. This is not a complete list of the dependencies so you might need to try if the building succeeds and if not then install some more dependencies. Sometimes the build process outputs a sane error message that tells what is missing, sometimes it doesn't. Good luck :-P+The build scripts available for Linux use [[http://www.cmake.org/|cmake]] so you have to have that installed. In addition you need a bunch of other usual build tools like gcc, libc, make and possibly others. The Linux version uses SDL so you'll also need some development packages for SDL2. It's usually called SDL2-devel and in order to hear sounds you'll also need SDL2_mixer-devel. This is not a complete list of the dependencies so you might need to try if the building succeeds and if not then install some more dependencies. Sometimes the build process outputs a sane error message that tells what is missing, sometimes it doesn't. Good luck :-P
  
-==== Compiling and running RTBareBones ====+==== Grabbing Proton SDK ====
  
-This is the process I follow when compiling the examplesYou may vary this to your needs if you want since cmake is quite flexible in what it can doBut it's a safe bet to follow these quidelines if you are not yet too familiar with cmake.+Ok, this was tested on a Raspberry Pi with Stretch, but normal linux distributions should be roughly the same. 
 + 
 +<code bash> 
 +sudo apt install git 
 +cd ~ 
 +git clone https://github.com/SethRobinson/proton.git 
 +</code>
  
-It's a good practice to do so called out-of-source builds. This way the compiled object and other files don't pollute the source directory but instead they are put to a directory of their ownWith cmake out-of-source builds are really easy.+Projects you compile are put INTO the Proton directory.  Sort of weird, but the end result is all paths and dependencies are relative when possible which make compiled for many platforms easier.  Nothing to setup.
  
-So fire up your console and let'start typing.+There is no lib/dll to make for Proton, the .cpp files are just used directly in the projects.  There is however a tool called RTPack that is used to build fonts (.rtfont files), images (.rttex files, don't have to use them though), and general purpose compression. (one gotcha: compressed files use the .rtpack extension EXCEPT .rtfont/.rttex, those keep the same extension.  Proton'file handling automatically decompresses things when needed)
  
-First let's make a directory where the building will happen.+Let's make the RTPack tool now.
  
 <code bash> <code bash>
-cd RTBareBones/linux +cd proton/RTPack/linux 
-mkdir build+sh linux_compile.sh
 </code> </code>
  
-Then enter that directory, call cmake and then make.+Hopefully that worked.
  
-<code bash> +**Note:** By default, RTPack is compiled with the RT_NO_PVR flag, so support for a weird texture format called PVRTC isn't included If you really want that, you an go download the PVRTC libs. [[proton:rtpack|(more info here)]], but you probably don't need it unless you're trying to optimize an iOS game or something.  It was a big thing in 2010, I don't know about now.
-cd build +
-cmake .. +
-make +
-</code>+
  
-The argument to cmake (..) tells where it's supposed to search for the CMakeLists.txt build file that tells it what to do. If you make your build directory somewhere else than shown above you would need to adjust this argument accordingly but other than that the process should be exactly the same as here. 
  
-If the build finishes without errors you'll end up with a binary called ''rtbarebones'' in the build directory. In the process cmake has created a bunch of subdirectories and files but you don't need to care about these - let cmake do its stuff.+==== Compiling and running RTBareBones ====
  
-In order to run the compiled program you'll need to change to the directory which contains the images and other resources and execute the binary from there. This way the program can find the resources and load them correctly.+This is the process I follow when compiling the examples. You may vary this to your needs if you want since cmake is quite flexible in what it can do. But it's a safe bet to follow these quidelines if you are not yet too familiar with cmake. 
 + 
 +Generally with linux stuff, you make a "build" directory and do your stuff there.  We do that too, but we do it from the <project name>/linux/build which is slightly different.  This is a side effect of linux related things being relegated to the linux dir due to the originally window-centric approach of Proton. 
 + 
 +So to compile RTBareBones, just do:
  
 <code bash> <code bash>
-cd ../../bin +cd proton/RTBareBones/linux 
-../linux/build/rtbarebones+sh linux_compile.sh
 </code> </code>
  
-Now you should see the application window.+(If you look at linux_compile.sh, it creates the build dir, does the cmake and make stuff, then copies the resulting binary to ../bin, which is where you should run it from.  (../bin is the standard location to put binaries in Proton SDK and where resources like jpgs/sounds are put)
  
-==== Compiling and running the other examples ====+If the build finishes without errors you'll end up with a binary called ''RTBareBones'' in the ../bin directory.
  
-The compilation process for the other examples is exactly the same that what was explained for RTBareBones above. But in addition the other examples than RTBareBones need resources to be built as explained here: [[proton:win_setup2|Compiling RTSimpleApp]]. You can do this resource building in Linux as well. The difference is that you need to compile the RTPack tool before it can be done. +To try it:
- +
-Compiling RTPack is a similar process to compiling the examples. The build script here is also for cmake. There is a helper script that chooses a correct build directory for you so that the resource building in future steps will go smoothly. Do these commands in your console:+
  
 <code bash> <code bash>
-cd tools/RTPack +cd ../bin 
-./build.sh+./RTBareBones
 </code> </code>
  
-The resulting binary called ''RTPack'' will appear to a subdirectory called ''build''. Let it stay there.+On my Raspberry Pi I see a spinning triangle fullscreen.  Under Gnome or something I assume it would open in a window due to SDL2 being smart? (Not sure, didn't test it. -Seth )
  
-Now let's build RTSimpleApp just like RTBareBones:+====Compiling and running the other examples====
  
-<code bash> +The compilation process for the other examples is exactly the same that what was explained for RTBareBones above
-cd RTSimpleApp/linux +
-mkdir build +
-cd build +
-cmake .+
-make +
-</code>+
  
-Next we'll build the resources. There is a helper script available that can be used in Linux to do this. There are similar helper scripts for Windows as well. The difference is that while there is a separate Windows script called update_media.bat for each example there is only one script for Linux that tries to take care of all the examples.+But in addition the other examples than RTBareBones need resources to be built as explained here: [[proton:win_setup2|Compiling RTSimpleApp]]
  
-Run the script and see it do its job:+To do this in linux using RTPack, you need to move into your projects media directory and run build_media.sh, which itself runs RTPack/linux/build_media.sh to do the work.
  
-<code bash> +Let's build RTSimpleApp, then build its media:
-cd ../../media +
-../../tools/linux/update_media.sh +
-</code> +
- +
-This will convert the fonts and images to correct format and copy the converted resources to the ''bin'' directory of the example. Next you can run the example:+
  
 <code bash> <code bash>
 +cd RTSimpleApp/linux
 +sh linux_compile.sh
 +cd ../media
 +sh build_media.sh
 cd ../bin cd ../bin
-../linux/build/rtsimpleapp+./RTSimpleApp
 </code> </code>
  
-The rest of the examples can be compiled and run in a similar way.+If that worked, the final stuff (.rtfont and .rttex and .rtpack files probably) will be copied into ../bin/interface, and you'll run the app.
  
-=== How update_media.sh works ===+===How update_media.sh works===
  
 The resource building script goes to the subdirectories of the ''media'' directory and converts fonts and images to the Proton format. It uses a configuration file called ''texture_conversion_flags.txt'' that contains options for converting the images. The examples' ''media'' directories already contain these configuration files but if you'll build your own applications and want to use this system make sure you have these files in place. The resource building script goes to the subdirectories of the ''media'' directory and converts fonts and images to the Proton format. It uses a configuration file called ''texture_conversion_flags.txt'' that contains options for converting the images. The examples' ''media'' directories already contain these configuration files but if you'll build your own applications and want to use this system make sure you have these files in place.
- 
 ==== Debug builds  ==== ==== Debug builds  ====
  
Line 107: Line 102:
  
 ==== Command line arguments ==== ==== Command line arguments ====
 +
 +**Note 7/28/2018:**  I don't think any of this applies anymore since I switched the linux builds to use the normal SDL/SDL2Main.cpp file as a base? -Seth
  
 The Linux versions of the examples accept a few command line arguments. You can choose the video mode and emulated environment (e.g. iOS, Android,...) from a predefined set of presets. You can get a list of the available modes by running any of the examples with option ''-l''. The Linux versions of the examples accept a few command line arguments. You can choose the video mode and emulated environment (e.g. iOS, Android,...) from a predefined set of presets. You can get a list of the available modes by running any of the examples with option ''-l''.
  
 <code bash> <code bash>
-[user@localhost]$ ./rtsimpleapp -l+[user@localhost]$ ./RTSimpleApp -l
 Available video modes: Available video modes:
  
Line 128: Line 125:
  
 <code bash> <code bash>
-./rtsimpleapp "iPad Landscape"+./RTSimpleApp "iPad Landscape"
 </code> </code>
  
proton/linux_setup.txt · Last modified: 2023/06/08 13:21 by seth