Jump to content
Eternal Lands Official Forums
Wytter

Windows Compilation Guide

Recommended Posts

with the new install guide it was really quite easy to install. Sorry I seem kind of flaky. Its just that I thought that I got a paying coding job in the game industry and it turned out to be text editing. But now I'm back and now that I got it compiling I hope to start working on stuff soon. Thanks for the installation guide.

Share this post


Link to post
Share on other sites

with the new install guide it was really quite easy to install... Thanks for the installation guide.

 

Glad to be of service (and thanks Placid for putting the devpaks in one place. I'll fix the rest of the guide to reflect that soon.)

Edited by emajekral

Share this post


Link to post
Share on other sites

Technically, that should be

-Wall -DELC -DNEW_FRUSTUM -DAUTO_UPDATE -DBUG_FIX_3D_OBJECTS_MIN_MAX -DCOUNTERS -DNEW_TEX -DNEW_ACTOR_ANIMATION -DOPTIONS_I18N

Several of the definitions have been obsoleted since the list was first created.

 

(For anyone interested, a full list of all options can be found using grep "#ifdef" *.[ch] | gawk '{ print $2 }' | sort | uniq in the el source directory.)

 

 

Are these the compile options for the official client? I'm pretty sure that the last two official windows binaries had -DUSE_FRAMEBUFFER at the very least. Are there any others?

Edited by emajekral

Share this post


Link to post
Share on other sites

Users of Microsoft Internet Explorer can now use emajekral's links (previously banned, get a real browser).

Share this post


Link to post
Share on other sites

# Locate cal3dwrapper.c and cal3dwrapper.h

# Press the control key.

# Click those two files.

# Press the "Open" button.

# Wait while Dev-C++ processes these files.

 

i dont get that bit, should i just open them?? but klicking is already opening them.

Share this post


Link to post
Share on other sites

# Locate cal3dwrapper.c and cal3dwrapper.h

# Press the control key.

# Click those two files.

# Press the "Open" button.

# Wait while Dev-C++ processes these files.

 

i dont get that bit, should i just open them?? but klicking is already opening them.

 

Using control and clicking files in Windows (and some other modern window systems) is a way to tell Windows to keep everything you've selected and toggle the state of what you clicked. What I'm telling you to do there is select everything *except* cal3dwrapper.c and cal3dwrapper.h and I show you how to do it really fast. (Takes me 2 seconds)

 

It's just the kindergarten, hold your hand explain later, way of doing it. Sorry.

Share this post


Link to post
Share on other sites

I am not very sure what to say here. I did the compilation guide that was last recommended, but i get these 2

errors. I downloaded all the necessary files, and i don't know what else to do. I'll go ahead and post what the

compiler in dev-cpp says.

 

Compiler: Default compiler
Executing  make...
make.exe -f "Makefile.win" all
gcc.exe -c 2d_objects.c -o 2d_objects.o -I"C:/Dev-Cpp/include"  -Wall -DELC -DNEW_FRUSTUM -DAUTO_UPDATE -DBUG_FIX_3D_OBJECTS_MIN_MAX -DCOUNTERS -DNEW_TEX -DNEW_ACTOR_ANIMATION -DOPTIONS_I18N  

2d_objects.c: In function `display_2d_objects':
2d_objects.c:658: warning: unused variable `dist'

windres.exe -i elc_private.rc --input-format=rc -o elc_private.res -O coff 

In file included from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,
			 from elc_private.rc:4,

			 from elc_private.rc:4:
elc_private.rc:4:26: #include nested too deeply

windres.exe: no resources

make.exe: *** [elc_private.res] Error 1

Execution terminated

 

I know zilch about C, i am a dedicated VB programmer. So C and its variants are a foreign language to me.

Any help would be appreciated. Especially since I can't seem to get either of the el exes that come with

the original install to run properly.

Share this post


Link to post
Share on other sites

OpenAL + ALUT errors resolved. Unable to reproduce the deeply nested include error, but that's probably a good thing.

 

If there's still an issue with the instructions let me know. I'll be watching my messages and the dev threads for a few days.

 

I was able to get a working build using my instructions on a clean install of Dev-C++, but that doesn't always mean I haven't omitted a step that seems obvious to me.

Share this post


Link to post
Share on other sites

emajekral, you're a legend. *bows*

 

I can now compile under WinXP using Dev-Cpp! :hug::)

I use to be able to do it under MSVC, but never mind that.

 

Next step, patches :(

Share this post


Link to post
Share on other sites

uhm...just to say...current CVS elc.dsp doesn't include all files which create linking problems (or maybe it's just me:/)

anyway, missing files are:

queue

bags

storage

skills

session

loading_win

highlight

list

alphamap

update

(both .h and .c)

Share this post


Link to post
Share on other sites
uhm...just to say...current CVS elc.dsp doesn't include all files which create linking problems (or maybe it's just me:/)
that's right, old MSVC files are not kept up to date. convert to newer format if needed (the files in CVS are MSVC 2k2, 2k3 or 2k5 need converting, which MSVC will do for you), remove all files, add all code files (yes, there's a reason to remove all first), and it should be close to working. for more info, search forums, I've dealt with this before, covering more issues

Share this post


Link to post
Share on other sites
I use to be able to do it under MSVC, but never mind that.

 

Next step, patches

 

How badly do people here want to be able to use Microsoft dev tools to compile the game? I picked up a license for 2k3 and struggled through the setup tonight. It's a bit tougher than DevCpp but manageable if you don't mind building a few things.

 

Had to build: ogg, vorbis, vorbisfile, cal3d (main project only). ( and elc of course ;P )

Got: 3176 warnings (C++ & new headers? What version of cal3d are we using now? Mostly type coercion warnings: double -> float, float -> int, int -> float; but I got a few "inconsistent dll linkage" warnings wrt Cal)

Result: working .exe, sweet new icon :icon13: , and paralyzed 3 turns by a spider?

Easy can do: step by step instructions, links to resources, copy & paste defines, libs, directories

 

 

Not quite "Next step, patches" yet. Code base has changed a bit in ways that affect me (new semantic for frustum intersect update). Need to merge my stuff with it (one good afternoon + evening). Then patches (want to do it right so I don't know how long it'll take. Mehbe someone wants to make the patches for me once the merge is done). I'm not happy with my code, it's not friendly to work with, but it adds a new perspective. Maybe someone will pick it up/fix it. (Wrong thread for this last paragraph, I know, but I'm keeping lowish profile.)

Share this post


Link to post
Share on other sites

msvc 2k5 express is a free download. there are a few people who use msvc of various versions for ELC, including myself for another week or so... some of the system stuff (like listing directories) is different, but nearly all of the code works the same (although you have to avoid gcc-isms as well. IIRC, there's an example when the gcc-ism __inline was changed to the standard __inline__ in order to match MSVC. and it'd probably better match other compilers to boot, so going with the standard is generally a good thing)

 

I generally get 2 link errors with cl as well. for the rest, well, you can get a lot of them under gcc if you compile with many warnings... and you can turn down/off warnings under msvc to get rid of them

 

and as I recall, you can get dev versions of ogg/vorbis/vorbisfile, link them in, and use the DLLs from the people who package it up

Share this post


Link to post
Share on other sites

What Cal3d library are you guys compiling with on windows? Whenever I compile the game using DevC++ the dll's are incompatible with those that come with the official game package. I have to use some older cal3d dll's that I got from somewhere(don't remember now).

Share this post


Link to post
Share on other sites

I have to make my own as well.

because of that, shortly after I started releasing clients for others to use, I changed the file name to cal3d_ttlanhil so it wouldn't clash with the official one.

unless you have the same .lib file when linking, you usually can't use the same .dll (since the small .lib you link in to what you compile says where in the .dll stuff is and all that fun stuff)

Share this post


Link to post
Share on other sites

I also have to make my own, calel.dll and calel_extra.dll in my case.

Share this post


Link to post
Share on other sites

Ok, do you make your own from the latest cal3d version out? And then you just compile the cal3d stuff on your own as the it is, or do you make other changes and stuff?

Share this post


Link to post
Share on other sites

downloaded Cal3d version 0.10, and compiled just the cal3d library part (there are several others, from memory, which I didn't have any need for). no changes needed to it, other than the output file name. just compiled that, put the .dll in the EL dir, and used the .lib it created for compiling EL

Share this post


Link to post
Share on other sites

Here's an update on emajekral's guide

 

Please make sure you follow his steps of setting up the compiler, cvs, etc. This is just additional information.

 

Set Up Compiler

In addition to the libraries he mentioned you need the following libraries to compile ELC with Dev-C++

  • zlib
  • libpng
  • libjpeg
  • libtiff 3.4 (not 3.6!)
  • sdl_images

Some devpaks have dependencies on other devpaks, so you may need those devpaks too. Download them via Tools > Check for Updates/Packages

Choose the devpak.org server, since the primary one doesn't seem to be active at the moment.

 

Configure Your Project

Ignore emajekrals "Configure Your Project" part. Makefile.win was updated on the 25th of March by Lachesis and it works just fine.

 

So instead of what emajekral wrote, hit alt+p > go to the makefile tab > check "Use Custom Makefile" and select Makefile.win

 

Compile your Project

You may need to make a copy of your make.defaults and rename it to make.conf. Otherwise you may will end up with dev-c++ telling you that you can't use make -f.

 

There might be some errors about missing libraries and includes, even though you've got them installed. Make sure they are exactly in the directory where dev-c++ wants them. Dev-c++ error messages usually let you see which one that is.

 

In addition you can use the following commands in make.conf to point to libraries/includes e.g.

#EXTRA_INCLUDES=-IC:\\Programme\\Dev-Cpp\\Include

#EXTRA_LIBS=-lalut

(make sure to uncomment these lines)

 

Done!

If everything went right, you should have your own client now :hehe:

Edited by kl4Uz

Share this post


Link to post
Share on other sites

Can someone update the following bits of emajekral's post to point to http://el.beplacid.com/dev/win-libs/ as opposed to http://beplacid.com/~placid/elc-dev/win-libs/ for the following links:

* Cal3d and cal3d_extra

* Internationalization support library

* XML support library

* SDL development package

* Ogg Vorbis

 

Been doing a bit of spring cleaning and would prefer the consistency ;)

 

Thanks!

Edited by Placid

Share this post


Link to post
Share on other sites

This is a temporary output of the linking errors I get. Ill clean this up later.

 

Edit: Oki, pretty much done with the compiling, works. I'm using MSVS 2005 btw, Ill make a guide on how to compile on it.

 

Edit 2: Oki, got it compiled... But weird error occuring. The map in PL Cave, loads fine but when on any other map the client crashes.

If someone has experience of MSVS 2005 compiling then please help out and pm me in game or here.

 

Edit 3: Oki again:p I found the problem. Ill start to work on a Compile guide later.

Edited by Beaverhunter

Share this post


Link to post
Share on other sites

compile the cal3d library. put the headers where MSVC can use them. put the .lib where MSVC can find it. ass cal3d to the linker options.

remove all files from your project. add all files to your project. set the project to compile as 'C' code, set the .cpp files to compile as 'C++' code.

recompile.

most to all of those errors should be fixed

then if there's still problems, give info about them as well as your compile info. version of compiler (msvc 2k5, judging by what you've told me, but that doesn't help anyone else). your project settings. and problems you had getting the libs ready for ELC. all the boring important stuff

Share this post


Link to post
Share on other sites

Followed the updated guide for windows CVS compilation, all libaries are theoretically installed, but there's one missing I guess... i got such errors:

  [Linker error] undefined reference to `glPushMatrix@0' 
 [Linker error] undefined reference to `glMultMatrixf@4' 
 [Linker error] undefined reference to `glTranslatef@12' 

etc. etc.

 

Dunno what the problem is... im kinda n00bish in Cpp. I'm just trying to get the newest client with eye candy stuff :D

Share this post


Link to post
Share on other sites

That error basicly means that the executable needs to be linked against OpenGL. What compiler/linker are you using? If you are not using Makefile.win, did you make sure to specify all the ncessary libraries in the project options?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×