Tutorial: How to install Chocolate Doom w/ sound on Raspbian


21 posts
by Johnyz » Fri Nov 02, 2012 9:40 pm
Hey everybody,
since there are quite a few articles about playing Doom using Chocolate Doom on Arch Linux, but none about Raspbian, I decided I'd write one! First, I have to warn you. Unlike Arch Linux, where you can install this software with the package manager, here we have to compile it, since it doesn't seem to be in the repositories yet.

First off, we need to prepare a folder for the source code. I have a folder called Sources in my home directory where I direct all my source code and compiling related needs. So, let's start by creating one:
Code: Select all
cd ~
mkdir Sources
cd Sources


Next, we will download the .tar.gz archive from SourceForge either with Midori or NetSurf or download it on your computer and use SSH to transfer it to the Sources folder:
http://downloads.sourceforge.net/project/chocolate-doom/chocolate-doom/1.7.0/chocolate-doom-1.7.0.tar.gz

Then unpack it, delete the archive and navigate into the new folder:
Code: Select all
tar -xvf chocolate-doom-1.7.0.tar.gz
rm chocolate-doom-1.7.0.tar.gz
cd chocolate-doom-1.7.0


Before we start configuring and compiling, we need to download a pretty huge list of packages, they are mainly SDL related so they should be useful to you on your next compiling adventures.
Code: Select all
sudo apt-get update
sudo apt-get install gcc build-essential libsdl1.2-dev libsdl1.2debian libsdl-image1.2 libsdl-image1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl-net1.2 libsdl-net1.2-dev timidity


When everything is installed, we can finally run the configuration script.
Code: Select all
./configure

(NOTE: If this gives you an error, it is most likely due to a part of your compiling masquerade is missing. Try googling the error and you will most likely find what you need to apt-get in order to fix it.)

Finally, we can start compiling. This will take some time but not nearly as long as Q3A.
Code: Select all
make


After compiling finishes, we will install our new binaries with the followning command:
Code: Select all
sudo make install

NOTE: You need to run this using sudo or as root, because the installing script copies binaries, icons and .desktop files to the /usr/share folder. On the bright side, this means that everything gets neatly embedded in your LXDE menu. Due to the way chocolate-doom is launched this is a bit unneeded, but we will talk about that later (at least we have the icon).

To configure Chocolate Doom, you need to run the following command from the terminal:
Code: Select all
chocolate-setup

This will bring you up a nice DOS-looking window where you can configure our new software. Under display configuration, you can either choose the full screen, but if you have a Full HD LCD like me, I reccomend hitting A, disabling "Fix aspect ratio" and then selecting 1280x800, since it tends to be quite laggy on full 1920x1080. Hit the escape key to return to the original menu. Since there is no joystick to be configured, we will head right to the keyboard configuration. If you want controls similar to more modern FPS games, set Move Forward to W, Move Backward to S, Strafe Left to A, Strafe Right to D and you can set Turn Left to Q and Turn Right to E or whatever you like and leave Speed On on Shift and Strafe On on Alt. Press escape to return and you can skip the Mouse configuration, since everything there is set by default to the "average" levels. You can fiddle around there yourself later. Go to Sound configuration and make sure Sound Effects is set to Digital and that Music playback is set to Native MIDI. Once you checked that, return to the main menu and select Save parameters and launch DOOM. Now, since there are no WAD files yet, the game will not lauch but the settings will be saved.

Now, we need to get the WAD files. A little google search will tell you how to *cough* *cough* extract these files from your original Doom CD. Alternatively, you can use Doom 2, Ultimate Doom, TNT: Eviluion or Plutonia. Log into your Raspberry Pi through SSH as root (for example using WinSCP) and make create a folder called doom in /usr/share and put your doom.wad, doom2.wad, tnt.wad or plutonia.wad. I have tried Strife and Hexen as well, but for some strange reason they don't work for me.

Then you can finally start the game using the terminal with the following command:
Code: Select all
chocolate-doom -iwad /usr/share/(name of your file).wad


Congratulations! You have now got Doom running on your Raspberry Pi.


OPTIONAL: Create a WAD-specific launcher so you don't have to use the terminal all the time

Open up LeafPad and type the following text in:
Code: Select all
[Desktop Entry]
Name=Doom 1
Exec=chocolate-doom -iwad /usr/share/doom/doom.wad
Icon=chocolate-doom
Type=Application
Comment=Conservative Doom source port. Loaded with a Doom1 WAD.
Categories=Game;ActionGame;

And save it on your desktop as doom1.desktop. The exact name doesn't really matter, since the name specified inside the file is the one getting displayed. Bang, you got your easy desktop launcher for Doom. Can you even ask for more? Well... Of course you can. Let me introduce you to the:

OPTIONAL 2: Create a laucher for multiple kinds of Doom using Zenity

So, let's say you happen to own both Doom 1, Doom 2, and on top of it you also own TNT and Plutonia. And you don't want to have four different icons. Then let us create a launcher with all these options! Using a little inspiration from the ever-popular Python Games, we will make ourselves a nice little menu using Zenity. Open up LeafPad, or, if you have it, Geany and paste the following script there:
Code: Select all
#!/bin/sh

RET=0
GAME=$(zenity --list --width=350 --height=250 --radiolist --title="Choose your game" --column "Select" --column="Game" TRUE "Doom 1/Ultimate Doom" FALSE "Doom 2" FALSE "TNT: Evilution" FALSE "The Plutonia Experiment"  )
RET=$?
echo $GAME
if [ "$GAME" = "Doom 1/Ultimate Doom" ]; then
   chocolate-doom -iwad /usr/share/doom/doom.wad
elif [ "$GAME" = "Doom 2" ]; then
   chocolate-doom -iwad /usr/share/doom/doom2.wad
elif [ "$GAME" = "TNT: Evilution" ]; then
   chocolate-doom -iwad /usr/share/doom/tnt.wad
elif [ "$GAME" = "The Plutonia Experiment" ]; then
   chocolate-doom -iwad /usr/share/doom/plutonia.wad
else
   echo "Cancelled..."
fi

And save it somewhere nice, like your home folder, under the name chocolate-doom-launcher (without the extension). Open up terminal, navigate to the file you just saved and issue these two commands:
Code: Select all
chmod +x chocolate-doom-launcher
sudo cp chocolate-doom-launcher /usr/bin

From now on, you have a new terminal command that brings up a nice little launcher for all your Doom related business. Now let's turn it into a pretty little icon, shall we? For the last time, open LeafPad or Geany and create a new file and paste this into it:
Code: Select all
[Desktop Entry]
Name=Chocolate Doom Launcher
Exec=chocolate-doom-launcher
Icon=chocolate-doom
Type=Application
Comment=One launcher for all Doom realted games.
Categories=Game

And save it on your desktop as chocolate-doom-launcher.desktop. If you want this launcher to appear in your menu as well, open up terminal for the last time and type in these two commands:
Code: Select all
cd ~/Desktop
sudo cp chocolate-doom-launcher.desktop /usr/share/applications


And that's it. You now have a fully working, configured installation of Chocolate Doom 1.7.0 with working MIDI sound thru Timidity, with a launcher for different games both on your desktop and in your applications menu. Time to give yourself a pat on the back, and go play some Doom! :arrow: Enjoy!

Sources of some information used: viewtopic.php?p=83495 http://www.sparkfun.com/tutorials/372
Posts: 3
Joined: Fri Nov 02, 2012 7:40 pm
by billb » Sat Nov 03, 2012 12:24 am
Excellent tutorial -- very well written. Thanks!

I've noticed you can run it straight from the terminal as well (without launching X), as long as you choose an 8-bit video mode in chocolate-setup. Hard to tell what resolution its actually running at, though my terminal is at 1920x1080 when I launch it.

And I see timidity launching at startup every time now, using a small amount of memory and no CPU time. Not really a concern for me with a 512MB Pi.
User avatar
Posts: 175
Joined: Wed Sep 19, 2012 10:27 pm
by Johnyz » Sat Nov 03, 2012 9:21 am
Thanks the heads up about running without X! I didn't know that. Timidity launches because it is used to play back the music, beacause we selected it during installation. You can also select the OPL AdLib emulation (I just verified that works too), but the music is pretty quiet even at max volume, plus MIDI offers better quality as well.
Posts: 3
Joined: Fri Nov 02, 2012 7:40 pm
by LeSanglier » Sun Jan 20, 2013 8:12 pm
Thank you Johnyz !
I can now play Doom on my Raspberry Pi !! :D
Mon blog sur le Raspberry Pi : http://framboisepi.fr/
Pour avoir plus de chance d'avoir une réponse à votre question,
allez sur le forum français Rasberry Pi : http://forum.raspfr.org
Posts: 221
Joined: Fri Jan 11, 2013 8:11 pm
Location: In Hell with God in Longwy
by UsefulDoor » Sun Jan 20, 2013 10:37 pm
How do you use SSH to transfer it to the Sources folder?
Posts: 5
Joined: Sun Jan 20, 2013 7:29 am
by LeSanglier » Mon Jan 21, 2013 9:24 am
From a linux computer that has all .wad :

[~] ➔ cd JEUX/DOOM/Wads
[~/JEUX/DOOM/Wads] ➔ ls
doom2.wad doom.wad heretic.wad hexen.wad prboom.cfg tnt31.wad tranmap.dat
doomu.wad freedoom.wad hexdd.wad plutonia.wad prboom.wad tnt.wad
[~/JEUX/DOOM/Wads] ➔ scp *wad pi@192.168.1.100:/home/pi/JEUX/DOOM/Doom

192.168.1.100 : the ip address of the raspberry pi
/home/pi/JEUX/DOOM/Doom : The directory on the raspberry pi where they will have wads
Mon blog sur le Raspberry Pi : http://framboisepi.fr/
Pour avoir plus de chance d'avoir une réponse à votre question,
allez sur le forum français Rasberry Pi : http://forum.raspfr.org
Posts: 221
Joined: Fri Jan 11, 2013 8:11 pm
Location: In Hell with God in Longwy
by 6677 » Tue Jan 22, 2013 3:58 pm
How this did not turn up when I was searching for how to get doom on the pi will forever be beyond me.


As for hexen not working. Hexen used a slightly updated form of the engine. Chocolate doom aims to be near identical to the original doom engine including original bugs. It doesnt support the extra hexen extensions. You need the raven branch of chocolate doom for that to work: http://www.chocolate-doom.org/wiki/inde ... ven-branch
Posts: 382
Joined: Wed Mar 14, 2012 9:23 pm
by QBall1977 » Tue Mar 12, 2013 6:12 am
Brilliant,

Thanks for the tutorial, well written, executed and thought out. You should do more.

:D :D :D :D :D

A DOOM is now over 7 years old has it not fallen out of copyright? I think the Carmack et al would approve of this approach.
____________________________________________
Looking for where to start - try Kernel Panic - http://goo.gl/EEQ5J
User avatar
Posts: 44
Joined: Thu Aug 09, 2012 10:06 am
Location: Hull, East Yorkshire
by CerialPhreak » Wed Mar 13, 2013 1:46 am
I'm going to try to add this to EmulationStation. I haven't installed yet, but will I be able to configure Chocolate to use my usb gamepad?
Posts: 1
Joined: Sun Mar 10, 2013 7:47 pm
by Profusion44 » Wed Jul 03, 2013 4:04 am
I have followed the steps here for installing chocolate doom. I get all the way to the part where I enter chocolate-setup at the terminal and I get a response like this:

bash: chocolate-doom: command not found

This occurs whether I am in the "~/Sources/chocolate-doom-1.7.0 $" or the setup folder within the directory I just mentioned. It also yields the same response at the initial command line whe opening terminal.

I am a bit new to Linux and terminal usage, so I assume I am just missing some trivial steps somewhere. If anyone has any suggestions I would like to hear them.

I'm on raspberry pi model b running raspbian OS installed using the NOOBS image.

This is happening on a mostly fresh install of the OS. Aside from upgrade updates and the chocolate doom related files, I ran only one other command at the terminal to install a package manager.

Sudo apt-get install synaptic -y && gksudo synaptic

Thanks again.
Posts: 4
Joined: Wed Jul 03, 2013 3:49 am
by antiriad » Fri Dec 27, 2013 4:27 pm
Hi,
I'd like to install chocolate Doom on my rPi, but I don't like the fact that timidity run at boot occupying (also a small amount of) RAM. There is a way to avoid this?

Thank you!
User avatar
Posts: 78
Joined: Sun Nov 17, 2013 7:38 pm
Location: Italy
by Vanfanel » Sun Dec 29, 2013 3:23 pm
@antiriad:

Look for the timidity service launch script in /etc/init.d
Let's say it's something like "/etc/init.d/timidity".
Now simply disable that script: "sudo insserv -r timidity"
Posts: 267
Joined: Sat Aug 18, 2012 5:58 pm
by antiriad » Sun Dec 29, 2013 3:41 pm
Vanfanel wrote:@antiriad:

Look for the timidity service launch script in /etc/init.d
Let's say it's something like "/etc/init.d/timidity".
Now simply disable that script: "sudo insserv -r timidity"


Thank you for your support.

So I suppose it will need to be loaded manually before running Chocolate DOOM?

Another question: is Chocolate DOOM fully compatible with Heretic and Hexen WADs?
(I really don't like PrBoom, I can't get it running at all...)

Thanks
User avatar
Posts: 78
Joined: Sun Nov 17, 2013 7:38 pm
Location: Italy
by Vanfanel » Sun Dec 29, 2013 5:31 pm
I don't know, Antiriad. But the best option for Doom-ing on the Pi is, BY FAR, using the RetroArch port of PrBoom, wich runs with GLES accelerated graphics (yes, we have GLES DOOM on the Raspbery Pi) along with MP3 music :)
Posts: 267
Joined: Sat Aug 18, 2012 5:58 pm
by antiriad » Sun Dec 29, 2013 5:39 pm
This surely sound interesting, but it is possible to install this Retroarch port without using a pre-made SD card image? I mean: I would like to add manually emulators and portings to my config. I'd like also to run Doom without entering in X. There is a tutorial? Thanks
User avatar
Posts: 78
Joined: Sun Nov 17, 2013 7:38 pm
Location: Italy
by Vanfanel » Sun Dec 29, 2013 6:00 pm
antiriad wrote:This surely sound interesting, but it is possible to install this Retroarch port without using a pre-made SD card image? I mean: I would like to add manually emulators and portings to my config. I'd like also to run Doom without entering in X. There is a tutorial? Thanks


Of course there is! I wouldn't touch one of these pre-made SD images with a 10mts pole. The fun is in having these things running by yourself, learning and enjoying some fast commanline action to play!
Look here for my RetroArch on Pi tutorial. I believe the PrBoom core is not covered, but it's the same as with other cores:

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=56070

Have lots and lost of fun! Oh, and try to use distcc to build these things or it will be a painfully slow process :P
If you don't feel like building yourself, ask me for prebuilt binaries and I will post them.
Posts: 267
Joined: Sat Aug 18, 2012 5:58 pm
by antiriad » Wed Jan 01, 2014 5:36 pm
Vanfanel wrote:...
Have lots and lost of fun! Oh, and try to use distcc to build these things or it will be a painfully slow process :P
If you don't feel like building yourself, ask me for prebuilt binaries and I will post them.


Thank you for your help and suggestion.
It is possible maybe to have the binaries?

The compilation process gives me the following error:

Code: Select all
LD retroarch
gfx/gl.o: In function `gl_compute_fbo_geometry':
/home/pi/RetroArch/gfx/gl.c:381: undefined reference to `glGetIntegerv'
gfx/gl.o: In function `gl_create_fbo_textures':
/home/pi/RetroArch/gfx/gl.c:464: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:494: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:469: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:479: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:480: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:481: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:482: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:506: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:520: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_create_fbo_targets':
/home/pi/RetroArch/gfx/gl.c:528: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:529: undefined reference to `glGenFramebuffers'
/home/pi/RetroArch/gfx/gl.c:532: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:533: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:535: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:543: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_init_fbo':
/home/pi/RetroArch/gfx/gl.c:623: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_set_texture_frame':
/home/pi/RetroArch/gfx/gl.c:2620: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:2621: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2622: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2623: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2624: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2625: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2633: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:2637: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:2650: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2628: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2645: undefined reference to `glTexImage2D'
gfx/gl.o: In function `gl_read_viewport':
/home/pi/RetroArch/gfx/gl.c:2354: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:2356: undefined reference to `glReadPixels'
/home/pi/RetroArch/gfx/gl.c:2350: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_update_input_size':
/home/pi/RetroArch/gfx/gl.c:1015: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1022: undefined reference to `glTexSubImage2D'
gfx/gl.o: In function `gl_free_overlay':
/home/pi/RetroArch/gfx/gl.c:1562: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_overlay_load':
/home/pi/RetroArch/gfx/gl.c:2449: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:2441: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:2442: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2443: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2444: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2445: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2446: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2448: undefined reference to `glPixelStorei'
gfx/gl.o: In function `gl_free':
/home/pi/RetroArch/gfx/gl.c:1600: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:1604: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_free_overlay':
/home/pi/RetroArch/gfx/gl.c:1562: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_deinit_hw_render':
/home/pi/RetroArch/gfx/gl.c:637: undefined reference to `glDeleteRenderbuffers'
/home/pi/RetroArch/gfx/gl.c:635: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_init_hw_render':
/home/pi/RetroArch/gfx/gl.c:647: undefined reference to `glGetIntegerv'
/home/pi/RetroArch/gfx/gl.c:648: undefined reference to `glGetIntegerv'
/home/pi/RetroArch/gfx/gl.c:654: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:655: undefined reference to `glGenFramebuffers'
/home/pi/RetroArch/gfx/gl.c:682: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:683: undefined reference to `glRenderbufferStorage'
/home/pi/RetroArch/gfx/gl.c:685: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:688: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:690: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:713: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:673: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:674: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:704: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:705: undefined reference to `glRenderbufferStorage'
/home/pi/RetroArch/gfx/gl.c:707: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:708: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:713: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:721: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:667: undefined reference to `glGenRenderbuffers'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_init_textures':
/home/pi/RetroArch/gfx/gl.c:1158: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:1162: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1164: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1165: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1166: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1167: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1178: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:1184: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_set_viewport':
/home/pi/RetroArch/gfx/gl.c:822: undefined reference to `glViewport'
gfx/gl.o: In function `gl_init':
/home/pi/RetroArch/gfx/gl.c:2013: undefined reference to `glGetError'
/home/pi/RetroArch/gfx/gl.c:2015: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2016: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2019: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2026: undefined reference to `glBlendFunc'
/home/pi/RetroArch/gfx/gl.c:2117: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2118: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2119: undefined reference to `glDisable'
gfx/gl.o: In function `gl_check_error':
/home/pi/RetroArch/gfx/gl_common.h:63: undefined reference to `glGetError'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `resolve_extensions':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_check_error':
/home/pi/RetroArch/gfx/gl_common.h:63: undefined reference to `glGetError'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_set_shader':
/home/pi/RetroArch/gfx/gl.c:2271: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_update_tex_filter_frame':
/home/pi/RetroArch/gfx/gl.c:2223: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2224: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2225: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2226: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2227: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2231: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_set_shader':
/home/pi/RetroArch/gfx/gl.c:2294: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_deinit_hw_render':
/home/pi/RetroArch/gfx/gl.c:637: undefined reference to `glDeleteRenderbuffers'
/home/pi/RetroArch/gfx/gl.c:635: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1415: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1446: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1447: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1448: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1449: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1450: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1451: undefined reference to `glBlendFunc'
/home/pi/RetroArch/gfx/gl.c:1452: undefined reference to `glClearColor'
/home/pi/RetroArch/gfx/gl.c:1465: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:1480: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:1512: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1480: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:932: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:936: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:938: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:949: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:962: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:966: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:968: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:980: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_render_overlay':
/home/pi/RetroArch/gfx/gl.c:2525: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/gl.c:2536: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2543: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:2546: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2551: undefined reference to `glViewport'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1469: undefined reference to `glClear'
gfx/gl.o: In function `gl_check_fbo_dimensions':
/home/pi/RetroArch/gfx/gl.c:877: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:878: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:880: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:885: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:887: undefined reference to `glCheckFramebufferStatus'
gfx/gl.o: In function `gl_start_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:849: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:850: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1429: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_start_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:849: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:850: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_copy_frame':
/home/pi/RetroArch/gfx/gl.c:1209: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1249: undefined reference to `glTexSubImage2D'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1438: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_draw_texture':
/home/pi/RetroArch/gfx/gl.c:1348: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1354: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/gl.c:1358: undefined reference to `glViewport'
/home/pi/RetroArch/gfx/gl.c:1359: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:1360: undefined reference to `glViewport'
/home/pi/RetroArch/gfx/gl.c:1365: undefined reference to `glDisable'
gfx/gl.o: In function `gl_render_overlay':
/home/pi/RetroArch/gfx/gl.c:2528: undefined reference to `glViewport'
gfx/gl.o: In function `gl_draw_texture':
/home/pi/RetroArch/gfx/gl.c:1363: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_copy_frame':
/home/pi/RetroArch/gfx/gl.c:1221: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1222: undefined reference to `glTexSubImage2D'
/home/pi/RetroArch/gfx/gl.c:1226: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1234: undefined reference to `glTexSubImage2D'
gfx/fonts/gl_raster_font.o: In function `setup_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:266: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:272: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:301: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:306: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:312: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:314: undefined reference to `glDisable'
gfx/fonts/gl_raster_font.o: In function `adjust_power_of_two':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:142: undefined reference to `glTexImage2D'
gfx/fonts/gl_raster_font.o: In function `blit_fonts':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:206: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:207: undefined reference to `glTexSubImage2D'
gfx/fonts/gl_raster_font.o: In function `gl_deinit_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:75: undefined reference to `glDeleteTextures'
gfx/fonts/gl_raster_font.o: In function `gl_init_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:35: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:36: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:37: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:38: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:39: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:40: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:41: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:42: undefined reference to `glGetIntegerv'
gfx/shader_glsl.o: In function `gl_glsl_set_attribs':
/home/pi/RetroArch/gfx/shader_glsl.c:548: undefined reference to `glBindBuffer'
gfx/shader_glsl.o: In function `gl_glsl_set_vbo':
/home/pi/RetroArch/gfx/shader_glsl.c:539: undefined reference to `glBufferData'
gfx/shader_glsl.o: In function `gl_glsl_set_attribs':
/home/pi/RetroArch/gfx/shader_glsl.c:558: undefined reference to `glEnableVertexAttribArray'
/home/pi/RetroArch/gfx/shader_glsl.c:559: undefined reference to `glVertexAttribPointer'
/home/pi/RetroArch/gfx/shader_glsl.c:567: undefined reference to `glBindBuffer'
gfx/shader_glsl.o: In function `compile_shader':
/home/pi/RetroArch/gfx/shader_glsl.c:397: undefined reference to `glShaderSource'
/home/pi/RetroArch/gfx/shader_glsl.c:398: undefined reference to `glCompileShader'
/home/pi/RetroArch/gfx/shader_glsl.c:401: undefined reference to `glGetShaderiv'
gfx/shader_glsl.o: In function `print_shader_log':
/home/pi/RetroArch/gfx/shader_glsl.c:338: undefined reference to `glGetShaderiv'
/home/pi/RetroArch/gfx/shader_glsl.c:347: undefined reference to `glGetShaderInfoLog'
gfx/shader_glsl.o: In function `gl_glsl_set_mvp':
/home/pi/RetroArch/gfx/shader_glsl.c:1087: undefined reference to `glUniformMatrix4fv'
gfx/shader_glsl.o: In function `gl_glsl_set_params':
/home/pi/RetroArch/gfx/shader_glsl.c:906: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:909: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:912: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:923: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:930: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:931: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:932: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:944: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:945: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:946: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:952: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:955: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1062: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1074: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:1075: undefined reference to `glUniform1f'
/home/pi/RetroArch/gfx/shader_glsl.c:919: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:973: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:974: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:986: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:989: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:981: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1008: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1009: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1017: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1018: undefined reference to `glBindTexture'
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:674: undefined reference to `glUseProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:680: more undefined references to `glDeleteProgram' follow
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:702: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:702: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:702: more undefined references to `glDeleteBuffers' follow
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:684: undefined reference to `glDeleteTextures'
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_use':
/home/pi/RetroArch/gfx/shader_glsl.c:1172: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:426: undefined reference to `glCreateProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:436: undefined reference to `glCreateShader'
/home/pi/RetroArch/gfx/shader_glsl.c:443: undefined reference to `glAttachShader'
/home/pi/RetroArch/gfx/shader_glsl.c:449: undefined reference to `glCreateShader'
/home/pi/RetroArch/gfx/shader_glsl.c:456: undefined reference to `glAttachShader'
gfx/shader_glsl.o: In function `link_program':
/home/pi/RetroArch/gfx/shader_glsl.c:409: undefined reference to `glLinkProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:412: undefined reference to `glGetProgramiv'
gfx/shader_glsl.o: In function `print_linker_log':
/home/pi/RetroArch/gfx/shader_glsl.c:360: undefined reference to `glGetProgramiv'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:436: undefined reference to `glCreateShader'
gfx/shader_glsl.o: In function `print_linker_log':
/home/pi/RetroArch/gfx/shader_glsl.c:369: undefined reference to `glGetProgramInfoLog'
gfx/shader_glsl.o: In function `link_program':
/home/pi/RetroArch/gfx/shader_glsl.c:417: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:471: undefined reference to `glDeleteShader'
/home/pi/RetroArch/gfx/shader_glsl.c:475: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:477: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:478: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:473: undefined reference to `glDeleteShader'
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:261: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `find_uniforms':
/home/pi/RetroArch/gfx/shader_glsl.c:603: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:254: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `find_uniforms':
/home/pi/RetroArch/gfx/shader_glsl.c:651: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:261: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:281: more undefined references to `glGetAttribLocation' follow
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_init':
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:864: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:864: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:864: more undefined references to `glGenBuffers' follow
gfx/shader_glsl.o: In function `load_luts':
/home/pi/RetroArch/gfx/shader_glsl.c:295: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/shader_glsl.c:320: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/shader_glsl.c:326: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:309: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:311: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:312: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:316: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:317: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:319: undefined reference to `glPixelStorei'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetRenderbufferParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `gl20_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `gl11_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `glintAttribPointer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_get'
/opt/vc/lib/libEGL.so: undefined reference to `glDiscardFramebufferEXT'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferTexture2D'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error_api'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glBufferSubData'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetFramebufferAttachmentParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_CheckFramebufferStatus'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_RenderbufferStorage'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenerateMipmap'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_set'
/opt/vc/lib/libEGL.so: undefined reference to `glPointSizePointerOES'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_state_free'
collect2: ld returned 1 exit status
make: *** [retroarch] Error 1


Thank you for your patience.

P.S. Is prBoom compatible with Heretic and Hexen?
User avatar
Posts: 78
Joined: Sun Nov 17, 2013 7:38 pm
Location: Italy
by KitchUK » Tue Feb 11, 2014 8:54 pm
antiriad wrote:
Vanfanel wrote:...
Have lots and lost of fun! Oh, and try to use distcc to build these things or it will be a painfully slow process :P
If you don't feel like building yourself, ask me for prebuilt binaries and I will post them.


Thank you for your help and suggestion.
It is possible maybe to have the binaries?

The compilation process gives me the following error:

Code: Select all
LD retroarch
gfx/gl.o: In function `gl_compute_fbo_geometry':
/home/pi/RetroArch/gfx/gl.c:381: undefined reference to `glGetIntegerv'
gfx/gl.o: In function `gl_create_fbo_textures':
/home/pi/RetroArch/gfx/gl.c:464: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:494: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:469: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:479: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:480: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:481: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:482: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:506: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:520: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_create_fbo_targets':
/home/pi/RetroArch/gfx/gl.c:528: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:529: undefined reference to `glGenFramebuffers'
/home/pi/RetroArch/gfx/gl.c:532: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:533: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:535: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:543: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_init_fbo':
/home/pi/RetroArch/gfx/gl.c:623: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_set_texture_frame':
/home/pi/RetroArch/gfx/gl.c:2620: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:2621: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2622: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2623: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2624: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2625: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2633: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:2637: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:2650: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2628: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2645: undefined reference to `glTexImage2D'
gfx/gl.o: In function `gl_read_viewport':
/home/pi/RetroArch/gfx/gl.c:2354: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:2356: undefined reference to `glReadPixels'
/home/pi/RetroArch/gfx/gl.c:2350: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_update_input_size':
/home/pi/RetroArch/gfx/gl.c:1015: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1022: undefined reference to `glTexSubImage2D'
gfx/gl.o: In function `gl_free_overlay':
/home/pi/RetroArch/gfx/gl.c:1562: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_overlay_load':
/home/pi/RetroArch/gfx/gl.c:2449: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:2441: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:2442: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2443: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2444: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2445: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2446: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2448: undefined reference to `glPixelStorei'
gfx/gl.o: In function `gl_free':
/home/pi/RetroArch/gfx/gl.c:1600: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:1604: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_free_overlay':
/home/pi/RetroArch/gfx/gl.c:1562: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_deinit_hw_render':
/home/pi/RetroArch/gfx/gl.c:637: undefined reference to `glDeleteRenderbuffers'
/home/pi/RetroArch/gfx/gl.c:635: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_init_hw_render':
/home/pi/RetroArch/gfx/gl.c:647: undefined reference to `glGetIntegerv'
/home/pi/RetroArch/gfx/gl.c:648: undefined reference to `glGetIntegerv'
/home/pi/RetroArch/gfx/gl.c:654: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:655: undefined reference to `glGenFramebuffers'
/home/pi/RetroArch/gfx/gl.c:682: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:683: undefined reference to `glRenderbufferStorage'
/home/pi/RetroArch/gfx/gl.c:685: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:688: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:690: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:713: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:673: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:674: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:704: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:705: undefined reference to `glRenderbufferStorage'
/home/pi/RetroArch/gfx/gl.c:707: undefined reference to `glBindRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:708: undefined reference to `glFramebufferRenderbuffer'
/home/pi/RetroArch/gfx/gl.c:713: undefined reference to `glCheckFramebufferStatus'
/home/pi/RetroArch/gfx/gl.c:721: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:667: undefined reference to `glGenRenderbuffers'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_init_textures':
/home/pi/RetroArch/gfx/gl.c:1158: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/gl.c:1162: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1164: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1165: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1166: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1167: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:1178: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:1184: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_set_viewport':
/home/pi/RetroArch/gfx/gl.c:822: undefined reference to `glViewport'
gfx/gl.o: In function `gl_init':
/home/pi/RetroArch/gfx/gl.c:2013: undefined reference to `glGetError'
/home/pi/RetroArch/gfx/gl.c:2015: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2016: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2019: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:2026: undefined reference to `glBlendFunc'
/home/pi/RetroArch/gfx/gl.c:2117: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2118: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2119: undefined reference to `glDisable'
gfx/gl.o: In function `gl_check_error':
/home/pi/RetroArch/gfx/gl_common.h:63: undefined reference to `glGetError'
gfx/gl.o: In function `gl_query_extension':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `resolve_extensions':
/home/pi/RetroArch/gfx/gl.c:108: undefined reference to `glGetString'
gfx/gl.o: In function `gl_check_error':
/home/pi/RetroArch/gfx/gl_common.h:63: undefined reference to `glGetError'
gfx/gl.o: In function `gl_deinit_fbo':
/home/pi/RetroArch/gfx/gl.c:554: undefined reference to `glDeleteTextures'
/home/pi/RetroArch/gfx/gl.c:555: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_set_shader':
/home/pi/RetroArch/gfx/gl.c:2271: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_update_tex_filter_frame':
/home/pi/RetroArch/gfx/gl.c:2223: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2224: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2225: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2226: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2227: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/gl.c:2231: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_set_shader':
/home/pi/RetroArch/gfx/gl.c:2294: undefined reference to `glDeleteTextures'
gfx/gl.o: In function `gl_deinit_hw_render':
/home/pi/RetroArch/gfx/gl.c:637: undefined reference to `glDeleteRenderbuffers'
/home/pi/RetroArch/gfx/gl.c:635: undefined reference to `glDeleteFramebuffers'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1415: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1446: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1447: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1448: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1449: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1450: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:1451: undefined reference to `glBlendFunc'
/home/pi/RetroArch/gfx/gl.c:1452: undefined reference to `glClearColor'
/home/pi/RetroArch/gfx/gl.c:1465: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:1480: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:1512: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1480: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:932: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:936: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:938: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:949: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:962: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:966: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:968: undefined reference to `glClear'
/home/pi/RetroArch/gfx/gl.c:980: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_render_overlay':
/home/pi/RetroArch/gfx/gl.c:2525: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/gl.c:2536: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:2543: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:2546: undefined reference to `glDisable'
/home/pi/RetroArch/gfx/gl.c:2551: undefined reference to `glViewport'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1469: undefined reference to `glClear'
gfx/gl.o: In function `gl_check_fbo_dimensions':
/home/pi/RetroArch/gfx/gl.c:877: undefined reference to `glBindFramebuffer'
/home/pi/RetroArch/gfx/gl.c:878: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:880: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/gl.c:885: undefined reference to `glFramebufferTexture2D'
/home/pi/RetroArch/gfx/gl.c:887: undefined reference to `glCheckFramebufferStatus'
gfx/gl.o: In function `gl_start_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:849: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:850: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1429: undefined reference to `glBindTexture'
gfx/gl.o: In function `gl_start_frame_fbo':
/home/pi/RetroArch/gfx/gl.c:849: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:850: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_copy_frame':
/home/pi/RetroArch/gfx/gl.c:1209: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1249: undefined reference to `glTexSubImage2D'
gfx/gl.o: In function `gl_frame':
/home/pi/RetroArch/gfx/gl.c:1438: undefined reference to `glBindFramebuffer'
gfx/gl.o: In function `gl_draw_texture':
/home/pi/RetroArch/gfx/gl.c:1348: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/gl.c:1354: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/gl.c:1358: undefined reference to `glViewport'
/home/pi/RetroArch/gfx/gl.c:1359: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/gl.c:1360: undefined reference to `glViewport'
/home/pi/RetroArch/gfx/gl.c:1365: undefined reference to `glDisable'
gfx/gl.o: In function `gl_render_overlay':
/home/pi/RetroArch/gfx/gl.c:2528: undefined reference to `glViewport'
gfx/gl.o: In function `gl_draw_texture':
/home/pi/RetroArch/gfx/gl.c:1363: undefined reference to `glDrawArrays'
gfx/gl.o: In function `gl_copy_frame':
/home/pi/RetroArch/gfx/gl.c:1221: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1222: undefined reference to `glTexSubImage2D'
/home/pi/RetroArch/gfx/gl.c:1226: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/gl.c:1234: undefined reference to `glTexSubImage2D'
gfx/fonts/gl_raster_font.o: In function `setup_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:266: undefined reference to `glEnable'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:272: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:301: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:306: undefined reference to `glDrawArrays'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:312: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:314: undefined reference to `glDisable'
gfx/fonts/gl_raster_font.o: In function `adjust_power_of_two':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:142: undefined reference to `glTexImage2D'
gfx/fonts/gl_raster_font.o: In function `blit_fonts':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:206: undefined reference to `glPixelStorei'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:207: undefined reference to `glTexSubImage2D'
gfx/fonts/gl_raster_font.o: In function `gl_deinit_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:75: undefined reference to `glDeleteTextures'
gfx/fonts/gl_raster_font.o: In function `gl_init_font':
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:35: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:36: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:37: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:38: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:39: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:40: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:41: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/fonts/gl_raster_font.c:42: undefined reference to `glGetIntegerv'
gfx/shader_glsl.o: In function `gl_glsl_set_attribs':
/home/pi/RetroArch/gfx/shader_glsl.c:548: undefined reference to `glBindBuffer'
gfx/shader_glsl.o: In function `gl_glsl_set_vbo':
/home/pi/RetroArch/gfx/shader_glsl.c:539: undefined reference to `glBufferData'
gfx/shader_glsl.o: In function `gl_glsl_set_attribs':
/home/pi/RetroArch/gfx/shader_glsl.c:558: undefined reference to `glEnableVertexAttribArray'
/home/pi/RetroArch/gfx/shader_glsl.c:559: undefined reference to `glVertexAttribPointer'
/home/pi/RetroArch/gfx/shader_glsl.c:567: undefined reference to `glBindBuffer'
gfx/shader_glsl.o: In function `compile_shader':
/home/pi/RetroArch/gfx/shader_glsl.c:397: undefined reference to `glShaderSource'
/home/pi/RetroArch/gfx/shader_glsl.c:398: undefined reference to `glCompileShader'
/home/pi/RetroArch/gfx/shader_glsl.c:401: undefined reference to `glGetShaderiv'
gfx/shader_glsl.o: In function `print_shader_log':
/home/pi/RetroArch/gfx/shader_glsl.c:338: undefined reference to `glGetShaderiv'
/home/pi/RetroArch/gfx/shader_glsl.c:347: undefined reference to `glGetShaderInfoLog'
gfx/shader_glsl.o: In function `gl_glsl_set_mvp':
/home/pi/RetroArch/gfx/shader_glsl.c:1087: undefined reference to `glUniformMatrix4fv'
gfx/shader_glsl.o: In function `gl_glsl_set_params':
/home/pi/RetroArch/gfx/shader_glsl.c:906: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:909: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:912: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:923: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:930: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:931: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:932: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:944: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:945: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:946: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:952: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:955: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1027: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1028: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1029: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1035: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1038: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:1062: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1074: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:1075: undefined reference to `glUniform1f'
/home/pi/RetroArch/gfx/shader_glsl.c:919: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:973: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:974: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:986: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:989: undefined reference to `glUniform2fv'
/home/pi/RetroArch/gfx/shader_glsl.c:981: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:1008: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1009: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1017: undefined reference to `glActiveTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:1018: undefined reference to `glBindTexture'
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:674: undefined reference to `glUseProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:680: undefined reference to `glDeleteProgram'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:680: more undefined references to `glDeleteProgram' follow
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:702: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:702: undefined reference to `glDeleteBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:704: undefined reference to `glDeleteBuffers'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:702: more undefined references to `glDeleteBuffers' follow
gfx/shader_glsl.o: In function `gl_glsl_deinit':
/home/pi/RetroArch/gfx/shader_glsl.c:684: undefined reference to `glDeleteTextures'
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_use':
/home/pi/RetroArch/gfx/shader_glsl.c:1172: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:426: undefined reference to `glCreateProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:436: undefined reference to `glCreateShader'
/home/pi/RetroArch/gfx/shader_glsl.c:443: undefined reference to `glAttachShader'
/home/pi/RetroArch/gfx/shader_glsl.c:449: undefined reference to `glCreateShader'
/home/pi/RetroArch/gfx/shader_glsl.c:456: undefined reference to `glAttachShader'
gfx/shader_glsl.o: In function `link_program':
/home/pi/RetroArch/gfx/shader_glsl.c:409: undefined reference to `glLinkProgram'
/home/pi/RetroArch/gfx/shader_glsl.c:412: undefined reference to `glGetProgramiv'
gfx/shader_glsl.o: In function `print_linker_log':
/home/pi/RetroArch/gfx/shader_glsl.c:360: undefined reference to `glGetProgramiv'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:436: undefined reference to `glCreateShader'
gfx/shader_glsl.o: In function `print_linker_log':
/home/pi/RetroArch/gfx/shader_glsl.c:369: undefined reference to `glGetProgramInfoLog'
gfx/shader_glsl.o: In function `link_program':
/home/pi/RetroArch/gfx/shader_glsl.c:417: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:471: undefined reference to `glDeleteShader'
/home/pi/RetroArch/gfx/shader_glsl.c:475: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:477: undefined reference to `glUniform1i'
/home/pi/RetroArch/gfx/shader_glsl.c:478: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `compile_program':
/home/pi/RetroArch/gfx/shader_glsl.c:473: undefined reference to `glDeleteShader'
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:261: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `find_uniforms':
/home/pi/RetroArch/gfx/shader_glsl.c:603: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:254: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:274: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:254: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `find_uniforms':
/home/pi/RetroArch/gfx/shader_glsl.c:651: undefined reference to `glUseProgram'
gfx/shader_glsl.o: In function `get_uniform':
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:261: undefined reference to `glGetUniformLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:261: more undefined references to `glGetUniformLocation' follow
gfx/shader_glsl.o: In function `get_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
/home/pi/RetroArch/gfx/shader_glsl.c:281: undefined reference to `glGetAttribLocation'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:281: more undefined references to `glGetAttribLocation' follow
gfx/shader_glsl.o: In function `gl_glsl_reset_attrib':
/home/pi/RetroArch/gfx/shader_glsl.c:529: undefined reference to `glDisableVertexAttribArray'
gfx/shader_glsl.o: In function `gl_glsl_init':
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:864: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:864: undefined reference to `glGenBuffers'
/home/pi/RetroArch/gfx/shader_glsl.c:863: undefined reference to `glGenBuffers'
gfx/shader_glsl.o:/home/pi/RetroArch/gfx/shader_glsl.c:864: more undefined references to `glGenBuffers' follow
gfx/shader_glsl.o: In function `load_luts':
/home/pi/RetroArch/gfx/shader_glsl.c:295: undefined reference to `glGenTextures'
/home/pi/RetroArch/gfx/shader_glsl.c:320: undefined reference to `glTexImage2D'
/home/pi/RetroArch/gfx/shader_glsl.c:326: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:309: undefined reference to `glBindTexture'
/home/pi/RetroArch/gfx/shader_glsl.c:311: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:312: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:316: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:317: undefined reference to `glTexParameteri'
/home/pi/RetroArch/gfx/shader_glsl.c:319: undefined reference to `glPixelStorei'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetRenderbufferParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `gl20_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `gl11_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `glintAttribPointer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_get'
/opt/vc/lib/libEGL.so: undefined reference to `glDiscardFramebufferEXT'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferTexture2D'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error_api'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glBufferSubData'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetFramebufferAttachmentParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_CheckFramebufferStatus'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_RenderbufferStorage'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenerateMipmap'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_set'
/opt/vc/lib/libEGL.so: undefined reference to `glPointSizePointerOES'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_state_free'
collect2: ld returned 1 exit status
make: *** [retroarch] Error 1


Thank you for your patience.

P.S. Is prBoom compatible with Heretic and Hexen?


No it is not.
Posts: 222
Joined: Fri Jul 19, 2013 5:40 pm
by antiriad » Tue Apr 08, 2014 11:24 am
Hi,
following this tutorial I was able to compile Chocolate Doom on my rPi.

Chocolate Doom allows multiplayer on a dedicated server, so... do you think the RPI can be a good dedicated server for Chocolate Doom? What about performances?

Thank you very much!
User avatar
Posts: 78
Joined: Sun Nov 17, 2013 7:38 pm
Location: Italy
by thewarrior943 » Sun Apr 20, 2014 10:15 am
everything worked up until i cant put my doom1.wad in its folder into usr/share because it wont let me :?:
Posts: 1
Joined: Sat Apr 19, 2014 6:49 pm
by DougieLawson » Sun Apr 20, 2014 10:57 am
Prefix the command with sudo to use root privileges to copy to /usr/share
Hacker on ZX80, Microtan65, Raspberry Pis and Arduinos
Unemployed mainframe database troubleshooter
RPi owner since 2012.
Twitter: @DougieLawson

Gaffer tape is "The Force", it has a dark side and a light side and it holds the Universe together.
User avatar
Posts: 6254
Joined: Sun Jun 16, 2013 11:19 pm
Location: Basingstoke, UK