The Ur-Quan Masters Discussion Forum

The Ur-Quan Masters Re-Release => Technical Issues => Topic started by: chenjesuwizard on August 14, 2012, 06:50:31 pm



Title: Compiling
Post by: chenjesuwizard on August 14, 2012, 06:50:31 pm
Now, I have not a great deal of computing knowledge so it's taken me a while to get this far, but I've loaded all the dlls into lib and ogg and vorbis into include. I think I did everything right, but knowing me I've missed an important step or something. Any help?
Here's the message I get:
Code:
$ ./build.sh uqm config
'echo -n' capable echo found.
Sed stream editor found.
tr found.
Make found.
build/unix/build.sh: libmikmod-config: command not found
build/unix/build.sh: libmikmod-config: command not found
build/unix/build.sh: libmikmod-config: command not found
GNU C compiler not found.
No C preprocessor found.


Title: Re: Compiling
Post by: Novus on August 14, 2012, 09:41:31 pm
Here's the message I get:
Code:
$ ./build.sh uqm config
GNU C compiler not found.
No C preprocessor found.
It seems you don't have GCC installed. Based on your reference to DLLs, I'm assuming you're working with MinGW and MSYS and that the output you quoted is from MSYS. There are several possible causes, such as not installing MinGW before MSYS or specifying the wrong path for MinGW in the MSYS installation program. Either way, the library setup (Ogg, Vorbis, SDL...) is probably irrelevant until you fix the compiler.


Title: Re: Compiling
Post by: chenjesuwizard on August 14, 2012, 11:00:26 pm
Damn, so I have to completely reinstall both Mingw and MSYS?


Title: Re: Compiling
Post by: Novus on August 15, 2012, 12:16:19 am
Damn, so I have to completely reinstall both Mingw and MSYS?
Not necessarily, although that's probably the easiest way. If MinGW is already in place (including GCC and so on) and the only thing that's wrong is that MSYS can't find it, you can manually edit the file that tells MSYS where MinGW is as described here (http://mingw.org/faq/How_do_I_install_MSYS).


Title: Re: Compiling
Post by: chenjesuwizard on August 15, 2012, 02:25:13 am
I reinstalled. Then, when installing I typed in the MinGW file, but it said it was wrong.
I went to the fstab.sample file and it has:
Quote
#Win32_Path      Mount_Point
c:/mingw      /mingw
c:/ActiveState/perl   /perl
So, I thought this fixed it. This is where it is.
But going back and redoing the build came up with the same error.
Could it be that I missed a header file? or I missed a dll? or that I put in an extra dll or header I wasn't meant to, or something like that?


Title: Re: Compiling
Post by: Novus on August 15, 2012, 06:21:05 pm
Are you using mingw-get-inst or doing a manual installation? What versions are you installing? What exactly was the error message about something being wrong and how did you get it? What happens if you try to run "gcc" from the MSYS prompt? Do you have a gcc.exe in c:\mingw\bin?

The current version of mingw-get-inst (http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe) seems to set everything up correctly if you just make sure to ask it for a C compiler and MSYS.


Title: Re: Compiling
Post by: chenjesuwizard on August 15, 2012, 08:06:49 pm
So, I fixed that problem. Thanks for all the help with that. But now I have another error.
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem.png)
Now, I downloaded SDL from the link given in the INSTALL.mingw file. I have copied all .dll files from it to lib.
I'm pretty sure that I copied the header file to include. I wasn't sure what this was (me being stupid, again), but I thought it must be everything inside the include file. So I copied the SDL's include file contents into the include file in Mingw.
What have I done wrong?


Title: Re: Compiling
Post by: Novus on August 15, 2012, 09:21:11 pm
The SDL installation is not quite a matter of copying the include and library files to the right directories. The easy way is to run "make native" within the unpacked SDL directory. This will copy those files to the right place and set up a few other minor things (such as the script used to detect compilation settings for SDL programs).


Title: Re: Compiling
Post by: chenjesuwizard on August 15, 2012, 10:59:23 pm
Cheers for that. It worked. But then I got yet another error.
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem2.png)


Title: Re: Compiling
Post by: Novus on August 17, 2012, 09:31:49 pm
Put this (http://sc2.sourceforge.net/misc/_G_config.h) in your MinGW include directory.


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 12:55:45 am
This is ridiculous. I swear I must have done something wrong earlier. It's done it again:
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem3.png)


Title: Re: Compiling
Post by: Novus on August 18, 2012, 01:59:06 pm
Almost there. You still need this include file (http://www.koders.com/c/fid275FEAF57FA3E640A9425FB3A46D988E1F72B61D.aspx). Just put it with the other ones.


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 02:18:15 pm
It says
Quote
5. Ogg Vorbis codec                                             No Ogg Vorbis Support

Now, I don't know if this will be a problem.
It's finished building, I think. Just need to find it. Will it be installed in the same directory as the source... or what?

EDIT: Just noticed something about an error:
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/ProblemError1.png)


Title: Re: Compiling
Post by: Novus on August 18, 2012, 02:32:29 pm
You should end up with an uqm-debug.exe (since you're doing a debug build) in the main source directory (the one you've been running the build script from).

Your error messages suggest that Ogg Vorbis support is being at least partially compiled, but if speech and 3DO music doesn't work we can try to look into that.


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 02:34:56 pm
It's not there.
I had this error:
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/ProblemError1.png)


Title: Re: Compiling
Post by: Novus on August 18, 2012, 03:19:25 pm
Looks like you have the include files set up for Ogg Vorbis, but something's wrong with the libraries. How did you install libogg and libvorbis?


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 04:11:01 pm
I followed the install.mingw instructions. First, I copied all the dlls across, then the two include files (ogg and vorbis).


Title: Re: Compiling
Post by: Novus on August 18, 2012, 04:25:45 pm
There may be a slight mistake in the INSTALL.mingw file. I think you also need the files from the lib directory in the Ogg Vorbis SDK in your MinGW lib directory.


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 07:04:28 pm
Copied all. No Ogg or Vorbis Support. Here's what it says:
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem4Oggvorbis.png)


Title: Re: Compiling
Post by: Novus on August 18, 2012, 10:36:24 pm
Try putting pkg-config.exe (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip) in the MinGW bin directory.


Title: Re: Compiling
Post by: chenjesuwizard on August 18, 2012, 10:40:55 pm
Quote
pkg-config.exe - System Error

The program can't start because libglib-2.0-0.dll is missing from your computer. Try reinstalling the program to fix this problem.


Title: Re: Compiling
Post by: Novus on August 19, 2012, 12:06:19 am
This glib (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib_2.24.0-2_win32.zip) should do the trick.


Title: Re: Compiling
Post by: chenjesuwizard on August 19, 2012, 03:59:26 am
So, it compiled but when clicking on the .exe, I get this:

"The Program can't start because vorbisfile.dll is missing on your computer..."


It says I have to copy across the dll files. Which ones are they and where do they go?


Title: Re: Compiling
Post by: Novus on August 19, 2012, 09:02:42 am
The least problematic solution (least likely to create problems with other software) is probably to keep all the DLLs in the same directory as the .exe. You need all the DLL files you linked into UQM: SDL, SDL_image, as well as Ogg Vorbis and/or zlib depending on which you used. If they were not included in the developer downloads you used, use the DLLs from the corresponding runtime downloads.


Title: Re: Compiling
Post by: chenjesuwizard on August 19, 2012, 11:03:25 am
Final problem (at least, I hope so):
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem6.png)


Title: Re: Compiling
Post by: Novus on August 19, 2012, 12:20:15 pm
Use the --contentdir option (or -n) to specify where the content is. For example, if you are running from the source tree:

Code:
./uqm-debug -n content


Title: Re: Compiling
Post by: chenjesuwizard on August 19, 2012, 05:42:58 pm
So,  I ran that, and a new (but similar) error occured:
(http://i699.photobucket.com/albums/vv354/chenjesuwizard/Problem7.png)
I'm assuming this means I have to compress the content files to create the .uqm file. Should I compress the entire source code (All the files except content), or just some of them. If so, which ones?


Title: Re: Compiling
Post by: Gekko on August 19, 2012, 09:25:25 pm
Just dropping this here in case you haven't figured this yet: The content packages must be in the dir uqmdir/content/packages/, not uqmdir/content.


Title: Re: Compiling
Post by: chenjesuwizard on August 19, 2012, 09:50:03 pm
Yeh, I figured that out. Just got to work out what should be compressed and what shouldn't.


Title: Re: Compiling
Post by: Novus on August 20, 2012, 08:56:18 am
You don't need to compress any of the content; in fact, you can't use compressed content unless you enabled that option when compiling.


Title: Re: Compiling
Post by: chenjesuwizard on August 20, 2012, 02:43:25 pm
Damn, so I have to start again?


Title: Re: Compiling
Post by: Novus on August 21, 2012, 08:52:53 am
Damn, so I have to start again?
Not at all. What content are you using, anyway? SVN? The standard 0.7 packages?


Title: Re: Compiling
Post by: chenjesuwizard on August 21, 2012, 06:02:49 pm
Just the standard source code off of the website.


Title: Re: Compiling
Post by: Novus on August 22, 2012, 12:54:18 pm
I'm assuming you're using the official UQM 0.7.0 downloads (http://sc2.sourceforge.net/downloads.php). uqm-0.7.0-source.tgz does not contain any content; you need at least the base content package uqm-0.7.0-content.uqm. If you've already installed UQM 0.7.0 using e.g. uqm-0.7.0-installer.exe, you can find this content package there.

If you haven't compiled UQM with support for compressed files, you will need to unpack the content packages into the content directory. You should end up with a content directory containing:
  • A small file called version
  • Default key setting files uqm.key and menu.key
  • Content description file uqm.rmp
  • A directory called base containing all the actual UQM base content

Alternatively, you could try installing the zlib development files for MinGW and recompiling UQM with support for compressed files.


Title: Re: Compiling
Post by: chenjesuwizard on August 22, 2012, 04:57:41 pm
Oh yes!! It worked. Thanks for all your help.
So, in the future, if I want to recompile, I should just delete the current uqm-debug.exe and replace it with the new one?


Title: Re: Compiling
Post by: Novus on August 22, 2012, 09:36:00 pm
I'm glad that worked out for you. I should try to put together some new instructions for compiling UQM with MinGW some time. This thread should make a nice troubleshooting section.

gcc will happily overwrite files while compiling without any warning. If you recompile, uqm-debug.exe will be overwritten by the final (linking) step.


Title: Re: Compiling
Post by: chenjesuwizard on August 23, 2012, 12:03:42 am
Why not just create a mingw with all the necessary things, and then an UQM file with all the necessary things and create instructions similair to these:
How to compile UQM on Windows:
1. Download the version of Mingw and Msys which is specific to UQM (including all dlls and linked files)
2. Download this file: UQM (to place the exe in later)
3. Go to Msys, in the file Mingw, then load it.
4. Load the source code file into the Msys prompt:
Cd /c/path to file
5. Type "./build.sh uqm config" press ENTER.
6. Type "./build.sh uqm depend" press ENTER.
7. Type "./build.sh uqm" press ENTER.
8. Once that has finished, go into the source code and take "UQM-Debug.exe" and place it in the UQM
that you downloaded earlier.
9. Play "Uqm-debug.exe".

That way, an inexperienced user, like me, can compile easily, with a lot less hassle.

This is what I set up for myself, so that I can remember how to do it (plus the first two steps added now)


Title: Re: Compiling
Post by: Novus on August 25, 2012, 02:59:01 pm
Why not just create a mingw with all the necessary things, and then an UQM file with all the necessary things and create instructions similair to these:
The main argument against doing this, if I remember correctly, is that there may be newer versions of the libraries used by UQM with desirable changes such as bug or compatibility fixes, and having to wait for a third party to update the UQM build environment and redistribute it is often not worth the trouble. There's also the matter of trust and reliability: by downloading from the original developers or port maintainers, the risks of something being wrong with the code you download is smaller. That said, your solution would almost certainly work well enough for personal use or experimentation. In fact, many of us are already relying on our Linux distributions to package all the libraries for us. Also, many bug fixes to e.g. SDL can be done after compilation by replacing the DLL.

It appears you're not the only one to suggest making a MinGW distribution (http://nuwen.net/mingw.html) like this.

Are you volunteering to maintain an UQM-specific MinGW distribution? :D


Title: Re: Compiling
Post by: chenjesuwizard on August 25, 2012, 05:04:08 pm
I wish, but I don't have the know-how to be able to do something like that. I'd end up messing it up for everyone. Perhaps, when I get more familiar with everything. I mean, I could update the DLLs and such, but I'm never sure what else needs updating. Or how to update them.


Title: Re: Compiling
Post by: Defender on August 25, 2012, 10:13:52 pm
I'm with chenjesuwizard on this one.
Having a premade zip would save so much headache for us few who don't do linux/simular.
I'm still using my folder of mingw that I finally got working about 4 months ago. I'm afraid that if I try to update it, I will break something. Which is another side effect of not having a premade zip to download and go.
Once I started compiling uqm I was having so much fun tweaking things. But the road to get there was filled with pitfalls, frustration and disappointment.


Title: Re: Compiling
Post by: chenjesuwizard on August 25, 2012, 10:24:05 pm
If you want my most recent version, you can have my Mingw and UQM file.


Title: Re: Compiling
Post by: Defender on August 26, 2012, 03:56:49 am
sure... ;D


Title: Re: Compiling
Post by: Novus on August 26, 2012, 09:42:49 am
Who does the Windows release builds for UQM? Michael Martin? At least that's whom Bugzilla sends bug reports about the Windows build to. In any case, it would probably be useful to have the "official" UQM build environment.

Then there's the snapshots. I suspect those are actually cross-compiled on Linux, aren't they? Meep-eep?


Title: Re: Compiling
Post by: chenjesuwizard on August 26, 2012, 03:09:23 pm
sure... ;D
Alright. Well, I'm on a different computer at the moment but when I get home, I'll upload my build. You want a file to put the uqm-debug.exe and the Mingw, right?


Title: Re: Compiling
Post by: Defender on August 26, 2012, 04:35:08 pm
I was thinking more along the lines of just mingw (recent) folder. I can compile uqm myself but thank you.


Title: Re: Compiling
Post by: chenjesuwizard on August 26, 2012, 05:28:15 pm
Alright, just the Mingw :).


Title: Re: Compiling
Post by: meep-eep on August 27, 2012, 08:41:08 pm
Who does the Windows release builds for UQM? Michael Martin? At least that's whom Bugzilla sends bug reports about the Windows build to. In any case, it would probably be useful to have the "official" UQM build environment.

Then there's the snapshots. I suspect those are actually cross-compiled on Linux, aren't they? Meep-eep?
McMartin and fossil have made the Windows release builds.
The snapshots are indeed cross-compiled, but from FreeBSD.


Title: Re: Compiling
Post by: Gekko on October 27, 2012, 04:18:00 pm
I have made a new tutorial which uses my self-made development package. It pretty much has all the folders set up and the instructions are quite easy to follow. I had a lot of difficulties setting up my latest development environment, and had to do quite a few mingw reinstalls. My current instructions apply for a new Windows 7 system using the latest MinGW release.

Instructions (http://plantmonster.homeip.net/uqm/building_windows/instructions_mingw)


Title: Re: Compiling
Post by: Serosis on October 30, 2012, 02:39:18 am
Now make one for Visual Studio Express 2012  ;D

One could wish right?