UFO:Alien Invasion
Development => Newbie Coding => Topic started by: Destructavator on October 02, 2010, 09:19:56 am
-
OK, this is what I've found is necessary to build with the new MSYS thing on Windows, and it looks like I actually got "game.dll" to compile but not most of the other stuff.
1 - Download the custom C::B package from UFO:AI site.
2 - Unpack it and add the MinGW/bin folder to the Windows PATH
3 - Go in to MinGW/bin and COPY the "gcc.exe" (not re-name!) file to "cc.exe"
4 - Run the MSYS shell from the batch file in the C::B package under MinGW
5 - Change directory inside the shell to where your downloaded Git copy of the game is
6 - Run "configure"
7 - Run "make"
8 - Watch happily as some stuff compiles and other stuff bombs out (until things are fixed).
As you can see in the log, I also ran "make ufo2map" because when testall failed, it stopped there and I wanted to see if I could make other parts compile.
-
First please move this here (http://ufoai.ninex.info/forum/index.php?topic=4689.0)
.) Than use the attached bash script to build a MinGW environment (ver 0.3.0)
.) move ufoai source under c:\wherever\UFOAIwin32BUILDenv\mingw
.) run the bat
.) move to /mingw
.) ./configure LDFLAGS="-static-libgcc -static-libstdc++"
.) sed 's/#undef HAVE_THEORA_THEORA_H/#define HAVE_THEORA_THEORA_H/g' config.h >config.h.tmp && mv config.h.tmp config.h
.) sed 's/#undef HAVE_XVID_H/#define HAVE_XVID_H/g' config.h >config.h.tmp && mv config.h.tmp config.h
.) sed 's/#undef HAVE_VORBIS_CODEC_H/#define HAVE_VORBIS_CODEC_H/g' config.h >config.h.tmp && mv config.h.tmp config.h
.) make
.) ....
btw. to link statically use
.) ./configure LDFLAGS="-static"
but not on radiant, even ufo.exe will not link successfully because of some missing libs
(not the libs are missing, the command line miss some libs)
I'm able to build ufo.exe + tools even radiant (yes under MinGW)
Static linking need a fix
and the undef bug in configure need to be fixed too
under C::B you can use (other linker options) ... to build ufo.exe using static libs
I'm sure some libs can be removed
-static
--start-group -lopengl32 -lSDL_mixer -lSDLmain -lSDL -lSDL_image -lSDL_ttf -lpthread -lcurl -lpng14 -ltiff -lfreetype -ljpeg -lflac -ltheora -lvorbis -logg -lvorbisfile -lxvidcore -lsmpeg -lintl -lws2_32 -ldxguid -liconv -lz -lwinmm --end-group
The new MinGW is bigger than the old one
because of tons of dll's (I hate it to search for dll's)
I've modified libxml to use libxml2.dll instead of libxml2-2.dll (radiant related*)
I've modified gettext, more specific libintl to use intl.dll instead of libintl-8.dll (radiant related*)
I'm using libjpeg-turbo instead of the old libjpeg6 ( because its maintained [libjpeg8 isn't compatible] )
Python support
Git support
recompiled all libs needed for ufoai+tools using --enable-static --enable-shared (exclusive radiant libs)
*
gtk and glib do have a lot of dependencies
and those old dlls request for libxml2.dll.. forced me to manipulate the lib (only pointing to the right direction *.la, *.dll.a files)
to reduce the dll's under contrib\radiant
radiant need the new libglib-2.0-0.dll because of malloc0
-
the commandline does not miss any libs on my static build that is produced each night with our build bot at http://ufoai.ninex.info/snapshots - so maybe one of your libs is not build statically?
-
btw. also radiant links statically now - though the version that was last produced by the night build has problems with from gtkglext widget - still searching for it. would be nice if someone else could test it, too - maybe it's only my machine.
-
@ Muton & Mattn:
Some of what you have discussed in this thread I am familiar with and understand, some I don't, but regardless, just let me know when fixes/updates are committed to the master (for this issue) and I will happily try again (and post another log), until the system fully works.
-
there is nothing wrong with the build in master, you just don't have the pkg-config files for SDL in lib/pkg-config/sdl.pc
a new mingw package would be needed that also contain these files
-
> so maybe one of your libs is not build statically?
They are, using C::B result in a working ufo.exe
I've used the last svn sources, btw.
The git source compile ufo.exe without any problem (if i copy gcc.exe to cc.exe [/bin/sh: cc: command not found])
but shared.
A static build instead .... (missing libs like dxguid)
$ pkg-config.exe --libs --static sdl
-mwindows -LD:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib -lmingw32 -lSDLmain -lSDL -liconv -lm -luser32 -lgdi32 -lwinmm -ldxguid
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libintl.a(dcigettext.o):dcigettext.c:(.text+0x716): undefined reference to `libiconv'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libintl.a(dcigettext.o):dcigettext.c:(.text+0x8fb): undefined reference to `libiconv_open'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libintl.a(dcigettext.o):dcigettext.c:(.text+0x96e): undefined reference to `libiconv_open'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libintl.a(relocatable.o):relocatable.c:(.text+0x4f): undefined reference to `libiconv_set_relocation_prefix'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_systimer.o):SDL_systimer.c:(.text+0x178): undefined reference to `timeSetEvent@20'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_systimer.o):SDL_systimer.c:(.text+0x1c6): undefined reference to `timeKillEvent@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0x152): undefined reference to `IID_IDirectDrawSurface3'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0xfe9): undefined reference to `IID_IDirectDraw2'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0x2025): undefined reference to `IID_IDirectDrawSurface3'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0x2c6e): undefined reference to `IID_IDirectDrawSurface3'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0x3ba1): undefined reference to `IID_IDirectDrawGammaControl'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.text+0x3df3): undefined reference to `IID_IDirectDrawGammaControl'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x0): undefined reference to `GUID_Key'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x10): undefined reference to `GUID_Key'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x20): undefined reference to `GUID_Key'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x30): undefined reference to `GUID_Key'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x40): undefined reference to `GUID_Key'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x50): more undefined references to `GUID_Key' follow
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1000): undefined reference to `GUID_XAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1010): undefined reference to `GUID_YAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1020): undefined reference to `GUID_ZAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1080): undefined reference to `GUID_XAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1090): undefined reference to `GUID_YAxis'
:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x10a0): undefined reference to `GUID_ZAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1140): undefined reference to `GUID_XAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1150): undefined reference to `GUID_YAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1160): undefined reference to `GUID_ZAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1170): undefined reference to `GUID_RxAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1180): undefined reference to `GUID_RyAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x1190): undefined reference to `GUID_RzAxis'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11a0): undefined reference to `GUID_Slider'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11b0): undefined reference to `GUID_Slider'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11c0): undefined reference to `GUID_POV'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11d0): undefined reference to `GUID_POV'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11e0): undefined reference to `GUID_POV'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5video.o):SDL_dx5video.c:(.data+0x11f0): undefined reference to `GUID_POV'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_mmjoystick.o):SDL_mmjoystick.c:(.text+0x2b3): undefined reference to `joyGetNumDevs@0'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_mmjoystick.o):SDL_mmjoystick.c:(.text+0x2e2): undefined reference to `joyGetPosEx@8'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_mmjoystick.o):SDL_mmjoystick.c:(.text+0x30f): undefined reference to `joyGetDevCapsA@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_mmjoystick.o):SDL_mmjoystick.c:(.text+0x759): undefined reference to `joyGetPosEx@8'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x1cf): undefined reference to `waveOutGetErrorTextA@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x2a2): undefined reference to `waveOutWrite@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x380): undefined reference to `waveOutClose@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x3dc): undefined reference to `waveOutUnprepareHeader@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x5cf): undefined reference to `waveOutOpen@24'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dibaudio.o):SDL_dibaudio.c:(.text+0x768): undefined reference to `waveOutPrepareHeader@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5yuv.o):SDL_dx5yuv.c:(.text+0xcd): undefined reference to `IID_IDirectDrawSurface3'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5events.o):SDL_dx5events.c:(.text+0x234): undefined reference to `IID_IDirectInputDevice2A'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5events.o):SDL_dx5events.c:(.data+0x4): undefined reference to `GUID_SysKeyboard'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_dx5events.o):SDL_dx5events.c:(.data+0x1c): undefined reference to `GUID_SysMouse'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_syscdrom.o):SDL_syscdrom.c:(.text+0x163): undefined reference to `mciSendCommandA@16'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL.a(SDL_syscdrom.o):SDL_syscdrom.c:(.text+0x18c): undefined reference to `mciGetErrorStringA@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x12): undefined reference to `jpeg_calc_output_dimensions'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x1c): undefined reference to `jpeg_CreateDecompress'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x26): undefined reference to `jpeg_destroy_decompress'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x30): undefined reference to `jpeg_finish_decompress'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x3a): undefined reference to `jpeg_read_header'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x44): undefined reference to `jpeg_read_scanlines'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x4e): undefined reference to `jpeg_resync_to_restart'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_jpg.o):IMG_jpg.c:(.text+0x58): undefined reference to `jpeg_start_decompress'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x20): undefined reference to `png_create_read_struct'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x2a): undefined reference to `png_destroy_read_struct'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x34): undefined reference to `png_get_IHDR'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x48): undefined reference to `png_get_tRNS'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x52): undefined reference to `png_get_valid'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x5c): undefined reference to `png_read_image'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x66): undefined reference to `png_read_info'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x70): undefined reference to `png_read_update_info'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x7a): undefined reference to `png_set_expand'
:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x84): undefined reference to `png_set_gray_to_rgb'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0x98): undefined reference to `png_set_read_fn'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_png.o):IMG_png.c:(.text+0xa2): undefined reference to `png_set_strip_16'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_tif.o):IMG_tif.c:(.text+0x12): undefined reference to `TIFFClientOpen'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_tif.o):IMG_tif.c:(.text+0x1c): undefined reference to `TIFFClose'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_tif.o):IMG_tif.c:(.text+0x26): undefined reference to `TIFFGetField'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_tif.o):IMG_tif.c:(.text+0x30): undefined reference to `TIFFReadRGBAImage'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_image.a(IMG_tif.o):IMG_tif.c:(.text+0x3a): undefined reference to `TIFFSetErrorHandler'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x16): undefined reference to `SMPEG_actualSpec'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x20): undefined reference to `SMPEG_delete'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x2a): undefined reference to `SMPEG_enableaudio'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x34): undefined reference to `SMPEG_enablevideo'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x3e): undefined reference to `SMPEG_new'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x48): undefined reference to `SMPEG_new_rwops'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x52): undefined reference to `SMPEG_play'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x5c): undefined reference to `SMPEG_playAudio'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x66): undefined reference to `SMPEG_rewind'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x70): undefined reference to `SMPEG_setvolume'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x7a): undefined reference to `SMPEG_skip'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x84): undefined reference to `SMPEG_status'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_mp3.o):dynamic_mp3.c:(.text+0x8e): undefined reference to `SMPEG_stop'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x3c): undefined reference to `midiOutUnprepareHeader@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0xf0): undefined reference to `midiOutPrepareHeader@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x122): undefined reference to `midiStreamOut@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x41e): undefined reference to `midiStreamOpen@24'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x43c): undefined reference to `midiStreamClose@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x5bb): undefined reference to `midiStreamStop@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x5cb): undefined reference to `midiStreamClose@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x646): undefined reference to `midiStreamOpen@24'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x6ad): undefined reference to `midiStreamProperty@12'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x6cb): undefined reference to `midiStreamRestart@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x6ef): undefined reference to `midiStreamStop@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x6ff): undefined reference to `midiStreamClose@4'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(native_midi_win32.o):native_midi_win32.c:(.text+0x789): undefined reference to `midiOutSetVolume@8'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x53): undefined reference to `ov_clear'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x5d): undefined reference to `ov_info'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x67): undefined reference to `ov_open_callbacks'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x71): undefined reference to `ov_pcm_total'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x7b): undefined reference to `ov_read'
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib\libSDL_mixer.a(dynamic_ogg.o):dynamic_ogg.c:(.text+0x85): undefined reference to `ov_time_seek'
> btw. also radiant links statically now - though the version that was last produced by the night build has problems with from gtkglext widget
I'm using the last sources now to compile radiant using static libs from mingw-cross-env-2.15
Its not working
fist gtk+ libs aren't found
modified mingw32.mk (libs)
GTK_CFLAGS ?= $(call PKG_CFLAGS,gtk-win32-2.0) $(call PKG_CFLAGS,libxml2)
GTK_LIBS ?= $(call PKG_LIBS,gtk-win32-2.0) $(call PKG_LIBS,libxml2)
XML2_CFLAGS ?= $(call PKG_CFLAGS,libxml2)
XML2_LIBS ?= $(call PKG_LIBS,libxml2)
OPENAL_CFLAGS ?= $(call PKG_CFLAGS,openal32)
OPENAL_LIBS ?= $(call PKG_LIBS,openal32)
Its unbelievable slow to compile radiant under MinGW
its at least 5 times slower than on C::B
and i receive tons of linker errors
Not even shared is possible -> linker errors
There is one problem with libgio
Windows 2000 support
wspiapi.h is not used even if its there (configure)
So your radiant build wont work on w2k
I've been btw unable to simly build ufo.exe on mingw to support w2k
I give up >:(
i stay on C::B
its faster
easier to use
i can add or remove libs without taking care about pkg-config
and the output (errors) is useful (-Wall seams to have no effect)
Ufo and tools are static
radiant (this crappy tool) is dynamic and w2k compatible
and thats it
-
export CC=gcc
or add this to config.mk (create that file)
CC=gcc
-
i've checked in a c::b project file that works with the makefiles in the background - just make sure your sdl-config is returning the correct path for sdl-config --cflags - in the c::b package we offer for download it points to dave's home dir - which will of course fail for everyone else. If you get a SDL_opengl.h not found error, this is due to the wrong path in sdl-config
> i've checked in a c::b project file that works with the makefiles in the background
??? ??? ???
I'm using cbp files
ufo.rc
1 RT_MANIFEST DISCARDABLE "build/projects/ufo.exe.manifest"
101 ICON DISCARDABLE "build/projects/ufo.ico"
112 ICON DISCARDABLE "build/projects/ufoded.ico"
radiant.rc
101 ICON DISCARDABLE "build/projects/radiant.ico"
windres error
You trashed
#ifndef CROSSBUILD
1 RT_MANIFEST DISCARDABLE "ufo.exe.manifest"
101 ICON DISCARDABLE "ufo.ico"
112 ICON DISCARDABLE "ufo_ded.ico"
#else
1 RT_MANIFEST DISCARDABLE "build/projects/ufo.exe.manifest"
101 ICON DISCARDABLE "build/projects/ufo.ico"
112 ICON DISCARDABLE "build/projects/ufo_ded.ico"
#endif
ufomodel
linker error
.objs\ufomodel\src\client\renderer\r_model_md2.o:r_model_md2.c:(.text+0x55f): undefined reference to `R_UseActorSkin'
.objs\ufomodel\src\client\renderer\r_model_md2.o:r_model_md2.c:(.text+0x5cc): undefined reference to `R_LoadActorSkinsFromModel'
I had to add
client/renderer/r_model.c
client/renderer/r_model_alias.c
That make me think you dropped C::B
-
That make me think you dropped C::B
C::B will not be dropped before the last dev has moved away from it. At least I am requesting this.
I've been trying eclipse for a week or so and was very pleased about what I saw. Looks like eclipse is equivalent or slightly better in every aspect and clearly superior in a few important features, namely the call-, callee-, include- and type-trees I've been missing so much in CB. I'm pretty sure I will immediately ditch CB once eclipse runs smoothly on my machine.
atm I'm using eclipse for analysis and CB for compling, so I have the same prob with *.rc as you.
@Mattn:
Is there any reason why we shouldn't put the CROSSBUILD stuff back in for a while ?
-
@Mattn:
Is there any reason why we shouldn't put the CROSSBUILD stuff back in for a while ?
because it should get fixed, not hacked (i'm working on all this stuff).
did you try the new c::b project file already? (it's in the root of the ufoai checkout dir named ufo.cbp) the new one is just using the makefiles for compilation. (you have to fix your sdl-config to make this work)
-
because it should get fixed, not hacked (i'm working on all this stuff).
Sounds good. But I meant *until* it is fixed ;)
did you try the new c::b project file already? (it's in the root of the ufoai checkout dir named ufo.cbp) the new one is just using the makefiles for compilation. (you have to fix your sdl-config to make this work)
I just did. After the usual slow start (which feel like a minute) it compiles nicely until the linker gives me those 2 million 'undef ref to ogg*' errors.
But I forgot to fix sdl_config ! So I looked into it and found that the prefix doesn't point to dave but instead is set correctly.
Maybe that is the reason for my local problems with ogg. Outdated codeblock.zip ? As far as I can tell the one I use is from September or October. *2009* !!
-
this only happens for ufo (client)? or also for other modules (e.g. testall)?
i've added ogg to ufo and testall now - please retry with latest master
-
this only happens for ufo (client)? or also for other modules (e.g. testall)?
I started C::B with the \ufoai\ufo.cbp you mentioned above. That only compiles game and ufo.
Which testall.cbp do you want me to use ?
i've added ogg to ufo and testall now - please retry with latest master
I did. Some more warnings (casts and strdup), but NO linker errors :) Still terribly slow, though.
-
btw this time I did a rebuild, which does not clean and build game.dll. Intended or bug ?
-
i've added testall and game targets to the project file.
-
After some time
a success report
I'm able to build everything in MinGW (shared)
only a small bug troubled uforadiant linking
mingw32.mk
OPENGL_LIBS ?= -lopengl32
OPENAL_LIBS ?= -lopenal32
PKG_CONFIG ?= $(CROSS)pkg-config
I'm not using the outdated codeblocks.zip (MinGW environment)
but my own one
attached somewhere on page one
-
thanks - fixed in latest master
-
A question related to pkg-config
example SDL_Image
if i build that lib as static and shared
i should have 2 entries right?
Libs: .....
Libs.private: ......
Libs.private
is for static
and Libs
for shared
but i dont have a
Libs.private entry in *.pc ???
but SDL_image depend on jpeg png and tiff
shouldnt all that be part of Libs.private?
The "strange" thing is the .la files does have every depending lib listed
Why do i have a .la file and a .pc file ???
-
the la file is a libtool file that is used when you use libtool for linking (which we don't do [yet - because i don't have a lot of experience with it])
-
I have a small problem with radiant and libstdc++ libgcc_s_dw2
The exe and dll always request this dlls
even if i add -static-libgcc
While using C::B and -static-libgcc result in static linked lib
what do i miss ?
and where do i add -Wall to see ld output ?
thx
-
type "make Q=" to show all commands that are used to compile and/or link
dwarf2 is the exception handling that the tdm gcc mingw build uses by default afair. make sure to use this for every lib you are using. you may not mix them.
-
radiant.exe and brushexport.dll are requesting those dlls
none of the gtk or glib libs
-
please check that g++ is used for linking radiant
-
no cc does linking
src/tools/radiant/libs/generic/static.h:97:14: warning: inlining failed in call to 'static void
CountedStatic<Type, Context>::release() [with Type = TypeSystemInitialiser, Context = Null]': call
is unlikely and code size would grow
src/tools/radiant/libs/generic/static.h:124:3: warning: called from here
In file included from D:/temp/TMP_CO~2/UFOAIW~1/MinGW/include/gtk-2.0/gdk/gdkscreen.h:31:0,
from D:/temp/TMP_CO~2/UFOAIW~1/MinGW/include/gtk-2.0/gdk/gdkapplaunchcontext.h:31,
from D:/temp/TMP_CO~2/UFOAIW~1/MinGW/include/gtk-2.0/gdk/gdk.h:32,
from D:/temp/TMP_CO~2/UFOAIW~1/MinGW/include/gtk-2.0/gtk/gtk.h:32,
from src/tools/radiant/plugins/brushexport/support.h:1,
from src/tools/radiant/plugins/brushexport/support.cpp:1:
D:/temp/TMP_CO~2/UFOAIW~1/MinGW/include/cairo/cairo.h:1976:26: warning: comma at end of enumerator list
===> LD [radiant/plugins/brushexport.dll]
cc -DHAVE_CONFIG_H -ggdb -Winline -Wcast-qual -Wcast-align -Wmissing-declarations -Wpointer-arit
h -Wno-long-long -pedantic -Wextra -Wno-sign-compare -Wno-unused-parameter -Wreturn-type
-Wwrite-strings -DSHARED_EXT=\"dll\" -DGETTEXT_STATIC -DWINVER=0x501 -O2 -ffast-math -funroll-loops
-D_FORTIFY_SOURCE=2 -DNDEBUG -falign-loops=2 -falign-jumps=2 -falign-functions=2
-fno-strict-aliasing
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/callbacks.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/export.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/interface.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/plugin.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/support.cpp.o
-static-libgcc -static-libstdc++ -shared `pkg-config --libs gtk+-2.0 2> /dev/null || ( if [ -z ""
]; then echo "-lgtk+-2.0"; else echo "-l"; fi )` `pkg-config --libs glib-2.0 2> /dev/null || ( if [
-z "" ]; then echo "-lglib-2.0"; else echo "-l"; fi )` -lstdc++ -lm -o
radiant/plugins/brushexport.dll
Info: resolving std::basic_string<char, std::char_traits<char>, std::allocator<char>
>::_Rep::_S_empty_rep_storage by linking to __imp___ZNSs4_Rep20_S_empty_rep_storageE (auto-import)
Info: resolving vtable for __cxxabiv1::__si_class_type_info by linking to
__imp___ZTVN10__cxxabiv120__si_class_type_infoE (auto-import)
Info: resolving vtable for __cxxabiv1::__class_type_info by linking to
__imp___ZTVN10__cxxabiv117__class_type_infoE (auto-import)
Info: resolving vtable for __cxxabiv1::__vmi_class_type_info by linking to
__imp___ZTVN10__cxxabiv121__vmi_class_type_infoE
(auto-importd:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld
.exe: warning: auto-importing has been activated without --enable-auto-import specified on the
command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.)
cc.exe: unrecognized option '-static-libstdc++'
btw
export CC=gcc
does not work
/bin/sh: cc: command not found
-
call make CC=gcc
i suppose you have config.mk already set up with CC set.
if you don't do make clean-uforadiant before, just call "make CC=g++ CXX=g++ uforadiant" please
-
> export CC=gcc
> does not work
My fault, stupid winuser ::)
cc=gcc != CC=gcc
added into /etc/profile
> i suppose you have config.mk already set up with CC set.
No, my mod is attached
make distclean ; ./configure --prefix= --enable-release --target-os=mingw32 && make Q= -j4 CC=g++ CXX=g++ uforadiant-brushexport && echo ok
google (http://www.mail-archive.com/cygwin@cygwin.com/msg95034.html)
using
http://downloads.sourceforge.net/mingw/gcc-c++-4.5.0-1-mingw32-bin.tar.lzma
http://downloads.sourceforge.net/mingw/gcc-core-4.5.0-1-mingw32-bin.tar.lzma
http://downloads.sourceforge.net/mingw/libgcc-4.5.0-1-mingw32-dll-1.tar.lzma
http://downloads.sourceforge.net/mingw/libssp-4.5.0-1-mingw32-dll-0.tar.lzma
http://downloads.sourceforge.net/mingw/libstdc++-4.5.0-1-mingw32-dll-6.tar.lzma
tried tdm -> same result
===> LD [radiant/plugins/brushexport.dll]
g++ -DHAVE_CONFIG_H -ggdb -Winline -Wcast-qual -Wcast-align -Wmissing-declarations -Wpointer-arith -Wno-long-long -pedantic -Wextra
-Wno-sign-compare -Wno-unused-parameter -Wreturn-type -Wwrite-strings -DSHARED_EXT=\"dll\" -DGETTEXT_STATIC -DWINVER=0x501 -O2
-ffast-math -funroll-loops -D_FORTIFY_SOURCE=2 -DNDEBUG -falign-loops=2 -falign-jumps=2 -falign-functions=2 -fno-strict-aliasing
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/callbacks.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/export.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/interface.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/plugin.cpp.o
release-mingw32-i386/uforadiant-brushexport/tools/radiant/plugins/brushexport/support.cpp.o
-static-libgcc -static-libstdc++ -shared `pkg-config --libs gtk+-2.0 2> /dev/null || ( if [ -z "" ]; then echo "-lgtk+-2.0"; else echo
"-l"; fi )` `pkg-config --libs glib-2.0 2> /dev/null || ( if [ -z "" ]; then echo "-lglib-2.0"; else echo "-l"; fi )` -lstdc++ -lm -o radiant/plugins/brushexport.dll
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSsC1ERKSs[std::basic_
string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)]+0x0): multiple definition of `std::basic_string<char,
std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001060.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSsC1ERKSsjj[std::basi
c_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)]+0x0): multiple definition of
`std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&, unsigned int,
unsigned int)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001061.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSsD1Ev[std::basic_str
ing<char, std::char_traits<char>, std::allocator<char> >::~basic_string()]+0x0): multiple definition of
`std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001081.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSs6appendEPKcj[std::b
asic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*, unsigned int)]+0x0): multiple
definition of `std::string::append(char const*, unsigned int)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001011.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSs6assignEPKcj[std::b
asic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*, unsigned int)]+0x0): multiple
definition of `std::string::assign(char const*, unsigned int)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001018.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNKSs5rfindEPKcjj[std::
basic_string<char, std::char_traits<char>, std::allocator<char> >::rfind(char const*, unsigned int, unsigned int)
const]+0x0): multiple definition of `std::string::rfind(char const*, unsigned int, unsigned int) const'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d000240.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNKSs12find_last_ofEPKc
jj[std::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_last_of(char const*, unsigned int,
unsigned int) const]+0x0): multiple definition of `std::string::find_last_of(char const*, unsigned int, unsigned int)
const'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d000205.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSs4_Rep10_M_destroyER
KSaIcE[std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char>
const&)]+0x0): multiple definition of `std::string::_Rep::_M_destroy(std::allocator<char> const&)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d000988.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSs6assignERKSs[std::b
asic_string<char, std::char_traits<char>, std::allocator<char> >::assign(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)]+0x0): multiple definition of `std::string::assign(std::string
const&)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001019.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(string-inst.o):(.text$_ZNSsC1EPKcRKSaIcE[std::
basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char>
const&)]+0x0): multiple definition of `std::basic_string<char, std::char_traits<char>, std::allocator<char>
>::basic_string(char const*, std::allocator<char> const&)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d001057.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(atomicity.o):(.text$_ZN9__gnu_cxx18__exchange_
and_addEPVii+0x0): multiple definition of `__gnu_cxx::__exchange_and_add(int volatile*, int)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d000071.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(functexcept.o):(.text$_ZSt20__throw_length_err
orPKc+0x0): multiple definition of `std::__throw_length_error(char const*)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d002667.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(functexcept.o):(.text$_ZSt20__throw_out_of_ran
gePKc+0x0): multiple definition of `std::__throw_out_of_range(char const*)'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d002668.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(eh_throw.o):(.text$__cxa_rethrow+0x0):
multiple definition of `__cxa_rethrow'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d003390.o):(.text+0x0): first defined here
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0\libstdc++.a(eh_personality.o):(.text$__gxx_personality_v0+
0x0): multiple definition of `__gxx_personality_v0'
d:/temp/tmp_co~2/ufoaiw~1/mingw/bin/../lib/gcc/mingw32/4.5.0/libstdc++.dll.a(d003403.o):(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [radiant/plugins/brushexport.dll] Error 1
-
yes - now you have to remove the -lstdc++ from the build/modules/*.mk LDFLAGS
-
yes thats it
now i stuck on W2k compatibility (ufo.exe)
I found something (http://www.developer.com/tech/article.php/10923_3382721_2/Running-IPv6-Code-in-Multiple-Windows-Environments.htm) but the linker dont include wspiapi.h
Never had a problem with C::B ....
release-mingw32-i386/ufo/common/net.c.o:net.c:(.data+0x4): undefined reference to `WspiapiLegacyGetAddrInfo@16'
release-mingw32-i386/ufo/common/net.c.o:net.c:(.data+0xc): undefined reference to `WspiapiLegacyGetNameInfo@28'
release-mingw32-i386/ufo/common/net.c.o:net.c:(.data+0x14): undefined reference to `WspiapiLegacyFreeAddrInfo@4'
release-mingw32-i386/ufo/common/net.c.o:net.c:(.rdata+0x834): undefined reference to `WspiapiLegacyGetAddrInfo@16'
release-mingw32-i386/ufo/common/net.c.o:net.c:(.rdata+0x83c): undefined reference to `WspiapiLegacyGetNameInfo@28'
release-mingw32-i386/ufo/common/net.c.o:net.c:(.rdata+0x844): undefined reference to `WspiapiLegacyFreeAddrInfo@4'
-
please retry with latest master revision (http://ufoai.git.sourceforge.net/git/gitweb.cgi?p=ufoai/ufoai;a=commitdiff;h=ea67ad8dd39c6ab98d111d63f80a0d1cfd92933c) - i've added a per-target-linker-option. so uforadiant related targets are now linked with g++
are there any other changes you've made in order to get that far?
about w2k, i'll do some research, too (but i can't test here, no w2k)
-
> i've added a per-target-linker-option. so uforadiant related targets are now linked with g++
Is working like expected
> are there any other changes you've made in order to get that far?
.)shared
mingw32.mk
uforadiant_LDFLAGS += -lglib-2.0 -lgtk-win32-2.0 -lgobject-2.0 -static-libstdc++
uforadiant-brushexport_LDFLAGS+= -static-libstdc++
.)static
mingw32.mk
uforadiant_LDFLAGS += -lglib-2.0 -lgtk-win32-2.0 -lgobject-2.0 -static-libstdc++
uforadiant-brushexport_LDFLAGS+= -static-libstdc++
ifeq ($(UNIVERSAL),1)
PKG_CONFIG += --static
ufo_LDFLAGS += -static
ufoded_LDFLAGS += -static
testall_LDFLAGS += -static
ufo2map_LDFLAGS += -static
ufomodel_LDFLAGS += -static
endif
ufo.mk (needed by smpeg cant be set in mingw32.mk [wrong order {static and shared does work with it}])
$(TARGET)_LDFLAGS += -lpng ..... -lstdc++
testall.mk
$(TARGET)_LDFLAGS += -lcunit ..... -lstdc++
>about w2k, i'll do some research, too (but i can't test here, no w2k)
I'm still able to compile ufo.exe in C::B
C::B is using mingw32-gcc.exe, but using it doesn't solve the problem
Maybe an option .... ???
-
is that static-libstdc++ still needed?
the UNIVERSAL stuff is only for mac - to build binaries that run on ppc and i386
the uforadiant ldflags should come from the pkg-config file for gtk - please post the outout of pkg-config --libs gtk-2.0 and pkg-config --libs glib-2.0
-
ufo and testall should not need stdc++ at all - they are not c++ but normal c
-
> is that static-libstdc++ still needed?
yes
> the UNIVERSAL stuff is only for mac
than we need a static option
please post the outout
$ pkg-config --libs gtk+-2.0
-LD:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0
-lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0
-lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
$ pkg-config --libs glib-2.0
-LD:/temp/TMP_CO~2/UFOAIW~1/MinGW/lib -lglib-2.0 -lintl
ufo and testall should not need stdc++ at all - they are not c++ but normal c
But smpeg is
if you do a static build
you'll need it
./configure --enable-static --enable-shared --prefix= --enable-mmx --disable-gtktest --enable-opengl-player=no --disable-gtk-player CFLAGS="-mms-bitfields $1 -mthreads $2 $3 $4" LDFLAGS="-static-libgcc -static-libstdc++" &&
make CC=g++ CXX=g++ CXXLD='$(CXX) -no-undefined' &&
-
please edit build/flags.mk and change the PKG_LIBS macro - add a "--static" there please at the beginning of the call . if that works for you i will add a static option, too
-
working
-
ok, configure now has a --enable-static option- please try and let me know which modifications you still have
-
My mod is attached
I've added static a little different than you
and an --enable-w2k switch
We need the -static LDFLAG too ???
added this switch only at mingw32.mk
If you add this to $(TARGET)_LDFLAGS (ufo.mk ufoded.mk ....)
please use this for radiant
$(shell echo $(TARGET_OS) | grep -i "mingw32" >/dev/null || if [ -n "$(STATIC)" ]; then echo -$(STATIC); fi )
Its still not possible in Mingw to build radiant statically
The ufo and ufotest -lstdc++ problem is solved by adding this flag into SDL_mixer.pc
The Windows 2000 problem was caused by CCFLAGS += -std=c99
and please leave the -static-libgcc -static-libstdc++ flags for brush and radiant
Still one problem
stdout and stderr is redirected to
stderr.txt
stdout.txt
for ufomodel and ufo2map
btw. please merge this topic into this one http://ufoai.ninex.info/forum/index.php?topic=4689.0
-
Still one problem
stdout and stderr is redirected to
stderr.txt
stdout.txt
for ufomodel and ufo2map
Is fixed too
As described here (http://www.libsdl.org/cgi/docwiki.cgi/FAQ_Console)
recompiled SDL using --disable-stdio-redirect
removed -mwindows from sdl_config and sdl.pc
ufo2map and ufomodel do now output to stdout and stderr instead of a file
(ufo and testall still compile ;) )
One last very unimportant thing
Do you plan to use the -s switch in the future to reduce the file size?
-
make pk3
/bin/sh: /bin/7za: Bad file number
make: *** [base/0models.pk3] Error 126
Fist im using 7za instead of 7z (easy fixed)
2nd you append all files as parameters to 7zip
and that will fail
The buffer is not long enough
A listfile is a way arround it
but
For list files, 7-Zip uses UTF-8 encoding by default. You can change encoding using -scs switch
UTF-8
Unicode UTF-8 character set.
WIN
Default character set of Windows.
DOS
Default DOS (OEM) character set of Windows.
7z a archive.7z @listfile.txt -scsWIN
another solution is to hardlink files
or the best solution is a python script (for windows only)
We|I are than able to optimize the pk3 build
because 7z only use 2 cores
On a quad core we can run 2 instances ...
-
i'm only interested in a makefile-only solution and don't want to add extra scripts.
feel free to extend data.mk (the ZIP macro) with 7za, too
-
Hello,
I have a question to this: Is it possible (or generally a good idea) to put dependency task into its own make target to provide a faster build task? Each time I start a incremental build the dependency is recalculated even if I changed nothing on headers.
If it is an own task its up to the programmer to rebuild the dependencies during each build.
Just an opinion.
Regards
-
Do you plan to use the -s switch in the future to reduce the file size?
this is done on the make install target - it calls install with the s option for binaries.
but there are also strip targets avaiable - make strip-ufo will only strip the ufo target, make strip will strip everything.
-
I have a question to this: Is it possible (or generally a good idea) to put dependency task into its own make target to provide a faster build task? Each time I start a incremental build the dependency is recalculated even if I changed nothing on headers.
if you could provide an example what you exactly mean and how to improve it... i will have a look at it.
-
>> and please leave the -static-libgcc -static-libstdc++ flags for brush and radiant
> can you tell me why this is needed? this isn't needed for cross-compile with mingw-cross-env
You do a static build on mingw-cross-env
that is the reason why you dont need it
But on Windows we still use shared libs
that is the reason why we need it
This parameter wont interfere with a static build (you include it because of -static)
but is is needed for a shared build
===========================================================================
The make pk3 error
can be fixed in to ways
This will force make to use zip on windows instead of 7z or 7za
Why: Because 7z is unable to handle a large parameter list, while zip does its job
This is as slow as usual
but -j3 will help (on a dual core)
define ZIP
- $(shell ([ -x "$$(which 7z 2> /dev/null)" -a $(OS) != "Windows_NT" ] && echo "7z a -tzip -mx=9") || ([ -x "$$(which 7z 2> /dev/null)" -a $(OS) != "Windows_NT" ] && echo "7z a -tzip -mx=9") || ([ -x "$$(which zip 2> /dev/null)" ] && echo "zip -u9"))
+ $(shell ([ $$OS != Windows_NT -a -x "$$(which 7z 2> /dev/null)" ] && echo "7z a -tzip -mx=9") || ([ $$OS != Windows_NT -a -x "$$(which 7za 2> /dev/null)" ] && echo "7za a -tzip -mx=9") || ([ -x "$$(which zip 2> /dev/null)" ] && echo "zip -u9"))
endef
This will use the internal search algorithm of 7z and zip to find all files
Its a lot faster, because make.exe dont need to do a lot of string manipulation
Make.exe is slow on windows (single threaded)
include build/pk3_def.mk
BASE_DIR = base
PAK_FILES_OUT = $(addprefix $(BASE_DIR)/,$(PAK_FILES))
pk3: $(PAK_FILES_OUT)
clean-pk3:
$(Q)rm -f $(PAK_FILES_OUT)
define FIND
$(shell find $(BASE_DIR)/$(1) -type f -print)
endef
define ZIP
$(shell ([ -x "$$(which 7z 2> /dev/null)" ] && echo "7z u -tzip -mx=9") || ([ -x "$$(which 7za 2> /dev/null)" ] && echo "7za u -tzip -mx=9") || ([ -x "$$(which zip 2> /dev/null)" ] && echo "zip -u9"))
endef
%.pk3 :
ifeq (7z,$(findstring 7z,$(call ZIP)))
ifeq ($(OS),Windows_NT)
$(Q)cd $(BASE_DIR) ; cmd /c "$(call ZIP) $(filter -r,$(call $@)) $(notdir $@) $(filter-out -r,$(call $@))"
else
$(Q)cd $(BASE_DIR) ; $(call ZIP) $(filter -r,$(call $@)) $(notdir $@) $(filter-out -r,$(call $@))
endif
else
$(Q)cd $(BASE_DIR) ; $(call ZIP) $(filter -r,$(call $@)) $(notdir $@) . -i $(subst *,\*,$(filter-out -r,$(call $@)))
endif
define $(BASE_DIR)/0pics.pk3
-r pics/*.jpg pics/*.tga pics/*.png
endef
define $(BASE_DIR)/0textures.pk3
-r textures/*.jpg textures/*.tga textures/*.png
endef
define $(BASE_DIR)/0models.pk3
-r models/*.mdx models/*.md2 models/*.md3 models/*.dpm models/*.obj models/*.jpg models/*.png models/*.tga models/*.anm models/*.tag
endef
define $(BASE_DIR)/0models.pk3
-r models/*.mdx models/*.md2 models/*.md3 models/*.dpm models/*.obj models/*.jpg models/*.png models/*.tga models/*.anm models/*.tag
endef
define $(BASE_DIR)/0snd.pk3
-r sound/*.ogg sound/*.wav
endef
define $(BASE_DIR)/0music.pk3
music/*.ogg
endef
define $(BASE_DIR)/0maps.pk3
-r maps/*.bsp maps/*.ump
endef
define $(BASE_DIR)/0videos.pk3
-r videos/*.roq videos/*.ogm
endef
define $(BASE_DIR)/0media.pk3
media/*.ttf
endef
define $(BASE_DIR)/0shaders.pk3
shaders/*.glsl
endef
define $(BASE_DIR)/0ufos.pk3
-r ufos/*.ufo
endef
define $(BASE_DIR)/0materials.pk3
materials/*.mat
endef
define $(BASE_DIR)/0base.pk3
*.cfg mapcycle.txt irc_motd.txt ai/*.lua
endef
-
i will check it - why is the cmd /c needed? - it should be $(shell ...), no? (if needed at all)
-
i had to add -r to all other pk3 defines to make it work. it feels a lot faster here, too
thanks a lot
-
ifeq (7z,$(findstring 7z,$(call ZIP)))
is there any special reason that you only check 7z here? and not also 7za?
-
i've applied it to master without that Windows_NT hack - i would first like to know why it's needed and whether we can maybe work around this hack somehow.
it's tested on mac and linux and works fine there (and finally on more than one core - thanks a lot again)
-
> why is the cmd /c needed
7z recursive search will stuck
maybe a / path or winpath c:\... problem
> i had to add -r to all other pk3 defines to make it work.
Hmmm a bug?
On win it worked well
I'll test it tomorrow inside a real Linux VM
>> ifeq (7z,$(findstring 7z,$(call ZIP)))
> is there any special reason that you only check 7z here? and not also 7za
7z accrue in 7z and 7za
first i checked for zip, but 7z a -tzip ;) url (http://math.unice.fr/laboratoire/help/info/make/make_74.html)
-
i've applied it to master without that Windows_NT hack
OS is an environment var in Win(nt)
Its also present inside of mingw
but no other machine should have it
at least not set to Windows_NT
-
define $(BASE_DIR)/0models.pk3
-r models/*.mdx models/*.md2 models/*.md3 models/*.dpm models/*.obj models/*.jpg models/*.png models/*.tga models/*.anm models/*.tag
endef
is mirrored (bug)
you have to remove on
-
Hello,
just a small improvement - see attached patch. I also want to get rid of the first tasks, I want to implement a caching function for all tasks in Makefile and friends, which take a long time (file system searches, git check, etc).
Just to explain why I want to do this, please correct me, if I'm not right with that: I use Mingw/Msys to compile on Windows 7. I just type make in msys shell and this is the time it takes for doing nothing:
$ time { make; }
make: Nothing to be done for `all'.
real 0m29.291s
user 0m9.715s
sys 0m18.212s
I see there are some time consuming tasks such as find and I love to see that tasks are only done if I want to do it, for example after a make clean. How long does a build on Linux or other machines takes of there is nothing to do?
Best regards
-
try make -r
-
here the time if nothing must be done.
real 0m1.381s
user 0m1.080s
sys 0m0.070s
-
try make -r
Thank you, that worked fine. It's still 10 secs, but that seems to be because of my "old" hardware.
-
real 0m1.381s
Hmmm. Still quite a lot of time for 'nothing to do' :(
Compared to the 0.00 secs C::B (with it's built-in 'make') needs for that...
Let's face it, the MAKE we are using doesn't seem to be suitable for Windoze systems (unless we ALL are too stupid to use it the right way). Isn't there some alternative (free & compatible) MAKE for Win users ?
-
Let's face it, the MAKE we are using doesn't seem to be suitable for Windoze systems (unless we ALL are too stupid to use it the right way). Isn't there some alternative (free & compatible) MAKE for Win users ?
I admit I don't know as much as the rest of you about the things in this discussion, but I will say that I've seen plenty of projects for Win32 that use a Windows version of MAKE or something based upon it - some are on SourceForge, but, would SCONS work at all for UFO:AI? According to my research on it, SCONS was used to build the original GtkRadiant, I'd imagine it would build UFORadiant and then, with some work, the UFO AI game itself. It's also cross-platform.
Hopefully there is something in that last paragraph that is at least somewhat helpful.
-
make != make
There is MSYS make.exe
and mingw32-make.exe
MSYS is working well under MinGW
mingw32-make (used by C::B) will skip >any< find call
and thats the reason why its that fast
find: paths must precede expression: \!
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
I've recompiled MSYS make (very easy task)
and won 10sec by using the --enable-case-insensitive-file-system
but dropped it ...
To be honest
im using a linux VM for testing
its so much faster than MinGW
But you can run more MinGW shells one for "make ufo" another for "make pk3" ....
-
mingw32-make (used by C::B) will skip >any< find call
and thats the reason why its that fast
Interesting. What are those find calls used for (in ufoai) if C::B can (safely ?) omit them ?
-
btw. it would also be interesting if someone of you could get the ccache for win32 (http://code.google.com/p/ccache-win32/) working.
-
2 ?bugs? found
1)make models
Doesn't compile ufomodel before mdx file creation
it does it at last
If you got ufomodel and call make models
you are doing your mdx files and at last ufomodel
Its the reverse order
But if i add the option -n "make models -B -j8 -n"
I'll get the cc build commands for ufomodel before ufomodel mdx creation (as it should be)
The behaver is the same on linux and the reson is the -jn option
2)make does a "reconfig"
cd /ufoai && ./configure --prefix= --enable-static --enable-w2k --target-os=mingw32 && make ufoded Q= -B -j4 && make ufo Q= -B -j4 || exit 1 ; exit 0
Will build ufoded static and with w2k compatibility
but ufo.exe is dynamic and without w2k compatibility
./configure --prefix= --enable-static --enable-w2k --enable-release --target-os=mingw32 && make models -B -j8
Enable static linking
Enable Windows 2000 compatibility
Compile for mingw32
Compile for i386
Compile in release mode
Found cc gcc
Found cxx g++
Using bindir /bin
Using datadir /games/ufoai
Using libdir /lib
Build modules:
Build game
Build testall
Build ufo
Build ufo2map
Build ufoded
Build ufomodel
Build uforadiant-brushexport
Build uforadiant
Use signal handler
Setting custom data directory
Setting custom library directory
Found xvid.h
Found theora/theora.h
Could not find execinfo.h
Found bfd.h
Found CUnit/Basic.h
Compile for mingw32
Compile for i386
Found cc gcc
Found cxx g++
Using bindir /usr/local/bin
Using datadir /usr/local/games/ufoai
Using libdir /usr/local/lib
Using prefix /usr/local
Build modules:
./ufomodel.exe -mdx -overwrite -v -s 0.7 -f models/aircraft/craft_arm_plate/plating.md2
make: ./ufomodel.exe: Command not found
make: *** [base/models/aircraft/craft_arm_plate/plating.mdx] Error 127
make: *** Waiting for unfinished jobs....
Build game
Build testall
Build ufo
Build ufo2map
Build ufoded
Build ufomodel
Build uforadiant-brushexport
Build uforadiant
Debug build
Use signal handler
Setting custom data directory
Setting custom library directory
Found xvid.h
Found theora/theora.h
Could not find execinfo.h
Found bfd.h
Found CUnit/Basic.h