Author Topic: Compiling Tremulous on Windows using MinGW [Updated 2017-10-03]  (Read 60221 times)

/dev/humancontroller

  • Posts: 1033
  • Turrets: +1002/-383
Re: Compiling Tremulous on Windows using MinGW [Updated 2012-04-18]
« Reply #30 on: April 24, 2012, 09:08:59 am »
there are 3 main formats used to represent dates; D-M-Y, M-D-Y, Y-M-D.
where are you getting this shit from? if you use the MDY ordering, then separate numbers with '/' characters, ie. 1/2/3. use of the MDY ordering in combination with '-' characters is a mockery of the international standard.
We must operate on one of two assumptions. That a person will be aware of the 3 major date formats in which case the use of M-D-YY is perfectly acceptable in this specific case or that a person will not be aware of any date formats in which case your proposed solution (the implementation of ISO 8601) is inadequate.
at least my solution is better in both cases.

hoggernick

  • Posts: 1
  • Turrets: +0/-0
Re: The shorter & sweeter guide to compiling Tremulous on Windows
« Reply #31 on: August 16, 2013, 11:08:21 pm »
Haha sorry Cron but I've been having the same probs as everyone else :P
...
Code: [Select]
DED_CC src/sys/sys_unix.c
src/sys/sys_unix.c:35:22: fatal error: sys/mman.h: No such file or directory
compilation terminated.
make[2]: *** [build/release-HPD-x86/ded/sys_unix.o] Error 1
make[2]: Leaving directory `/home/Nolan/tremulous'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/home/Nolan/tremulous'
make: *** [release] Error 2
$
You shouldn't be in that area at all if you're compiling for win32. Your PLATFORM variable needs to be mingw32, and then your Makefile won't try to do those unix-only things (like compiling sys_unix).

I added this to my Makefile.local (in addition to what's mentioned above in the instructions) and it got things compiling fine for me on Windows in Mingw:

PLATFORM=mingw32

QuentinTyrantino

  • Posts: 10
  • Turrets: +1/-1
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #32 on: October 22, 2013, 01:38:07 pm »
I followed exactly all the instructions but the client won't compile successfully under my Win7 64bit.

Code: [Select]
src/libs/win32/libcurl.a(strequal.o):strequal.c:(.text+0x14): undefined reference to `strcasecmp'
src/libs/win32/libcurl.a(strequal.o):strequal.c:(.text+0x48): undefined reference to `strncasecmp'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [build/release-mingw32-x86/tremulous.x86.exe] Error 1

The errors seem related to libcurl. I also tried with a fresh install of everything excluding the libcurl package, but the same errors come up.

in my Makefile.local I have:
Code: [Select]
PLATFORM=mingw32
CC=gcc
BUILD_GAME_QVM=0
INCLUDE=
LIBRARY=

Any suggestions?

/dev/humancontroller

  • Posts: 1033
  • Turrets: +1002/-383
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #33 on: October 22, 2013, 10:16:16 pm »
Code: [Select]
src/libs/win32/libcurl.a(strequal.o):strequal.c:(.text+0x14): undefined reference to `strcasecmp'
src/libs/win32/libcurl.a(strequal.o):strequal.c:(.text+0x48): undefined reference to `strncasecmp'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [build/release-mingw32-x86/tremulous.x86.exe] Error 1

Any suggestions?
weird.
  • there's a possible cause.
  • you can add USE_CURL=0 to try to avoid those "curly" errors; however, you then won't get the HTTP-based (fast) download capability for some (most) servers.
  • you can also try editing any client source file (ie., src/client/cl_curl.c) and adding the missing functions, strcasecmp() and strncasecmp() (copy-pasted from the net).
The errors seem related to libcurl. I also tried with a fresh install of everything excluding the libcurl package, but the same errors come up.
how do you "install"? by the workings of the build system on Windows, only the internal cURL stuff is used, ie., the relevant .a file, which you can also try to replace with a newer one.

QuentinTyrantino

  • Posts: 10
  • Turrets: +1/-1
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #34 on: October 23, 2013, 06:02:40 pm »
you can add USE_CURL=0 to try to avoid those "curly" errors
if I add USE_CURL=0 , other errors come out:
Code: [Select]
LD build/release-mingw32-x86/tremulous.x86.exe
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0xe5): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0xf3): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x100): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x127): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x159): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x167): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x174): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x19b): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x209): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x217): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x225): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x2f0): undefined reference to `curl_easy_init'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x330): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x35f): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x382): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3ba): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3bf): undefined reference to `curl_version'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3f0): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x40e): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x42c): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x44a): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x468): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x486): more undefined references to `curl_easy_setopt' follow
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x4e4): undefined reference to `curl_multi_init'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x503): undefined reference to `curl_multi_add_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x560): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x5aa): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x5e3): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x618): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x631): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x651): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x66b): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x686): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x69d): more undefined references to `curl_multi_perform' follow
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x724): undefined reference to `curl_multi_info_read'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x757): undefined reference to `curl_easy_getinfo'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x765): undefined reference to `curl_easy_strerror'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: build/release-mingw32-x86/client/cl_curl.o: bad reloc address 0x20 in section `.eh_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation

Quote
how do you "install"? by the workings of the build system on Windows, only the internal cURL stuff is used, ie., the relevant .a file, which you can also try to replace with a newer one.
already tried replacing src\libs\win32\libcurl.a and sadly I get other boring errors.
Since I don't have any coding skill and no time to learn and edit the code right now, I think I will simply try switching back to gcc v4.6.3 hoping it will solve this strange issue.
btw, thanks for your help :)

/dev/humancontroller

  • Posts: 1033
  • Turrets: +1002/-383
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #35 on: October 23, 2013, 06:39:53 pm »
if I add USE_CURL=0 , other errors come out:
Code: [Select]
LD build/release-mingw32-x86/tremulous.x86.exe
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0xe5): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0xf3): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x100): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x127): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x159): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x167): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x174): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x19b): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x209): undefined reference to `curl_multi_remove_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x217): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x225): undefined reference to `curl_multi_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x2f0): undefined reference to `curl_easy_init'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x330): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x35f): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x382): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3ba): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3bf): undefined reference to `curl_version'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x3f0): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x40e): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x42c): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x44a): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x468): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x486): more undefined references to `curl_easy_setopt' follow
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x4e4): undefined reference to `curl_multi_init'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x503): undefined reference to `curl_multi_add_handle'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x560): undefined reference to `curl_easy_setopt'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x5aa): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x5e3): undefined reference to `curl_easy_cleanup'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x618): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x631): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x651): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x66b): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x686): undefined reference to `curl_multi_perform'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x69d): more undefined references to `curl_multi_perform' follow
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x724): undefined reference to `curl_multi_info_read'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x757): undefined reference to `curl_easy_getinfo'
build/release-mingw32-x86/client/cl_curl.o:cl_curl.c:(.text+0x765): undefined reference to `curl_easy_strerror'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: build/release-mingw32-x86/client/cl_curl.o: bad reloc address 0x20 in section `.eh_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
remove the whole build directory first, then build.

QuentinTyrantino

  • Posts: 10
  • Turrets: +1/-1
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #36 on: October 23, 2013, 07:44:54 pm »
remove the whole build directory first, then build.
I always remove the build directory, but that didn't help. I finally solved the problem switching to gcc v4.6.3, everything compiled right!
So, there must be some linking bug in gcc 4.8.1 with curl.

If anyone encounter the same problem:
- Get MinGW Builds: http://sourceforge.net/projects/mingwbuilds/
- Install it with these options: version:4.6.3 Architecture:x32 Threads:win32 Exception:dwarf Build:2 and choose a separate folder, like c:\Mingw-4.6.3
- Copy the whole content of c:\Mingw-4.6.3\mingw to c:\MinGW and overwrite all files
- before compiling, do a "make clean"
- Done!

vcxzet

  • Posts: 467
  • Turrets: +21/-13
Re: Compiling Tremulous on Windows using MinGW [Updated 2013-07-01]
« Reply #37 on: October 28, 2013, 09:56:52 am »
You can try tdm mingw builds. I had no problem with them in the past.
http://tdm-gcc.tdragon.net/