From 7f6002caba3f0a6749820c2772161caf55b8d267 Mon Sep 17 00:00:00 2001 From: neonloop Date: Fri, 7 May 2021 20:00:12 +0000 Subject: Initial commit (uqm-0.8.0) --- .gitattributes | 1 + .gitignore | 6 + AUTHORS | 236 ++ BUGS | 5 + COPYING | 944 +++++ ChangeLog | 1175 ++++++ Contributing | 135 + INSTALL | 89 + INSTALL.macos | 44 + INSTALL.pkgs | 39 + INSTALL.symbian | 94 + INSTALL.win32 | 42 + Makefile.build | 90 + Makeinfo | 1 + Makeproject | 46 + README | 23 + README-SDL | 13 + WhatsNew | 512 +++ build.sh | 34 + build.trimui.sh | 8 + build.vars.in | 65 + build/msvc6/AbxDecoder.dsp | 105 + build/msvc6/UrQuanMasters.dsp | 3786 +++++++++++++++++++ build/msvc6/UrQuanMasters.dsw | 29 + build/unix/README | 5 + build/unix/README.crossbuild | 49 + build/unix/README.packages | 31 + build/unix/ansi | 21 + build/unix/build.config | 780 ++++ build/unix/build.docs | 205 + build/unix/build.sh | 143 + build/unix/build_clean | 29 + build/unix/build_collect | 26 + build/unix/build_functions | 311 ++ build/unix/config_functions | 1139 ++++++ build/unix/config_proginfo_build | 336 ++ build/unix/config_proginfo_host | 356 ++ build/unix/make/buildtools-armv5 | 17 + build/unix/make/buildtools-gcce | 8 + build/unix/make/buildtools-generic | 36 + build/unix/make/buildtools-winscw | 19 + build/unix/menu_functions | 662 ++++ build/unix/recurse | 88 + build/unix/todo | 15 + build/unix/uqm-wrapper.in | 4 + build/unix_installer/README | 3 + build/unix_installer/USAGE | 14 + build/unix_installer/buildinstaller.sh | 107 + build/unix_installer/copy_mac_frameworks.pl | 128 + build/unix_installer/install.sh.in | 277 ++ build/unix_installer/installer.config | 139 + build/unix_installer/template | 40 + build/win32_install/build-win32-installer.sh | 70 + build/win32_install/orzshofixti.bmp | Bin 0 -> 154542 bytes build/win32_install/packages.nsh | 23 + build/win32_install/procpkgs.sh | 61 + build/win32_install/ultron.bmp | Bin 0 -> 25818 bytes build/win32_install/uqm-3do.cfg | 11 + build/win32_install/uqm-installer.nsi | 556 +++ build/win32_install/uqm-pc.cfg | 11 + content/version | 3 + doc/devel/aniformat | 37 + doc/devel/battleinput | 13 + doc/devel/blue-gas-giant-pal.png | Bin 0 -> 1980 bytes doc/devel/checklist | 52 + doc/devel/contentfiles | 28 + doc/devel/debug | 74 + doc/devel/dialogs | 74 + doc/devel/files | 115 + doc/devel/fontres | 75 + doc/devel/generate | 155 + doc/devel/gfxlib | 328 ++ doc/devel/gfxres | 64 + doc/devel/gfxversions | 60 + doc/devel/glossary | 6 + doc/devel/historical | 39 + doc/devel/input | 126 + doc/devel/livecd | 80 + doc/devel/meleeteams | 56 + doc/devel/musicres | 18 + doc/devel/netplay/notes | 21 + doc/devel/netplay/protocol | 336 ++ doc/devel/netplay/states | 178 + doc/devel/netplay/todo | 120 + doc/devel/orggenerate | 133 + doc/devel/pkgformat | 174 + doc/devel/planetrender | 54 + doc/devel/planetrotate | 31 + doc/devel/planettopo | 92 + doc/devel/plugins | 129 + doc/devel/queues | 62 + doc/devel/racestrings | 45 + doc/devel/resources | 196 + doc/devel/savefile | 149 + doc/devel/sc1 | 186 + doc/devel/script | 117 + doc/devel/sfx | 202 + doc/devel/statefiles | 123 + doc/devel/strtab | 76 + doc/devel/threads | 165 + doc/devel/timing | 66 + doc/devel/versions | 42 + doc/devel/voiceeffects | 20 + doc/users/manual.txt | 799 ++++ doc/users/unixinstall | 45 + doc/users/uqm.6 | 985 +++++ src/Makeinfo | 21 + src/abxadec/Makefile | 9 + src/abxadec/abxaud.c | 638 ++++ src/abxadec/abxaud.def | 16 + src/abxadec/abxaud.h | 34 + src/config.h | 21 + src/config_unix.h.in | 63 + src/config_vc6.h | 61 + src/config_win.h.in | 65 + src/darwin/Makeinfo | 2 + src/darwin/SDLMain.h | 16 + src/darwin/SDLMain.m | 404 ++ src/endian_uqm.h | 136 + src/getopt/Makeinfo | 2 + src/getopt/getopt.c | 1061 ++++++ src/getopt/getopt.h | 180 + src/getopt/getopt1.c | 189 + src/libs/Makeinfo | 19 + src/libs/alarm.h | 9 + src/libs/async.h | 10 + src/libs/callback.h | 10 + src/libs/callback/Makeinfo | 2 + src/libs/callback/alarm.c | 177 + src/libs/callback/alarm.h | 56 + src/libs/callback/async.c | 56 + src/libs/callback/async.h | 28 + src/libs/callback/callback.c | 193 + src/libs/callback/callback.h | 43 + src/libs/cdp/Makeinfo | 3 + src/libs/cdp/cdp.c | 437 +++ src/libs/cdp/cdp.h | 47 + src/libs/cdp/cdp_alli.h | 31 + src/libs/cdp/cdp_iio.h | 50 + src/libs/cdp/cdp_imem.h | 42 + src/libs/cdp/cdp_isnd.h | 43 + src/libs/cdp/cdp_ivid.h | 43 + src/libs/cdp/cdpapi.c | 864 +++++ src/libs/cdp/cdpapi.h | 154 + src/libs/cdp/cdpint.h | 48 + src/libs/cdp/cdpmod.h | 92 + src/libs/cdp/windl.c | 76 + src/libs/cdp/windl.h | 37 + src/libs/cdplib.h | 32 + src/libs/compiler.h | 96 + src/libs/declib.h | 57 + src/libs/decomp/Makeinfo | 2 + src/libs/decomp/lzdecode.c | 415 +++ src/libs/decomp/lzencode.c | 468 +++ src/libs/decomp/lzh.h | 91 + src/libs/decomp/update.c | 115 + src/libs/file.h | 95 + src/libs/file/Makeinfo | 2 + src/libs/file/dirs.c | 830 +++++ src/libs/file/files.c | 165 + src/libs/file/filintrn.h | 24 + src/libs/file/temp.c | 199 + src/libs/gfxlib.h | 474 +++ src/libs/graphics/Makeinfo | 12 + src/libs/graphics/bbox.c | 133 + src/libs/graphics/bbox.h | 46 + src/libs/graphics/boxint.c | 183 + src/libs/graphics/clipline.c | 241 ++ src/libs/graphics/cmap.c | 663 ++++ src/libs/graphics/cmap.h | 77 + src/libs/graphics/context.c | 404 ++ src/libs/graphics/context.h | 147 + src/libs/graphics/dcqueue.c | 670 ++++ src/libs/graphics/dcqueue.h | 55 + src/libs/graphics/drawable.c | 501 +++ src/libs/graphics/drawable.h | 88 + src/libs/graphics/drawcmd.h | 202 + src/libs/graphics/filegfx.c | 72 + src/libs/graphics/font.c | 334 ++ src/libs/graphics/font.h | 71 + src/libs/graphics/frame.c | 266 ++ src/libs/graphics/gfx_common.c | 196 + src/libs/graphics/gfx_common.h | 112 + src/libs/graphics/gfxintrn.h | 32 + src/libs/graphics/gfxload.c | 597 +++ src/libs/graphics/intersec.c | 415 +++ src/libs/graphics/loaddisp.c | 65 + src/libs/graphics/pixmap.c | 170 + src/libs/graphics/prim.h | 80 + src/libs/graphics/resgfx.c | 54 + src/libs/graphics/sdl/2xscalers.c | 260 ++ src/libs/graphics/sdl/2xscalers.h | 30 + src/libs/graphics/sdl/2xscalers_3dnow.c | 102 + src/libs/graphics/sdl/2xscalers_mmx.c | 136 + src/libs/graphics/sdl/2xscalers_mmx.h | 56 + src/libs/graphics/sdl/2xscalers_sse.c | 100 + src/libs/graphics/sdl/Makeinfo | 9 + src/libs/graphics/sdl/biadv2x.c | 532 +++ src/libs/graphics/sdl/bilinear2x.c | 112 + src/libs/graphics/sdl/canvas.c | 2176 +++++++++++ src/libs/graphics/sdl/hq2x.c | 2888 +++++++++++++++ src/libs/graphics/sdl/nearest2x.c | 207 ++ src/libs/graphics/sdl/opengl.c | 575 +++ src/libs/graphics/sdl/opengl.h | 89 + src/libs/graphics/sdl/palette.c | 47 + src/libs/graphics/sdl/palette.h | 57 + src/libs/graphics/sdl/png2sdl.c | 300 ++ src/libs/graphics/sdl/png2sdl.h | 24 + src/libs/graphics/sdl/primitives.c | 633 ++++ src/libs/graphics/sdl/primitives.h | 62 + src/libs/graphics/sdl/pure.c | 474 +++ src/libs/graphics/sdl/pure.h | 29 + src/libs/graphics/sdl/rotozoom.c | 1038 ++++++ src/libs/graphics/sdl/rotozoom.h | 96 + src/libs/graphics/sdl/scaleint.h | 433 +++ src/libs/graphics/sdl/scalemmx.h | 793 ++++ src/libs/graphics/sdl/scalers.c | 289 ++ src/libs/graphics/sdl/scalers.h | 27 + src/libs/graphics/sdl/sdl1_common.c | 247 ++ src/libs/graphics/sdl/sdl2_common.c | 222 ++ src/libs/graphics/sdl/sdl2_pure.c | 465 +++ src/libs/graphics/sdl/sdl_common.c | 308 ++ src/libs/graphics/sdl/sdl_common.h | 63 + src/libs/graphics/sdl/sdluio.c | 153 + src/libs/graphics/sdl/sdluio.h | 39 + src/libs/graphics/sdl/triscan2x.c | 155 + src/libs/graphics/tfb_draw.c | 493 +++ src/libs/graphics/tfb_draw.h | 199 + src/libs/graphics/tfb_prim.c | 237 ++ src/libs/graphics/tfb_prim.h | 30 + src/libs/graphics/widgets.c | 941 +++++ src/libs/graphics/widgets.h | 222 ++ src/libs/heap.h | 9 + src/libs/heap/Makeinfo | 2 + src/libs/heap/heap.c | 197 + src/libs/heap/heap.h | 69 + src/libs/inplib.h | 70 + src/libs/input/Makeinfo | 6 + src/libs/input/inpintrn.h | 25 + src/libs/input/input_common.c | 20 + src/libs/input/input_common.h | 39 + src/libs/input/sdl/Makeinfo | 2 + src/libs/input/sdl/input.c | 625 ++++ src/libs/input/sdl/input.h | 27 + src/libs/input/sdl/keynames.c | 229 ++ src/libs/input/sdl/keynames.h | 22 + src/libs/input/sdl/vcontrol.c | 1300 +++++++ src/libs/input/sdl/vcontrol.h | 108 + src/libs/list.h | 29 + src/libs/list/Makeinfo | 2 + src/libs/list/list.c | 132 + src/libs/list/list.h | 70 + src/libs/log.h | 25 + src/libs/log/Makeinfo | 15 + src/libs/log/loginternal.h | 24 + src/libs/log/msgbox.h | 23 + src/libs/log/msgbox_macosx.m | 42 + src/libs/log/msgbox_stub.c | 34 + src/libs/log/msgbox_win.c | 67 + src/libs/log/uqmlog.c | 331 ++ src/libs/log/uqmlog.h | 59 + src/libs/math/Makeinfo | 2 + src/libs/math/mthintrn.h | 25 + src/libs/math/random.c | 101 + src/libs/math/random.h | 56 + src/libs/math/random2.c | 89 + src/libs/math/sqrt.c | 97 + src/libs/mathlib.h | 36 + src/libs/md5.h | 32 + src/libs/md5/Makeinfo | 2 + src/libs/md5/README | 6 + src/libs/md5/md5.c | 452 +++ src/libs/md5/md5.h | 130 + src/libs/memlib.h | 43 + src/libs/memory/Makeinfo | 1 + src/libs/memory/w_memlib.c | 84 + src/libs/mikmod/AUTHORS | 124 + src/libs/mikmod/Makeinfo | 5 + src/libs/mikmod/README | 5 + src/libs/mikmod/drv_nos.c | 107 + src/libs/mikmod/load_it.c | 1008 +++++ src/libs/mikmod/load_mod.c | 512 +++ src/libs/mikmod/load_s3m.c | 470 +++ src/libs/mikmod/load_stm.c | 376 ++ src/libs/mikmod/load_xm.c | 817 ++++ src/libs/mikmod/mdreg.c | 47 + src/libs/mikmod/mdriver.c | 935 +++++ src/libs/mikmod/mikmod.h | 730 ++++ src/libs/mikmod/mikmod_build.h | 9 + src/libs/mikmod/mikmod_internals.h | 679 ++++ src/libs/mikmod/mloader.c | 607 +++ src/libs/mikmod/mlreg.c | 50 + src/libs/mikmod/mlutil.c | 337 ++ src/libs/mikmod/mmalloc.c | 73 + src/libs/mikmod/mmerror.c | 197 + src/libs/mikmod/mmio.c | 490 +++ src/libs/mikmod/mplayer.c | 3561 ++++++++++++++++++ src/libs/mikmod/munitrk.c | 303 ++ src/libs/mikmod/mwav.c | 210 ++ src/libs/mikmod/npertab.c | 48 + src/libs/mikmod/sloader.c | 519 +++ src/libs/mikmod/virtch.c | 935 +++++ src/libs/mikmod/virtch2.c | 887 +++++ src/libs/mikmod/virtch_common.c | 459 +++ src/libs/misc.h | 66 + src/libs/net.h | 36 + src/libs/network/FILES | 26 + src/libs/network/Makeinfo | 14 + src/libs/network/bytesex.h | 96 + src/libs/network/connect/Makeinfo | 2 + src/libs/network/connect/connect.c | 490 +++ src/libs/network/connect/connect.h | 111 + src/libs/network/connect/listen.c | 456 +++ src/libs/network/connect/listen.h | 106 + src/libs/network/connect/resolve.c | 211 ++ src/libs/network/connect/resolve.h | 109 + src/libs/network/netmanager/Makeinfo | 11 + src/libs/network/netmanager/ndesc.c | 211 ++ src/libs/network/netmanager/ndesc.h | 82 + src/libs/network/netmanager/ndindex.ci | 103 + src/libs/network/netmanager/netmanager.h | 48 + src/libs/network/netmanager/netmanager_bsd.c | 223 ++ src/libs/network/netmanager/netmanager_bsd.h | 26 + src/libs/network/netmanager/netmanager_common.ci | 58 + src/libs/network/netmanager/netmanager_win.c | 464 +++ src/libs/network/netmanager/netmanager_win.h | 35 + src/libs/network/netport.c | 91 + src/libs/network/netport.h | 43 + src/libs/network/network.h | 27 + src/libs/network/network_bsd.c | 30 + src/libs/network/network_win.c | 75 + src/libs/network/socket/Makeinfo | 11 + src/libs/network/socket/socket.c | 61 + src/libs/network/socket/socket.h | 99 + src/libs/network/socket/socket_bsd.c | 283 ++ src/libs/network/socket/socket_bsd.h | 33 + src/libs/network/socket/socket_win.c | 314 ++ src/libs/network/socket/socket_win.h | 34 + src/libs/network/wspiapiwrap.c | 34 + src/libs/network/wspiapiwrap.h | 33 + src/libs/platform.h | 57 + src/libs/reslib.h | 140 + src/libs/resource/Makeinfo | 3 + src/libs/resource/direct.c | 101 + src/libs/resource/filecntl.c | 146 + src/libs/resource/getres.c | 257 ++ src/libs/resource/index.h | 54 + src/libs/resource/loadres.c | 54 + src/libs/resource/propfile.c | 129 + src/libs/resource/propfile.h | 30 + src/libs/resource/resinit.c | 651 ++++ src/libs/resource/resintrn.h | 34 + src/libs/resource/stringbank.c | 181 + src/libs/resource/stringbank.h | 57 + src/libs/sndlib.h | 107 + src/libs/sound/Makeinfo | 9 + src/libs/sound/audiocore.c | 272 ++ src/libs/sound/audiocore.h | 169 + src/libs/sound/decoders/Makeinfo | 8 + src/libs/sound/decoders/aiffaud.c | 650 ++++ src/libs/sound/decoders/aiffaud.h | 36 + src/libs/sound/decoders/decoder.c | 936 +++++ src/libs/sound/decoders/decoder.h | 129 + src/libs/sound/decoders/dukaud.c | 546 +++ src/libs/sound/decoders/dukaud.h | 36 + src/libs/sound/decoders/modaud.c | 430 +++ src/libs/sound/decoders/modaud.h | 26 + src/libs/sound/decoders/oggaud.c | 278 ++ src/libs/sound/decoders/oggaud.h | 26 + src/libs/sound/decoders/wav.c | 385 ++ src/libs/sound/decoders/wav.h | 26 + src/libs/sound/fileinst.c | 87 + src/libs/sound/mixer/Makeinfo | 3 + src/libs/sound/mixer/mixer.c | 1760 +++++++++ src/libs/sound/mixer/mixer.h | 274 ++ src/libs/sound/mixer/mixerint.h | 110 + src/libs/sound/mixer/nosound/Makeinfo | 2 + src/libs/sound/mixer/nosound/audiodrv_nosound.c | 410 ++ src/libs/sound/mixer/nosound/audiodrv_nosound.h | 69 + src/libs/sound/mixer/sdl/Makeinfo | 2 + src/libs/sound/mixer/sdl/audiodrv_sdl.c | 486 +++ src/libs/sound/mixer/sdl/audiodrv_sdl.h | 66 + src/libs/sound/music.c | 233 ++ src/libs/sound/openal/Makeinfo | 2 + src/libs/sound/openal/audiodrv_openal.c | 420 +++ src/libs/sound/openal/audiodrv_openal.h | 86 + src/libs/sound/resinst.c | 65 + src/libs/sound/sfx.c | 306 ++ src/libs/sound/sndintrn.h | 76 + src/libs/sound/sound.c | 178 + src/libs/sound/sound.h | 81 + src/libs/sound/stream.c | 814 ++++ src/libs/sound/stream.h | 37 + src/libs/sound/trackint.h | 41 + src/libs/sound/trackplayer.c | 874 +++++ src/libs/sound/trackplayer.h | 52 + src/libs/strings/Makeinfo | 2 + src/libs/strings/getstr.c | 643 ++++ src/libs/strings/sfileins.c | 50 + src/libs/strings/sresins.c | 55 + src/libs/strings/stringhashtable.c | 67 + src/libs/strings/stringhashtable.h | 43 + src/libs/strings/strings.c | 347 ++ src/libs/strings/strintrn.h | 56 + src/libs/strings/unicode.c | 541 +++ src/libs/strlib.h | 80 + src/libs/task/Makeinfo | 1 + src/libs/task/tasklib.c | 139 + src/libs/tasklib.h | 62 + src/libs/threadlib.h | 186 + src/libs/threads/Makeinfo | 11 + src/libs/threads/pthread/Makeinfo | 2 + src/libs/threads/pthread/posixthreads.c | 672 ++++ src/libs/threads/pthread/posixthreads.h | 103 + src/libs/threads/sdl/Makeinfo | 2 + src/libs/threads/sdl/sdlthreads.c | 706 ++++ src/libs/threads/sdl/sdlthreads.h | 106 + src/libs/threads/thrcommon.c | 451 +++ src/libs/threads/thrcommon.h | 28 + src/libs/time/Makeinfo | 3 + src/libs/time/sdl/Makeinfo | 2 + src/libs/time/sdl/sdltime.c | 30 + src/libs/time/sdl/sdltime.h | 35 + src/libs/time/timecommon.c | 41 + src/libs/time/timecommon.h | 30 + src/libs/timelib.h | 49 + src/libs/uio.h | 34 + src/libs/uio/COPYING | 350 ++ src/libs/uio/Makeinfo | 22 + src/libs/uio/charhashtable.c | 77 + src/libs/uio/charhashtable.h | 39 + src/libs/uio/debug.c | 914 +++++ src/libs/uio/debug.h | 29 + src/libs/uio/defaultfs.c | 41 + src/libs/uio/defaultfs.h | 41 + src/libs/uio/doc/basics | 178 + src/libs/uio/doc/conventions | 30 + src/libs/uio/doc/todo | 144 + src/libs/uio/fileblock.c | 332 ++ src/libs/uio/fileblock.h | 88 + src/libs/uio/fstypes.c | 272 ++ src/libs/uio/fstypes.h | 113 + src/libs/uio/getint.h | 141 + src/libs/uio/gphys.c | 620 ++++ src/libs/uio/gphys.h | 313 ++ src/libs/uio/hashtable.c | 374 ++ src/libs/uio/hashtable.h | 157 + src/libs/uio/io.c | 1859 ++++++++++ src/libs/uio/io.h | 159 + src/libs/uio/ioaux.c | 930 +++++ src/libs/uio/ioaux.h | 53 + src/libs/uio/iointrn.h | 197 + src/libs/uio/match.c | 569 +++ src/libs/uio/match.h | 182 + src/libs/uio/mem.h | 61 + src/libs/uio/memdebug.c | 293 ++ src/libs/uio/memdebug.h | 97 + src/libs/uio/mount.c | 168 + src/libs/uio/mount.h | 64 + src/libs/uio/mounttree.c | 814 ++++ src/libs/uio/mounttree.h | 204 + src/libs/uio/paths.c | 602 +++ src/libs/uio/paths.h | 96 + src/libs/uio/physical.c | 174 + src/libs/uio/physical.h | 92 + src/libs/uio/stdio/Makeinfo | 2 + src/libs/uio/stdio/stdio.c | 854 +++++ src/libs/uio/stdio/stdio.h | 111 + src/libs/uio/types.h | 64 + src/libs/uio/uioport.h | 173 + src/libs/uio/uiostream.c | 603 +++ src/libs/uio/uiostream.h | 97 + src/libs/uio/uioutils.c | 228 ++ src/libs/uio/uioutils.h | 92 + src/libs/uio/utils.c | 497 +++ src/libs/uio/utils.h | 43 + src/libs/uio/zip/Makeinfo | 2 + src/libs/uio/zip/zip.c | 1680 +++++++++ src/libs/uio/zip/zip.h | 106 + src/libs/uioutils.h | 34 + src/libs/unicode.h | 72 + src/libs/video/Makeinfo | 3 + src/libs/video/dukvid.c | 748 ++++ src/libs/video/dukvid.h | 36 + src/libs/video/legacyplayer.c | 81 + src/libs/video/vfileins.c | 28 + src/libs/video/video.c | 190 + src/libs/video/video.h | 56 + src/libs/video/videodec.c | 363 ++ src/libs/video/videodec.h | 124 + src/libs/video/vidintrn.h | 41 + src/libs/video/vidplayer.c | 481 +++ src/libs/video/vidplayer.h | 31 + src/libs/video/vresins.c | 186 + src/libs/vidlib.h | 68 + src/options.c | 647 ++++ src/options.h | 94 + src/port.c | 145 + src/port.h | 554 +++ src/regex/Makeinfo | 2 + src/regex/regcomp.ci | 3931 ++++++++++++++++++++ src/regex/regex.c | 99 + src/regex/regex.h | 593 +++ src/regex/regex_internal.ci | 1673 +++++++++ src/regex/regex_internal.h | 801 ++++ src/regex/regexec.ci | 4325 ++++++++++++++++++++++ src/res/Makeinfo | 6 + src/res/UrQuanMasters.rc | 76 + src/res/darwin/Info.plist | 22 + src/res/darwin/PkgInfo | 1 + src/res/darwin/The Ur-Quan Masters.icns | Bin 0 -> 66834 bytes src/res/darwin/uqm.r | 3 + src/res/kohr-ah1.ico | Bin 0 -> 2238 bytes src/res/sis1.ico | Bin 0 -> 2238 bytes src/res/starcon2.ico | Bin 0 -> 766 bytes src/res/ur-quan-icon-24-hover-alpha.ico | Bin 0 -> 4718 bytes src/res/ur-quan-icon-24-hover.ico | Bin 0 -> 2262 bytes src/res/ur-quan-icon-alpha.ico | Bin 0 -> 25214 bytes src/res/ur-quan-icon-std.ico | Bin 0 -> 10134 bytes src/res/ur-quan1.ico | Bin 0 -> 2238 bytes src/res/ur-quan2.ico | Bin 0 -> 2238 bytes src/symbian/bld.inf | 9 + src/symbian/config.h | 57 + src/symbian/icons_scalable_dc.mk | 37 + src/symbian/uqm-armv5.pkg | 26 + src/symbian/uqm-gcce.pkg | 26 + src/symbian/uqm.cfg | 26 + src/symbian/uqm.mmp | 45 + src/symbian/uqm.rss | 26 + src/symbian/uqm.svg | 70 + src/symbian/uqm_reg.rss | 12 + src/symbian/uqmapp.cpp | 308 ++ src/types.h | 188 + src/uqm.c | 1285 +++++++ src/uqm/Makeinfo | 24 + src/uqm/battle.c | 512 +++ src/uqm/battle.h | 66 + src/uqm/battlecontrols.c | 100 + src/uqm/battlecontrols.h | 99 + src/uqm/border.c | 200 + src/uqm/build.c | 547 +++ src/uqm/build.h | 69 + src/uqm/cleanup.c | 99 + src/uqm/clock.c | 314 ++ src/uqm/clock.h | 111 + src/uqm/cnctdlg.c | 630 ++++ src/uqm/cnctdlg.h | 38 + src/uqm/coderes.h | 43 + src/uqm/collide.c | 183 + src/uqm/collide.h | 70 + src/uqm/colors.h | 440 +++ src/uqm/comm.c | 1649 +++++++++ src/uqm/comm.h | 142 + src/uqm/comm/Makeinfo | 4 + src/uqm/comm/arilou/Makeinfo | 2 + src/uqm/comm/arilou/arilouc.c | 855 +++++ src/uqm/comm/arilou/resinst.h | 9 + src/uqm/comm/arilou/strings.h | 123 + src/uqm/comm/blackur/Makeinfo | 2 + src/uqm/comm/blackur/blackurc.c | 567 +++ src/uqm/comm/blackur/resinst.h | 9 + src/uqm/comm/blackur/strings.h | 103 + src/uqm/comm/chmmr/Makeinfo | 2 + src/uqm/comm/chmmr/chmmrc.c | 641 ++++ src/uqm/comm/chmmr/resinst.h | 9 + src/uqm/comm/chmmr/strings.h | 105 + src/uqm/comm/comandr/Makeinfo | 2 + src/uqm/comm/comandr/comandr.c | 694 ++++ src/uqm/comm/comandr/resinst.h | 12 + src/uqm/comm/comandr/strings.h | 127 + src/uqm/comm/commall.h | 26 + src/uqm/comm/druuge/Makeinfo | 2 + src/uqm/comm/druuge/druugec.c | 926 +++++ src/uqm/comm/druuge/resinst.h | 9 + src/uqm/comm/druuge/strings.h | 132 + src/uqm/comm/ilwrath/Makeinfo | 2 + src/uqm/comm/ilwrath/ilwrathc.c | 649 ++++ src/uqm/comm/ilwrath/resinst.h | 9 + src/uqm/comm/ilwrath/strings.h | 135 + src/uqm/comm/melnorm/Makeinfo | 2 + src/uqm/comm/melnorm/melnorm.c | 1855 ++++++++++ src/uqm/comm/melnorm/resinst.h | 9 + src/uqm/comm/melnorm/strings.h | 309 ++ src/uqm/comm/mycon/Makeinfo | 2 + src/uqm/comm/mycon/myconc.c | 643 ++++ src/uqm/comm/mycon/resinst.h | 9 + src/uqm/comm/mycon/strings.h | 136 + src/uqm/comm/orz/Makeinfo | 2 + src/uqm/comm/orz/orzc.c | 898 +++++ src/uqm/comm/orz/resinst.h | 9 + src/uqm/comm/orz/strings.h | 143 + src/uqm/comm/pkunk/Makeinfo | 2 + src/uqm/comm/pkunk/pkunkc.c | 1148 ++++++ src/uqm/comm/pkunk/resinst.h | 9 + src/uqm/comm/pkunk/strings.h | 214 ++ src/uqm/comm/rebel/Makeinfo | 2 + src/uqm/comm/rebel/rebel.c | 449 +++ src/uqm/comm/rebel/strings.h | 61 + src/uqm/comm/shofixt/Makeinfo | 2 + src/uqm/comm/shofixt/resinst.h | 9 + src/uqm/comm/shofixt/shofixt.c | 652 ++++ src/uqm/comm/shofixt/strings.h | 122 + src/uqm/comm/slyhome/Makeinfo | 2 + src/uqm/comm/slyhome/resinst.h | 9 + src/uqm/comm/slyhome/slyhome.c | 921 +++++ src/uqm/comm/slyhome/strings.h | 143 + src/uqm/comm/slyland/Makeinfo | 2 + src/uqm/comm/slyland/resinst.h | 9 + src/uqm/comm/slyland/slyland.c | 518 +++ src/uqm/comm/slyland/strings.h | 113 + src/uqm/comm/spahome/Makeinfo | 2 + src/uqm/comm/spahome/spahome.c | 1018 +++++ src/uqm/comm/spahome/strings.h | 174 + src/uqm/comm/spathi/Makeinfo | 2 + src/uqm/comm/spathi/resinst.h | 14 + src/uqm/comm/spathi/spathic.c | 834 +++++ src/uqm/comm/spathi/strings.h | 160 + src/uqm/comm/starbas/Makeinfo | 2 + src/uqm/comm/starbas/starbas.c | 1961 ++++++++++ src/uqm/comm/starbas/strings.h | 327 ++ src/uqm/comm/supox/Makeinfo | 2 + src/uqm/comm/supox/resinst.h | 9 + src/uqm/comm/supox/strings.h | 124 + src/uqm/comm/supox/supoxc.c | 708 ++++ src/uqm/comm/syreen/Makeinfo | 2 + src/uqm/comm/syreen/resinst.h | 9 + src/uqm/comm/syreen/strings.h | 158 + src/uqm/comm/syreen/syreenc.c | 878 +++++ src/uqm/comm/talkpet/Makeinfo | 2 + src/uqm/comm/talkpet/resinst.h | 9 + src/uqm/comm/talkpet/strings.h | 140 + src/uqm/comm/talkpet/talkpet.c | 841 +++++ src/uqm/comm/thradd/Makeinfo | 2 + src/uqm/comm/thradd/resinst.h | 9 + src/uqm/comm/thradd/strings.h | 181 + src/uqm/comm/thradd/thraddc.c | 954 +++++ src/uqm/comm/umgah/Makeinfo | 2 + src/uqm/comm/umgah/resinst.h | 9 + src/uqm/comm/umgah/strings.h | 114 + src/uqm/comm/umgah/umgahc.c | 729 ++++ src/uqm/comm/urquan/Makeinfo | 2 + src/uqm/comm/urquan/resinst.h | 9 + src/uqm/comm/urquan/strings.h | 101 + src/uqm/comm/urquan/urquanc.c | 555 +++ src/uqm/comm/utwig/Makeinfo | 2 + src/uqm/comm/utwig/resinst.h | 10 + src/uqm/comm/utwig/strings.h | 144 + src/uqm/comm/utwig/utwigc.c | 996 +++++ src/uqm/comm/vux/Makeinfo | 2 + src/uqm/comm/vux/resinst.h | 9 + src/uqm/comm/vux/strings.h | 129 + src/uqm/comm/vux/vuxc.c | 796 ++++ src/uqm/comm/yehat/Makeinfo | 2 + src/uqm/comm/yehat/resinst.h | 11 + src/uqm/comm/yehat/strings.h | 102 + src/uqm/comm/yehat/yehatc.c | 685 ++++ src/uqm/comm/zoqfot/Makeinfo | 2 + src/uqm/comm/zoqfot/resinst.h | 9 + src/uqm/comm/zoqfot/strings.h | 365 ++ src/uqm/comm/zoqfot/zoqfotc.c | 975 +++++ src/uqm/commanim.c | 623 ++++ src/uqm/commanim.h | 141 + src/uqm/commglue.c | 421 +++ src/uqm/commglue.h | 183 + src/uqm/confirm.c | 250 ++ src/uqm/cons_res.c | 112 + src/uqm/cons_res.h | 38 + src/uqm/controls.h | 172 + src/uqm/corecode.h | 49 + src/uqm/credits.c | 839 +++++ src/uqm/credits.h | 32 + src/uqm/cyborg.c | 1339 +++++++ src/uqm/demo.c | 141 + src/uqm/demo.h | 55 + src/uqm/displist.c | 274 ++ src/uqm/displist.h | 131 + src/uqm/dummy.c | 207 ++ src/uqm/dummy.h | 52 + src/uqm/element.h | 242 ++ src/uqm/encount.c | 844 +++++ src/uqm/encount.h | 119 + src/uqm/flash.c | 805 ++++ src/uqm/flash.h | 223 ++ src/uqm/fmv.c | 134 + src/uqm/fmv.h | 41 + src/uqm/galaxy.c | 464 +++ src/uqm/gameev.c | 729 ++++ src/uqm/gameev.h | 68 + src/uqm/gameinp.c | 496 +++ src/uqm/gameopt.c | 1347 +++++++ src/uqm/gameopt.h | 36 + src/uqm/gamestr.h | 93 + src/uqm/gendef.c | 137 + src/uqm/gendef.h | 71 + src/uqm/getchar.c | 442 +++ src/uqm/globdata.c | 511 +++ src/uqm/globdata.h | 1059 ++++++ src/uqm/gravity.c | 200 + src/uqm/grpinfo.c | 865 +++++ src/uqm/grpinfo.h | 93 + src/uqm/grpintrn.h | 56 + src/uqm/hyper.c | 1747 +++++++++ src/uqm/hyper.h | 90 + src/uqm/ifontres.h | 12 + src/uqm/igfxres.h | 274 ++ src/uqm/ikey_con.h | 2 + src/uqm/imusicre.h | 20 + src/uqm/init.c | 351 ++ src/uqm/init.h | 46 + src/uqm/intel.c | 76 + src/uqm/intel.h | 85 + src/uqm/intro.c | 875 +++++ src/uqm/ipdisp.c | 777 ++++ src/uqm/ipdisp.h | 37 + src/uqm/isndres.h | 7 + src/uqm/istrtab.h | 154 + src/uqm/load.c | 774 ++++ src/uqm/load_legacy.c | 821 ++++ src/uqm/loadship.c | 200 + src/uqm/master.c | 217 ++ src/uqm/master.h | 69 + src/uqm/menu.c | 603 +++ src/uqm/menustat.h | 131 + src/uqm/misc.c | 407 ++ src/uqm/nameref.h | 33 + src/uqm/oscill.c | 191 + src/uqm/oscill.h | 43 + src/uqm/outfit.c | 795 ++++ src/uqm/pickship.c | 501 +++ src/uqm/pickship.h | 35 + src/uqm/plandata.c | 1850 +++++++++ src/uqm/planets/Makeinfo | 7 + src/uqm/planets/calc.c | 530 +++ src/uqm/planets/cargo.c | 356 ++ src/uqm/planets/devices.c | 690 ++++ src/uqm/planets/elemdata.h | 215 ++ src/uqm/planets/generate.h | 110 + src/uqm/planets/generate/Makeinfo | 6 + src/uqm/planets/generate/genall.h | 27 + src/uqm/planets/generate/genand.c | 164 + src/uqm/planets/generate/genburv.c | 192 + src/uqm/planets/generate/genchmmr.c | 154 + src/uqm/planets/generate/gencol.c | 126 + src/uqm/planets/generate/gendefault.c | 373 ++ src/uqm/planets/generate/gendefault.h | 66 + src/uqm/planets/generate/gendru.c | 169 + src/uqm/planets/generate/genilw.c | 150 + src/uqm/planets/generate/genmel.c | 114 + src/uqm/planets/generate/genmyc.c | 286 ++ src/uqm/planets/generate/genorz.c | 222 ++ src/uqm/planets/generate/genpet.c | 257 ++ src/uqm/planets/generate/genpku.c | 159 + src/uqm/planets/generate/genrain.c | 102 + src/uqm/planets/generate/gensam.c | 324 ++ src/uqm/planets/generate/genshof.c | 178 + src/uqm/planets/generate/gensly.c | 70 + src/uqm/planets/generate/gensol.c | 671 ++++ src/uqm/planets/generate/genspa.c | 283 ++ src/uqm/planets/generate/gensup.c | 159 + src/uqm/planets/generate/gensyr.c | 102 + src/uqm/planets/generate/genthrad.c | 217 ++ src/uqm/planets/generate/gentrap.c | 80 + src/uqm/planets/generate/genutw.c | 269 ++ src/uqm/planets/generate/genvault.c | 130 + src/uqm/planets/generate/genvux.c | 329 ++ src/uqm/planets/generate/genwreck.c | 111 + src/uqm/planets/generate/genyeh.c | 140 + src/uqm/planets/generate/genzfpscout.c | 96 + src/uqm/planets/generate/genzoq.c | 170 + src/uqm/planets/gentopo.c | 206 ++ src/uqm/planets/lander.c | 2101 +++++++++++ src/uqm/planets/lander.h | 88 + src/uqm/planets/lifeform.h | 75 + src/uqm/planets/orbits.c | 629 ++++ src/uqm/planets/oval.c | 329 ++ src/uqm/planets/pl_stuff.c | 318 ++ src/uqm/planets/plandata.h | 318 ++ src/uqm/planets/planets.c | 483 +++ src/uqm/planets/planets.h | 322 ++ src/uqm/planets/plangen.c | 1954 ++++++++++ src/uqm/planets/pstarmap.c | 1631 ++++++++ src/uqm/planets/report.c | 271 ++ src/uqm/planets/roster.c | 428 +++ src/uqm/planets/scan.c | 1385 +++++++ src/uqm/planets/scan.h | 72 + src/uqm/planets/solarsys.c | 2021 ++++++++++ src/uqm/planets/solarsys.h | 34 + src/uqm/planets/sundata.h | 73 + src/uqm/planets/surface.c | 251 ++ src/uqm/process.c | 1108 ++++++ src/uqm/process.h | 37 + src/uqm/races.h | 675 ++++ src/uqm/resinst.h | 24 + src/uqm/restart.c | 413 +++ src/uqm/restart.h | 33 + src/uqm/save.c | 813 ++++ src/uqm/save.h | 78 + src/uqm/settings.c | 97 + src/uqm/settings.h | 41 + src/uqm/setup.c | 332 ++ src/uqm/setup.h | 89 + src/uqm/setupmenu.c | 1613 ++++++++ src/uqm/setupmenu.h | 100 + src/uqm/ship.c | 574 +++ src/uqm/ship.h | 43 + src/uqm/shipcont.h | 44 + src/uqm/ships/Makeinfo | 5 + src/uqm/ships/androsyn/Makeinfo | 2 + src/uqm/ships/androsyn/androsyn.c | 528 +++ src/uqm/ships/androsyn/androsyn.h | 31 + src/uqm/ships/androsyn/icode.h | 5 + src/uqm/ships/androsyn/resinst.h | 19 + src/uqm/ships/arilou/Makeinfo | 2 + src/uqm/ships/arilou/arilou.c | 303 ++ src/uqm/ships/arilou/arilou.h | 31 + src/uqm/ships/arilou/icode.h | 5 + src/uqm/ships/arilou/resinst.h | 16 + src/uqm/ships/blackurq/Makeinfo | 2 + src/uqm/ships/blackurq/blackurq.c | 567 +++ src/uqm/ships/blackurq/blackurq.h | 31 + src/uqm/ships/blackurq/icode.h | 5 + src/uqm/ships/blackurq/resinst.h | 19 + src/uqm/ships/chenjesu/Makeinfo | 2 + src/uqm/ships/chenjesu/chenjesu.c | 588 +++ src/uqm/ships/chenjesu/chenjesu.h | 31 + src/uqm/ships/chenjesu/icode.h | 5 + src/uqm/ships/chenjesu/resinst.h | 19 + src/uqm/ships/chmmr/Makeinfo | 2 + src/uqm/ships/chmmr/chmmr.c | 790 ++++ src/uqm/ships/chmmr/chmmr.h | 31 + src/uqm/ships/chmmr/icode.h | 5 + src/uqm/ships/chmmr/resinst.h | 19 + src/uqm/ships/druuge/Makeinfo | 2 + src/uqm/ships/druuge/druuge.c | 324 ++ src/uqm/ships/druuge/druuge.h | 31 + src/uqm/ships/druuge/icode.h | 5 + src/uqm/ships/druuge/resinst.h | 16 + src/uqm/ships/human/Makeinfo | 2 + src/uqm/ships/human/human.c | 360 ++ src/uqm/ships/human/human.h | 31 + src/uqm/ships/human/icode.h | 5 + src/uqm/ships/human/resinst.h | 16 + src/uqm/ships/ilwrath/Makeinfo | 2 + src/uqm/ships/ilwrath/icode.h | 5 + src/uqm/ships/ilwrath/ilwrath.c | 409 ++ src/uqm/ships/ilwrath/ilwrath.h | 31 + src/uqm/ships/ilwrath/resinst.h | 16 + src/uqm/ships/lastbat/Makeinfo | 2 + src/uqm/ships/lastbat/icode.h | 5 + src/uqm/ships/lastbat/lastbat.c | 926 +++++ src/uqm/ships/lastbat/lastbat.h | 31 + src/uqm/ships/lastbat/resinst.h | 16 + src/uqm/ships/melnorme/Makeinfo | 2 + src/uqm/ships/melnorme/icode.h | 5 + src/uqm/ships/melnorme/melnorme.c | 658 ++++ src/uqm/ships/melnorme/melnorme.h | 31 + src/uqm/ships/melnorme/resinst.h | 19 + src/uqm/ships/mmrnmhrm/Makeinfo | 2 + src/uqm/ships/mmrnmhrm/icode.h | 5 + src/uqm/ships/mmrnmhrm/mmrnmhrm.c | 527 +++ src/uqm/ships/mmrnmhrm/mmrnmhrm.h | 31 + src/uqm/ships/mmrnmhrm/resinst.h | 19 + src/uqm/ships/mycon/Makeinfo | 2 + src/uqm/ships/mycon/icode.h | 5 + src/uqm/ships/mycon/mycon.c | 376 ++ src/uqm/ships/mycon/mycon.h | 31 + src/uqm/ships/mycon/resinst.h | 16 + src/uqm/ships/orz/Makeinfo | 2 + src/uqm/ships/orz/icode.h | 5 + src/uqm/ships/orz/orz.c | 1083 ++++++ src/uqm/ships/orz/orz.h | 35 + src/uqm/ships/orz/resinst.h | 19 + src/uqm/ships/pkunk/Makeinfo | 2 + src/uqm/ships/pkunk/icode.h | 5 + src/uqm/ships/pkunk/pkunk.c | 640 ++++ src/uqm/ships/pkunk/pkunk.h | 31 + src/uqm/ships/pkunk/resinst.h | 16 + src/uqm/ships/probe/Makeinfo | 2 + src/uqm/ships/probe/icode.h | 5 + src/uqm/ships/probe/probe.c | 118 + src/uqm/ships/probe/probe.h | 31 + src/uqm/ships/probe/resinst.h | 5 + src/uqm/ships/ship.h | 37 + src/uqm/ships/shofixti/Makeinfo | 2 + src/uqm/ships/shofixti/icode.h | 5 + src/uqm/ships/shofixti/resinst.h | 23 + src/uqm/ships/shofixti/shofixti.c | 521 +++ src/uqm/ships/shofixti/shofixti.h | 31 + src/uqm/ships/sis_ship/Makeinfo | 2 + src/uqm/ships/sis_ship/icode.h | 5 + src/uqm/ships/sis_ship/resinst.h | 15 + src/uqm/ships/sis_ship/sis_ship.c | 1002 +++++ src/uqm/ships/sis_ship/sis_ship.h | 31 + src/uqm/ships/slylandr/Makeinfo | 2 + src/uqm/ships/slylandr/icode.h | 5 + src/uqm/ships/slylandr/resinst.h | 13 + src/uqm/ships/slylandr/slylandr.c | 438 +++ src/uqm/ships/slylandr/slylandr.h | 31 + src/uqm/ships/spathi/Makeinfo | 2 + src/uqm/ships/spathi/icode.h | 5 + src/uqm/ships/spathi/resinst.h | 19 + src/uqm/ships/spathi/spathi.c | 301 ++ src/uqm/ships/spathi/spathi.h | 31 + src/uqm/ships/supox/Makeinfo | 2 + src/uqm/ships/supox/icode.h | 5 + src/uqm/ships/supox/resinst.h | 16 + src/uqm/ships/supox/supox.c | 288 ++ src/uqm/ships/supox/supox.h | 31 + src/uqm/ships/syreen/Makeinfo | 2 + src/uqm/ships/syreen/icode.h | 5 + src/uqm/ships/syreen/resinst.h | 16 + src/uqm/ships/syreen/syreen.c | 284 ++ src/uqm/ships/syreen/syreen.h | 31 + src/uqm/ships/thradd/Makeinfo | 2 + src/uqm/ships/thradd/icode.h | 5 + src/uqm/ships/thradd/resinst.h | 19 + src/uqm/ships/thradd/thradd.c | 400 ++ src/uqm/ships/thradd/thradd.h | 31 + src/uqm/ships/umgah/Makeinfo | 2 + src/uqm/ships/umgah/icode.h | 5 + src/uqm/ships/umgah/resinst.h | 17 + src/uqm/ships/umgah/umgah.c | 434 +++ src/uqm/ships/umgah/umgah.h | 31 + src/uqm/ships/urquan/Makeinfo | 2 + src/uqm/ships/urquan/icode.h | 5 + src/uqm/ships/urquan/resinst.h | 19 + src/uqm/ships/urquan/urquan.c | 554 +++ src/uqm/ships/urquan/urquan.h | 31 + src/uqm/ships/utwig/Makeinfo | 2 + src/uqm/ships/utwig/icode.h | 5 + src/uqm/ships/utwig/resinst.h | 16 + src/uqm/ships/utwig/utwig.c | 380 ++ src/uqm/ships/utwig/utwig.h | 31 + src/uqm/ships/vux/Makeinfo | 2 + src/uqm/ships/vux/icode.h | 5 + src/uqm/ships/vux/resinst.h | 17 + src/uqm/ships/vux/vux.c | 398 ++ src/uqm/ships/vux/vux.h | 31 + src/uqm/ships/yehat/Makeinfo | 2 + src/uqm/ships/yehat/icode.h | 5 + src/uqm/ships/yehat/resinst.h | 19 + src/uqm/ships/yehat/yehat.c | 369 ++ src/uqm/ships/yehat/yehat.h | 31 + src/uqm/ships/zoqfot/Makeinfo | 2 + src/uqm/ships/zoqfot/icode.h | 5 + src/uqm/ships/zoqfot/resinst.h | 19 + src/uqm/ships/zoqfot/zoqfot.c | 377 ++ src/uqm/ships/zoqfot/zoqfot.h | 31 + src/uqm/shipstat.c | 437 +++ src/uqm/shipyard.c | 1495 ++++++++ src/uqm/sis.c | 1741 +++++++++ src/uqm/sis.h | 241 ++ src/uqm/sounds.c | 199 + src/uqm/sounds.h | 85 + src/uqm/starbase.c | 602 +++ src/uqm/starbase.h | 55 + src/uqm/starcon.c | 323 ++ src/uqm/starcon.h | 35 + src/uqm/starmap.c | 125 + src/uqm/starmap.h | 42 + src/uqm/state.c | 354 ++ src/uqm/state.h | 166 + src/uqm/status.c | 582 +++ src/uqm/status.h | 75 + src/uqm/supermelee/Makeinfo | 5 + src/uqm/supermelee/buildpick.c | 221 ++ src/uqm/supermelee/buildpick.h | 25 + src/uqm/supermelee/loadmele.c | 826 +++++ src/uqm/supermelee/loadmele.h | 67 + src/uqm/supermelee/melee.c | 2640 +++++++++++++ src/uqm/supermelee/melee.h | 144 + src/uqm/supermelee/meleesetup.c | 440 +++ src/uqm/supermelee/meleesetup.h | 143 + src/uqm/supermelee/meleeship.h | 55 + src/uqm/supermelee/netplay/FILES | 50 + src/uqm/supermelee/netplay/Makeinfo | 4 + src/uqm/supermelee/netplay/checkbuf.c | 145 + src/uqm/supermelee/netplay/checkbuf.h | 77 + src/uqm/supermelee/netplay/checksum.c | 302 ++ src/uqm/supermelee/netplay/checksum.h | 99 + src/uqm/supermelee/netplay/crc.c | 142 + src/uqm/supermelee/netplay/crc.h | 60 + src/uqm/supermelee/netplay/nc_connect.ci | 300 ++ src/uqm/supermelee/netplay/netconnection.c | 378 ++ src/uqm/supermelee/netplay/netconnection.h | 260 ++ src/uqm/supermelee/netplay/netinput.c | 157 + src/uqm/supermelee/netplay/netinput.h | 57 + src/uqm/supermelee/netplay/netmelee.c | 740 ++++ src/uqm/supermelee/netplay/netmelee.h | 90 + src/uqm/supermelee/netplay/netmisc.c | 134 + src/uqm/supermelee/netplay/netmisc.h | 77 + src/uqm/supermelee/netplay/netoptions.c | 39 + src/uqm/supermelee/netplay/netoptions.h | 56 + src/uqm/supermelee/netplay/netplay.h | 77 + src/uqm/supermelee/netplay/netrcv.c | 193 + src/uqm/supermelee/netplay/netrcv.h | 34 + src/uqm/supermelee/netplay/netsend.c | 95 + src/uqm/supermelee/netplay/netsend.h | 35 + src/uqm/supermelee/netplay/netstate.c | 48 + src/uqm/supermelee/netplay/netstate.h | 83 + src/uqm/supermelee/netplay/notify.c | 118 + src/uqm/supermelee/netplay/notify.h | 62 + src/uqm/supermelee/netplay/notifyall.c | 146 + src/uqm/supermelee/netplay/notifyall.h | 49 + src/uqm/supermelee/netplay/packet.c | 263 ++ src/uqm/supermelee/netplay/packet.h | 299 ++ src/uqm/supermelee/netplay/packethandlers.c | 649 ++++ src/uqm/supermelee/netplay/packethandlers.h | 56 + src/uqm/supermelee/netplay/packetq.c | 149 + src/uqm/supermelee/netplay/packetq.h | 59 + src/uqm/supermelee/netplay/packetsenders.c | 197 + src/uqm/supermelee/netplay/packetsenders.h | 67 + src/uqm/supermelee/netplay/proto/Makeinfo | 2 + src/uqm/supermelee/netplay/proto/npconfirm.c | 81 + src/uqm/supermelee/netplay/proto/npconfirm.h | 36 + src/uqm/supermelee/netplay/proto/ready.c | 106 + src/uqm/supermelee/netplay/proto/ready.h | 38 + src/uqm/supermelee/netplay/proto/reset.c | 166 + src/uqm/supermelee/netplay/proto/reset.h | 41 + src/uqm/supermelee/pickmele.c | 948 +++++ src/uqm/supermelee/pickmele.h | 102 + src/uqm/tactrans.c | 1032 ++++++ src/uqm/tactrans.h | 59 + src/uqm/trans.c | 154 + src/uqm/units.h | 227 ++ src/uqm/uqmdebug.c | 1926 ++++++++++ src/uqm/uqmdebug.h | 200 + src/uqm/util.c | 312 ++ src/uqm/util.h | 39 + src/uqm/velocity.c | 153 + src/uqm/velocity.h | 76 + src/uqm/weapon.c | 414 +++ src/uqm/weapon.h | 68 + src/uqmversion.h | 36 + subst | 51 + uqm-indent | 2 + uqm.lsm | 24 + 1037 files changed, 246768 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 AUTHORS create mode 100644 BUGS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 Contributing create mode 100644 INSTALL create mode 100644 INSTALL.macos create mode 100644 INSTALL.pkgs create mode 100644 INSTALL.symbian create mode 100644 INSTALL.win32 create mode 100644 Makefile.build create mode 100644 Makeinfo create mode 100644 Makeproject create mode 100644 README create mode 100644 README-SDL create mode 100644 WhatsNew create mode 100755 build.sh create mode 100755 build.trimui.sh create mode 100644 build.vars.in create mode 100644 build/msvc6/AbxDecoder.dsp create mode 100644 build/msvc6/UrQuanMasters.dsp create mode 100644 build/msvc6/UrQuanMasters.dsw create mode 100644 build/unix/README create mode 100644 build/unix/README.crossbuild create mode 100644 build/unix/README.packages create mode 100644 build/unix/ansi create mode 100644 build/unix/build.config create mode 100644 build/unix/build.docs create mode 100644 build/unix/build.sh create mode 100644 build/unix/build_clean create mode 100644 build/unix/build_collect create mode 100644 build/unix/build_functions create mode 100644 build/unix/config_functions create mode 100644 build/unix/config_proginfo_build create mode 100644 build/unix/config_proginfo_host create mode 100644 build/unix/make/buildtools-armv5 create mode 100644 build/unix/make/buildtools-gcce create mode 100644 build/unix/make/buildtools-generic create mode 100644 build/unix/make/buildtools-winscw create mode 100644 build/unix/menu_functions create mode 100755 build/unix/recurse create mode 100644 build/unix/todo create mode 100755 build/unix/uqm-wrapper.in create mode 100644 build/unix_installer/README create mode 100644 build/unix_installer/USAGE create mode 100755 build/unix_installer/buildinstaller.sh create mode 100755 build/unix_installer/copy_mac_frameworks.pl create mode 100644 build/unix_installer/install.sh.in create mode 100644 build/unix_installer/installer.config create mode 100644 build/unix_installer/template create mode 100644 build/win32_install/build-win32-installer.sh create mode 100644 build/win32_install/orzshofixti.bmp create mode 100644 build/win32_install/packages.nsh create mode 100755 build/win32_install/procpkgs.sh create mode 100644 build/win32_install/ultron.bmp create mode 100644 build/win32_install/uqm-3do.cfg create mode 100644 build/win32_install/uqm-installer.nsi create mode 100644 build/win32_install/uqm-pc.cfg create mode 100644 content/version create mode 100644 doc/devel/aniformat create mode 100644 doc/devel/battleinput create mode 100644 doc/devel/blue-gas-giant-pal.png create mode 100644 doc/devel/checklist create mode 100644 doc/devel/contentfiles create mode 100644 doc/devel/debug create mode 100644 doc/devel/dialogs create mode 100644 doc/devel/files create mode 100644 doc/devel/fontres create mode 100644 doc/devel/generate create mode 100644 doc/devel/gfxlib create mode 100644 doc/devel/gfxres create mode 100644 doc/devel/gfxversions create mode 100644 doc/devel/glossary create mode 100644 doc/devel/historical create mode 100644 doc/devel/input create mode 100644 doc/devel/livecd create mode 100644 doc/devel/meleeteams create mode 100644 doc/devel/musicres create mode 100644 doc/devel/netplay/notes create mode 100644 doc/devel/netplay/protocol create mode 100644 doc/devel/netplay/states create mode 100644 doc/devel/netplay/todo create mode 100644 doc/devel/orggenerate create mode 100644 doc/devel/pkgformat create mode 100644 doc/devel/planetrender create mode 100644 doc/devel/planetrotate create mode 100644 doc/devel/planettopo create mode 100644 doc/devel/plugins create mode 100644 doc/devel/queues create mode 100644 doc/devel/racestrings create mode 100644 doc/devel/resources create mode 100644 doc/devel/savefile create mode 100644 doc/devel/sc1 create mode 100644 doc/devel/script create mode 100644 doc/devel/sfx create mode 100644 doc/devel/statefiles create mode 100644 doc/devel/strtab create mode 100644 doc/devel/threads create mode 100644 doc/devel/timing create mode 100644 doc/devel/versions create mode 100644 doc/devel/voiceeffects create mode 100644 doc/users/manual.txt create mode 100644 doc/users/unixinstall create mode 100644 doc/users/uqm.6 create mode 100644 src/Makeinfo create mode 100644 src/abxadec/Makefile create mode 100644 src/abxadec/abxaud.c create mode 100644 src/abxadec/abxaud.def create mode 100644 src/abxadec/abxaud.h create mode 100644 src/config.h create mode 100644 src/config_unix.h.in create mode 100644 src/config_vc6.h create mode 100644 src/config_win.h.in create mode 100644 src/darwin/Makeinfo create mode 100644 src/darwin/SDLMain.h create mode 100644 src/darwin/SDLMain.m create mode 100644 src/endian_uqm.h create mode 100644 src/getopt/Makeinfo create mode 100644 src/getopt/getopt.c create mode 100644 src/getopt/getopt.h create mode 100644 src/getopt/getopt1.c create mode 100644 src/libs/Makeinfo create mode 100644 src/libs/alarm.h create mode 100644 src/libs/async.h create mode 100644 src/libs/callback.h create mode 100644 src/libs/callback/Makeinfo create mode 100644 src/libs/callback/alarm.c create mode 100644 src/libs/callback/alarm.h create mode 100644 src/libs/callback/async.c create mode 100644 src/libs/callback/async.h create mode 100644 src/libs/callback/callback.c create mode 100644 src/libs/callback/callback.h create mode 100644 src/libs/cdp/Makeinfo create mode 100644 src/libs/cdp/cdp.c create mode 100644 src/libs/cdp/cdp.h create mode 100644 src/libs/cdp/cdp_alli.h create mode 100644 src/libs/cdp/cdp_iio.h create mode 100644 src/libs/cdp/cdp_imem.h create mode 100644 src/libs/cdp/cdp_isnd.h create mode 100644 src/libs/cdp/cdp_ivid.h create mode 100644 src/libs/cdp/cdpapi.c create mode 100644 src/libs/cdp/cdpapi.h create mode 100644 src/libs/cdp/cdpint.h create mode 100644 src/libs/cdp/cdpmod.h create mode 100644 src/libs/cdp/windl.c create mode 100644 src/libs/cdp/windl.h create mode 100644 src/libs/cdplib.h create mode 100644 src/libs/compiler.h create mode 100644 src/libs/declib.h create mode 100644 src/libs/decomp/Makeinfo create mode 100644 src/libs/decomp/lzdecode.c create mode 100644 src/libs/decomp/lzencode.c create mode 100644 src/libs/decomp/lzh.h create mode 100644 src/libs/decomp/update.c create mode 100644 src/libs/file.h create mode 100644 src/libs/file/Makeinfo create mode 100644 src/libs/file/dirs.c create mode 100644 src/libs/file/files.c create mode 100644 src/libs/file/filintrn.h create mode 100644 src/libs/file/temp.c create mode 100644 src/libs/gfxlib.h create mode 100644 src/libs/graphics/Makeinfo create mode 100644 src/libs/graphics/bbox.c create mode 100644 src/libs/graphics/bbox.h create mode 100644 src/libs/graphics/boxint.c create mode 100644 src/libs/graphics/clipline.c create mode 100644 src/libs/graphics/cmap.c create mode 100644 src/libs/graphics/cmap.h create mode 100644 src/libs/graphics/context.c create mode 100644 src/libs/graphics/context.h create mode 100644 src/libs/graphics/dcqueue.c create mode 100644 src/libs/graphics/dcqueue.h create mode 100644 src/libs/graphics/drawable.c create mode 100644 src/libs/graphics/drawable.h create mode 100644 src/libs/graphics/drawcmd.h create mode 100644 src/libs/graphics/filegfx.c create mode 100644 src/libs/graphics/font.c create mode 100644 src/libs/graphics/font.h create mode 100644 src/libs/graphics/frame.c create mode 100644 src/libs/graphics/gfx_common.c create mode 100644 src/libs/graphics/gfx_common.h create mode 100644 src/libs/graphics/gfxintrn.h create mode 100644 src/libs/graphics/gfxload.c create mode 100644 src/libs/graphics/intersec.c create mode 100644 src/libs/graphics/loaddisp.c create mode 100644 src/libs/graphics/pixmap.c create mode 100644 src/libs/graphics/prim.h create mode 100644 src/libs/graphics/resgfx.c create mode 100644 src/libs/graphics/sdl/2xscalers.c create mode 100644 src/libs/graphics/sdl/2xscalers.h create mode 100644 src/libs/graphics/sdl/2xscalers_3dnow.c create mode 100644 src/libs/graphics/sdl/2xscalers_mmx.c create mode 100644 src/libs/graphics/sdl/2xscalers_mmx.h create mode 100644 src/libs/graphics/sdl/2xscalers_sse.c create mode 100644 src/libs/graphics/sdl/Makeinfo create mode 100644 src/libs/graphics/sdl/biadv2x.c create mode 100644 src/libs/graphics/sdl/bilinear2x.c create mode 100644 src/libs/graphics/sdl/canvas.c create mode 100644 src/libs/graphics/sdl/hq2x.c create mode 100644 src/libs/graphics/sdl/nearest2x.c create mode 100644 src/libs/graphics/sdl/opengl.c create mode 100644 src/libs/graphics/sdl/opengl.h create mode 100644 src/libs/graphics/sdl/palette.c create mode 100644 src/libs/graphics/sdl/palette.h create mode 100644 src/libs/graphics/sdl/png2sdl.c create mode 100644 src/libs/graphics/sdl/png2sdl.h create mode 100644 src/libs/graphics/sdl/primitives.c create mode 100644 src/libs/graphics/sdl/primitives.h create mode 100644 src/libs/graphics/sdl/pure.c create mode 100644 src/libs/graphics/sdl/pure.h create mode 100644 src/libs/graphics/sdl/rotozoom.c create mode 100644 src/libs/graphics/sdl/rotozoom.h create mode 100644 src/libs/graphics/sdl/scaleint.h create mode 100644 src/libs/graphics/sdl/scalemmx.h create mode 100644 src/libs/graphics/sdl/scalers.c create mode 100644 src/libs/graphics/sdl/scalers.h create mode 100644 src/libs/graphics/sdl/sdl1_common.c create mode 100644 src/libs/graphics/sdl/sdl2_common.c create mode 100644 src/libs/graphics/sdl/sdl2_pure.c create mode 100644 src/libs/graphics/sdl/sdl_common.c create mode 100644 src/libs/graphics/sdl/sdl_common.h create mode 100644 src/libs/graphics/sdl/sdluio.c create mode 100644 src/libs/graphics/sdl/sdluio.h create mode 100644 src/libs/graphics/sdl/triscan2x.c create mode 100644 src/libs/graphics/tfb_draw.c create mode 100644 src/libs/graphics/tfb_draw.h create mode 100644 src/libs/graphics/tfb_prim.c create mode 100644 src/libs/graphics/tfb_prim.h create mode 100644 src/libs/graphics/widgets.c create mode 100644 src/libs/graphics/widgets.h create mode 100644 src/libs/heap.h create mode 100644 src/libs/heap/Makeinfo create mode 100644 src/libs/heap/heap.c create mode 100644 src/libs/heap/heap.h create mode 100644 src/libs/inplib.h create mode 100644 src/libs/input/Makeinfo create mode 100644 src/libs/input/inpintrn.h create mode 100644 src/libs/input/input_common.c create mode 100644 src/libs/input/input_common.h create mode 100644 src/libs/input/sdl/Makeinfo create mode 100644 src/libs/input/sdl/input.c create mode 100644 src/libs/input/sdl/input.h create mode 100644 src/libs/input/sdl/keynames.c create mode 100644 src/libs/input/sdl/keynames.h create mode 100644 src/libs/input/sdl/vcontrol.c create mode 100644 src/libs/input/sdl/vcontrol.h create mode 100644 src/libs/list.h create mode 100644 src/libs/list/Makeinfo create mode 100644 src/libs/list/list.c create mode 100644 src/libs/list/list.h create mode 100644 src/libs/log.h create mode 100644 src/libs/log/Makeinfo create mode 100644 src/libs/log/loginternal.h create mode 100644 src/libs/log/msgbox.h create mode 100644 src/libs/log/msgbox_macosx.m create mode 100644 src/libs/log/msgbox_stub.c create mode 100644 src/libs/log/msgbox_win.c create mode 100644 src/libs/log/uqmlog.c create mode 100644 src/libs/log/uqmlog.h create mode 100644 src/libs/math/Makeinfo create mode 100644 src/libs/math/mthintrn.h create mode 100644 src/libs/math/random.c create mode 100644 src/libs/math/random.h create mode 100644 src/libs/math/random2.c create mode 100644 src/libs/math/sqrt.c create mode 100644 src/libs/mathlib.h create mode 100644 src/libs/md5.h create mode 100644 src/libs/md5/Makeinfo create mode 100644 src/libs/md5/README create mode 100644 src/libs/md5/md5.c create mode 100644 src/libs/md5/md5.h create mode 100644 src/libs/memlib.h create mode 100644 src/libs/memory/Makeinfo create mode 100644 src/libs/memory/w_memlib.c create mode 100644 src/libs/mikmod/AUTHORS create mode 100644 src/libs/mikmod/Makeinfo create mode 100644 src/libs/mikmod/README create mode 100644 src/libs/mikmod/drv_nos.c create mode 100644 src/libs/mikmod/load_it.c create mode 100644 src/libs/mikmod/load_mod.c create mode 100644 src/libs/mikmod/load_s3m.c create mode 100644 src/libs/mikmod/load_stm.c create mode 100644 src/libs/mikmod/load_xm.c create mode 100644 src/libs/mikmod/mdreg.c create mode 100644 src/libs/mikmod/mdriver.c create mode 100644 src/libs/mikmod/mikmod.h create mode 100644 src/libs/mikmod/mikmod_build.h create mode 100644 src/libs/mikmod/mikmod_internals.h create mode 100644 src/libs/mikmod/mloader.c create mode 100644 src/libs/mikmod/mlreg.c create mode 100644 src/libs/mikmod/mlutil.c create mode 100644 src/libs/mikmod/mmalloc.c create mode 100644 src/libs/mikmod/mmerror.c create mode 100644 src/libs/mikmod/mmio.c create mode 100644 src/libs/mikmod/mplayer.c create mode 100644 src/libs/mikmod/munitrk.c create mode 100644 src/libs/mikmod/mwav.c create mode 100644 src/libs/mikmod/npertab.c create mode 100644 src/libs/mikmod/sloader.c create mode 100644 src/libs/mikmod/virtch.c create mode 100644 src/libs/mikmod/virtch2.c create mode 100644 src/libs/mikmod/virtch_common.c create mode 100644 src/libs/misc.h create mode 100644 src/libs/net.h create mode 100644 src/libs/network/FILES create mode 100644 src/libs/network/Makeinfo create mode 100644 src/libs/network/bytesex.h create mode 100644 src/libs/network/connect/Makeinfo create mode 100644 src/libs/network/connect/connect.c create mode 100644 src/libs/network/connect/connect.h create mode 100644 src/libs/network/connect/listen.c create mode 100644 src/libs/network/connect/listen.h create mode 100644 src/libs/network/connect/resolve.c create mode 100644 src/libs/network/connect/resolve.h create mode 100644 src/libs/network/netmanager/Makeinfo create mode 100644 src/libs/network/netmanager/ndesc.c create mode 100644 src/libs/network/netmanager/ndesc.h create mode 100644 src/libs/network/netmanager/ndindex.ci create mode 100644 src/libs/network/netmanager/netmanager.h create mode 100644 src/libs/network/netmanager/netmanager_bsd.c create mode 100644 src/libs/network/netmanager/netmanager_bsd.h create mode 100644 src/libs/network/netmanager/netmanager_common.ci create mode 100644 src/libs/network/netmanager/netmanager_win.c create mode 100644 src/libs/network/netmanager/netmanager_win.h create mode 100644 src/libs/network/netport.c create mode 100644 src/libs/network/netport.h create mode 100644 src/libs/network/network.h create mode 100644 src/libs/network/network_bsd.c create mode 100644 src/libs/network/network_win.c create mode 100644 src/libs/network/socket/Makeinfo create mode 100644 src/libs/network/socket/socket.c create mode 100644 src/libs/network/socket/socket.h create mode 100644 src/libs/network/socket/socket_bsd.c create mode 100644 src/libs/network/socket/socket_bsd.h create mode 100644 src/libs/network/socket/socket_win.c create mode 100644 src/libs/network/socket/socket_win.h create mode 100644 src/libs/network/wspiapiwrap.c create mode 100644 src/libs/network/wspiapiwrap.h create mode 100644 src/libs/platform.h create mode 100644 src/libs/reslib.h create mode 100644 src/libs/resource/Makeinfo create mode 100644 src/libs/resource/direct.c create mode 100644 src/libs/resource/filecntl.c create mode 100644 src/libs/resource/getres.c create mode 100644 src/libs/resource/index.h create mode 100644 src/libs/resource/loadres.c create mode 100644 src/libs/resource/propfile.c create mode 100644 src/libs/resource/propfile.h create mode 100644 src/libs/resource/resinit.c create mode 100644 src/libs/resource/resintrn.h create mode 100644 src/libs/resource/stringbank.c create mode 100644 src/libs/resource/stringbank.h create mode 100644 src/libs/sndlib.h create mode 100644 src/libs/sound/Makeinfo create mode 100644 src/libs/sound/audiocore.c create mode 100644 src/libs/sound/audiocore.h create mode 100644 src/libs/sound/decoders/Makeinfo create mode 100644 src/libs/sound/decoders/aiffaud.c create mode 100644 src/libs/sound/decoders/aiffaud.h create mode 100644 src/libs/sound/decoders/decoder.c create mode 100644 src/libs/sound/decoders/decoder.h create mode 100644 src/libs/sound/decoders/dukaud.c create mode 100644 src/libs/sound/decoders/dukaud.h create mode 100644 src/libs/sound/decoders/modaud.c create mode 100644 src/libs/sound/decoders/modaud.h create mode 100644 src/libs/sound/decoders/oggaud.c create mode 100644 src/libs/sound/decoders/oggaud.h create mode 100644 src/libs/sound/decoders/wav.c create mode 100644 src/libs/sound/decoders/wav.h create mode 100644 src/libs/sound/fileinst.c create mode 100644 src/libs/sound/mixer/Makeinfo create mode 100644 src/libs/sound/mixer/mixer.c create mode 100644 src/libs/sound/mixer/mixer.h create mode 100644 src/libs/sound/mixer/mixerint.h create mode 100644 src/libs/sound/mixer/nosound/Makeinfo create mode 100644 src/libs/sound/mixer/nosound/audiodrv_nosound.c create mode 100644 src/libs/sound/mixer/nosound/audiodrv_nosound.h create mode 100644 src/libs/sound/mixer/sdl/Makeinfo create mode 100644 src/libs/sound/mixer/sdl/audiodrv_sdl.c create mode 100644 src/libs/sound/mixer/sdl/audiodrv_sdl.h create mode 100644 src/libs/sound/music.c create mode 100644 src/libs/sound/openal/Makeinfo create mode 100644 src/libs/sound/openal/audiodrv_openal.c create mode 100644 src/libs/sound/openal/audiodrv_openal.h create mode 100644 src/libs/sound/resinst.c create mode 100644 src/libs/sound/sfx.c create mode 100644 src/libs/sound/sndintrn.h create mode 100644 src/libs/sound/sound.c create mode 100644 src/libs/sound/sound.h create mode 100644 src/libs/sound/stream.c create mode 100644 src/libs/sound/stream.h create mode 100644 src/libs/sound/trackint.h create mode 100644 src/libs/sound/trackplayer.c create mode 100644 src/libs/sound/trackplayer.h create mode 100644 src/libs/strings/Makeinfo create mode 100644 src/libs/strings/getstr.c create mode 100644 src/libs/strings/sfileins.c create mode 100644 src/libs/strings/sresins.c create mode 100644 src/libs/strings/stringhashtable.c create mode 100644 src/libs/strings/stringhashtable.h create mode 100644 src/libs/strings/strings.c create mode 100644 src/libs/strings/strintrn.h create mode 100644 src/libs/strings/unicode.c create mode 100644 src/libs/strlib.h create mode 100644 src/libs/task/Makeinfo create mode 100644 src/libs/task/tasklib.c create mode 100644 src/libs/tasklib.h create mode 100644 src/libs/threadlib.h create mode 100644 src/libs/threads/Makeinfo create mode 100644 src/libs/threads/pthread/Makeinfo create mode 100644 src/libs/threads/pthread/posixthreads.c create mode 100644 src/libs/threads/pthread/posixthreads.h create mode 100644 src/libs/threads/sdl/Makeinfo create mode 100644 src/libs/threads/sdl/sdlthreads.c create mode 100644 src/libs/threads/sdl/sdlthreads.h create mode 100644 src/libs/threads/thrcommon.c create mode 100644 src/libs/threads/thrcommon.h create mode 100644 src/libs/time/Makeinfo create mode 100644 src/libs/time/sdl/Makeinfo create mode 100644 src/libs/time/sdl/sdltime.c create mode 100644 src/libs/time/sdl/sdltime.h create mode 100644 src/libs/time/timecommon.c create mode 100644 src/libs/time/timecommon.h create mode 100644 src/libs/timelib.h create mode 100644 src/libs/uio.h create mode 100644 src/libs/uio/COPYING create mode 100644 src/libs/uio/Makeinfo create mode 100644 src/libs/uio/charhashtable.c create mode 100644 src/libs/uio/charhashtable.h create mode 100644 src/libs/uio/debug.c create mode 100644 src/libs/uio/debug.h create mode 100644 src/libs/uio/defaultfs.c create mode 100644 src/libs/uio/defaultfs.h create mode 100644 src/libs/uio/doc/basics create mode 100644 src/libs/uio/doc/conventions create mode 100644 src/libs/uio/doc/todo create mode 100644 src/libs/uio/fileblock.c create mode 100644 src/libs/uio/fileblock.h create mode 100644 src/libs/uio/fstypes.c create mode 100644 src/libs/uio/fstypes.h create mode 100644 src/libs/uio/getint.h create mode 100644 src/libs/uio/gphys.c create mode 100644 src/libs/uio/gphys.h create mode 100644 src/libs/uio/hashtable.c create mode 100644 src/libs/uio/hashtable.h create mode 100644 src/libs/uio/io.c create mode 100644 src/libs/uio/io.h create mode 100644 src/libs/uio/ioaux.c create mode 100644 src/libs/uio/ioaux.h create mode 100644 src/libs/uio/iointrn.h create mode 100644 src/libs/uio/match.c create mode 100644 src/libs/uio/match.h create mode 100644 src/libs/uio/mem.h create mode 100644 src/libs/uio/memdebug.c create mode 100644 src/libs/uio/memdebug.h create mode 100644 src/libs/uio/mount.c create mode 100644 src/libs/uio/mount.h create mode 100644 src/libs/uio/mounttree.c create mode 100644 src/libs/uio/mounttree.h create mode 100644 src/libs/uio/paths.c create mode 100644 src/libs/uio/paths.h create mode 100644 src/libs/uio/physical.c create mode 100644 src/libs/uio/physical.h create mode 100644 src/libs/uio/stdio/Makeinfo create mode 100644 src/libs/uio/stdio/stdio.c create mode 100644 src/libs/uio/stdio/stdio.h create mode 100644 src/libs/uio/types.h create mode 100644 src/libs/uio/uioport.h create mode 100644 src/libs/uio/uiostream.c create mode 100644 src/libs/uio/uiostream.h create mode 100644 src/libs/uio/uioutils.c create mode 100644 src/libs/uio/uioutils.h create mode 100644 src/libs/uio/utils.c create mode 100644 src/libs/uio/utils.h create mode 100644 src/libs/uio/zip/Makeinfo create mode 100644 src/libs/uio/zip/zip.c create mode 100644 src/libs/uio/zip/zip.h create mode 100644 src/libs/uioutils.h create mode 100644 src/libs/unicode.h create mode 100644 src/libs/video/Makeinfo create mode 100644 src/libs/video/dukvid.c create mode 100644 src/libs/video/dukvid.h create mode 100644 src/libs/video/legacyplayer.c create mode 100644 src/libs/video/vfileins.c create mode 100644 src/libs/video/video.c create mode 100644 src/libs/video/video.h create mode 100644 src/libs/video/videodec.c create mode 100644 src/libs/video/videodec.h create mode 100644 src/libs/video/vidintrn.h create mode 100644 src/libs/video/vidplayer.c create mode 100644 src/libs/video/vidplayer.h create mode 100644 src/libs/video/vresins.c create mode 100644 src/libs/vidlib.h create mode 100644 src/options.c create mode 100644 src/options.h create mode 100644 src/port.c create mode 100644 src/port.h create mode 100644 src/regex/Makeinfo create mode 100644 src/regex/regcomp.ci create mode 100644 src/regex/regex.c create mode 100644 src/regex/regex.h create mode 100644 src/regex/regex_internal.ci create mode 100644 src/regex/regex_internal.h create mode 100644 src/regex/regexec.ci create mode 100644 src/res/Makeinfo create mode 100644 src/res/UrQuanMasters.rc create mode 100644 src/res/darwin/Info.plist create mode 100644 src/res/darwin/PkgInfo create mode 100644 src/res/darwin/The Ur-Quan Masters.icns create mode 100644 src/res/darwin/uqm.r create mode 100644 src/res/kohr-ah1.ico create mode 100644 src/res/sis1.ico create mode 100644 src/res/starcon2.ico create mode 100644 src/res/ur-quan-icon-24-hover-alpha.ico create mode 100644 src/res/ur-quan-icon-24-hover.ico create mode 100644 src/res/ur-quan-icon-alpha.ico create mode 100644 src/res/ur-quan-icon-std.ico create mode 100644 src/res/ur-quan1.ico create mode 100644 src/res/ur-quan2.ico create mode 100644 src/symbian/bld.inf create mode 100644 src/symbian/config.h create mode 100644 src/symbian/icons_scalable_dc.mk create mode 100644 src/symbian/uqm-armv5.pkg create mode 100644 src/symbian/uqm-gcce.pkg create mode 100644 src/symbian/uqm.cfg create mode 100644 src/symbian/uqm.mmp create mode 100644 src/symbian/uqm.rss create mode 100644 src/symbian/uqm.svg create mode 100644 src/symbian/uqm_reg.rss create mode 100644 src/symbian/uqmapp.cpp create mode 100644 src/types.h create mode 100644 src/uqm.c create mode 100644 src/uqm/Makeinfo create mode 100644 src/uqm/battle.c create mode 100644 src/uqm/battle.h create mode 100644 src/uqm/battlecontrols.c create mode 100644 src/uqm/battlecontrols.h create mode 100644 src/uqm/border.c create mode 100644 src/uqm/build.c create mode 100644 src/uqm/build.h create mode 100644 src/uqm/cleanup.c create mode 100644 src/uqm/clock.c create mode 100644 src/uqm/clock.h create mode 100644 src/uqm/cnctdlg.c create mode 100644 src/uqm/cnctdlg.h create mode 100644 src/uqm/coderes.h create mode 100644 src/uqm/collide.c create mode 100644 src/uqm/collide.h create mode 100644 src/uqm/colors.h create mode 100644 src/uqm/comm.c create mode 100644 src/uqm/comm.h create mode 100644 src/uqm/comm/Makeinfo create mode 100644 src/uqm/comm/arilou/Makeinfo create mode 100644 src/uqm/comm/arilou/arilouc.c create mode 100644 src/uqm/comm/arilou/resinst.h create mode 100644 src/uqm/comm/arilou/strings.h create mode 100644 src/uqm/comm/blackur/Makeinfo create mode 100644 src/uqm/comm/blackur/blackurc.c create mode 100644 src/uqm/comm/blackur/resinst.h create mode 100644 src/uqm/comm/blackur/strings.h create mode 100644 src/uqm/comm/chmmr/Makeinfo create mode 100644 src/uqm/comm/chmmr/chmmrc.c create mode 100644 src/uqm/comm/chmmr/resinst.h create mode 100644 src/uqm/comm/chmmr/strings.h create mode 100644 src/uqm/comm/comandr/Makeinfo create mode 100644 src/uqm/comm/comandr/comandr.c create mode 100644 src/uqm/comm/comandr/resinst.h create mode 100644 src/uqm/comm/comandr/strings.h create mode 100644 src/uqm/comm/commall.h create mode 100644 src/uqm/comm/druuge/Makeinfo create mode 100644 src/uqm/comm/druuge/druugec.c create mode 100644 src/uqm/comm/druuge/resinst.h create mode 100644 src/uqm/comm/druuge/strings.h create mode 100644 src/uqm/comm/ilwrath/Makeinfo create mode 100644 src/uqm/comm/ilwrath/ilwrathc.c create mode 100644 src/uqm/comm/ilwrath/resinst.h create mode 100644 src/uqm/comm/ilwrath/strings.h create mode 100644 src/uqm/comm/melnorm/Makeinfo create mode 100644 src/uqm/comm/melnorm/melnorm.c create mode 100644 src/uqm/comm/melnorm/resinst.h create mode 100644 src/uqm/comm/melnorm/strings.h create mode 100644 src/uqm/comm/mycon/Makeinfo create mode 100644 src/uqm/comm/mycon/myconc.c create mode 100644 src/uqm/comm/mycon/resinst.h create mode 100644 src/uqm/comm/mycon/strings.h create mode 100644 src/uqm/comm/orz/Makeinfo create mode 100644 src/uqm/comm/orz/orzc.c create mode 100644 src/uqm/comm/orz/resinst.h create mode 100644 src/uqm/comm/orz/strings.h create mode 100644 src/uqm/comm/pkunk/Makeinfo create mode 100644 src/uqm/comm/pkunk/pkunkc.c create mode 100644 src/uqm/comm/pkunk/resinst.h create mode 100644 src/uqm/comm/pkunk/strings.h create mode 100644 src/uqm/comm/rebel/Makeinfo create mode 100644 src/uqm/comm/rebel/rebel.c create mode 100644 src/uqm/comm/rebel/strings.h create mode 100644 src/uqm/comm/shofixt/Makeinfo create mode 100644 src/uqm/comm/shofixt/resinst.h create mode 100644 src/uqm/comm/shofixt/shofixt.c create mode 100644 src/uqm/comm/shofixt/strings.h create mode 100644 src/uqm/comm/slyhome/Makeinfo create mode 100644 src/uqm/comm/slyhome/resinst.h create mode 100644 src/uqm/comm/slyhome/slyhome.c create mode 100644 src/uqm/comm/slyhome/strings.h create mode 100644 src/uqm/comm/slyland/Makeinfo create mode 100644 src/uqm/comm/slyland/resinst.h create mode 100644 src/uqm/comm/slyland/slyland.c create mode 100644 src/uqm/comm/slyland/strings.h create mode 100644 src/uqm/comm/spahome/Makeinfo create mode 100644 src/uqm/comm/spahome/spahome.c create mode 100644 src/uqm/comm/spahome/strings.h create mode 100644 src/uqm/comm/spathi/Makeinfo create mode 100644 src/uqm/comm/spathi/resinst.h create mode 100644 src/uqm/comm/spathi/spathic.c create mode 100644 src/uqm/comm/spathi/strings.h create mode 100644 src/uqm/comm/starbas/Makeinfo create mode 100644 src/uqm/comm/starbas/starbas.c create mode 100644 src/uqm/comm/starbas/strings.h create mode 100644 src/uqm/comm/supox/Makeinfo create mode 100644 src/uqm/comm/supox/resinst.h create mode 100644 src/uqm/comm/supox/strings.h create mode 100644 src/uqm/comm/supox/supoxc.c create mode 100644 src/uqm/comm/syreen/Makeinfo create mode 100644 src/uqm/comm/syreen/resinst.h create mode 100644 src/uqm/comm/syreen/strings.h create mode 100644 src/uqm/comm/syreen/syreenc.c create mode 100644 src/uqm/comm/talkpet/Makeinfo create mode 100644 src/uqm/comm/talkpet/resinst.h create mode 100644 src/uqm/comm/talkpet/strings.h create mode 100644 src/uqm/comm/talkpet/talkpet.c create mode 100644 src/uqm/comm/thradd/Makeinfo create mode 100644 src/uqm/comm/thradd/resinst.h create mode 100644 src/uqm/comm/thradd/strings.h create mode 100644 src/uqm/comm/thradd/thraddc.c create mode 100644 src/uqm/comm/umgah/Makeinfo create mode 100644 src/uqm/comm/umgah/resinst.h create mode 100644 src/uqm/comm/umgah/strings.h create mode 100644 src/uqm/comm/umgah/umgahc.c create mode 100644 src/uqm/comm/urquan/Makeinfo create mode 100644 src/uqm/comm/urquan/resinst.h create mode 100644 src/uqm/comm/urquan/strings.h create mode 100644 src/uqm/comm/urquan/urquanc.c create mode 100644 src/uqm/comm/utwig/Makeinfo create mode 100644 src/uqm/comm/utwig/resinst.h create mode 100644 src/uqm/comm/utwig/strings.h create mode 100644 src/uqm/comm/utwig/utwigc.c create mode 100644 src/uqm/comm/vux/Makeinfo create mode 100644 src/uqm/comm/vux/resinst.h create mode 100644 src/uqm/comm/vux/strings.h create mode 100644 src/uqm/comm/vux/vuxc.c create mode 100644 src/uqm/comm/yehat/Makeinfo create mode 100644 src/uqm/comm/yehat/resinst.h create mode 100644 src/uqm/comm/yehat/strings.h create mode 100644 src/uqm/comm/yehat/yehatc.c create mode 100644 src/uqm/comm/zoqfot/Makeinfo create mode 100644 src/uqm/comm/zoqfot/resinst.h create mode 100644 src/uqm/comm/zoqfot/strings.h create mode 100644 src/uqm/comm/zoqfot/zoqfotc.c create mode 100644 src/uqm/commanim.c create mode 100644 src/uqm/commanim.h create mode 100644 src/uqm/commglue.c create mode 100644 src/uqm/commglue.h create mode 100644 src/uqm/confirm.c create mode 100644 src/uqm/cons_res.c create mode 100644 src/uqm/cons_res.h create mode 100644 src/uqm/controls.h create mode 100644 src/uqm/corecode.h create mode 100644 src/uqm/credits.c create mode 100644 src/uqm/credits.h create mode 100644 src/uqm/cyborg.c create mode 100644 src/uqm/demo.c create mode 100644 src/uqm/demo.h create mode 100644 src/uqm/displist.c create mode 100644 src/uqm/displist.h create mode 100644 src/uqm/dummy.c create mode 100644 src/uqm/dummy.h create mode 100644 src/uqm/element.h create mode 100644 src/uqm/encount.c create mode 100644 src/uqm/encount.h create mode 100644 src/uqm/flash.c create mode 100644 src/uqm/flash.h create mode 100644 src/uqm/fmv.c create mode 100644 src/uqm/fmv.h create mode 100644 src/uqm/galaxy.c create mode 100644 src/uqm/gameev.c create mode 100644 src/uqm/gameev.h create mode 100644 src/uqm/gameinp.c create mode 100644 src/uqm/gameopt.c create mode 100644 src/uqm/gameopt.h create mode 100644 src/uqm/gamestr.h create mode 100644 src/uqm/gendef.c create mode 100644 src/uqm/gendef.h create mode 100644 src/uqm/getchar.c create mode 100644 src/uqm/globdata.c create mode 100644 src/uqm/globdata.h create mode 100644 src/uqm/gravity.c create mode 100644 src/uqm/grpinfo.c create mode 100644 src/uqm/grpinfo.h create mode 100644 src/uqm/grpintrn.h create mode 100644 src/uqm/hyper.c create mode 100644 src/uqm/hyper.h create mode 100644 src/uqm/ifontres.h create mode 100644 src/uqm/igfxres.h create mode 100644 src/uqm/ikey_con.h create mode 100644 src/uqm/imusicre.h create mode 100644 src/uqm/init.c create mode 100644 src/uqm/init.h create mode 100644 src/uqm/intel.c create mode 100644 src/uqm/intel.h create mode 100644 src/uqm/intro.c create mode 100644 src/uqm/ipdisp.c create mode 100644 src/uqm/ipdisp.h create mode 100644 src/uqm/isndres.h create mode 100644 src/uqm/istrtab.h create mode 100644 src/uqm/load.c create mode 100644 src/uqm/load_legacy.c create mode 100644 src/uqm/loadship.c create mode 100644 src/uqm/master.c create mode 100644 src/uqm/master.h create mode 100644 src/uqm/menu.c create mode 100644 src/uqm/menustat.h create mode 100644 src/uqm/misc.c create mode 100644 src/uqm/nameref.h create mode 100644 src/uqm/oscill.c create mode 100644 src/uqm/oscill.h create mode 100644 src/uqm/outfit.c create mode 100644 src/uqm/pickship.c create mode 100644 src/uqm/pickship.h create mode 100644 src/uqm/plandata.c create mode 100644 src/uqm/planets/Makeinfo create mode 100644 src/uqm/planets/calc.c create mode 100644 src/uqm/planets/cargo.c create mode 100644 src/uqm/planets/devices.c create mode 100644 src/uqm/planets/elemdata.h create mode 100644 src/uqm/planets/generate.h create mode 100644 src/uqm/planets/generate/Makeinfo create mode 100644 src/uqm/planets/generate/genall.h create mode 100644 src/uqm/planets/generate/genand.c create mode 100644 src/uqm/planets/generate/genburv.c create mode 100644 src/uqm/planets/generate/genchmmr.c create mode 100644 src/uqm/planets/generate/gencol.c create mode 100644 src/uqm/planets/generate/gendefault.c create mode 100644 src/uqm/planets/generate/gendefault.h create mode 100644 src/uqm/planets/generate/gendru.c create mode 100644 src/uqm/planets/generate/genilw.c create mode 100644 src/uqm/planets/generate/genmel.c create mode 100644 src/uqm/planets/generate/genmyc.c create mode 100644 src/uqm/planets/generate/genorz.c create mode 100644 src/uqm/planets/generate/genpet.c create mode 100644 src/uqm/planets/generate/genpku.c create mode 100644 src/uqm/planets/generate/genrain.c create mode 100644 src/uqm/planets/generate/gensam.c create mode 100644 src/uqm/planets/generate/genshof.c create mode 100644 src/uqm/planets/generate/gensly.c create mode 100644 src/uqm/planets/generate/gensol.c create mode 100644 src/uqm/planets/generate/genspa.c create mode 100644 src/uqm/planets/generate/gensup.c create mode 100644 src/uqm/planets/generate/gensyr.c create mode 100644 src/uqm/planets/generate/genthrad.c create mode 100644 src/uqm/planets/generate/gentrap.c create mode 100644 src/uqm/planets/generate/genutw.c create mode 100644 src/uqm/planets/generate/genvault.c create mode 100644 src/uqm/planets/generate/genvux.c create mode 100644 src/uqm/planets/generate/genwreck.c create mode 100644 src/uqm/planets/generate/genyeh.c create mode 100644 src/uqm/planets/generate/genzfpscout.c create mode 100644 src/uqm/planets/generate/genzoq.c create mode 100644 src/uqm/planets/gentopo.c create mode 100644 src/uqm/planets/lander.c create mode 100644 src/uqm/planets/lander.h create mode 100644 src/uqm/planets/lifeform.h create mode 100644 src/uqm/planets/orbits.c create mode 100644 src/uqm/planets/oval.c create mode 100644 src/uqm/planets/pl_stuff.c create mode 100644 src/uqm/planets/plandata.h create mode 100644 src/uqm/planets/planets.c create mode 100644 src/uqm/planets/planets.h create mode 100644 src/uqm/planets/plangen.c create mode 100644 src/uqm/planets/pstarmap.c create mode 100644 src/uqm/planets/report.c create mode 100644 src/uqm/planets/roster.c create mode 100644 src/uqm/planets/scan.c create mode 100644 src/uqm/planets/scan.h create mode 100644 src/uqm/planets/solarsys.c create mode 100644 src/uqm/planets/solarsys.h create mode 100644 src/uqm/planets/sundata.h create mode 100644 src/uqm/planets/surface.c create mode 100644 src/uqm/process.c create mode 100644 src/uqm/process.h create mode 100644 src/uqm/races.h create mode 100644 src/uqm/resinst.h create mode 100644 src/uqm/restart.c create mode 100644 src/uqm/restart.h create mode 100644 src/uqm/save.c create mode 100644 src/uqm/save.h create mode 100644 src/uqm/settings.c create mode 100644 src/uqm/settings.h create mode 100644 src/uqm/setup.c create mode 100644 src/uqm/setup.h create mode 100644 src/uqm/setupmenu.c create mode 100644 src/uqm/setupmenu.h create mode 100644 src/uqm/ship.c create mode 100644 src/uqm/ship.h create mode 100644 src/uqm/shipcont.h create mode 100644 src/uqm/ships/Makeinfo create mode 100644 src/uqm/ships/androsyn/Makeinfo create mode 100644 src/uqm/ships/androsyn/androsyn.c create mode 100644 src/uqm/ships/androsyn/androsyn.h create mode 100644 src/uqm/ships/androsyn/icode.h create mode 100644 src/uqm/ships/androsyn/resinst.h create mode 100644 src/uqm/ships/arilou/Makeinfo create mode 100644 src/uqm/ships/arilou/arilou.c create mode 100644 src/uqm/ships/arilou/arilou.h create mode 100644 src/uqm/ships/arilou/icode.h create mode 100644 src/uqm/ships/arilou/resinst.h create mode 100644 src/uqm/ships/blackurq/Makeinfo create mode 100644 src/uqm/ships/blackurq/blackurq.c create mode 100644 src/uqm/ships/blackurq/blackurq.h create mode 100644 src/uqm/ships/blackurq/icode.h create mode 100644 src/uqm/ships/blackurq/resinst.h create mode 100644 src/uqm/ships/chenjesu/Makeinfo create mode 100644 src/uqm/ships/chenjesu/chenjesu.c create mode 100644 src/uqm/ships/chenjesu/chenjesu.h create mode 100644 src/uqm/ships/chenjesu/icode.h create mode 100644 src/uqm/ships/chenjesu/resinst.h create mode 100644 src/uqm/ships/chmmr/Makeinfo create mode 100644 src/uqm/ships/chmmr/chmmr.c create mode 100644 src/uqm/ships/chmmr/chmmr.h create mode 100644 src/uqm/ships/chmmr/icode.h create mode 100644 src/uqm/ships/chmmr/resinst.h create mode 100644 src/uqm/ships/druuge/Makeinfo create mode 100644 src/uqm/ships/druuge/druuge.c create mode 100644 src/uqm/ships/druuge/druuge.h create mode 100644 src/uqm/ships/druuge/icode.h create mode 100644 src/uqm/ships/druuge/resinst.h create mode 100644 src/uqm/ships/human/Makeinfo create mode 100644 src/uqm/ships/human/human.c create mode 100644 src/uqm/ships/human/human.h create mode 100644 src/uqm/ships/human/icode.h create mode 100644 src/uqm/ships/human/resinst.h create mode 100644 src/uqm/ships/ilwrath/Makeinfo create mode 100644 src/uqm/ships/ilwrath/icode.h create mode 100644 src/uqm/ships/ilwrath/ilwrath.c create mode 100644 src/uqm/ships/ilwrath/ilwrath.h create mode 100644 src/uqm/ships/ilwrath/resinst.h create mode 100644 src/uqm/ships/lastbat/Makeinfo create mode 100644 src/uqm/ships/lastbat/icode.h create mode 100644 src/uqm/ships/lastbat/lastbat.c create mode 100644 src/uqm/ships/lastbat/lastbat.h create mode 100644 src/uqm/ships/lastbat/resinst.h create mode 100644 src/uqm/ships/melnorme/Makeinfo create mode 100644 src/uqm/ships/melnorme/icode.h create mode 100644 src/uqm/ships/melnorme/melnorme.c create mode 100644 src/uqm/ships/melnorme/melnorme.h create mode 100644 src/uqm/ships/melnorme/resinst.h create mode 100644 src/uqm/ships/mmrnmhrm/Makeinfo create mode 100644 src/uqm/ships/mmrnmhrm/icode.h create mode 100644 src/uqm/ships/mmrnmhrm/mmrnmhrm.c create mode 100644 src/uqm/ships/mmrnmhrm/mmrnmhrm.h create mode 100644 src/uqm/ships/mmrnmhrm/resinst.h create mode 100644 src/uqm/ships/mycon/Makeinfo create mode 100644 src/uqm/ships/mycon/icode.h create mode 100644 src/uqm/ships/mycon/mycon.c create mode 100644 src/uqm/ships/mycon/mycon.h create mode 100644 src/uqm/ships/mycon/resinst.h create mode 100644 src/uqm/ships/orz/Makeinfo create mode 100644 src/uqm/ships/orz/icode.h create mode 100644 src/uqm/ships/orz/orz.c create mode 100644 src/uqm/ships/orz/orz.h create mode 100644 src/uqm/ships/orz/resinst.h create mode 100644 src/uqm/ships/pkunk/Makeinfo create mode 100644 src/uqm/ships/pkunk/icode.h create mode 100644 src/uqm/ships/pkunk/pkunk.c create mode 100644 src/uqm/ships/pkunk/pkunk.h create mode 100644 src/uqm/ships/pkunk/resinst.h create mode 100644 src/uqm/ships/probe/Makeinfo create mode 100644 src/uqm/ships/probe/icode.h create mode 100644 src/uqm/ships/probe/probe.c create mode 100644 src/uqm/ships/probe/probe.h create mode 100644 src/uqm/ships/probe/resinst.h create mode 100644 src/uqm/ships/ship.h create mode 100644 src/uqm/ships/shofixti/Makeinfo create mode 100644 src/uqm/ships/shofixti/icode.h create mode 100644 src/uqm/ships/shofixti/resinst.h create mode 100644 src/uqm/ships/shofixti/shofixti.c create mode 100644 src/uqm/ships/shofixti/shofixti.h create mode 100644 src/uqm/ships/sis_ship/Makeinfo create mode 100644 src/uqm/ships/sis_ship/icode.h create mode 100644 src/uqm/ships/sis_ship/resinst.h create mode 100644 src/uqm/ships/sis_ship/sis_ship.c create mode 100644 src/uqm/ships/sis_ship/sis_ship.h create mode 100644 src/uqm/ships/slylandr/Makeinfo create mode 100644 src/uqm/ships/slylandr/icode.h create mode 100644 src/uqm/ships/slylandr/resinst.h create mode 100644 src/uqm/ships/slylandr/slylandr.c create mode 100644 src/uqm/ships/slylandr/slylandr.h create mode 100644 src/uqm/ships/spathi/Makeinfo create mode 100644 src/uqm/ships/spathi/icode.h create mode 100644 src/uqm/ships/spathi/resinst.h create mode 100644 src/uqm/ships/spathi/spathi.c create mode 100644 src/uqm/ships/spathi/spathi.h create mode 100644 src/uqm/ships/supox/Makeinfo create mode 100644 src/uqm/ships/supox/icode.h create mode 100644 src/uqm/ships/supox/resinst.h create mode 100644 src/uqm/ships/supox/supox.c create mode 100644 src/uqm/ships/supox/supox.h create mode 100644 src/uqm/ships/syreen/Makeinfo create mode 100644 src/uqm/ships/syreen/icode.h create mode 100644 src/uqm/ships/syreen/resinst.h create mode 100644 src/uqm/ships/syreen/syreen.c create mode 100644 src/uqm/ships/syreen/syreen.h create mode 100644 src/uqm/ships/thradd/Makeinfo create mode 100644 src/uqm/ships/thradd/icode.h create mode 100644 src/uqm/ships/thradd/resinst.h create mode 100644 src/uqm/ships/thradd/thradd.c create mode 100644 src/uqm/ships/thradd/thradd.h create mode 100644 src/uqm/ships/umgah/Makeinfo create mode 100644 src/uqm/ships/umgah/icode.h create mode 100644 src/uqm/ships/umgah/resinst.h create mode 100644 src/uqm/ships/umgah/umgah.c create mode 100644 src/uqm/ships/umgah/umgah.h create mode 100644 src/uqm/ships/urquan/Makeinfo create mode 100644 src/uqm/ships/urquan/icode.h create mode 100644 src/uqm/ships/urquan/resinst.h create mode 100644 src/uqm/ships/urquan/urquan.c create mode 100644 src/uqm/ships/urquan/urquan.h create mode 100644 src/uqm/ships/utwig/Makeinfo create mode 100644 src/uqm/ships/utwig/icode.h create mode 100644 src/uqm/ships/utwig/resinst.h create mode 100644 src/uqm/ships/utwig/utwig.c create mode 100644 src/uqm/ships/utwig/utwig.h create mode 100644 src/uqm/ships/vux/Makeinfo create mode 100644 src/uqm/ships/vux/icode.h create mode 100644 src/uqm/ships/vux/resinst.h create mode 100644 src/uqm/ships/vux/vux.c create mode 100644 src/uqm/ships/vux/vux.h create mode 100644 src/uqm/ships/yehat/Makeinfo create mode 100644 src/uqm/ships/yehat/icode.h create mode 100644 src/uqm/ships/yehat/resinst.h create mode 100644 src/uqm/ships/yehat/yehat.c create mode 100644 src/uqm/ships/yehat/yehat.h create mode 100644 src/uqm/ships/zoqfot/Makeinfo create mode 100644 src/uqm/ships/zoqfot/icode.h create mode 100644 src/uqm/ships/zoqfot/resinst.h create mode 100644 src/uqm/ships/zoqfot/zoqfot.c create mode 100644 src/uqm/ships/zoqfot/zoqfot.h create mode 100644 src/uqm/shipstat.c create mode 100644 src/uqm/shipyard.c create mode 100644 src/uqm/sis.c create mode 100644 src/uqm/sis.h create mode 100644 src/uqm/sounds.c create mode 100644 src/uqm/sounds.h create mode 100644 src/uqm/starbase.c create mode 100644 src/uqm/starbase.h create mode 100644 src/uqm/starcon.c create mode 100644 src/uqm/starcon.h create mode 100644 src/uqm/starmap.c create mode 100644 src/uqm/starmap.h create mode 100644 src/uqm/state.c create mode 100644 src/uqm/state.h create mode 100644 src/uqm/status.c create mode 100644 src/uqm/status.h create mode 100644 src/uqm/supermelee/Makeinfo create mode 100644 src/uqm/supermelee/buildpick.c create mode 100644 src/uqm/supermelee/buildpick.h create mode 100644 src/uqm/supermelee/loadmele.c create mode 100644 src/uqm/supermelee/loadmele.h create mode 100644 src/uqm/supermelee/melee.c create mode 100644 src/uqm/supermelee/melee.h create mode 100644 src/uqm/supermelee/meleesetup.c create mode 100644 src/uqm/supermelee/meleesetup.h create mode 100644 src/uqm/supermelee/meleeship.h create mode 100644 src/uqm/supermelee/netplay/FILES create mode 100644 src/uqm/supermelee/netplay/Makeinfo create mode 100644 src/uqm/supermelee/netplay/checkbuf.c create mode 100644 src/uqm/supermelee/netplay/checkbuf.h create mode 100644 src/uqm/supermelee/netplay/checksum.c create mode 100644 src/uqm/supermelee/netplay/checksum.h create mode 100644 src/uqm/supermelee/netplay/crc.c create mode 100644 src/uqm/supermelee/netplay/crc.h create mode 100644 src/uqm/supermelee/netplay/nc_connect.ci create mode 100644 src/uqm/supermelee/netplay/netconnection.c create mode 100644 src/uqm/supermelee/netplay/netconnection.h create mode 100644 src/uqm/supermelee/netplay/netinput.c create mode 100644 src/uqm/supermelee/netplay/netinput.h create mode 100644 src/uqm/supermelee/netplay/netmelee.c create mode 100644 src/uqm/supermelee/netplay/netmelee.h create mode 100644 src/uqm/supermelee/netplay/netmisc.c create mode 100644 src/uqm/supermelee/netplay/netmisc.h create mode 100644 src/uqm/supermelee/netplay/netoptions.c create mode 100644 src/uqm/supermelee/netplay/netoptions.h create mode 100644 src/uqm/supermelee/netplay/netplay.h create mode 100644 src/uqm/supermelee/netplay/netrcv.c create mode 100644 src/uqm/supermelee/netplay/netrcv.h create mode 100644 src/uqm/supermelee/netplay/netsend.c create mode 100644 src/uqm/supermelee/netplay/netsend.h create mode 100644 src/uqm/supermelee/netplay/netstate.c create mode 100644 src/uqm/supermelee/netplay/netstate.h create mode 100644 src/uqm/supermelee/netplay/notify.c create mode 100644 src/uqm/supermelee/netplay/notify.h create mode 100644 src/uqm/supermelee/netplay/notifyall.c create mode 100644 src/uqm/supermelee/netplay/notifyall.h create mode 100644 src/uqm/supermelee/netplay/packet.c create mode 100644 src/uqm/supermelee/netplay/packet.h create mode 100644 src/uqm/supermelee/netplay/packethandlers.c create mode 100644 src/uqm/supermelee/netplay/packethandlers.h create mode 100644 src/uqm/supermelee/netplay/packetq.c create mode 100644 src/uqm/supermelee/netplay/packetq.h create mode 100644 src/uqm/supermelee/netplay/packetsenders.c create mode 100644 src/uqm/supermelee/netplay/packetsenders.h create mode 100644 src/uqm/supermelee/netplay/proto/Makeinfo create mode 100644 src/uqm/supermelee/netplay/proto/npconfirm.c create mode 100644 src/uqm/supermelee/netplay/proto/npconfirm.h create mode 100644 src/uqm/supermelee/netplay/proto/ready.c create mode 100644 src/uqm/supermelee/netplay/proto/ready.h create mode 100644 src/uqm/supermelee/netplay/proto/reset.c create mode 100644 src/uqm/supermelee/netplay/proto/reset.h create mode 100644 src/uqm/supermelee/pickmele.c create mode 100644 src/uqm/supermelee/pickmele.h create mode 100644 src/uqm/tactrans.c create mode 100644 src/uqm/tactrans.h create mode 100644 src/uqm/trans.c create mode 100644 src/uqm/units.h create mode 100644 src/uqm/uqmdebug.c create mode 100644 src/uqm/uqmdebug.h create mode 100644 src/uqm/util.c create mode 100644 src/uqm/util.h create mode 100644 src/uqm/velocity.c create mode 100644 src/uqm/velocity.h create mode 100644 src/uqm/weapon.c create mode 100644 src/uqm/weapon.h create mode 100644 src/uqmversion.h create mode 100755 subst create mode 100755 uqm-indent create mode 100644 uqm.lsm diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..79ab785 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +content/version export-subst diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b0a5961 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +build.vars +/obj +config.state +config_unix.h +uqm +uqm-wrapper diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..acdea2a --- /dev/null +++ b/AUTHORS @@ -0,0 +1,236 @@ +We worship these two higher beings for making the original, legendary game: + Fred Ford + Paul Reiche III + + +The Ur-Quan Masters port: +------------------------- + +Core team (in alphabetical order): + Serge van den Boom + Mika Kolehmainen + Michael Chapman Martin + Chris Nelson + Alex Volkov + +Additional programming (in alphabetical order): + Karl Bartel + Scott A. Colcord + Loius Delacroix + jdorje + Geoffrey Hausheer + Sze Howe Koh + Ala-lala + Mudrony Laszlo + Peter MacMillan + Sanjay Madhav + Robert McNamara + Vlad-Ceru Opran + Peter Piwowarski + Brian Rogers + Horatiu Romosan + Nicolas Simonds + Peter van Valderen + Alexander Waseleski + +Music remixers (in alphabetical order): + Jouni Airaksinen + András Barják + Matt Bentley + Travis Chase + Tore Aune Fjellstad + Espen Gätzschmann + Aaron J. Grier + A. Keren + Casey Monroe + Dan Nicholson + George Nowik + Riku Nuottajärvi + Erol Otus + Greg Szymanski + +Additional artwork (in alphabetical order): + Jouni Airaksinen + Erol Otus + Zarla Sheenaza + Joffrey Smith + Yukki + +Other contributions (in alphabetical order): + Karl Bartel + Travis Chase (BeOS port) + Felix Lazarev (3DO internals) + Mike Melanson (ADPCM basis from FFmpeg used for DUK audio) + Brian Rogers + Horatiu Romosan (v0.1 Win32 installer) + +Third party libraries: + Simple Directmedia Layer (SDL) by Sam Lantinga et al. + https://www.libsdl.org/ + + libpng by Guy Schalnat, Andreas Dilger, et al. + https://libpng.org/pub/png/libpng.html + + Ogg Vorbis by the Xiph.Org Foundation + https://xiph.org/ + + Mikmod Sound System by Jean-Paul Mikkers et al. + http://mikmod.sourceforge.net + + zlib by Jean-loup Gailly and Mark Adler + https://www.zlib.net + +Original game: +-------------- + +Programming & technology: + Fred Ford + +Game design and fiction: + Paul Reiche III + +3DO programming: + Ken Ford + Fred Ford + Brad Van Tighem + +Producer (3DO version): + Mark Wallace + +3DO production: + Paul Reiche III + Richard Antaki + +Starring the voices of: + Richard Antaki ....... Thraddash + Alex Bennett ......... Starbase Commander + Rich Betz ............ Ariloulaleelay + ............ Druuge + Roy Blumenfeld ....... Zoq-Fot-Pik + David Bryce .......... Kohr-Ah + .......... Ilwrath + .......... Shofixti + .......... Spathi + Lauren Forcella ...... Supox + Greg Johnson ......... Orz + ......... Pkunk + ......... Utwig + Bruce Leyland ........ Yehat + Erol Otus ............ Chmmr + Paul Reiche III ...... Mycon + ...... Talking Pet + Brad Van Tighem ...... Slylandro Speaker + Madeleine Wild ....... Zoq-Fot-Pik + ....... Syreen + ....... VUX + Larry Zee ............ Umgah + ............ Melnorme + ............ Ur-Quan + 840-AV ............... Slylandro Probe + Paul II, Paul III .... Victory Sequence + Arianna & Devin Reiche + +Voice effects: + Jeff Forehan + Burke Treischmann + Mark Miller + +Voice editing: + Richard Antaki + Paul Reiche III + Burke Treischmann + Steve Henefin + Jeremy Bredow + Erik Griss + Brad Van Tighem + +Art and animation: + George Barr + Paul Reiche III + Erol Otus + Greg Johnson + Kyle Balda + Jeff Rianda + Taunya Shiffer + Leonard Robel + Greg Hammond + Armand Cabrera + Silicon Knights + +Additional writing: + Greg Johnson + Mat Genser + Robert Leyland + Iain McCaig + Tomi Quintana + Erol Otus + Leonard Robel + John Estes + +Music: + Burke Treischmann + Dan Nicholson + Riku Nuottajärvi + Eric Berge + Erol Otus + Marc Brown + Aaron Grier + Kevin Palivec + Tommy Dunbar + +3D cinemagraphics: + Gene Bodio + Phil Le Marbre + TrueMotion(R) "S" Video Compression by The Duck Corporation + +Product marketing manager (3DO version): + Jim Curry + +3DO testers: + Susan Michele + Jeremy Bredow + Wes Gittens + Ty Johnson + Tate Schieferle + Carolina Esmurdoc + Rob Johnson + Kevin Kwan + Joe Ganis + Chang Fadel + Erik Griss + Eugene Law + Mark Ybarra + Steve Groll + Tim Jordan + Matt Young + +PC/DOS testers: + Pam Levins + Tomi Quintana + Joel Dinolt + Robert Daly + Greg Hammond + B.J. Shea + Robert Leyland + Sean Vikoren + Mike Ebert + Tony Hsieh + ROL + Ed Gwynn + Akila Redmer + Russell Bornschlegel + Steve Graziano + Mark Voorsanger + +Special thanks to: + Greg Johnson + John Ratcliffe + +Paul's Foundation: + Laurie + Devin + and Arianna + +Got us 86'ed out of a restaurant in Las Vegas: + Madeline Canepa (we love her anyway) + diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..f7bac6a --- /dev/null +++ b/BUGS @@ -0,0 +1,5 @@ +All known bugs and missing features are listed in our online bug database, +which can be found at + http://bugs.uqm.stack.nl/ +New bugs that you may find can be reported at the same location. + diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..bda2c02 --- /dev/null +++ b/COPYING @@ -0,0 +1,944 @@ + + The Ur-Quan Masters + Copyright (C) 1992, 2002 Toys for Bob, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be entertaining, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. A copy of the + General Public License is included at the end of this document. + + The content -- voiceovers, dialogue, graphics, sounds, and music -- + are copyright (C) 1992, 1993, 2002 Toys for Bob, Inc. or their + respective creators. The content may be used freely under the + terms of the Creative Commons Attribution-NonCommercial-ShareAlike + 2.5 license (included below, and also available at + http://creativecommons.org/licenses/by-nc-sa/2.5/). The content + may also be copied freely as part of a distribution of The Ur-Quan + Masters. + + The documentation -- excluding documentation that is part of the + code or otherwise clearly governed by the preceding licenses -- + may be used freely under the terms of the Creative Commons + Attribution 2.0 license (included below, and also available at + http://creativecommons.org/licenses/by/2.0/). + +---------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +---------------------------------------------------------------------------- + +CREATIVE COMMONS LICENSE +Attribution-NonCommercial-ShareAlike 2.5 + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL +SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT +RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" +BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION +PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE +RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Collective Work" means a work, such as a periodical issue, + anthology or encyclopedia, in which the Work in its entirety in + unmodified form, along with a number of other contributions, + constituting separate and independent works in themselves, are + assembled into a collective whole. A work that constitutes a + Collective Work will not be considered a Derivative Work (as + defined below) for the purposes of this License. + + b. "Derivative Work" means a work based upon the Work or upon the + Work and other pre-existing works, such as a translation, + musical arrangement, dramatization, fictionalization, motion + picture version, sound recording, art reproduction, abridgment, + condensation, or any other form in which the Work may be recast, + transformed, or adapted, except that a work that constitutes a + Collective Work will not be considered a Derivative Work for the + purpose of this License. For the avoidance of doubt, where the + Work is a musical composition or sound recording, the + synchronization of the Work in timed-relation with a moving + image ("synching") will be considered a Derivative Work for the + purpose of this License. + + c. "Licensor" means the individual or entity that offers the Work + under the terms of this License. + + d. "Original Author" means the individual or entity who created the + Work. + + e. "Work" means the copyrightable work of authorship offered under + the terms of this License. + + f. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this + License with respect to the Work, or who has received express + permission from the Licensor to exercise rights under this + License despite a previous violation. + + g. "License Elements" means the following high-level license + attributes as selected by Licensor and indicated in the title of + this License: Attribution, Noncommercial, ShareAlike. + +2. Fair Use Rights. Nothing in this license is intended to reduce, + limit, or restrict any rights arising from fair use, first sale or + other limitations on the exclusive rights of the copyright owner + under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, + Licensor hereby grants You a worldwide, royalty-free, + non-exclusive, perpetual (for the duration of the applicable + copyright) license to exercise the rights in the Work as stated + below: + + a. to reproduce the Work, to incorporate the Work into one or more + Collective Works, and to reproduce the Work as incorporated in + the Collective Works; + + b. to create and reproduce Derivative Works; + + c. to distribute copies or phonorecords of, display publicly, + perform publicly, and perform publicly by means of a digital + audio transmission the Work including as incorporated in + Collective Works; + + d. to distribute copies or phonorecords of, display publicly, + perform publicly, and perform publicly by means of a digital + audio transmission Derivative Works; + + The above rights may be exercised in all media and formats whether + now known or hereafter devised. The above rights include the right + to make such modifications as are technically necessary to exercise + the rights in other media and formats. All rights not expressly + granted by Licensor are hereby reserved, including but not limited + to the rights set forth in Sections 4(e) and 4(f). + +4. Restrictions. + + The license granted in Section 3 above is expressly made subject to and + limited by the following restrictions: + + a. You may distribute, publicly display, publicly perform, or + publicly digitally perform the Work only under the terms of this + License, and You must include a copy of, or the Uniform Resource + Identifier for, this License with every copy or phonorecord of + the Work You distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or impose any + terms on the Work that alter or restrict the terms of this + License or the recipients' exercise of the rights granted + hereunder. You may not sublicense the Work. You must keep intact + all notices that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly display, publicly + perform, or publicly digitally perform the Work with any + technological measures that control access or use of the Work in + a manner inconsistent with the terms of this License + Agreement. The above applies to the Work as incorporated in a + Collective Work, but this does not require the Collective Work + apart from the Work itself to be made subject to the terms of + this License. If You create a Collective Work, upon notice from + any Licensor You must, to the extent practicable, remove from + the Collective Work any credit as required by clause 4(d), as + requested. If You create a Derivative Work, upon notice from any + Licensor You must, to the extent practicable, remove from the + Derivative Work any credit as required by clause 4(d), as + requested. + + b. You may distribute, publicly display, publicly perform, or + publicly digitally perform a Derivative Work only under the + terms of this License, a later version of this License with the + same License Elements as this License, or a Creative Commons + iCommons license that contains the same License Elements as this + License (e.g. Attribution-NonCommercial-ShareAlike 2.5 + Japan). You must include a copy of, or the Uniform Resource + Identifier for, this License or other license specified in the + previous sentence with every copy or phonorecord of each + Derivative Work You distribute, publicly display, publicly + perform, or publicly digitally perform. You may not offer or + impose any terms on the Derivative Works that alter or restrict + the terms of this License or the recipients' exercise of the + rights granted hereunder, and You must keep intact all notices + that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly display, publicly + perform, or publicly digitally perform the Derivative Work with + any technological measures that control access or use of the + Work in a manner inconsistent with the terms of this License + Agreement. The above applies to the Derivative Work as + incorporated in a Collective Work, but this does not require the + Collective Work apart from the Derivative Work itself to be made + subject to the terms of this License. + + c. You may not exercise any of the rights granted to You in Section + 3 above in any manner that is primarily intended for or directed + toward commercial advantage or private monetary + compensation. The exchange of the Work for other copyrighted + works by means of digital file-sharing or otherwise shall not be + considered to be intended for or directed toward commercial + advantage or private monetary compensation, provided there is no + payment of any monetary compensation in connection with the + exchange of copyrighted works. + + d. If you distribute, publicly display, publicly perform, or + publicly digitally perform the Work or any Derivative Works or + Collective Works, You must keep intact all copyright notices for + the Work and provide, reasonable to the medium or means You are + utilizing: (i) the name of the Original Author (or pseudonym, if + applicable) if supplied, and/or (ii) if the Original Author + and/or Licensor designate another party or parties (e.g. a + sponsor institute, publishing entity, journal) for attribution + in Licensor's copyright notice, terms of service or by other + reasonable means, the name of such party or parties; the title + of the Work if supplied; to the extent reasonably practicable, + the Uniform Resource Identifier, if any, that Licensor specifies + to be associated with the Work, unless such URI does not refer + to the copyright notice or licensing information for the Work; + and in the case of a Derivative Work, a credit identifying the + use of the Work in the Derivative Work (e.g., "French + translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). Such credit may be + implemented in any reasonable manner; provided, however, that in + the case of a Derivative Work or Collective Work, at a minimum + such credit will appear where any other comparable authorship + credit appears and in a manner at least as prominent as such + other comparable authorship credit. + + e. For the avoidance of doubt, where the Work is a musical composition: + + i. Performance Royalties Under Blanket Licenses. Licensor + reserves the exclusive right to collect, whether + individually or via a performance rights society + (e.g. ASCAP, BMI, SESAC), royalties for the public + performance or public digital performance (e.g. webcast) + of the Work if that performance is primarily intended for + or directed toward commercial advantage or private + monetary compensation. + + ii. Mechanical Rights and Statutory Royalties. Licensor + reserves the exclusive right to collect, whether + individually or via a music rights agency or designated + agent (e.g. Harry Fox Agency), royalties for any + phonorecord You create from the Work ("cover version") + and distribute, subject to the compulsory license created + by 17 USC Section 115 of the US Copyright Act (or the + equivalent in other jurisdictions), if Your distribution + of such cover version is primarily intended for or + directed toward commercial advantage or private monetary + compensation. + + f. Webcasting Rights and Statutory Royalties. For the avoidance of + doubt, where the Work is a sound recording, Licensor reserves + the exclusive right to collect, whether individually or via a + performance-rights society (e.g. SoundExchange), royalties for + the public digital performance (e.g. webcast) of the Work, + subject to the compulsory license created by 17 USC Section 114 + of the US Copyright Act (or the equivalent in other + jurisdictions), if Your public digital performance is primarily + intended for or directed toward commercial advantage or private + monetary compensation. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, +LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR +WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, +STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF +TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, +NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, +OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT +DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED +WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. + +EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL +LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, +INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT +OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN +ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this + License. Individuals or entities who have received Derivative + Works or Collective Works from You under this License, however, + will not have their licenses terminated provided such + individuals or entities remain in full compliance with those + licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any + termination of this License. + + b. Subject to the above terms and conditions, the license granted + here is perpetual (for the duration of the applicable copyright + in the Work). Notwithstanding the above, Licensor reserves the + right to release the Work under different license terms or to + stop distributing the Work at any time; provided, however that + any such election will not serve to withdraw this License (or + any other license that has been, or is required to be, granted + under the terms of this License), and this License will continue + in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You distribute or publicly digitally perform the Work + or a Collective Work, the Licensor offers to the recipient a + license to the Work on the same terms and conditions as the + license granted to You under this License. + + b. Each time You distribute or publicly digitally perform a + Derivative Work, Licensor offers to the recipient a license to + the original Work on the same terms and conditions as the + license granted to You under this License. + + c. If any provision of this License is invalid or unenforceable + under applicable law, it shall not affect the validity or + enforceability of the remainder of the terms of this License, + and without further action by the parties to this agreement, + such provision shall be reformed to the minimum extent necessary + to make such provision valid and enforceable. + + d. No term or provision of this License shall be deemed waived and + no breach consented to unless such waiver or consent shall be in + writing and signed by the party to be charged with such waiver + or consent. + + e. This License constitutes the entire agreement between the + parties with respect to the Work licensed here. There are no + understandings, agreements or representations with respect to + the Work not specified here. Licensor shall not be bound by any + additional provisions that may appear in any communication from + You. This License may not be modified without the mutual written + agreement of the Licensor and You. + +Creative Commons is not a party to this License, and makes no warranty +whatsoever in connection with the Work. Creative Commons will not be +liable to You or any party on any legal theory for any damages +whatsoever, including without limitation any general, special, +incidental or consequential damages arising in connection to this +license. Notwithstanding the foregoing two (2) sentences, if Creative +Commons has expressly identified itself as the Licensor hereunder, it +shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the +Work is licensed under the CCPL, neither party will use the trademark +"Creative Commons" or any related trademark or logo of Creative +Commons without the prior written consent of Creative Commons. Any +permitted use will be in compliance with Creative Commons' +then-current trademark usage guidelines, as may be published on its +website or otherwise made available upon request from time to time. + +Creative Commons may be contacted at http://creativecommons.org/. + +---------------------------------------------------------------------- + +CREATIVE COMMONS LICENSE ATTRIBUTION-2.0 + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE +LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN +ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS +INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES +REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR +DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS +CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS +PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE +WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS +PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND +AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS +YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF +SUCH TERMS AND CONDITIONS. + +1. Definitions + + a. "Collective Work" means a work, such as a periodical issue, + anthology or encyclopedia, in which the Work in its entirety in + unmodified form, along with a number of other contributions, + constituting separate and independent works in themselves, are + assembled into a collective whole. A work that constitutes a + Collective Work will not be considered a Derivative Work (as + defined below) for the purposes of this License. + + b. "Derivative Work" means a work based upon the Work or upon the + Work and other pre-existing works, such as a translation, + musical arrangement, dramatization, fictionalization, motion + picture version, sound recording, art reproduction, abridgment, + condensation, or any other form in which the Work may be recast, + transformed, or adapted, except that a work that constitutes a + Collective Work will not be considered a Derivative Work for the + purpose of this License. For the avoidance of doubt, where the + Work is a musical composition or sound recording, the + synchronization of the Work in timed-relation with a moving + image ("synching") will be considered a Derivative Work for the + purpose of this License. + + c. "Licensor" means the individual or entity that offers the Work + under the terms of this License. + + d. "Original Author" means the individual or entity who created the + Work. + + e. "Work" means the copyrightable work of authorship offered under + the terms of this License. + + f. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this + License with respect to the Work, or who has received express + permission from the Licensor to exercise rights under this + License despite a previous violation. + +2. Fair Use Rights. Nothing in this license is intended to reduce, + limit, or restrict any rights arising from fair use, first sale or + other limitations on the exclusive rights of the copyright owner + under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, + Licensor hereby grants You a worldwide, royalty-free, + non-exclusive, perpetual (for the duration of the applicable + copyright) license to exercise the rights in the Work as stated + below: + + a. to reproduce the Work, to incorporate the Work into one or more + Collective Works, and to reproduce the Work as incorporated in + the Collective Works; + + b. to create and reproduce Derivative Works; + + c. to distribute copies or phonorecords of, display publicly, + perform publicly, and perform publicly by means of a digital + audio transmission the Work including as incorporated in + Collective Works; + + d. to distribute copies or phonorecords of, display publicly, + perform publicly, and perform publicly by means of a digital + audio transmission Derivative Works. + + e. For the avoidance of doubt, where the work is a musical + composition: + + i. Performance Royalties Under Blanket Licenses. Licensor + waives the exclusive right to collect, whether + individually or via a performance rights society + (e.g. ASCAP, BMI, SESAC), royalties for the public + performance or public digital performance (e.g. webcast) + of the Work. + + ii. Mechanical Rights and Statutory Royalties. Licensor + waives the exclusive right to collect, whether + individually or via a music rights agency or designated + agent (e.g. Harry Fox Agency), royalties for any + phonorecord You create from the Work ("cover version") + and distribute, subject to the compulsory license created + by 17 USC Section 115 of the US Copyright Act (or the + equivalent in other jurisdictions). + + f. Webcasting Rights and Statutory Royalties. For the avoidance of + doubt, where the Work is a sound recording, Licensor waives the + exclusive right to collect, whether individually or via a + performance-rights society (e.g. SoundExchange), royalties for + the public digital performance (e.g. webcast) of the Work, + subject to the compulsory license created by 17 USC Section 114 + of the US Copyright Act (or the equivalent in other + jurisdictions). + + The above rights may be exercised in all media and formats whether + now known or hereafter devised. The above rights include the right + to make such modifications as are technically necessary to exercise + the rights in other media and formats. All rights not expressly + granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly + made subject to and limited by the following restrictions: + + a. You may distribute, publicly display, publicly perform, or + publicly digitally perform the Work only under the terms of this + License, and You must include a copy of, or the Uniform Resource + Identifier for, this License with every copy or phonorecord of + the Work You distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or impose any + terms on the Work that alter or restrict the terms of this + License or the recipients' exercise of the rights granted + hereunder. You may not sublicense the Work. You must keep intact + all notices that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly display, publicly + perform, or publicly digitally perform the Work with any + technological measures that control access or use of the Work in + a manner inconsistent with the terms of this License + Agreement. The above applies to the Work as incorporated in a + Collective Work, but this does not require the Collective Work + apart from the Work itself to be made subject to the terms of + this License. If You create a Collective Work, upon notice from + any Licensor You must, to the extent practicable, remove from + the Collective Work any reference to such Licensor or the + Original Author, as requested. If You create a Derivative Work, + upon notice from any Licensor You must, to the extent + practicable, remove from the Derivative Work any reference to + such Licensor or the Original Author, as requested. + + b. If you distribute, publicly display, publicly perform, or + publicly digitally perform the Work or any Derivative Works or + Collective Works, You must keep intact all copyright notices for + the Work and give the Original Author credit reasonable to the + medium or means You are utilizing by conveying the name (or + pseudonym if applicable) of the Original Author if supplied; the + title of the Work if supplied; to the extent reasonably + practicable, the Uniform Resource Identifier, if any, that + Licensor specifies to be associated with the Work, unless such + URI does not refer to the copyright notice or licensing + information for the Work; and in the case of a Derivative Work, + a credit identifying the use of the Work in the Derivative Work + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). Such + credit may be implemented in any reasonable manner; provided, + however, that in the case of a Derivative Work or Collective + Work, at a minimum such credit will appear where any other + comparable authorship credit appears and in a manner at least as + prominent as such other comparable authorship credit. + +5. Representations, Warranties and Disclaimer. UNLESS OTHERWISE +MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK +AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND +CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF +ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW +THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY +TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY + APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY + LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE + OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE + WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this + License. Individuals or entities who have received Derivative + Works or Collective Works from You under this License, however, + will not have their licenses terminated provided such + individuals or entities remain in full compliance with those + licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any + termination of this License. + + b. Subject to the above terms and conditions, the license granted + here is perpetual (for the duration of the applicable copyright + in the Work). Notwithstanding the above, Licensor reserves the + right to release the Work under different license terms or to + stop distributing the Work at any time; provided, however that + any such election will not serve to withdraw this License (or + any other license that has been, or is required to be, granted + under the terms of this License), and this License will continue + in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You distribute or publicly digitally perform the Work + or a Collective Work, the Licensor offers to the recipient a + license to the Work on the same terms and conditions as the + license granted to You under this License. + + b. Each time You distribute or publicly digitally perform a + Derivative Work, Licensor offers to the recipient a license to + the original Work on the same terms and conditions as the + license granted to You under this License. + + c. If any provision of this License is invalid or unenforceable + under applicable law, it shall not affect the validity or + enforceability of the remainder of the terms of this License, + and without further action by the parties to this agreement, + such provision shall be reformed to the minimum extent necessary + to make such provision valid and enforceable. + + d. No term or provision of this License shall be deemed waived and + no breach consented to unless such waiver or consent shall be in + writing and signed by the party to be charged with such waiver + or consent. + + e. This License constitutes the entire agreement between the + parties with respect to the Work licensed here. There are no + understandings, agreements or representations with respect to + the Work not specified here. Licensor shall not be bound by any + additional provisions that may appear in any communication from + You. This License may not be modified without the mutual written + agreement of the Licensor and You. + +Creative Commons is not a party to this License, and makes no warranty +whatsoever in connection with the Work. Creative Commons will not be +liable to You or any party on any legal theory for any damages +whatsoever, including without limitation any general, special, +incidental or consequential damages arising in connection to this +license. Notwithstanding the foregoing two (2) sentences, if Creative +Commons has expressly identified itself as the Licensor hereunder, it +shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the +Work is licensed under the CCPL, neither party will use the trademark +"Creative Commons" or any related trademark or logo of Creative +Commons without the prior written consent of Creative Commons. Any +permitted use will be in compliance with Creative Commons' +then-current trademark usage guidelines, as may be published on its +website or otherwise made available upon request from time to time. + +Creative Commons may be contacted at http://creativecommons.org/. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..36052bb --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1175 @@ +0.8: +- Grouping ship properties together at the top of the ship .c files, from + oldlaptop. +- Some added documentation for UIO. +- Added a StringHashTable type. +- A few superficial fixes to charhashtable. +- Removed GraphicsLock and made comm callbacks queued - Alex +- Split debug key function into sync and async parts, paving the way + for GraphicsLock removal - Alex +- PageUp/PageDown now add/remove 10 fuel in the shipyard, from + Scott A. Colcord, Nic +- Annihigate flash thread - SvdB +- Switch SetFlashRect() to the new flash code - SvdB +- Add C++ support to the build system, from Scott A. Colcord +- Cleaning up DoModifyShips() - SvdB +- Added Valgrind suppression file, from Louis Delacroix +- Fix several memory leaks, from Loius Delacroix +- Some cleanups / warnings fixes, from Louis Delacroix +- Added a free callback function for the values of the key-value pairs + in hash tables - SvdB +- Annigilate ActivateStarShip() - SvdB +- Removed obsolete RESPONSE_TO_REF() - SvdB +- Don't require the 'shadow' dir in addon packs, from Alex +- Make use of GAME_STATE_FILE consistently, from Scott A. Colcord +- Fixed unconst(), from Scott A. Colcord +- Fixes to a few small bugs in UIO which shouldn't have had an impact on + UQM, but would in the future, from Alex +- Allow F6 as a default alternate search key, from related projects. +- "Player 1" and "Player 2" are now "Bottom" and "Top" player (#954) - McM +- Fix Utwig dialog inconsistency (#756) - McM +- Use a deterministic seed for Melnorme modules-for-fuel deals (#567) - McM +- Various warnings cleanup (bug #50), from Scott A. Colcord +- Fixed various Pkunk reincarnation and Shofixti Glory device interactions; + Pkunk ditty plays in a simultaneous destruction (bug #666) - Alex +- Preparing for linking with C++ code, from Scott A. Colcord +- Fixed player's phrase leading to Tanaka's response about a solitary + vigil (bug #859) - Alex +- Added the Ur-Quan to the list of starfaring races on which Commander + Hayes provides info (bug #865) - Alex +- Commander Hayes now advises the player correctly on the number of + landers one needs (bug #1098) - Alex +- All Sound Options are now preserved between visits to the setup menu. + Some options still require a restart (bug #1132) - Alex +- Removed the remnants of the --music option (bug #1133) - Alex +- Fixed flagship re-entering the inner system after an encounter in the + outer system, thus trapping the player (bug #1135) - Alex +- Fixed starmap fuel range circle shrinking (bug #1130) - Alex +- Added gamma correction to the setup menu (bug #977) - Alex, Nic +- Refactor Melnorme comm code to make modding easier; step 1 (bug #1128), + from Scott A. Colcord +- Added aspect ratio option to the setup menu - Alex +- Positional audio setup menu option now has an immediate effect - Alex +- Added speech option which controls loading of 3dovoice addon (no need + to set speech volume to 0 anymore) - Alex +- Added the MetaChron story to the no-voice Melnorme script (bug #43) - Alex +- Spelling and punctuation pass (bug #1200), from Anthony J. Bentley +- New Man Page edition of the user manual (Bug #1204), from Bentley +- STAR CONTROL trademark information updated to reflect current events (#1201) +- Reorganize and update credits generally - Michael +- Port Win32 Installer generator to run in MSYS2 bash - Michael +- Update Win32 Installer to bring net-install logic back up to date with + current Sourceforge installs; generic support now available for both HTTPS + and automatic redirection to mirrors - Michael +- Fixed MSYS resource script compilation/linking, from Ala-lala +- Fixed stale main-screen header text displays, from Kruzen + +0.7.1: +- New SDL2 backend for modern operating systems - Michael +- Fixed netplay when compiling against modern versions of Visual + Studio, from Ala-lala + +0.7.0-1: (Maintenance release): +- Altered header include guard constants to stop conflicts with modern + versions of gcc - Michael + +0.7.0: +- Build with debug info in strict-debug mode (bug #1127), from Scott A. Colcord +- Added spoken Slylandro probe coordinates (bug #732) - Nic, Alex +- Added the missing bits to the no-voice versions of Mycon, Syreen and + Utwig dialogue (bug #327) - Alex +- Syreen dialog tree no longer resets after visiting the Syreen Vault + for the very first time (bug #891) - Alex +- Fixed lander report at the Syreen Vault inconsistency (bug #1121) - Alex +- Added lander reports for Supox ruins and Ultron. The reports text + is new content from TFB. (bug #1120) - Alex +- Fixed 'caster comm with Ilwrath after they die off (bug #850) - Alex +- Fixed Syreen Vault lander report infinite loop (bug #1118) - Alex +- Same captain names are used on both net sides (bug #989) - Alex +- Fixed sync loss in netplay games having duplicate ships (bug #1081) - Alex +- Fixed loading of melee.cfg (bug #1099) - Alex +- Fixed the 64KB size limitation on key-value files (bug #1112) - Alex +- Update download paths for the new SourceForge File Release system - Michael +- Fix UAC issues with installer for cleaner Vista/Win7 installs - Michael +- Fixed compilation with Netplay disabled (bug #1091), from Sze Howe Koh +- Fixed ship picking order after a simultaneous destruction, e.g. + Shofixti picks last after Glory device (bugs #1087, #1088) - Alex +- Game no longer locks up after quickly escaping melee (bug #1003) - Alex +- Reset input delay upon leaving Supermelee (bug #1022) - Alex +- Properly account for simultaneous destruction of last ships + in each fleet in Supermelee (bug #437) - Alex +- Do not match singular stars when given a prefix in star search + (bug #1071) - Alex +- Preserve character case when editing with joystick (bug #1080) - Alex +- Fixed misaligned cargo count (bug #1092) - Coredev +- Fixed the network SuperMelee team configuration protocol - SvdB +- Fixed fuel reserve bounds checks - SvdB +- Fixed a crash when filling fuel tanks over 10 (bug #1082) - Alex +- Got rid of many warnings - SvdB +- Clean up and some refactoring of the SuperMelee code - SvdB +- Fixed concurrent screen fades regression (bug #1079) - Alex +- Removed some legacy source code files related to resources - SvdB +- Put SuperMelee source files in separate subdirectory - SvdB +- Added additive and alpha drawing modes to graphics lib - Alex +- Fixed black pixel gaps between the planet and shield when entering the + orbit of a shielded planet (bug #32) - Alex +- Split off SDL-specific colormap bits into SDL domain - Alex +- Fixed planet blinking when exiting scan (bug #799) - Alex +- Restore menu sounds after editing a control set name (bug #1066) - Alex +- Use an own 'UniChar' rather than 'wchar_t', which may not be large + enough, depending on the platform - SvdB +- Added 'COLOR' resource type - SvdB +- All graphics operations use 24-bits colors at the game level too now, + instead of 16 bits colors. - SvdB +- Cross-platform safemode (ignores uqm.cfg, bug #946) - Michael +- Correct Chmmr response when asking about Sa-Matra (bug #1073) - Alex +- Refactored universe generation - SvdB +- Comm animation processing rewrite, bugs fixed - Alex +- Added graphics context debugging function - SvdB +- Thread down-throttling and game sleep when inactive (currently disabled), + (bug #1070), from Flandry +- Internal changes: GOOD_GUY/BAD_GUY ship flags retired - Alex +- Fixed Melee menu timeout when both sides are Cyborgs (bug #1067) - Alex +- Fixed AI ship not moving on warp in (bug #648) - Alex +- Revert gfx settings entirely when a mode switch fails (bug #1056) - Alex +- Fixed the Syreen lights-out scene timing (bug #1011) - Alex +- Added a native error box for MacOSX (like we have for Windows) - Alex +- Fix for weird colors problem on MacOSX w/ SDL 1.2.14; also improves + overall compatibility on all platforms - Alex +- Unix build system cleanups, fix detection of SDL, libmikmod, pthread - SvdB +- Make DoPopupWindow() work over faded out screens. - SvdB +- Trackplayer rewrite; fixed many bugs - Alex +- Source tree reorg: libs/ moved out of sc2code/, msvc++/ moved to + build/msvc6/, src/sc2code/ renamed to src/uqm/ - Coredev +- Druuge no longer turn hostile after attempting a salvage (bug #1013) - Alex +- Process subtitles correctly with no timestamp file (bug #1060) - Alex +- Lander will no longer hang when killed on planets with a lot of + natural disasters (bug #584) - Alex +- Canceling load from the main menu returns to main menu (bug #679) - Alex +- Fixed inputting numbers with the numpad, except directx (bug #934) - Alex +- Better location description in savegame summaries (bug #844) - Alex +- Fixed crash when saving a game into the last slot while having + too many devices on board - Alex +- Allow any sound data format to be graphed by comm oscilloscope; also + auto-adjust the scope for different gain levels (bug #1064) - Alex +- Game settings Quit menu now delegates to F10 quit (bug #462) - Alex +- Do not pause the game in places where not relevant (bug #984) - Alex +- Fixed crashes and potential weirdness when loading savegames from + a Homeworld encounter screen (bug #997) - Alex +- Cleanup of GLOBAL(ShipStamp.frame) abuse; fixes bug #1054 - Alex +- Game attempts to exit cleanly under normal circustances (bug #52) - Alex +- Fixed Mmrnmhrm's X-Form transformation without energy use (bug #1004) - Alex +- Added missing sleeps in DoInput() functions (bug #893) - Alex +- Starmap unit conversion corrections; fixes bug #970 - Alex +- Rounding-error correction in log(x|y)ToUniverse (bug #1046), from Nic +- Change hardcoded Starbase and Sa-Matra values to pretty enum values + (bug #1047), from Nic +- Load override.cfg from user's dir to add or override menu controls - Alex +- Allow addons to override any content by placing zips into their + 'shadow-content' dir - Alex +- Content reorg: font chars now use hexadecimal numbering - Alex +- Content reorg: some race comm and ships renamed, ship files renamed, + many ani files renamed, new naming scheme for ani frames and voice - Alex +- .cfg files are now kept as subtrees of the resource map - Michael +- Flight control data no longer unnecessarily copied to config directory - Michael +- Index loading/saving now can operate on subtrees - Michael +- Videos vs. slide now controlled by a '3dovideo' addon - Michael +- New video resource type for 3DO videos - Michael +- Allow reaching 999.9:999.9 in HyperSpace (bug #628), from Nic +- Use system getopt_long() when available - SvdB +- Added --addondir commandline option - Mika +- Case insensitive matching when looking for .zip/.uqm/.rmp files - SvdB +- Added read-ahead buffering when reading zip index files. - SvdB +- Added support for packed ani and font files - Mika +- DrawTracedText abstraction (bug #1029), from Nic +- Experimental support for Symbian S60 3rd edition - Mika & SvdB +- Pthread support - Mika +- Content Dirs completely reorganized; 3DO and PC segregation - Coredev +- Voiceovers controlled by a synthetic '3dovoice' addon - Michael +- CONVERSATION explicitly names text/voice/timestamps - Michael +- Replaced stricmp() by the POSIX compatible strcasecmp() - SvdB +- Split STRTAB further into STRTAB and CONVERSATION - Michael +- INT32, BOOLEAN, and STRING resource types - Michael +- UNKNOWNRES is now safe to load, and "loads" as its resvalue - Michael +- CODE is now SHIP, and uses an integer descriptor instead of a one-byte + .cod file - Michael +- ResourceLoadFun is now descriptor-based, not stream-based - Michael +- Removed RES_TYPE enum, folded into ResourceDesc - Michael +- Split STRTAB into STRTAB (strings) and BINTAB (color/xlat tables) - Michael +- Removed internal references to defunct resource types - Michael +- Revamped resource system to only use .rmp files - Michael +- Isolated all constructed resources into cons_res.c - Michael +- Fixed a crash when conversing with music disabled - Michael +- Moved all resources into starcon.ls2 - Michael +- Fixed compile errors when compiling without joystick support - Michael +- Added endian-aware integer read functions to uio - SvdB +- Introduce the concept of an "InputContext" - SvdB +- Don't use alloca() in uio. - SvdB +- Replace PlayerOne/PlayerTwo by PlayerControls[0]/PlayerControls[1] - SvdB +- Moved comm resources into starcon.ls2 - Michael +- Repackaged static comm/ship data to it all uniquely named - Michael +- On MacOS X, search for the content in the application bundle, from Nic +- Planetside resource names are now consistent and generatable - Michael +- Androsynth ruins freeing condition now uses cycles (Bug #1028) - Michael +- .rmp files now carry the types of the targets - Michael +- Joystick threshold defaults to 10,000, not 0 (Bug #1046) - Michael +- Remove MEM_HANDLEs from everywhere outside of memlib - Michael +- Split out RESOURCEs from the loaded data in RACE_DESC and LOCDATA + structures - Michael +- Prevent overflow for planet weight when scanning a planet (bug #1025) + - from Benjamin Alan Weaver +- Don't set _POSIX_THREAD_SAFE_FUNCTIONS - SvdB +- Support for Windows CE. - SvdB with Pavel Chernikov +- Added support to the unix build system for explicitely specifying the name + of the define to set to show when a symbol is found. + Also a fix for when 'strcasecmp' is #define'd by the system. - SvdB +- Rewrote mapres.c to use uio's hashtables instead of its own + association lists - Michael +- Added a Remix option to the setup menu - Michael +- Addon zips can live in content/addons directly - Michael +- 3DO music separated into an addon pack - Michael +- Major change in resource index scheme - Michael + - .lst replaced (mapping to IDs instead of to files) + - .rmp files give the mapping from IDs to files. + - Addons provide additional files instead of overriding UIO + - Addons must provide .rmp files to do the necessary overrides. +- Removed unnecessary _ALIGNED_ON macro usage - SvdB +- The current directory is now among the locations searched for the content + when no explicit location has been specified. (bug fix) - from Nic +- Non-3DO Shipspin anims now use Presentations - Michael +- Added presentation commands TEXT, TE (text effect), MOVIE - Alex +- Increased the size of display queue (elements were sometimes missing + in e.g. Nemesis vs. Nemesis battles with many marines out) - Alex +- ShowPresentation() no longer clears the screen by force; presentations + now do this by request - Michael +- Added match_matchPatternOnce() - SvdB +- Fixed a problem with blue ships after Avatar's tractor beam, + along with some other fill-stamp situations; bug #929 - Alex +- Added TFB_Canvas_Lock(), TFB_Canvas_Unlock() and TFB_Canvas_GetStride() + - SvdB +- Scaling images with respect to their hotspots: stabilizes compound + Melee objects; re-added bilinear Melee scaler; zooming planet uses + bilinear; fixes bug #685 - Alex +- Added --keepaspectratio to keep correct aspect ratio when using + custom resolutions in OpenGL mode - Mika +- Add /var/tmp as possible location for temporary files. Don't try + /tmp and /var/tmp at all on MS Windows (Cygwin excepted) - SvdB +- Added fullscreen/windowed toggle key F11 (bug #578) - Mika +- Allow building without ogg vorbis support (bug #852) - SvdB +- Reworked SuperMelee fleet loading (fixes bug #823) - SvdB +- Fixed enemy ships getting recrewed between ecnounters in HyperSpace + (bug #996) - Alex +- Removed mouse_err.c since DoPopupWindow() is used now - SvdB +- (debugging) Fixed instant-move towards the current location - SvdB +- Fixed wrong Sa-Matra guards icons after Kohr-Ah win (bug #1001) - Alex +- Internal ship structures and queues refactoring and cleanup - Alex +- Fix quitting out of IP before the IP is fully set (bug #987) - Michael +- Fixed speech looping with long tracks at high sampling rates; + scope supports higher rates for speech now; bug 999 - Alex +- Basic support for .ani-based shipspin animations - Michael +- Fixed some Melnorme history info timestamps - Alex +- Fixed Ur-Quan story timestamps, from Vlad-Ceru Opran +- Removed the 256-frame limit on .ani files - Michael +- Renamed PlaySpeech/StopSpeech to work around name collisions + on OSX - Alex +- Ending the battle with a simultaneous death no longer triggers an + assertion - SvdB +- Concurrent supermelee ship selection - SvdB +- New generic, unthreaded flashing code - SvdB +- Cleanup of 3DO ship spin support; spin speech works now - Alex +- No longer creating and mounting a temporary directory. It is no longer + used, but it might be again at some point, for loadable modules. - SvdB +- Added RNG functions that work on a supplied state - SvdB +- Fixed a crash on startup if uqm.cfg did not exist, flagged and fixed + by jdorje - Michael +- Support for 3do "ship spin" videos (Bug #733, patch by Jan Lönnberg) + -Michael +- Major refactoring of input configuration to use the resource system + instead of custom files (bugs #961 and #949) - Michael +- Added ability to remove entries from ALists - Michael +- Cleaned up FRAME, CONTEXT, and FONT abstraction layers - Michael +- Added Input Frames to pause code to stop infinite loops - Michael +- Added more netplay debug code - SvdB +- Added uio_fprintf() and uio_vfprintf() - SvdB +- Any input will register for at least one frame (Bug #864) - Michael +- Many VControl cleanups - Michael +- Fix compilation without Netplay support - SvdB +- Added limited AIFF sound file decoder for playing 3DO originals; + SDX2 decoder by SvdB - Alex +- Typo fix in Starbase speech (bug #959) - Michael +- (MacOS) Don't package up .svn dirs with 'build.sh uqm install' (bug #958), + from Nic. +- No more extra newlines to log_add() calls for libs/network/ code - SvdB +- DUCK videos now play correctly after a video mode change; bug #734 - Alex +- Cancel key will now quit out of the Manifest Menu (Bug #838) - Michael +- Added -w and -x commandline options, to counter -f and -o; used these + to implement "Safe Mode" links in the Win32 installer (Bug #946) + - Michael +- OpenGL texture loading uses surface pitch instead of screen width. + This should head off future bugs similar to Bug #740 (this issue was + reported as Bug #956) - Michael + +0.6.2 (maintenance release): +- A bit more debug info for failed connects. - SvdB +- Exit with failure if basic content cannot be found, ensuring proper + error reporting under Windows - Michael +- Popup windows for "Really Exit?" and Game Pause are immune to fades + and crossfades (Bug #455) - Michael +- No longer depend on SDLK_LAST statically; key input should now be safe + if compiled with a different version of SDL than the one running the + program (Bug #936, possibly also #834 and #883) - Michael +- Unix build scripts now work under LC_CTYPE=tr_TR - SvdB +- Flush write buffer when doing a uio_fclose() after doing only + uio_fwrite() operations. - SvdB +- Major rewrite of the SwapBuffers commands -- screen compositing logic + has all been abstracted out into sdl_common.c instead of being + nearly-duplicated in opengl.c and pure.c - Michael + +0.6.1 (maintenance release): +- The Unicode Private Use Area is no longer considered printable. This + is a stopgap to handle unusual behavior with text entry under OS X. + From Nic; see bug #942 for more details - Michael +- Do not rely on GL_UNPACK_SKIP_* arguments, which some OpenGL drivers + mishandle (Bug #914) - Michael +- Do not overwrite GLOBAL_SIS (CrewEnlisted) when leaving Hyperspace + (Bug #938) - Michael +- Fixed a text entry width problem that was deleting control template + names (Bug #947) - Michael +- uio cleanups, documentation - SvdB +- uio path parsing fixes/improvements - SvdB + - Windows UNC path support (#907) + - Windows drive-relative paths ("D:path" without a path seperator) + - treat multiple consecutive path seperators as one (like POSIX) +- config dir no longer needs trailing path seperator (bug #738)- SvdB +- Simplification of uio Stream functions. No more internal seeks. - SvdB + +0.6.0: +- Fixed a bug where an input delay was used for non-network games - SvdB +- Fixed a bug where the victory ditty would end prematurely when UQM + is compiled without Netplay support - SvdB +- Take $CFLAGS and $LDFLAGS into account for dependency detection + (they were already used for the building itself) - SvdB +- Validate UQM version of either side of a Netplay game - SvdB +- Better abort and disconnect handling for Netplay - SvdB +- Menu sounds in Setup track rest of game (#922), from Nic - Michael +- Shifted the Mouse Error to a Popup Window, moved the message to + starcon.txt for translators - Michael +- Generic DoPopupWindow() command for status messages - Michael +- Update the 'current selection' icon after deleting or inserting ships + in a fleet in SuperMelee - SvdB +- Correct some background pixels in melebkgd.{25,26}.png - SvdB +- Unix build scripts improvements. - SvdB +- Build fixes for MacOS X (with thanks to Nic) - SvdB +- Ships in battle can resume normal speed in all circumstances after + the enemy Avatar's tractor beam disengages (bug #860; this is a + netplay desynchronizing change) - Alex +- Conversation summary breaks lines based on actual chars/words + that fit (bug #916) - Alex +- Netplay configuration dialog - Michael +- Better error message for 'Kernel failed to load' (#917) - Michael +- Pushbutton for connecting to netplay, in anticipation of a full + configuration dialog later - Michael +- Cleanup of comm.c - SvdB +- Netplay - SvdB +- Added step-by-step instructions for compilation on MSVC++ - SvdB +- All output done in binary mode, due to uio/Win32 conflicts (#912) - Michael +- Online key configuration menu actually functional now - Michael +- Tweak to Lander UI - Special Weapon is now explicitly Lander Escape, + just as Warp Escape is - Michael +- Default key configuration changed slightly; online display of current + key bindings - Michael +- Input templates can now be renamed, both online and off - Michael +- Fixed an integer-size error that was causing crashes on AMD64, from + Solomon Peachy (#895) - Michael +- Added some generic lib code to be used by future code. - SvdB +- Joystick support is now optional; from SvdB, Alex +- Restructed and normalized savegame and game-state reading/writing code; + savegames are now compatible between same-endian 32- and 64-bit systems; + savegames from prior 64-bit builds cannot be used - Alex +- (Unix build scripts) Failed mkdep doesn't result in empty .d files + anymore. Now using the gcc 3 "-MF" and "-MT" options. - SvdB +- removed internal libmikmod, adding a dependancy on an external one - SvdB +- Added a quit button for the Super Melee main menu - Michael +- Fixed sporadic uqm.cfg loading errors in release builds - Alex +- Quit (F10) now works correctly during intro (bug #862) - Alex +- Playing failure sounds when entering text consistently (bug #884) - Alex +- 64-bit fixes in construct_response () - Michael +- Removed rotating 3d planet frame caching (cuts mem usage by 5M) - Alex +- One pixel fix in melee menu pictures. - SvdB +- Debugging function to add energy during battle. - SvdB +- Changed slaveshield throb rate to match the 3DO - SvdB +- Fixed recently introduced bug with crew count on exit to HyperSpace. + (bug #875) - SvdB +- Fixed static vars not reinited in alien comm code (caused various + side-effects; bug #870) - Alex +- Fixed a spinlock in Melee's final score screen (Bug 879) - Michael +- Phase 2 of online keyconfig - Setup Menu can configure assignment of + templates to players - Michael +- Control scheme shifted to Menus + Control Templates in preparation for + the online keyconfig - Michael +- Fixes to logic in the Utwig conversations (Bugs 327, 647), from Nic + and Michael +- Removed unused and invalid lander font chars - Alex +- Setup menu reads strings out of lbm/setupmenu.txt - Michael +- More fixes towards working 64-bits binaries. - SvdB +- Flashing outfit modules to build with PC menus too; bug #871 - Alex +- Corrected caption Orbit: to Tilt: in planet scan; bug #847 - Alex +- Added missing failure sounds in Outfit, Shipyard, Cargo and Roster; + played when over/under capacity, not enough RUs, etc; bug #842 -Alex +- Crew retrieved from space after the end of an encounter will no + longer set the crew larger than the ship's maximum. - SvdB +- Flagship crew numbers are no longer continuously synchronised during + melee, but only at the beginning and end of the battle. - SvdB +- Various small cleanups. - SvdB +- Debugging function to add crew during battle. - SvdB +- More documentation - SvdB. +- RMPLIFIED PRECURSOR BOMB is now AMPLIFIED, from Vorn (bug #812) + -Michael + +0.5: +- Innocent original c&p bug fixed, from bpoint. +- Handle relative dirs in -C correctly, from Jan Lönnberg (part of bug #738). +- Internationalization fixes: moved many hardcoded English strings + into string resource file starcon.txt (bug #778), from Andrew Zabolotny +- Melee Scale and Slides/Movies now take effect immediately - Michael +- The intro now plays only when a new game is started - Alex +- fixed uio_rename() and some other cases where a new file is created + under specific circumstances. - SvdB +- Fix bug in GetStringContents which used the number of chars where it + should have used the memory size. - SvdB +- Control scheme upgrades checked (VControl Version upgrade) - Michael +- Better instant-move (for debugging) - SvdB +- Fixed version checking in unix build scripts. SDL 1.2.10 is + now recognised as newer than 1.2.9. - SvdB +- Some small improvements to the portability of the build system, + from Jim Paris +- Fixed two-week bomb installation at the Starbase bypassing the + defeat condition (bug #757), from Nic, Alex +- Added star search in Starmap (define Menu-Search and Menu-Next keys + in your keys.cfg) from kworces, Alex, SvdB +- Fixed Orz greeting at Taalo homeworld inconsistency (bug #819) - Alex +- Fixed Venus' atmo density to 90 times that of Earth (bug #821) - Alex +- Internationalization fixes: better or, in some cases, fixed support of + non-Latin UTF-8 strings (more to come; bug #778), from Andrew Zabolotny +- Remaped special chars used in the game (degree, infinity and earth + signs; middle dot) to their UCS equivalent codes (bug #818) - Alex +- Color depth is now determined entirely automatically - Michael +- Text input is now available in languages other than English + (UCS/Unicode; SDL does not support Unicode input on Windows yet; + you must have proper font chars installed -- see translations) - Alex +- Re-added joystick text input (with Up/Down/PageUp/PageDown keys); + joystick alphabet in content/lbm/joyalpha.txt (bug #495) - Alex +- Text input refactoring: enabled key repeat, added support for + Home, End and BackSpace keys; (bugs #671, #815) - Alex +- Selecting the scan methods for shielded and gas giant planets + is now allowed when using PC menus (bug #800) - Alex +- Added a unified credit roll combined with outtakes (bug #46) - Alex +- Setup menu selection doesn't reset when you quit a submenu now - Michael +- Split config.alwaysgl and config.usegl so that "Use Pure Mode If Possible" + persists across runs even when using a GL mode - Michael +- Fixed Yehat Rebel left hand doubling up problem (bug #807) - Alex +- Fixed the problem with Melnorme stripping Chmmr bomb/crystal + modules from the ship in a fuel deal (bug #803) - Alex +- Corrected baseline of 'j' in Micro font (bug #797) - Alex +- Fixed small VUX animation glitch (out of order frames; bug #808) - Alex +- CANCEL now behaves as expected in setup menu - Michael +- Only SELECT and CANCEL trigger the fade-to-black at the end of a + Super Melee, solving the issue in bug #547 - Michael +- Admiral ZEX is no longer referred to as "Commander" or "Zex" (bug + #811) - Michael +- Keypress status is not reset when entering battle mode (solves + bug #596) - Michael +- Added the rest of devel/ and users/ documentation into MSVC .dsp + files (bug #589) - Michael +- Fixed PNG transparency info (tRNS chunk) in all images according + to info specified by .ani - Alex +- Comm animation fixes (bugs 557, 705, 806); from chmmravatar, Alex +- Imported DOS versions of alien comm graphics which have richer + palettes and look better in most cases (bug #314) - Alex +- Added slider controls for volume to setup menu - Michael +- Added --shield and --scaler hq to setup menu - Michael +- Fixed lockup when skipping past VUX beast analysis data in Starbase + (bug #790; should take care of all spliced comm edge cases) - Alex +- Added 3DO-style throbbing slave shield (--shield; bug #32); + special thanks to Nic for inspiration and some code - Alex +- Rotating 3D planet changes: nicer looking slave shield; planet now + finally looks like a rotating sphere (and not cylinder); added some + lighting variance to give it a 3D feel (not a smooth ball) - Alex +- Refactored colormaps storage, management and transforms; paletted + images rendering should be much faster now - Alex +- Corrected intro slide 5 (crosshair removed); bug #794, from AusME +- Split off alien comm colormaps from global scclrtab into + corresponding race dirs (avoids potential mod collisions) - Alex +- Refactored font engine: fonts are loaded and treated as + alpha-channel-only images (allowing for antialiased fonts now); + solid color and gradient/alternate effects processing is unified - Alex +- Fixed problems with pausing the game during ending sequences + (game-clock bug; undrawing incorrectly due to cliprect) - Alex +- Removed hotspot abuse from lander report drawing to fix bad + positioning desync brought on by new hotspot handling - Alex +- Trilinear melee scaler overhaul (melee smooth mode should look + nicer now; melee can now fully use alpha gfx) - Alex +- Miscellaneous Sa-Matra gfx fixes (Generator collision masks and + explosion frame 0 were off; Shield position was off in med and sml; + Main sml gfx was 2 pixels too narrow) - Alex +- Replaced the binary resource indexes by textual ones + (also resolves bug #687) - SvdB +- Some subtitle timing fixes (bug #s 771, 780) - Alex +- Entering Planetary Orbit wait screen is back (from DOS) - Alex +- Gfx engine changes: now always 32bpp internally (facilitates + alpha channel usage); accelerated platform-specific scaler code; + only using alpha channel where needed. Processor pack is necessary + for compilation on VC6. - Alex +- New 2x scaler 'hq' (by Maxim Stepin; www.hiend3d.com/hq2x.html) - Alex +- Removed MikMod i/o hacks (using MREADER i/o now; bug #787) - Alex +- Fixed fast escape weirdness (bug #619) - from Jan Lönnberg +- New topographical 4x planet surface scaler (bug #786) - Alex +- Added support for Tremor for Ogg Vorbis decoding (avoids floating point + math) - SvdB +- Fixed T-Pet compulsion graphics (partially); bug #772 - Alex +- Doing game-state file I/O in memory instead of temp files; + should avoid problems as in bug #752 - Alex +- Separate config_win.h file for build.sh builds on Windows - SvdB +- Fixed a typo ("we" -> "he") in Thraddash dialog (bug #783) - Alex +- Corrected grammar in Umgah 'Caster lander report (bug #781); + from James Ho +- Options selected in the Setup Menu now persist across runs -Michael +- Added a simple implementation of key-value pair "resource" files + for organizing simple data such as configuration options -Michael +- Added a 'fullscreen' setup menu option - Alex +- Fixed a bug that prevented Slylandro Probes from ever showing up + in interplanetary exploration (found by SvdB, bug #768) +- Lowered the Comm ambient animation rate from 120 to 40fps, thus + limiting the CPU usage - Alex +- Fixed Recursive Mutexes to still work even if the ThreadID is 0 + (bug 779) - Michael +- Permit independent selection of graphics driver and resolution in + setup menu - Michael +- Changed comm subtitle caching to use own context instead of + screen grabs; should resolve Blue Comm Screen universally - Alex +- Added missing break statement in DrawBatch:RECT_PRIM - Alex +- Setup menu split into four submenus - Michael +- Fixed fallback in getHomeDir() for when $HOME is not defined on *nix + - SvdB +- %APPDATA% fallback no longer to "../userdata", but to "./userdata", + as we don't chdir() to the content dir anymore. - SvdB +- Commander Hayes flickering lights animation now properly reenabled + when applicable (bug #777) - Alex +- Refactored setupmenu code to use generic widgets - Michael +- Support UTF-8 chars in mineral names (bug #770) - SvdB +- Modified scalers to use surface pitch instead of width - reported to + fix bug #740 - Michael +- Cleaner build output. Set '$MAKE_VERBOSE' to 1 for old output. - SvdB +- Improved dependency tracking for unix build system. - SvdB + "./build.sh uqm depend" is only needed for checking for new source files. +- handle "." and ".." in paths - SvdB + +0.4: +- Nicer title image during intro, from Nic +- Installation routine for MacOS X, from Nic. +- Lots and lots of dialog fixes, from Nic. +- Some speech is dependant on whether spoken voices are on, from Nic. +- OpenAL header cleanup. Updating OpenAL may be necessary. + Windows users should put the OpenAL headers in an AL/ directory + now too (should be the default). - SvdB +- Improvements to the unix build system for cross-compilation - SvdB +- Do not define ssize_t for MinGW. - SvdB +- Fallback readdir_r() - SvdB +- Attempting to click the screen pops up an error message, from + Nic, heavily modified (dodge on #533) -Michael +- Fixed potential crash with a truecolor oscilloscope image (thanks + jdorje) and made it generally more flexible (bug #729) -Alex +- Added missing Tanaka battle portrait images (new artwork; oldcap) and + minor fixes to other shofixti images (bug #183), from Nic +- Mycon captain portrait finally fixed (bug #183), from Nic +- Saving the game while on autopilot inside an interplanetary system + will no longer reset the autopilot (bug #725) -Alex +- Main menu and Super Melee menu can now play music tracks; drop in + 'lbm/mainmenu.ogg' and 'melee/melemenu.ogg', respectively -Alex +- Can now switch mod->ogg in intro/outro player (thanks Nic), and + mod<->ogg everywhere in general -Alex +- Fixed crash after T.Pet conversation upon reentering D.Crateris + once Ur-Quan have been confused (bug #531) -Alex +- Fixed last subtitle flashing after fast-forwarding to the end, + pressing F10 and selecting NO (bug #498) -Alex +- Fixed first contact with Arilou at homeworld; Talking Pet confusion + (bug #638), from Paxtez +- Fixed warp-escape in Cyborg mode removed by previous game input + patches (bug #563) -Alex +- Fixed spurious story-line changes (usually the manner of the encountered + race) caused by loading a game from an Encounter screen (bug #519) -Alex +- Option change: --meleescale to --meleezoom (bug #694) -Alex +- The alpha icon is now default (for XP/2003); bug #474 -Alex +- Fixed incomplete memset()s in comm alien animation code (comm should + be saner now), from jdorje +- Guard access to the Clock so that accessing it is a no-op when the game + isn't actually in progress (bug #678), from Nic +- Accept files with .uqm extension for packages (bug #558) + Added regex fallback files. - SvdB +- Music volume normalized throughout the game (bug #718) -Alex +- VControl parse errors suppressed unless critical - attempting to set + the threshold of a nonexistent joystick no longer makes the game refuse + to run (Bug #660, again) - Michael +- Properly handling Thraddash-Ilwrath mission overlap (bug #530) -Alex +- Separate 'ask for fuel' player responses for Mercury and Luna missions + (bug #716), from Nic +- Stereo SFX model changed slightly (fixes #472) -Alex +- Pkunk Spindle news items are now disabled until you befriend them + (bug #315), from Paxtez +- Melee captain names re-extracted and fixed (bug #188) -Alex +- It is now possible to complete the game without ever allying with the + Starbase at Earth; known as 'Beating the Game Differently' mode; + (bug #592) -Alex +- The direction flagship is facing is now preserved through an + encounter in Hyperspace -Alex +- Added support for PC-style 3-step melee zooming; -b=pc|step option; + (bug #694) -Alex +- Melee team building pick-ship box is now generated with actual ship + icons (bug #692) -Alex +- Setup Menu no longer crashes or misbehaves on custom resolutions (bug + #693) - Michael +- Quit confirmation window (on F10) undraws correctly during intro slides + (bug #673) -Alex +- Attempting to set to a mode that Doesn't Work in Setup no longer ends + the program (bug #695) - Michael +- Fixed segfault when shutting down because video could not be initialized + (bug #683) - Michael +- Fixed crash when restarting Sa-Matra battle after abort (bug #700) -Alex +- Some cleanups, enabling successful build with GCC 4 (bug #710), + mostly from Ville Skyttà -SvdB +- Sa-Matra portrait now fills the portrait space (bug #514), from Nic +- Updated melee images with original DOS content; should resolve most + captain portrait issues (bug #183) -Alex +- Bug #702 fixes (dead code + compiler warnings) -Alex +- Flagship will not fly sideways on auto-pilot in Hyperspace (bug #642) -Alex +- Fixed menu sounds in full-game battle ship selection box (bug #566) -Alex +- Added '--version' - SvdB +- Fixed a bad memory access which could occur when the code relies + on CharCount for determining the end of a string (bug #701). - SvdB +- Battle planet images now have corrected transparency info, so there + is no more black square overlaping ships (bug #128); and coincidently + 3DO credits now have a starfield background (bug #470) -Alex +- Unicode support for fonts and strings - SvdB +- Fixed image clipping with --meleescale=nearest (bug #126) -Alex +- Setup menu now uses a background contributed by Joffrey Smith +- If keys.cfg refers to a nonexistent joystick, the game will stil run + (bug #660) -McMartin +- Fixed support for languages other than English; loading font chars + with codes above 136 is now possible (bug #690), from Matthias Hager +- Enable the other insults against the Mycon (bug #559), from Nic. +- Colormap format (.ct files) changed to allow for richer graphics. + First step towards importing some of the original DOS gfx. + See bug #314 for more info. -Alex +- Better dependency checking in unix build scripts - SvdB +- Many options menu changes: left-justified categories, and the ability + to change driver/resolution/bpp/scaler in real time, and updates are + less frequent so as to spare the DCQ -McMartin +- PC ending animation now draws the flagship with modules according to + the actual player's load; also the script structure changed + allowing for an FPS improvement -Alex +- Version number in the main menu does not blink anymore when the + menu selection is changed (bug #672), from Nic +- Massive amount of file restructuring and cleanups. Need many more. - SvdB +- Added Intro and Ending slide shows (bug #46); use "-i pc" -Alex +- Cross-fades in OpenGL mode with complex scalers fixed (bug #674) -Alex +- Added doc/devel/dialogs - SvdB +- Don't allow the reply "Symbionts, how interesting!" in the Supox + conversation until they mentioned they were Symbionts. (bug #528), + from Nic +- Not initialising the various systems when -h/-? is supplied (bug #656), + from Nic +- F10 works when playing the intro (bug #665), from fOSSiL +- Game clock counter overflow fix (bug #668) - [collective effort] +- Cocoa hooks for MacOS X, from Nic +- Corrected number for combat energy when outfitting starship. - SvdB +- Added dumping planet info to uqmdebug.c - SvdB +- Check language.txt for locale, from Zap +- Make it possible to specify the config dir on the command line. + (bug #645) - SvdB +- Speech .txt and .ts corrections, from Nic. - SvdB +- Made the unix build scripts more portable. Removed some small + bugs. - SvdB +- No longer chdir() to the content dir (bug #564) + Environment variables and ~ are interpreted in the supplied content + path now. + Don't look for content in the default directories if an explicitely + supplied path failed. It would only confuse users. - SvdB +- The unix build script is now able to detect SDL on Darwin (bug #358) - SvdB +- Resource units given more obviously when ordering a probe to + self-destruct (bug #586), from Nic. +- Shipyard "Combat Energy" changed to reflect the recharge rate (bug #522). + Also, some cleanups. Thanks and apologies to Nic. - SvdB +- Added lots of debugging functions, SvdB +- Cleaned up use of the DEBUG define, SvdB +- Talking Pet .txt file corrected to match the .ogg files, + and talkpet.ts corrections, from Nic +- Abstracted window-drawing code from confirm.c -Michael +- Fixed blue comms screen problem (bug #363), from Joel Holveck & Nic +- Automatically adding an icon for Darwin builds, from Nic +- Fixed Roster-F10-Quit bug (#591), - Michael +- Restructured starcon2.c, with better checks for argument parsing, + and consistent error messages. - SvdB +- Restructuring of the unix build scripts. + Also, interrupted dependency builds are now detected. - SvdB +- Unix build: Make it possible to use another directory than the current + one for putting the build data in (such as build.vars, config.state, + the obj/ dir, and the final binary). - SvdB +- Fixed various odd behaviors when loading from HyperSpace (bug #587), + from Nic and Michael +- Added new 'triscan' scaler; derived from scale2x[.sf.net] -Alex +- Space marines die in a self-destructing Scout (Bug #445), from Nic +- Added the -l option to produce logfiles (bug #560), from Nic +- Zoq-Fot-Pik speech properly vertically centered (bug #579), from Nic +- Input code refactoring, phase 2: All player input is brokered by + DoInput -Michael +- Updated .cvsignore commands, from Nic +- Fixed a keyrepeatbug from when the player cancels out of the + Starmap in IP -Michael +- IP_taskfunc now uses PulsedInputState instead of handling its + own debounce delays -Michael +- Input code refactoring, phase 1: Replaced messy structs with an + array indexed by an enum. -Michael +- Thread code refactoring: only the main thread will actually spawn + threads, and thread IDs are properly recycled with SDL_WaitThead () + once they're done. (With luck, this will fix bug #561) -Michael +- Sound code refactoring: core api is now virtualized, + MixSDL is divided to generic mixer and driver entities - Mika +- Optimized MixSDL mixing and resampling routines + (hopefully fixes bug #435) - Mika +- MOD music should now play properly on big endian machines if using + high quality mode (workaround for bug #166) - Mika +- Better-looking slave shield (bug #32), from Nic +- Bay door animations don't stall before aborting (bug #500), from + chmmravatar +- Reports SDL version on startup (bug #520) - Mika,Nic +- Fuel usage on planet landing is now reported correctly on all situations + (bug #556), from Nic +- Fine-grained control of menu sounds, "MenuSounds" global now + guaranteed to always be non-null -Michael +- Added support for stdio file access through temporary files to uio. + added uio_copyFile to uio - SvdB +- Added uio_getFileLocation() and uio_getMountFileSystemType() to uio. + Also some small improvements. - SvdB +- Fixed fuel usage estimate to selected destination on the starmap. + (original bug, not reported) - SvdB +- Sound decoders refactoring: decoders are now virtualized, + the high-level decoding code is unified and any format is + theoretically streamable -Alex +- Patches to enforce the invariant that the GraphicsLock is held when + SetFlashRect is called (bug #504) -Michael +- Major refactoring of threadlib; see doc/devel/threads -Michael +- Downgraded the GraphicsLock to an ordinary Mutex -Michael +- Added movie player; only movies defined are intro and ending; + only .duk decoder present (.duk audio decoder mostly derived + from decoder by SvdB) -Alex +- Extra fallback for the unlikely situation that $HOME isn't set on a + unix system. (#493) - SvdB +- Accept spaces in --contentdir argument (#492) - SvdB +- Separated and abstracted sound buffer-tagging and trackplayer + clip/subtitle chaining -Alex +- Abstracted the recursive mutexes in MixSDL and DCQ code -Michael +- Introduced a new synchronization construct (CrossThreadMutex) and + migrated the GraphicsSem and clock_sem over to it (#359) -Michael +- Replaced thread-local Semaphores with Mutexes (#359) -Michael +- Load/save icons don't flash anymore when in savegame menu + (part of bug #291), from Paxtez +- Savegame slot now defaults to the last one used during one execution + of uqm (bug #477), from chmmravatar +- Fixed one-pixel glitch in shipyard when scrapping (bug #461), + from Paxtez +- Adjusted subtitle timings when there are no oggs (part of bug #362), + from chmmravatar +- Fixed crash in conversation summary and ffw/frew problem when + selling data to Melnorme (bug #476), from chmmravatar +- Flush input after selecting "Navigate" (bug #475) - Michael +- Fixed ships in solar system getting displaced after having + visited a planet (bug #365) -Alex +- Fixed collisions/encounters with "invisible" fleeing ships + (bug #319) -Alex +- Quit confirmation fixes: lander reports, conversation summaries, + outtakes, end credits; font effect properly set/saved/restored; + (bugs #454, #465, #466); from chmmravatar +- Obsolete "register" keywords removed -Michael + +0.3: +- Dirty hack to avoid a warning about the "ignored.key" hack - SvdB +- Typo 'natually' fixed in Arilou speech - SvdB +- uio: Fixed a bug which could cause spurious warnings when using .zip files + generated from DOS/Windows - SvdB +- uio: Fixed a potentially memory-corrupting bug when in a .zip file a subdir + is described before a dir higher in the directory structure. +- uio: Fixed an incomplete message that would only show when handling a + specific error - SvdB +- Added doc/checklist file - SvdB +- RUs properly cleared in savegame display, from Paxtez, chmmravatar +- Support for up to 50 savegames, from Paxtez +- Action names are properly null-terminated, stops a crash for some + bad keys.cfg types -Michael +- added '--addon ' - SvdB +- keys.cfg from incompatible control scheme version is now renamed + automatically to keys.old -Mika +- Added warranty message in the console on startup, SvdB +- Left and Right directions disabled in fuel screen (bug #452), from + Paxtez +- Syreen don't rejoice until victory truly is theirs (bug #451), from + Nic +- Guardian in Blazer mode being drained by DOGI will no longer + result in a non-blazer Guardian with Blazer effects. Original sc2 bug. + (bug #283); from Paxtez +- 'CREW' and 'BATT' instead of icons in combat screen when using + PC-style menus (bug #308); from Paxtez +- New shipyard SCRAP system with scrapping confirmation + (bug #413); from Paxtez +- Syreen ships become available when Talana says they are + (bug #264); from Nic, Alex +- The infinity symbol is correctly printed for gas giant atmosphere + in coarse scan screen (bug #239) -Alex +- Prevent Syreen crew above 12 getting thrown out the airlock in + Roster screen (bug #184); from chmmravatar, Alex +- Lander report messages now use the entire panel (bug #36), from chmmravatar +- Fix colour cycling in the roster screen (bug #279), from Nic +- Fixed last seen battle-group teleporting to Sol after invoking + Talking Pet in Sol (bug #109) -Alex +- Fixed a dialog glitch on Slylandro homeworld (#442) -Michael +- Freeze planetary simulation at beginning of landing sequence to stop + event bursts (bug #80) -Michael +- Extra 2 ship slots in supermelee, as in the PC SC2, and all the PC + default teams, from chmmravatar (bug #248) + NOTE: this breaks old team saves! +- Made functions for GET_GAME_STATE and SET_GAME_STATE - SvdB +- Fixed bug with entering closing portals (bug #108) - SvdB+chmmravatar +- Mouse cursor is now hidden in fullscreen mode (bug #173) -Mika +- Version checks inside the input code to flag incompatible changes --Michael +- Install location for content on unix systems is now ${prefix}/share/uqm + instead of ${prefix}/lib/uqm - SvdB +- New main menu graphics from MarkVera, Paxtez, Nic (bug #393) +- Removed a place where you could ask for repairs when you shouldn't + (bug #432), from Nic +- Can use F10 to quit during splash screen as well as main menu -Michael +- Fixed starship location when being teleported from Procyon to + the Earth Starbase after the Precursor bomb is installed. - SvdB +- Crew death on planet is now counted properly in all cases (bug #70) -Mika +- Fixed lockup in 'save failed' alert box (bug #397), from ghakko +- Fixed glitch in Pkunk animation (bug #354), from Paxtez +- Fixed Kohr-Ah final defeat message repeating (bug #426) -Mika +- Fix for picking up talking pet after Umgah genocide - from Paxtez +- MinGW compilation fixes - SvdB+Mika +- Bilinear scaler is now faster, has 24bpp mode and uses regions -Alex +- Accept CRLF line endings in .txt and .ts files - SvdB +- Fixed overflow problem with 32bpp bilinear,biadapt,biadv scalers -Mika +- MixSDL now handles resampling correctly (less cracklings); + added cubic interpolation for high quality mode -Mika +- Removed the redundant "GameExiting" variable -Michael +- Added quit options to ingame menu (bug #409), from Paxtez +- Fix position of blinking save/load in melee (bug #406), from Paxtez +- New packaging/io system. - SvdB +- Exit confirmation dialog is prettier and safer, from Paxtez +- Exiting from the main menu with F10 now exits the game -Michael +- Changed lander speed to 35 FPS, which matches reported 3DO speed + (Bug #22) -Michael +- Added a Menu-Delete key for the Super-Melee menu (#123) -Michael +- Added support for positional (stereo) sound effects, currently + works only with OpenAL -Mika +- Fixed screen transitions from homeworld conversations (bug #348) -Michael +- Fixed Fwiffo join_us_refusals initialization (bug #405) -Mika +- Fix Druuge transactions to not elevate crew costs baselessly (bug #235), + from ghakko +- Fixed glitches and NULL Stamp draw attempt in menu code (bug #26) -Mika +- Absence of voice files is now automatically detected (bug #309) -Mika +- Fixed Commander Hayes mouth movement before radioactives are given + (bug #343) -Mika +- Fix glitches in slylandro probe animation (bugs #398, #399), from Paxtez +- Confirmation dialog box for exiting the game is now menu-based +- Commander Hayes explains his predicament before you get the option to + rescue, closes #366, from Nic +- Gestalt mode accelerates continuously as long as some key is held; + should resolve to PC-style input wrt bug #381 - Michael +- Fixed some more false key cancels, addressing 378 again - Michael +- Added "gestalt mode" for acceleration cancels; fixes #381 - Michael +- Fixed some "false key cancels" in the input system, addressing bugs + #378 and #379 -Michael +- Completely reworked the input system +- Added PC version outtakes, from chmmravatar +- Fix crash in PlayStream when whole file is prebuffered and its not + speech (bug #259) -Mika +- Fix endian problem in colormap transform code (bug #137) -Mika +- Fix minor glitch in planet coarse scan (bug #238), from chmmravatar +- Wav loader is now endian safe (bug #165) -Mika +- Dialogue patch for Melnorme, fixing bug #335 +- Two dialogue spots where visit count could run away patched; fixes bug + #333, from Stas Sergeev +- EventHandler checks CurStarDescPtr before dereferencing it (bug #347) +- Oscilloscope/mini-map now has borders (bug #307 part 4) -Mika +- Flashing rects are no longer constrained to even-numbered pixels on the + y axis; fixes bug #255, from Nic +- Fixed minor glitches in main window borders (bug #307 parts 1,2,3) -Mika +- There's now space before and after : in coordinates (bug #307 part 6), + from Paxtez +- Star coordinates no longer shimmy (bug #331), from chmmravatar +- The DRAWABLE_DESC datatype now uses separately allocated arrays for + animation frames instead of doing pointer arithmetic between it and + FRAME_DESCs --McMartin +- Date on the green bar now has floating period between day and + the year like in PC version (bug #307 part 5) -Mika +- AWARE_OF_SAMATRA flag is now written as well as read (closes #113), + from Nic +- Subtitle drawing is now cached (closes #313) -Mika +- Fix glitch and lockup in dialogs when rewinding (bugs #311 and #272), + from chmmravatar +- Fastforwarding when in last subtitle now works as expected (bug #318), + from chmmravatar +- Fixed MixSDL buffer underrun handling (bug #211) -Mika +- Fix issue with caps lock and num lock preventing planet scan + and lander message skipping (bug #299), from chmmravatar +- Subtitles are now hidden after alien has finished talking (bug #312), + from chmmravatar +- Fix for mycon portrait (bug #183), from Nic +- Music levels no longer drop in conversations when using -T 0 + (partial fix for bug #309), from chmmravatar +- Added PC-style conversation summaries (bug #310), from chmmravatar +- Pressing pause key now stops dialog correctly (bug #167), from chmmravatar +- Fix some glitches in load/save screen (bug #163), from chmmravatar +- Utwig shield now pulsates properly (bug #269), from Nic +- Fix for memory leak in TFB_DrawCanvas_ExtractPalette (bug #277), + from Richard Braakman +- Patched Umgah dialogue, fixing bug #8 +- Crossfade code now explicitly caches the screen to transition from, and + thus no longer glitches. The code needed a slight rewrite, but this + does fix bug #33 -McMartin +- Melee scaling is now trilinear by default, but it's still possible to + choose nearest neighbour with --meleescale; fixes #34 -Mika +- Minimum scaling extent is now 1,1; fixes mostly small-objects-disappearing + problem in melee, from chmmravatar +- Fixed a long standing memory leak relating to planet surface -PhracturedBlue +- Scaled images no longer allocate/free memory all the time -McMartin +- Planet spin on lander launch/return is now enabled -PhracturedBlue +- Fix skipping after planet scan, landing (closes bug 31) -PhracturedBlue +- Decelerate when entering orbit to give a smoother effect -PhracturedBlue +- fix subtitle text overlap issues (bug 232) +- 'Esc' now leaves planet surface (bug233) -PhracturedBlue +- Fix race on exiting starbase (bug 230) -PracturedBlue +- Cleanup shipyard door animation (bug 215) -PhracturedBlue +- Misc .ani fixes; Fixes asteroid destruction crash (bugs 150, 155, 158) + and somewhat fixes Mycon potrait (bug #183) -fOSSiL +- Moved image scaling to DCQ thread; fixes scale-out-of-sync problem + in melee -Mika +- Fix lockup in cyborg melee (fixes 204 and 218) from chmmravatar +- Added -g option to control gamma correction, from chmmravatar +- Restored the CondBank to actually use condition variables properly + (resolves a race condition under OpenBSD) +- Removed aspects of the legacy graphics code that are never used or that + are redundant. More 'C-like' use of the PRIMITIVE datatype. +- Fix various graphics glitches during dialog. Especially Spathi Eye,and ZFP + Closes #23, #156 - PhracturedBlue +- Fix Syreen, KohrAh and Slylandro ship effects to not be screen + size dependant (corolary to bug 93) - PhracturedBlue +- Line clipping is now handled correctly; fixes #28 (one pixel corruptions) + and #198 (beam weapons changing direction) -Mika +- Vux warps in close (fixes bug 93) -from Nic +- Fixed lockup on lander-report (Bug #144 annd 187?) - PhracturedBlue +- Version # is now printed in the main menu, from Nic +- Added PC Shipyard + Hangar power lines animation; + (closes #176) -fOSSiL + +0.2: +- Shipyard/Outfit screens now use larger PC graphics; + Outfit blueprint is properly aligned; from Nic +- Key config is now saved in user dir too. + melee.cfg too again. - SvdB +- Added copyFile() - SvdB +- Pure mode partial screen updates are now more efficient; + fixed 'crossfades not finished' problem -Mika +- Graduated colours for crew in shipyard, from Nic +- Alien dialog fixes: Talking Pet, Utwig, Mycon, Syreen -fOSSiL +- Updated all game, menu, melee and weapon sounds to original 3DO + ones (extracted using various tools); some sounds were simply + wrong: menu - "device success", weapons - arilou, slylandro, thraddash; + others had bad sampling rates; (fixes #19) -fOSSiL +- Fixed Melnrome repeating "Please do not mention this subject again" + text (bug #145) -fOSSiL +- Fixed load/save screen leaving characters when having more + than 1000 units of some type of resources (bug #75) -fOSSiL +- Lowered Drawable memory footprint, made Frame safer - Martin +- Support for running without voice .ogg files present -PBlue +- Slider should now work correctly everywhere -PhracturedBlue +- Added 'nosound' driver and --sound=openal|mixsdl|none + option; -a option has been removed -fOSSiL +- Fix ZFP stuttering and some other random sound issues -PBlue +- Correctly deal with multiply-mapped keys. This may fix some keys + not being detected correctly on the Mac as well - PBlue +- OpenGL mode now fully supports partial screen updates -Mika +- Fixed melee ship selection-box bugs -fOSSiL +- Added a 4th button to starcon.key 'Esc' now emergency-escapes -PBlue +- Biadapt and biadv scalers now work in OpenGL mode too -Mika +- Fixed lockup when fastforwarding through orz comm -PBlue +- A new windows installer is now in builds/win32_install -PBlue +- Added '-a' switch to go between OpenAL and MixSDL at runtime -PBlue +- Melnorme will pronounce numbers now -fOSSiL +- Added icons to win32 builds (MSVC and mingw) -fOSSiL +- Removed the GraphicStrength code, since all that is handled with + an arithmetic blit routine outside of the drawing thread +- Added an improved version of biadapt scaling filter, + working name "biadv" (use --scale=biadv) -fOSSiL +- Removed SDL_mixer sound module +- TFB_FlushGraphics keeps track of smallest bounding box that requires + updating, allowing for faster scaling +- Added a TFB_Canvas data buffer to let TFB_Image be more accessible +- Added new graphics primitives +- Added 'smooth' scolling for ff, frev (similar to the 3DO) - PhracturedBlue +- New streaming code for openal/mixsdl. supports ff/frev in subtitles -PBlue +- New sound module "mixsdl" (experimental) -fOSSiL +- Fixed overlapping subtitle text while switch tracks -PhracturedBlue +- New flash-thread cacheing scheme - PhracturedBlue +- Voice-over / subtitle synch is done - PhracturedBlue +- Optimized DCQ to be much smaller and faster +- Added stat data in outfit screen (use --font=pc) - from Nic +- Added fixed introx.mod, from fOSSiL +- Fixed Orz .mod file, from fOSSiL +- Added vertical alignment for subtitles (text runs off screen fix)-from Nic +- Updated infinity text/symbol for RUs - from fOSSiL, Nic +- Split away DCQ-specific code into its own header file +- Added correct lander font - from fOSSiL +- Added support for multiple menu hierarchies, and a few PC hiers. -PBlue +- Fixed a potential semaphore race when suspending clock -PhracturedBlue +- Function name conflict fixes for Mac OSX -by peterb +- Minor fixes for pc-fonts (Outfit screen, gradient color swap) -by Nic +- DCQ is now accessed uniformly by routines in gfx_common.c +- Fixed OpenGL colors on MacOS X -Mika +- Added a sane cmd-line naming scheme: --opt=(pc|3do) see --help for more -PBlue +- Added new font effect (PC-lander messages), and set colors for text -PBlue +- Use correct font for 'CAPTAIN', 'FUEL', and 'CREW' is status screen -PBlue +- Added gradiated font support (for ship name), and PC-font option -PBlue +- Minor fixes to PCMenu by fOSSiL, Nic, PhracturedBlue +- Updated mingw support with better directions, and easier build -PBlue +- PCMenus now suports 'settings', and menu font is correct -PhracturedBlue +- Added '-b' option to get PC Menus -PhracturedBlue +- Check for a deadlock in savedgames and try to continue -PhracturedBlue +- Added an option ('-a') to display 'PC-style' coarse-scan -PhracturedBlue +- Fixed deadlock races in new FlushGraphics method -PhracturedBlue +- FlushGraphics now waits and notifies on a per-thread level - McMartin +- No longer using SHGetFolderPath on Windows - SvdB +- Key repeat is now enabled when typing text, from slayne +- Capital letter bug in new input code fixed, from slayne +- Oscilloscope now reacts to music when speech is disabled (OpenAL) -Mika +- Rewritten input code (better and adds joystick/pad support), from slayne +- Biadapt scaling for pure mode, from fOSSiL +- Saving user data in "%APPDATA%/Application Data" on windows - SvdB +- Melnorme comm fix, from TD. +- Planet scan font character fixes (micro.fon), from fOSSiL +- Temporary files are deleted on exit. - SvdB +- Font png's no longer need to have alpha channel, black background with + white pixels is enough -Mika +- Added PC version intro/ending font, from VileRancour +- Added files for intro and ending sequence, from fOSSiL; extracted using + Mudrony's scripts plus his own work. +- Added some corrected mods, from fOSSiL; extracted using Mudrony's scripts. +- Replaced add_sub_frame with arith_frame_blit -PhracturedBlue +- Crosshair in orbit leaving light trace to image in OpenGL mode fixed -Mika +- Planet scan should now take ~2secs on all computers -PhracturedBlue +- Updated earth image to look nicer (no vertical lines) -PhracturedBlue +- Clock semaphore is now created with a value of 0 -PhracturedBlue +- Rewrote Semaphore debugging code to be more useful - PhracturedBlue +- Better fix for clearing load/save screen - fOSSiL +- Implemented bilinear scaling in pure SDL mode - Mika +- Planet surface is now smoothed, from PhracturedBlue +- Implemented scanlines in pure SDL mode - Mika +- Star sizes and colors are now correct in solar system, from fOSSiL +- Captain portraits in melee are now updated properly after battle and + bottom portrait always stays in correct place, from fOSSiL +- Removed 2xSaI and SuperSAI scaling due to GPL incompatiblities. + They should be reimplemented later. +- Bucks print from wrong team in melee ship selection box fixed, from fOSSiL +- Autopilot works in Quasispace when without fuel, from fOSSiL. +- Negative shift warnings removed, from Fizban +- Displaying correct lander images, from fOSSiL. +- 3D planet now uses phong lighting, from PhracturedBlue +- Put save data and temporary files in a seperate dir - SvdB +- Fix OpenGL colors on big-endian CPUs, from Bryce McKinlay +- MikMod now loops modules correctly (OpenAL), from Nic +- player.fon/42.png corrected, from Parker +- GraphicsSem usage reverted back in RotatePlanet, from PhracturedBlue +- Pause/exit game dialog problem with planets fixed, from PhracturedBlue +- Fixed lockup if sbuf_size was zero (OpenAL) +- Planet surface changing color when using device fixed, from PhracturedBlue +- Some race conditions eliminated, from PhracturedBlue +- Earth / other slave shielded planet color issue fixed, from PhracturedBlue +- Orbit/starmap related lockup fixed, from PhracturedBlue +- 3D planet showing on starmap when in orbit fixed, from PhracturedBlue +- Scan (single, interrupting) fixed, from PhracturedBlue +- Defining DCQ_OF_DOOM lowers the DrawCommandQueue size to 512, to aid in + simulating severe overload stresses on the machine +- Removed TFB_FlushGraphics' dependency on GraphicsSem, which the new + condition variable code both breaks and makes unnecessary +- Scan tint is now cleared right after the scan, from PhracturedBlue +- Recoded the DCQ to not sit on the heap, added debugging info +- Fixed Outfit Starship and Shipyard graphics, from TDuck +- 3D planet is now zoomed randomly from any corner, from PhracturedBlue +- Flagship thrusters and modules one-pixel place fix, from TDuck +- Earth topo map is now tinted as should, from PhracturedBlue +- Fixed planet stuff when leaving surface with lander, from PhracturedBlue +- RotatePlanet now holds GraphicsSem a shorter time, from PhracturedBlue +- Added proper mutex usage to 3do_getbody.c, from PhracturedBlue +- Scan uses now additive blit instead of transparency, from PhracturedBlue +- Loading game saved while in orbit fixed (bg correct), from PhracturedBlue +- Changed SDL_Delay to SleepThread in TFB_FlushGraphics +- Rendering thread now broadcasts to a condition variable, stopping most + of the problems we were having where a fast thread spams the DCQ with + too many requests to handle in a timely manner +- Fixed an unsafe memory freeing from sfx.c +- Thread library now includes condition variables +- Shofixti dialogue fixed to subtitles, by BlckKnght +- Crash during loading from orbit fixed, from PhracturedBlue +- Starmap issue when orbiting earth fixed, from PhracturedBlue +- Oscilloscope is now implemented (OpenAL) +- Moved initialisation of _MemorySem to memInit - SvdB +- Planet scan is now cleared correctly, from l0ci +- Flagship modules are now drawn correctly instead of one pix left, from l0ci +- Planet code fixes, from PhracturedBlue +- Build fixes for FreeBSD, from Max Horn. +- Fixed typo in Thraddash text, from Dan Plimak. +- Make HMalloc abort when no memory available, from Abaddon. +- Replace malloc() calls by HMalloc, from Abaddon. +- #include in main program, for OSX, from Max Horn. +- Use sources for getopt() for all systems that don't support it, not only + for Windows, from Max Horn. +- Planet code cleanups, from PhracturedBlue +- Changed some types to SDLKey in input.c to prevent overflows, from tamlin +- Slider now moves in communications (OpenAL) +- Fixed a DCQ bug where it wasn't freeing batches of graphics commands +- > vs. >= bugfix on plangen.c, from PhracturedBlue +- More appropriate names to ROSTER + 1 and ROSTER + 2, from slayne +- Lines and colouring of planet surface when scanning, from PhracturedBlue +- Melnorme bridge turns purple at the right spot in his conversation +- Repaired a DrawCommandQueue invariant, from tamlin +- Color transforms in communication merged into core animation thread +- 3D planet is now antialiased, from PhracturedBlue +- Hyperspace saving crash introduced by prev. patches fixed, from slayne +- Precursor ship crew count is now placed correctly in melee, from wjp +- Dialog choices doesn't go off rectangle in right anymore, from wjp +- When saving in planet scan screen, screen is now redrawn, from slayne +- Commas causing pixels to appear in planetary reports fixed, from slayne +- Team names switching when selecting next ship to fight fixed, from slayne +- More memory leak fixes in 3do_getbody.c, from PhracturedBlue +- Fixed memory leak in _ReleaseCelData, from PhracturedBlue. +- Fixed mutex deadlock in 3do_blt.c, from tamlin +- 'additional credits' amount for Melnorme correct now, by Windplume. +- Spheres of influence now move correctly in starmap, from l0ci@hotmail.com +- Linux OpenAL fixes (music plays now as stereo) +- Fuel giveaway bug fixed, from steve@blckknght.org and Windplume. +- Starmap fuel range calculator and actual consumption matches now +- Collision detection is now pixel-perfect (fixes Sa-Matra, BUTT missile, etc) +- Fixed lander position sign bug which was introduced by previous fixes +- Initial display of planet surface on landing is at correct position +- Planet scan is now properly erased when cancelling/landing +- 3D planet view when entering orbit is now implemented +- TFB_DrawCommandQueue->FullSize was uninitialised. +- Typo 'cultrue' for Thraddash fixed. +- Autopilot indicator no longer blinking on starmap and combat +- Entering a star system lockup/messed graphics fixed +- Position of planet info icons/texts is now correct and centered +- Yehat had no subtitles. +- Incorrect position of 'empty slot' and 'team name' in supermelee fixed + +0.1: +- Initial release + diff --git a/Contributing b/Contributing new file mode 100644 index 0000000..985a6af --- /dev/null +++ b/Contributing @@ -0,0 +1,135 @@ +These are some guidelines for people who want to contribute to the code. +Don't be surprised if your contributions get tossed in the bit-bucket if you +do not follow them. We don't want to be unfriendly, but our time is limited. +These guidelines are there so that you won't waste both our and your time. + +Before making changes: +- Read this entire document +- See if the Bugzilla bug database at + http://bugs.uqm.stack.nl/ contains any comments on what you're planning + to do. +- Make sure you're using the most recent Subversion version +- Discuss in advance what you're planning to do, with the core team. + The best place to do this is on #sc2 on irc.freenode.net. + This prevents you from wasting your time when + - someone else is already working on your issue + - we've got a very clear idea of how we want it to be + - the code you're planning to change will be completely rewritten + in the near future. +- Don't bother on adding "great ideas" you have for the game; + Our current goal is a straight port. The code is GPL, so feel free + to start your own modified version, but don't bother sending them + in for the official version. + +Making changes: +- Follow the coding style of the existing source. You don't have to like it, + we don't even always do, but we've accepted this as our standard. The main + reason is that this is very close to the original style. + Trying to start a discussion about the standard is pointless and is + definitely NOT appreciated. + - Use 1 tab per indentation level + - Use no more than 76 chars on a line, when using a tab size of 4. + - Use 2 extra indentation levels for the continuation of a broken line, + like this: + if (blablablabla || foobar || + zut || linefiller || + morezut) + printf ("Yeah!\n"); + - Don't use tabs for anything but indenting. If you would, and someone + has a different tab size, or something in the line changes, other stuff + on the line may or may not move, depending on where on the line it is. + If you for instance want to align a list of declarations, use spaces, + like this: + { + long l, + m; + int i; + } + (Though in this particular case, I personally would repeat the 'long', + or place l and m on the same line) + - Put { on a separate line, both for the start of a function and + for the start of a block. + - one space around binary operators, and after commas. + - one space between the function name and following '(', both in + declaration and call (unusual as it is). + - one space after 'if', 'while', 'do', 'for' and 'switch'. + - even for short selections or repetitions, don't have the statement + to execute on the same line as the guard. So: + if (a) + a--; + - Use unix-style line-endings, that is '\n' only. If the editor you're + using doesn't support this, please pass your code through a conversion + program before submitting. +- Don't hurry into changing code. All code is there for a reason. Be sure + you understand that reason before changing it. Don't just go recode a part + because you think that would be easier than trying to understand the + original. If you don't have the skills or patience to do so, this is not + the place for you. +- Only use portable functions. The code is intended to work on Windows + (MSVC 6), Linux (GCC 4), FreeBSD (GCC 4) and MacOS X (GCC 4). + Try to avoid unnecessary system-dependant code, but use #ifdefs if you + really have to. +- No shortcuts. Don't assume anything about user input (like the length), + and check the return values of functions that may fail. +- Your code shouldn't cause any compile-time or runtime-warnings. We know + the current source is far from warning-free, but those should be removed + eventually and we don't want to make it worse. +- Don't add comment lines saying things like "This line added by ". + These comments only foul the code and don't add anything for people + reading it. You'll still be credited in the Changelog, and for large + contributions (or many small ones) in the authors list. We have + Subversion for when we need to find out when what changes were made. + +Making the patches: +- One issue per patch. + We need to keep track of what's being changed, and multiple changes + in one patch will make that more difficult. + Also, we might want to accept one patch, and reject the other. +- Use unified diffs. + That way, there's a bigger chance the patch can be automatically applied + successfully against modified files. +- Make the patches against the current Subversion tree. + +Test the patches: +- If possible, test your changes both on Windows and a *nix platform, or + send them to someone to test them for you. + +Getting the patches committed: +- Either attach the patches to the appropriate bug report in the Bugzilla + bug database or send them to one of the committers, in plain-text format. + This can be done by email, DCC from within the #sc2 channel, or by + mentioning an URL where we can get the patch. + The committers are listed below (in alphabetical order), with their + particular field of expertise with the source. Though all of us + should have enough experience to deal with most issues not explicitly + mentioned. + Serge van den Boom (svdb at stack.nl), SvdB at #sc2 + - Resource system + - 3DO historical code + - *nix build system + - Netplay + - General issues (particularly on *nix) + Mika Kolehmainen (mk at kapsi.fi), Gwl at #sc2 + - Graphics + - Sound + - General issues + Michael Martin (mcmartin at mail.com), McMartin at #sc2 + - Threading + - Graphics + - Input system + - In-game configuration + - General issues + Alex Volkov (codepro at usa.net), fossil at #sc2 + - Graphics + - Sound (particularly MixSDL) + - Alien communications code + - General issues +- Only submit code that can be used under the GPL. By submitting code you + hold the copyright to, you agree that it can be used under the term of + the GPL. If you use code by someone else, make sure that it can be used + under the GPL and let us know, so that adequate credit can be given. + + +Initial version of this file by Serge van den Boom, 2002-12-05. + + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..e91cf2d --- /dev/null +++ b/INSTALL @@ -0,0 +1,89 @@ + THE UR-QUAN MASTERS: BUILD INSTRUCTIONS + --------------------------------------- + +INSTALLING PREREQUISITES +------------------------ + +To build The Ur-Quan Masters, you must first install its +prerequisites: SDL2, PNG, Ogg Vorbis, and Zlib. How to do this will +depend on what operating system you are running: + +On Debian or similar systems like Ubuntu, install the following packages: + + sudo apt-get install build-essential libogg-dev libpng-dev libsdl2-dev \ + libvorbis-dev libz-dev + +On Fedora or similar systems like CentOS, install these packages: + sudo dnf install libogg-devel libpng-devel libvorbis-devel make SDL2-devel \ + zlib-devel + +On macOS, install Xcode from the App Store, and then install +"Additional components" when you run it for the first time. You can +then install brew from https://brew.sh and then use it to install your +requirements from the Terminal: + + brew install libogg libpng libvorbis sdl2 + +On Windows, you will need to use the MSYS2 system from +https://www.msys2.org -- after you install the base system, open an +"MSYS2 MSYS" window and update the system with the command + + pacman -Syuu + +until there is nothing left to do. Aftr that you can install the +packages you will need to build the 32-bit version of UQM: + + pacman -S make pkg-config mingw-w64-i686-gcc mingw-w64-i686-libogg \ + mingw-w64-i686-libpng mingw-w64-i686-libsystre \ + mingw-w64-i686-libvorbis mingw-w64-i686-SDL2 mingw-w64-i686-zlib + +Actually building UQM will need to be done from a "MSYS2 MinGW 32-bit" +window, not "MSYS2 MSYS". + +BUILDING THE PROGRAM +-------------------- + +Building and configuration is managed by the "build.sh" script in the +same directory as this file. Ordinarily, you will only need the command + + ./build.sh uqm + +To configure and build the system. Pass an argument like "-j5" for a +parallel build using 5 processes. To delete the current bulid and +reconfigure, issue the command + + ./build.sh uqm clean + +And it will clear out all configuration choices. + +The configuration process is interactive; for unattended or scripted +installs, consult the "config.state" file generated by the +configuration process and synthesize an equivalent as needed; builds +will then skip the configure step after that. + +After the build completes, a binary named "uqm" or "uqm-debug" will be +created, and should be runnable out of this directory. To produce a +distributable or installable package that runs on any system, more +work is needed. + +BUILDING AN INSTALLABLE PACKAGE +------------------------------- + +LINUX: The UQM project does not officially maintain any installation +packages for any Linux distro, but other volunteers have often done +this already. In general, all that will be needed is to arrange +matters so that the uqm binary and the content directory are installed +into globally accessible locations, and that it is invoked with +arguments that properly identify those directories. + +WINDOWS: An installable Windows build takes the UQM.EXE file created +by the build process and then correlates it with the prepackaged +content packs to produce an installer executable that will download +all other data from sourceforge. See INSTALL.win32 for the extra steps +required for this. + +MAC: A redistributable package on macOS is an app bundle that contains +everything needed to run the program. Because of the way brew handles +system dependencies, the program must be built differently to be +redistributable. See INSTALL.macos for details on how to do this. + diff --git a/INSTALL.macos b/INSTALL.macos new file mode 100644 index 0000000..bbf4b83 --- /dev/null +++ b/INSTALL.macos @@ -0,0 +1,44 @@ + BUILDING THE UR-QUAN MASTERS ON MAC OS X + ---------------------------------------- + +Starting with 0.7.1, it is possible to build and run The Ur-Quan +Masters with the brew system (https://brew.sh). This is much easier +than building a redistributable package, and personal builds should +probably rely on this. See the main INSTALL file for instructions +there. + +To create a .app file that will work on most Macs, you will need to +create an app bundle with custom copies of its libraries. To do +*that*, you will to build most of them yourself: + +SDL2: https://www.libsdl.org + The development libraries for macOS available here already work + fine and do not need any extra work. + +Ogg Vorbis: http://www.xiph.org + You will need to build frameworks out of libogg and libvorbis, + which will be named Ogg.framework and Vorbis.framework. + +libpng: http://www.libpng.org/pub/png/libpng.html + You will ultimately need to create libpng.framework. + +These frameworks should be built as "archives" in Xcode with a macOS +deployment target of 10.6. Copy the framework directories out of the +archives into /Library/Frameworks. + +With these in place, copy the content packages that you intend to +undle with the app (at minimum content, but potentially also voice and +3DO music or even remixes) into a subdirectory under this one named +"dist-packages". + +You are now ready to actually build and package the application: + + DEPS_PATH=/Library/Frameworks ./build.sh uqm + build/unix_installer/copy_mac_frameworks.pl + +This should produce a working app bundle named "The Ur-Quan +Masters.app". For proper redistribution this app should be put in a +disk image with the Disk Utility. If you are running on a version of +macOS later than 10.12, don't forget to make sure you use HFS+ instead +of APFS, or your disk image won't be mountable on any version of macOS +10.12 or earlier! diff --git a/INSTALL.pkgs b/INSTALL.pkgs new file mode 100644 index 0000000..8ce46d1 --- /dev/null +++ b/INSTALL.pkgs @@ -0,0 +1,39 @@ + CREATING NEW CONTENT PACKAGES + ----------------------------- + +When a new version of UQM is released, new versions of the content +packages will also need to be created and uploaded. These packages are +renamed zip files created by the uqmzip utility under tools/uqmzip, and +ultimately by the "zip" commandline utility itself. + +Because of the way Windows and Git interact with line endings and the like, +and because of macOS's occasionaly pollution of zip files with macOS-specific +metadata, official releases always create these packages on a Linux system, + +The behavior of uqmzip is controlled by variables set at the beginning of it; +customize these variables for the version and for your system, but remember +to back out any changes that refer to your system's unique configuration! + +Once the packages are created, upload them to SourceForge in an appropriate +directory matching the current pattern for previous versions. This will +make them available for new users and for the Windows network installer. + +The network installer will also need to be modified to know how to recognize +the new packages. Make a dist-packages/ directory in the repository root (so, +next to sc2 and tools) and put all of them in there. There should be seven; +content, 3domusic, voice, and the four remix packs. Change the directory to +sc2/build/win32_install and run: + + ./procpkgs.sh + +This will update packages.nsh with fresh versions of the MD5 sums and +package filenames for later inclusion in the installer logic. + +If this was a release more significant than a patch release, then the +SourceForge packages were uploaded to a new directory; edit any necessary +instances of the $DOWNLOADPATH variable in uqm-installer.nsi to point +to the new URLs. + +Changes to packages.nsh and uqm-installer.nsi SHOULD be committed to the +repository in their corresponding version branch. Changes to the uqmzip +script SHOULD NOT be committed. diff --git a/INSTALL.symbian b/INSTALL.symbian new file mode 100644 index 0000000..cd7ff0a --- /dev/null +++ b/INSTALL.symbian @@ -0,0 +1,94 @@ +UQM for Symbian S60 3rd edition +=============================== + +First some general notes. These instructions might be somewhat incomplete or +unclear. If you encounter any problems or have suggestions how to improve this +document, please report them to our Bugzilla at + http://bugs.uqm.stack.nl/ + +UQM's Symbian support is currently at experimental stage. Development is +being done on Nokia N73, which has too little memory for longer playing +sessions. Reports of successes and failures on other devices are very welcome. + +Known problems: +- No netmelee. + + +Prerequisites: +-------------- + +- Platform SDK for S60 3rd ed. + * Download from http://www.forum.nokia.com/ + +- Open C plugins (if SDK is other than FP2; in FP2 those are included already) + * Download from http://www.forum.nokia.com/main/resources/tools_and_sdks/openc_cpp/ + +- Carbide.c++ (if building for emulator) + * Download from http://www.forum.nokia.com/ + * Command line compiling must be enabled + +- CSL ARM Toolchain or RVCT v2.2 (if building for hardware) + * GCCE included with SDK + +- MinGW and MSYS (for build scripts) + * Download from http://www.mingw.org/ + +- Info-Zip (for building content package) + * Download from http://www.info-zip.org/Zip.html + +- SDL for S60 3rd ed. + * Download from http://koti.mbnet.fi/mertama/sdl.html + * You also need the sources from http://www.libsdl.org/ + +- Tremor + * Check out from SVN repository at http://svn.xiph.org/trunk/Tremor/ + +Building: +--------- + +1) Set up platform SDK, compilers, Open C plugins and MinGW + MSYS. + * Be sure zip and other tools are listed in path so they can be accessed + directly from command line. + +2) Subst your Symbian SDK to a new drive along the following example: + subst z: C:\Symbian\9.1\S60_3rd_MR_2 + +3) Put UQM sources and Tremor inside the substed drive, if not already there. + +4) Install and build SDL, instructions are inside the package. + +5) Build a partial port of libpng and SDL_image, which are included + in UQM SVN repository at trunk/symbian/png: + cd png\group + bldmake bldfiles + abld build + +6) Build Tremor. First apply a patch found from UQM SVN repository + at trunk/symbian/tremor: + cd Tremor + patch -p0 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=AbxDecoder - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "AbxDecoder.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "AbxDecoder.mak" CFG="AbxDecoder - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "AbxDecoder - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "AbxDecoder - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=xicl6.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "AbxDecoder - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "AbxDecoder___Win32_Release" +# PROP BASE Intermediate_Dir "AbxDecoder___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "AbxDecoder_Release" +# PROP Intermediate_Dir "AbxDecoder_Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /I "..\sc2code" /I "..\sc2code\libs" /I "..\sc2code\ships" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilink6.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1d000000" /subsystem:windows /dll /machine:I386 /nodefaultlib:"msvcrtd.lib" /out:"../../content/cdps/abxadec.dll" + +!ELSEIF "$(CFG)" == "AbxDecoder - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "AbxDecoder___Win32_Debug" +# PROP BASE Intermediate_Dir "AbxDecoder___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "AbxDecoder_Debug" +# PROP Intermediate_Dir "AbxDecoder_Debug" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I ".." /I "..\sc2code" /I "..\sc2code\libs" /I "..\sc2code\ships" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilink6.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1d000000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"../../content/cdps/abxadec.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "AbxDecoder - Win32 Release" +# Name "AbxDecoder - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=../abxadec/abxaud.c +# End Source File +# Begin Source File + +SOURCE=../abxadec/abxaud.h +# End Source File +# End Group +# End Target +# End Project diff --git a/build/msvc6/UrQuanMasters.dsp b/build/msvc6/UrQuanMasters.dsp new file mode 100644 index 0000000..8bf05f8 --- /dev/null +++ b/build/msvc6/UrQuanMasters.dsp @@ -0,0 +1,3786 @@ +# Microsoft Developer Studio Project File - Name="UrQuanMasters" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=UrQuanMasters - Win32 Debug NoAccel +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "UrQuanMasters.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "UrQuanMasters.mak" CFG="UrQuanMasters - Win32 Debug NoAccel" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "UrQuanMasters - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "UrQuanMasters - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "UrQuanMasters - Win32 Debug NoAccel" (based on "Win32 (x86) Console Application") +!MESSAGE "UrQuanMasters - Win32 Release NoAccel" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "UrQuanMasters - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W2 /GX /Zi /O2 /I "..\..\src" /I "..\..\src\regex" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D _VW=320 /D _VH=240 /D "HAVE_OPENGL" /D "GFXMODULE_SDL" /D "THREADLIB_SDL" /D "HAVE_OPENAL" /D "HAVE_ZIP" /D "HAVE_JOYSTICK" /D "NETPLAY" /D "ZLIB_DLL" /D "USE_INTERNAL_MIKMOD" /D "USE_PLATFORM_ACCEL" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"msvcrtd.lib" /out:"../../uqm.exe" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Stripping debug info... +PostBuild_Cmds=rebase -b 0x400000 -x . "../../uqm.exe" +# End Special Build Tool + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\..\src" /I "..\..\src\regex" /D "DEBUG" /D "_DEBUG" /D "DEBUG_TRACK_SEM" /D "DEBUG_DCQ_THREADS" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D _VW=320 /D _VH=240 /D "HAVE_OPENGL" /D "GFXMODULE_SDL" /D "THREADLIB_SDL" /D "HAVE_OPENAL" /D "HAVE_ZIP" /D "HAVE_JOYSTICK" /D "NETPLAY" /D "ZLIB_DLL" /D "USE_INTERNAL_MIKMOD" /D "USE_PLATFORM_ACCEL" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo /o"UrQuanMasters.bsc" +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"../../uqmdebug.exe" /pdbtype:sept +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug NoAccel" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_NoAccel" +# PROP BASE Intermediate_Dir "Debug_NoAccel" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug_NoAccel" +# PROP Intermediate_Dir "Debug_NoAccel" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\..\src" /I "..\..\src\regex" /D "DEBUG" /D "_DEBUG" /D "DEBUG_TRACK_SEM" /D "DEBUG_DCQ_THREADS" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D _VW=320 /D _VH=240 /D "HAVE_OPENGL" /D "GFXMODULE_SDL" /D "THREADLIB_SDL" /D "HAVE_OPENAL" /D "HAVE_ZIP" /D "HAVE_JOYSTICK" /D "NETPLAY" /D "ZLIB_DLL" /D "USE_INTERNAL_MIKMOD" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo /o"UrQuanMasters.bsc" +# ADD BSC32 /nologo /o"UrQuanMasters.bsc" +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"../../uqmdebug.exe" /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"../../uqmdebug.exe" /pdbtype:sept +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Release NoAccel" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_NoAccel" +# PROP BASE Intermediate_Dir "Release_NoAccel" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NoAccel" +# PROP Intermediate_Dir "Release_NoAccel" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W2 /GX /Zi /O2 /I "..\..\src" /I "..\..\src\regex" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D _VW=320 /D _VH=240 /D "HAVE_OPENGL" /D "GFXMODULE_SDL" /D "THREADLIB_SDL" /D "HAVE_OPENAL" /D "HAVE_ZIP" /D "HAVE_JOYSTICK" /D "NETPLAY" /D "ZLIB_DLL" /D "USE_INTERNAL_MIKMOD" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"msvcrtd.lib" /out:"../../uqm.exe" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib SDL.lib SDLmain.lib SDL_image.lib zdll.lib ws2_32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"msvcrtd.lib" /out:"../../uqm.exe" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Stripping debug info... +PostBuild_Cmds=rebase -b 0x400000 -x . "../../uqm.exe" +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "UrQuanMasters - Win32 Release" +# Name "UrQuanMasters - Win32 Debug" +# Name "UrQuanMasters - Win32 Debug NoAccel" +# Name "UrQuanMasters - Win32 Release NoAccel" +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Group "getopt" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\getopt\getopt.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\getopt\getopt.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\getopt\getopt1.c +# End Source File +# End Group +# Begin Group "regex" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\regex\regcomp.ci +# End Source File +# Begin Source File + +SOURCE=..\..\src\regex\regex.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\regex\regex.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\regex\regex_internal.ci +# End Source File +# Begin Source File + +SOURCE=..\..\src\regex\regex_internal.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\regex\regexec.ci +# End Source File +# End Group +# Begin Group "libs" + +# PROP Default_Filter "" +# Begin Group "callback" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\callback\alarm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback\alarm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback\async.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback\async.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback\callback.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback\callback.h +# End Source File +# End Group +# Begin Group "decomp" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\decomp\lzdecode.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\decomp\lzencode.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\decomp\lzh.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\decomp\update.c +# End Source File +# End Group +# Begin Group "file" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\file\dirs.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\file\files.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\file\filintrn.h +# End Source File +# End Group +# Begin Group "graphics" + +# PROP Default_Filter "" +# Begin Group "sdl" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers_3dnow.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers_mmx.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers_mmx.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\2xscalers_sse.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\biadv2x.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\bilinear2x.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\canvas.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\hq2x.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\nearest2x.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\opengl.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\opengl.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\palette.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\palette.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\png2sdl.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\png2sdl.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\primitives.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\primitives.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\pure.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\pure.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\rotozoom.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\rotozoom.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\scaleint.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\scalemmx.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\scalers.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\scalers.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdl1_common.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdl2_common.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdl2_pure.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdl_common.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdl_common.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdluio.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\sdluio.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\sdl\triscan2x.c +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\graphics\bbox.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\bbox.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\boxint.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\clipline.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\cmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\cmap.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\context.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\context.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\dcqueue.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\dcqueue.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\drawable.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\drawable.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\drawcmd.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\filegfx.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\font.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\font.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\frame.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\gfx_common.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\gfx_common.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\gfxintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\gfxload.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\intersec.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\loaddisp.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\pixmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\prim.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\resgfx.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\tfb_draw.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\tfb_draw.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\tfb_prim.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\tfb_prim.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\widgets.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\graphics\widgets.h +# End Source File +# End Group +# Begin Group "heap" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\heap\heap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\heap\heap.h +# End Source File +# End Group +# Begin Group "input" + +# PROP Default_Filter "" +# Begin Group "sdl No. 1" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\input.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\input.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\keynames.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\keynames.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\vcontrol.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\vcontrol.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\sdl\vcontrol_malloc.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\input\inpintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\input_common.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\input\input_common.h +# End Source File +# End Group +# Begin Group "list" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\list\list.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\list\list.h +# End Source File +# End Group +# Begin Group "log" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\log\loginternal.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\log\msgbox.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\log\msgbox_win.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\log\uqmlog.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\log\uqmlog.h +# End Source File +# End Group +# Begin Group "math" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\math\mthintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\math\random.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\math\random.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\math\random2.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\math\sqrt.c +# End Source File +# End Group +# Begin Group "md5" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\md5\md5.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\md5\md5.h +# End Source File +# End Group +# Begin Group "memory" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\memory\w_memlib.c +# End Source File +# End Group +# Begin Group "resource" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\resource\direct.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\filecntl.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\getres.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\index.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\loadres.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\propfile.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\propfile.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\resinit.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\resintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\stringbank.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\resource\stringbank.h +# End Source File +# End Group +# Begin Group "sound" + +# PROP Default_Filter "" +# Begin Group "openal" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\sound\openal\audiodrv_openal.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\openal\audiodrv_openal.h +# End Source File +# End Group +# Begin Group "decoders" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\aiffaud.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\aiffaud.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\decoder.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\decoder.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\dukaud.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\dukaud.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\modaud.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\modaud.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\oggaud.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\oggaud.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\wav.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\decoders\wav.h +# End Source File +# End Group +# Begin Group "mixer" + +# PROP Default_Filter "" +# Begin Group "mixsdl" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\sdl\audiodrv_sdl.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\sdl\audiodrv_sdl.h +# End Source File +# End Group +# Begin Group "nosound" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\nosound\audiodrv_nosound.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\nosound\audiodrv_nosound.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\mixer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\mixer.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\mixer\mixerint.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\sound\audiocore.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\audiocore.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\fileinst.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\music.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\resinst.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\sfx.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\sndintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\sound.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\sound.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\stream.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\stream.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\trackint.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\trackplayer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sound\trackplayer.h +# End Source File +# End Group +# Begin Group "strings" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\strings\getstr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strings\sfileins.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strings\sresins.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strings\strings.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strings\strintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strings\unicode.c +# End Source File +# End Group +# Begin Group "video" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\video\dukvid.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\dukvid.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\legacyplayer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\vfileins.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\video.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\video.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\videodec.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\videodec.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\vidintrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\vidplayer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\vidplayer.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\video\vresins.c +# End Source File +# End Group +# Begin Group "threads" + +# PROP Default_Filter "" +# Begin Group "sdl No. 3" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\threads\sdl\sdlthreads.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\threads\sdl\sdlthreads.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\threads\thrcommon.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\threads\thrcommon.h +# End Source File +# End Group +# Begin Group "time" + +# PROP Default_Filter "" +# Begin Group "sdl No. 4" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\time\sdl\sdltime.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\time\sdl\sdltime.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\time\timecommon.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\time\timecommon.h +# End Source File +# End Group +# Begin Group "task" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\task\tasklib.c +# End Source File +# End Group +# Begin Group "uio" + +# PROP Default_Filter "" +# Begin Group "stdio" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\uio\stdio\stdio.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\stdio\stdio.h +# End Source File +# End Group +# Begin Group "zip" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\uio\zip\zip.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\zip\zip.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\uio\charhashtable.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\charhashtable.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\debug.c + +!IF "$(CFG)" == "UrQuanMasters - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug" + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug NoAccel" + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Release NoAccel" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\debug.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\defaultfs.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\defaultfs.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\fileblock.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\fileblock.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\fstypes.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\fstypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\getint.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\gphys.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\gphys.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\hashtable.c + +!IF "$(CFG)" == "UrQuanMasters - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug NoAccel" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Release NoAccel" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\hashtable.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\io.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\io.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\ioaux.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\ioaux.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\iointrn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\match.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\match.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\mem.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\memdebug.c + +!IF "$(CFG)" == "UrQuanMasters - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Debug NoAccel" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "UrQuanMasters - Win32 Release NoAccel" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\memdebug.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\mount.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\mount.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\mounttree.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\mounttree.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\paths.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\paths.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\physical.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\physical.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\types.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\uioport.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\uiostream.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\uiostream.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\uioutils.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\uioutils.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\utils.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio\utils.h +# End Source File +# End Group +# Begin Group "mikmod" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\drv_nos.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\load_it.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\load_mod.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\load_s3m.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\load_stm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\load_xm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mdreg.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mdriver.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mikmod.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mikmod_build.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mikmod_internals.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mloader.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mlreg.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mlutil.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mmalloc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mmerror.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mmio.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mplayer.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\munitrk.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\mwav.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\npertab.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\sloader.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\virtch.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\virtch2.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mikmod\virtch_common.c +# End Source File +# End Group +# Begin Group "network" + +# PROP Default_Filter "" +# Begin Group "connect" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\connect.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\connect.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\listen.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\listen.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\resolve.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\connect\resolve.h +# End Source File +# End Group +# Begin Group "netmanager" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\ndesc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\ndesc.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\ndindex.ci +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\netmanager.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\netmanager_common.ci +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\netmanager_win.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netmanager\netmanager_win.h +# End Source File +# End Group +# Begin Group "socket" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\libs\network\socket\socket.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\socket\socket.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\socket\socket_win.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\socket\socket_win.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\network\bytesex.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netport.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\netport.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\network.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\network_win.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\network\wspiapiwrap.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\libs\alarm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\async.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\callback.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\compiler.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\declib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\file.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\gfxlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\heap.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\inplib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\list.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\log.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\mathlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\md5.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\memlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\misc.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\net.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\platform.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\reslib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\sndlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\strlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\tasklib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\threadlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\timelib.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\uio.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\unicode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\libs\vidlib.h +# End Source File +# End Group +# Begin Group "uqm" + +# PROP Default_Filter "" +# Begin Group "comm" + +# PROP Default_Filter "" +# Begin Group "arilou.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\arilou\arilouc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\arilou\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\arilou\strings.h +# End Source File +# End Group +# Begin Group "blackur.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\blackur\blackurc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\blackur\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\blackur\strings.h +# End Source File +# End Group +# Begin Group "chmmr.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\chmmr\chmmrc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\chmmr\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\chmmr\strings.h +# End Source File +# End Group +# Begin Group "comandr.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\comandr\comandr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\comandr\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\comandr\strings.h +# End Source File +# End Group +# Begin Group "druuge.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\druuge\druugec.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\druuge\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\druuge\strings.h +# End Source File +# End Group +# Begin Group "ilwrath.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\ilwrath\ilwrathc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\ilwrath\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\ilwrath\strings.h +# End Source File +# End Group +# Begin Group "melnorm.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\melnorm\melnorm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\melnorm\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\melnorm\strings.h +# End Source File +# End Group +# Begin Group "mycon.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\mycon\myconc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\mycon\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\mycon\strings.h +# End Source File +# End Group +# Begin Group "orz.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\orz\orzc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\orz\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\orz\strings.h +# End Source File +# End Group +# Begin Group "pkunk.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\pkunk\pkunkc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\pkunk\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\pkunk\strings.h +# End Source File +# End Group +# Begin Group "rebel.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\rebel\rebel.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\rebel\strings.h +# End Source File +# End Group +# Begin Group "shofixt.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\shofixt\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\shofixt\shofixt.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\shofixt\strings.h +# End Source File +# End Group +# Begin Group "slyhome.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyhome\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyhome\slyhome.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyhome\strings.h +# End Source File +# End Group +# Begin Group "slyland.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyland\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyland\slyland.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\slyland\strings.h +# End Source File +# End Group +# Begin Group "spahome.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\spahome\spahome.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\spahome\strings.h +# End Source File +# End Group +# Begin Group "spathi.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\spathi\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\spathi\spathic.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\spathi\strings.h +# End Source File +# End Group +# Begin Group "starbas.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\starbas\starbas.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\starbas\strings.h +# End Source File +# End Group +# Begin Group "supox.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\supox\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\supox\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\supox\supoxc.c +# End Source File +# End Group +# Begin Group "syreen.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\syreen\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\syreen\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\syreen\syreenc.c +# End Source File +# End Group +# Begin Group "talkpet.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\talkpet\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\talkpet\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\talkpet\talkpet.c +# End Source File +# End Group +# Begin Group "thradd.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\thradd\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\thradd\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\thradd\thraddc.c +# End Source File +# End Group +# Begin Group "umgah.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\umgah\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\umgah\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\umgah\umgahc.c +# End Source File +# End Group +# Begin Group "urquan.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\urquan\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\urquan\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\urquan\urquanc.c +# End Source File +# End Group +# Begin Group "utwig.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\utwig\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\utwig\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\utwig\utwigc.c +# End Source File +# End Group +# Begin Group "vux.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\vux\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\vux\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\vux\vuxc.c +# End Source File +# End Group +# Begin Group "yehat.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\yehat\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\yehat\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\yehat\yehatc.c +# End Source File +# End Group +# Begin Group "zoqfot.comm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\comm\zoqfot\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\zoqfot\strings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm\zoqfot\zoqfotc.c +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\comm\commall.h +# End Source File +# End Group +# Begin Group "planets" + +# PROP Default_Filter "" +# Begin Group "generate" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genall.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genand.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genburv.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genchmmr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gencol.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gendefault.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gendefault.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gendru.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genilw.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genmel.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genmyc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genorz.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genpet.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genpku.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genrain.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gensam.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genshof.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gensly.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gensol.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genspa.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gensup.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gensyr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genthrad.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\gentrap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genutw.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genvault.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genvux.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genwreck.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genyeh.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genzfpscout.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate\genzoq.c +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\planets\calc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\cargo.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\devices.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\elemdata.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\generate.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\gentopo.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\lander.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\lander.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\lifeform.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\orbits.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\oval.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\pl_stuff.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\plandata.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\planets.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\planets.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\plangen.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\pstarmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\report.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\roster.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\scan.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\scan.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\solarsys.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\solarsys.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\sundata.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\planets\surface.c +# End Source File +# End Group +# Begin Group "ships" + +# PROP Default_Filter "" +# Begin Group "androsyn" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\androsyn\androsyn.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\androsyn\androsyn.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\androsyn\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\androsyn\resinst.h +# End Source File +# End Group +# Begin Group "arilou" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\arilou\arilou.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\arilou\arilou.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\arilou\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\arilou\resinst.h +# End Source File +# End Group +# Begin Group "blackurq" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\blackurq\blackurq.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\blackurq\blackurq.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\blackurq\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\blackurq\resinst.h +# End Source File +# End Group +# Begin Group "chenjesu" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chenjesu\chenjesu.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chenjesu\chenjesu.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chenjesu\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chenjesu\resinst.h +# End Source File +# End Group +# Begin Group "chmmr" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chmmr\chmmr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chmmr\chmmr.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chmmr\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\chmmr\resinst.h +# End Source File +# End Group +# Begin Group "druuge" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\druuge\druuge.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\druuge\druuge.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\druuge\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\druuge\resinst.h +# End Source File +# End Group +# Begin Group "human" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\human\human.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\human\human.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\human\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\human\resinst.h +# End Source File +# End Group +# Begin Group "ilwrath" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\ilwrath\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\ilwrath\ilwrath.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\ilwrath\ilwrath.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\ilwrath\resinst.h +# End Source File +# End Group +# Begin Group "lastbat" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\lastbat\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\lastbat\lastbat.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\lastbat\lastbat.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\lastbat\resinst.h +# End Source File +# End Group +# Begin Group "melnorme" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\melnorme\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\melnorme\melnorme.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\melnorme\melnorme.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\melnorme\resinst.h +# End Source File +# End Group +# Begin Group "mmrnmhrm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mmrnmhrm\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mmrnmhrm\mmrnmhrm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mmrnmhrm\mmrnmhrm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mmrnmhrm\resinst.h +# End Source File +# End Group +# Begin Group "mycon" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mycon\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mycon\mycon.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mycon\mycon.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\mycon\resinst.h +# End Source File +# End Group +# Begin Group "orz" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\orz\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\orz\orz.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\orz\orz.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\orz\resinst.h +# End Source File +# End Group +# Begin Group "pkunk" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\pkunk\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\pkunk\pkunk.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\pkunk\pkunk.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\pkunk\resinst.h +# End Source File +# End Group +# Begin Group "probe" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\probe\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\probe\probe.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\probe\probe.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\probe\resinst.h +# End Source File +# End Group +# Begin Group "shofixti" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\shofixti\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\shofixti\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\shofixti\shofixti.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\shofixti\shofixti.h +# End Source File +# End Group +# Begin Group "sis_ship" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\sis_ship\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\sis_ship\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\sis_ship\sis_ship.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\sis_ship\sis_ship.h +# End Source File +# End Group +# Begin Group "slylandr" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\slylandr\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\slylandr\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\slylandr\slylandr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\slylandr\slylandr.h +# End Source File +# End Group +# Begin Group "spathi" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\spathi\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\spathi\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\spathi\spathi.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\spathi\spathi.h +# End Source File +# End Group +# Begin Group "supox" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\supox\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\supox\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\supox\supox.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\supox\supox.h +# End Source File +# End Group +# Begin Group "syreen" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\syreen\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\syreen\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\syreen\syreen.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\syreen\syreen.h +# End Source File +# End Group +# Begin Group "thradd" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\thradd\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\thradd\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\thradd\thradd.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\thradd\thradd.h +# End Source File +# End Group +# Begin Group "umgah" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\umgah\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\umgah\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\umgah\umgah.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\umgah\umgah.h +# End Source File +# End Group +# Begin Group "urquan" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\urquan\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\urquan\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\urquan\urquan.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\urquan\urquan.h +# End Source File +# End Group +# Begin Group "utwig" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\utwig\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\utwig\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\utwig\utwig.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\utwig\utwig.h +# End Source File +# End Group +# Begin Group "vux" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\vux\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\vux\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\vux\vux.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\vux\vux.h +# End Source File +# End Group +# Begin Group "yehat" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\yehat\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\yehat\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\yehat\yehat.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\yehat\yehat.h +# End Source File +# End Group +# Begin Group "zoqfot" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\ships\zoqfot\icode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\zoqfot\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\zoqfot\zoqfot.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ships\zoqfot\zoqfot.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\ships\ship.h +# End Source File +# End Group +# Begin Group "supermelee" + +# PROP Default_Filter "" +# Begin Group "netplay" + +# PROP Default_Filter "" +# Begin Group "proto" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\npconfirm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\npconfirm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\ready.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\ready.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\reset.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\proto\reset.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\checkbuf.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\checkbuf.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\checksum.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\checksum.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\crc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\crc.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\nc_connect.ci +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netconnection.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netconnection.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netinput.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netinput.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netmelee.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netmelee.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netmisc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netmisc.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netoptions.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netoptions.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netplay.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netrcv.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netrcv.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netsend.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netsend.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netstate.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\netstate.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\notify.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\notify.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\notifyall.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\notifyall.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packet.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packet.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packethandlers.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packethandlers.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packetq.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packetq.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packetsenders.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\netplay\packetsenders.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\buildpick.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\buildpick.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\loadmele.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\loadmele.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\melee.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\melee.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\meleesetup.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\meleesetup.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\pickmele.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\supermelee\pickmele.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\uqm\battle.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\battle.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\battlecontrols.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\battlecontrols.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\border.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\build.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\build.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cleanup.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\clock.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\clock.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cnctdlg.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cnctdlg.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\coderes.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\collide.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\collide.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\colors.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\comm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\commanim.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\commanim.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\commglue.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\commglue.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\confirm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cons_res.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cons_res.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\controls.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\corecode.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\credits.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\credits.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\cyborg.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\demo.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\displist.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\displist.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\dummy.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\dummy.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\element.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\encount.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\encount.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\flash.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\flash.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\fmv.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\fmv.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\galaxy.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gameev.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gameev.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gameinp.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gameopt.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gameopt.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gamestr.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gendef.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gendef.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\getchar.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\globdata.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\globdata.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\gravity.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\grpinfo.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\grpinfo.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\hyper.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\hyper.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ifontres.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\igfxres.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ikey_con.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\imusicre.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\init.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\init.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\intel.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\intel.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\intro.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ipdisp.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ipdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\isndres.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\istrtab.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\load.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\load.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\loadship.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\master.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\master.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\menu.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\menustat.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\misc.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\nameref.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\oscill.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\oscill.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\outfit.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\pickship.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\pickship.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\plandata.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\process.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\process.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\races.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\resinst.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\restart.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\restart.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\restypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\save.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\save.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\settings.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\settings.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\setup.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\setup.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\setupmenu.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\setupmenu.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ship.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\ship.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\shipcont.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\shipstat.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\shipyard.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\sis.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\sis.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\sounds.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\sounds.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starbase.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starbase.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starcon.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starcon.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starmap.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\starmap.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\state.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\state.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\status.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\status.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\tactrans.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\tactrans.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\trans.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\units.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\uqmdebug.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\uqmdebug.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\util.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\util.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\velocity.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\velocity.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\weapon.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm\weapon.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\config.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\config_vc6.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\endian_uqm.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\options.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\options.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\port.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\port.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\types.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqm.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\uqmversion.h +# End Source File +# End Group +# Begin Group "Doc" + +# PROP Default_Filter "" +# Begin Group "Devel" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\doc\devel\aniformat +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\checklist +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\debug +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\dialogs +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\files +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\fontres +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\generate +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\gfxlib +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\gfxres +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\gfxversions +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\glossary +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\input +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\musicres +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\pkgformat +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\planetrender +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\planetrotate +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\plugins +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\resources +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\script +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\sfx +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\strtab +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\threads +# End Source File +# Begin Source File + +SOURCE=..\..\doc\devel\timing +# End Source File +# End Group +# Begin Group "Users" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\doc\users\manual.txt +# End Source File +# Begin Source File + +SOURCE=..\..\doc\users\unixinstall +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\BUGS +# End Source File +# Begin Source File + +SOURCE=..\..\ChangeLog +# End Source File +# Begin Source File + +SOURCE=..\..\TODO +# End Source File +# End Group +# Begin Group "Resources" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE="..\..\src\res\kohr-ah1.ico" +# End Source File +# Begin Source File + +SOURCE=..\..\src\res\sis1.ico +# End Source File +# Begin Source File + +SOURCE=..\..\src\res\starcon2.ico +# End Source File +# Begin Source File + +SOURCE="..\..\src\res\ur-quan-icon-alpha.ico" +# End Source File +# Begin Source File + +SOURCE="..\..\src\res\ur-quan-icon-std.ico" +# End Source File +# Begin Source File + +SOURCE="..\..\src\res\ur-quan1.ico" +# End Source File +# Begin Source File + +SOURCE="..\..\src\res\ur-quan2.ico" +# End Source File +# Begin Source File + +SOURCE=..\..\src\res\UrQuanMasters.rc +# End Source File +# End Group +# End Target +# End Project diff --git a/build/msvc6/UrQuanMasters.dsw b/build/msvc6/UrQuanMasters.dsw new file mode 100644 index 0000000..7d42e80 --- /dev/null +++ b/build/msvc6/UrQuanMasters.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "UrQuanMasters"=".\UrQuanMasters.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/build/unix/README b/build/unix/README new file mode 100644 index 0000000..0cad7d9 --- /dev/null +++ b/build/unix/README @@ -0,0 +1,5 @@ +This directory contains files used for building and installing +on unix-like environments. +There's no need to use any of those directly; type './build.sh' from +the top dir to get started. + diff --git a/build/unix/README.crossbuild b/build/unix/README.crossbuild new file mode 100644 index 0000000..3992087 --- /dev/null +++ b/build/unix/README.crossbuild @@ -0,0 +1,49 @@ +-= Instructions for cross-building UQM =- + + +Terminology: + Build system + The system on which the code is being built. + Host system + The system on which the code is supposed to run on. + + +Set the environment variable 'CROSS_ROOT' to the root of your cross building +environment. This is not necessary for the build scripts, but it will +simplify what you type in the following steps. + +Make sure your cross-building tools (gcc, ld, etc) are in the path. + export PATH=$CROSS_ROOT/bin:$PATH +Make sure that it isn't being reset by subshells that are started. + unset ENV BASH_ENV + +Set the environment variable 'BUILD_HOST' to the host system. +This is whatever 'uname -s' returns on such a system (like "MINGW32"). +When building for Windows CE, using the cegcc tools, you should use "cegcc". + +If your host system is big-endian, set the environment variable +'BUILD_HOST_ENDIAN' to "big". For a little-endian system, you don't +have to do anything. + export BUILD_HOST_ENDIAN=little + +If you're using pkg-config (advised), set the environment variable +PKG_CONFIG_PATH' to the pkgconfig directory of the cross environment. +This dir normally resides in the 'lib/' directory. + export PKG_CONFIG_PATH=$CROSS_ROOT/lib/pkgconfig + +For any libraries that can't be detected - which will be a lot if you +don't use pkg-config - set the corresponding include dirs in CFLAGS and +library dirs in LDFLAGS. + export CFLAGS="-I$CROSS_ROOT/include" + export LDFLAGS="-L$CROSS_ROOT/lib" + +Run configure: + ./build.sh uqm config +This will produce the file 'build.vars' and 'config_unix.h' (or config_win.h +on MinGW or Cygwin). If there are any problems during the build, you can +usually easilly solve them by editing these files manually. + +Start the compilation: + ./build.sh uqm + + diff --git a/build/unix/README.packages b/build/unix/README.packages new file mode 100644 index 0000000..68acfaf --- /dev/null +++ b/build/unix/README.packages @@ -0,0 +1,31 @@ +This file describes the easiest way to use this build system from +a packaging system such as rpm. + +If you want an interactive configuration, you can start the build process +like you would do manually: + ./build.sh uqm +to build the game, and + ./build.sh uqm install +to install it. + + +If you want the configuration to be non-interactive, you'll want to do +the following: execute + ./build.sh uqm config +once. This will generate a 'config.vars' file, which you can then +include in your package. Then when you want to build the game, put this +file the directory pointed to by $BUILD_WORK (default is the current +directory), and do + ./build.sh uqm reprocess_config +to generate all the configuration information for the build, and then + ./build.sh uqm +to build the game, and + ./build.sh uqm install +to install it. + +You may wish to set the environment variable BUILD_WORK to a directory +where the files created in the configuration and build process should be +stored. That way, the source tree will remain clean and no write access +to it is required. + + diff --git a/build/unix/ansi b/build/unix/ansi new file mode 100644 index 0000000..ac5b97f --- /dev/null +++ b/build/unix/ansi @@ -0,0 +1,21 @@ +ESC=`printf '\033'` +ANSI_BOLD="${ESC}[1m" +ANSI_NORMAL="${ESC}[0m" + +ANSI_BLK="${ESC}[30m" +ANSI_RED="${ESC}[31m" +ANSI_GRN="${ESC}[32m" +ANSI_YLW="${ESC}[33m" +ANSI_BLU="${ESC}[34m" +ANSI_MGN="${ESC}[35m" +ANSI_CYN="${ESC}[36m" +ANSI_WHT="${ESC}[37m" +ANSI_LBLK="${ESC}[1;30m" +ANSI_LRED="${ESC}[1;31m" +ANSI_LGRN="${ESC}[1;32m" +ANSI_LYLW="${ESC}[1;33m" +ANSI_LBLU="${ESC}[1;34m" +ANSI_LMGN="${ESC}[1;35m" +ANSI_LCYN="${ESC}[1;36m" +ANSI_LWHT="${ESC}[1;37m" + diff --git a/build/unix/build.config b/build/unix/build.config new file mode 100644 index 0000000..4b4ef3c --- /dev/null +++ b/build/unix/build.config @@ -0,0 +1,780 @@ +# This file is sourced by build.sh + +# Include build functions used here +. build/unix/config_functions +. build/unix/menu_functions +. build/unix/ansi + + +uqm_requirements() +{ + # Some requirements: + have_build_tools_language C || exit 1 + have_build_tools_language CXX || exit 1 + have_build_tool LINK || exit 1 + case "$HOST_SYSTEM" in + MINGW32*|cegcc) + have_build_tool WINDRES || exit 1 + ;; + Darwin) + have_build_tools_language OBJC || exit 1 + have_build_tool REZ || exit 1 + ;; + esac + + + # Define WORDS_BIGENDIAN on bigendian machines + check_endianness + + + # Libraries always used + have_library SDL 1.2.8 + have_library SDL2 + have_library SDL 1.2.8 || have_library SDL2 || exit 1 + use_library libpng || exit 1 + + case "$HOST_SYSTEM" in + WINSCW|ARMV5|GCCE) + # Symbian does not use dynamically generated config.h + return + ;; + esac + + # Add defines for HAVE_READDIR_R, HAVE_SETENV, HAVE_STRUPR, + # HAVE_STRCASECMP, and HAVE_STRICMP + define_have_symbol readdir_r + define_have_symbol setenv + define_have_symbol strupr + define_have_symbol strcasecmp + define_have_symbol stricmp + + # Check to see whether math functions are available for free. + define_have_symbol acos + + # Require either strcasecmp or stricmp. + if not have_symbol strcasecmp && not have_symbol stricmp; then + echo "Fatal: Your system defines neither strcasecmp() nor stricmp()." + exit 1 + fi + + # If we don't have math for free, add -lm to LDFLAGS. + if not have_symbol acos; then + LDFLAGS="$LDFLAGS -lm" + fi + + # Add defines for HAVE_ISWGRAPH, HAVE_WCHAR_T, and HAVE_WINT_T + define_have_symbol iswgraph + define_have_type wchar_t + define_have_type wint_t + + # Add defines for HAVE_GETOPT_LONG and HAVE_REGEX_H + define_have_symbol getopt_long + define_have_header regex.h + + # If we have the regex header, see if we need to link it specially + case "$HOST_SYSTEM" in + MINGW32*) + LDFLAGS="$LDFLAGS -lregex" + ;; + esac + + # Add define for HAVE__BOOL + define_have_type _Bool + + # Add an environment variable for MACRO_WIN32 and MACRO___MINGW32__ + define_have_macro WIN32 + define_have_macro __MINGW32__ + + if [ -n "$MACRO___MINGW32__" ]; then + USE_WINSOCK=1 + fi +} + +uqm_prepare_config() +{ + # Describe the menu: + MENU_main_ITEMS="debug graphics sound mikmod ovcodec netplay joystick \ + ioformat accel threadlib" + case "$HOST_SYSTEM" in + Darwin|WINSCW|ARMV5|GCCE) + # Installation directory not modifiable + ;; + MINGW32*|cegcc) + # No install procedure available for MinGW + ;; + *) + MENU_main_ITEMS="$MENU_main_ITEMS install_path" + ;; + esac + MENU_main_TITLE="Main menu" + MENU_main_ITEM_debug_TYPE=CHOICE + MENU_main_ITEM_graphics_TYPE=CHOICE + MENU_main_ITEM_sound_TYPE=CHOICE + MENU_main_ITEM_mikmod_TYPE=CHOICE + MENU_main_ITEM_ovcodec_TYPE=CHOICE + MENU_main_ITEM_netplay_TYPE=CHOICE + MENU_main_ITEM_joystick_TYPE=CHOICE + MENU_main_ITEM_ioformat_TYPE=CHOICE + MENU_main_ITEM_accel_TYPE=CHOICE + MENU_main_ITEM_threadlib_TYPE=CHOICE + MENU_main_ITEM_install_path_TYPE=MENU + + CHOICE_debug_OPTIONS="nodebug debug strictdebug" + CHOICE_debug_TITLE="Type of build" + CHOICE_debug_OPTION_nodebug_TITLE="Optimised release build" + CHOICE_debug_OPTION_nodebug_ACTION='nodebug_action' + nodebug_action() { + case "$HOST_SYSTEM" in + WINSCW) + CCOMMONFLAGS="$CCOMMONFLAGS -O2 -d NDEBUG" + ;; + ARMV5) + CCOMMONFLAGS="$CCOMMONFLAGS -O3 -Otime -DNDEBUG" + ;; + GCCE) + CCOMMONFLAGS="$CCOMMONFLAGS -O3 -DNDEBUG" + ;; + *) + CCOMMONFLAGS="$CCOMMONFLAGS -O3 -DNDEBUG" + ;; + esac + DEBUG=0 + } + CHOICE_debug_OPTION_debug_TITLE="Debugging build" + CHOICE_debug_OPTION_debug_ACTION='debug_action' + debug_action() { + case "$HOST_SYSTEM" in + WINSCW) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -W all -d DEBUG -d _DEBUG" + ;; + ARMV5|GCCE) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -DDEBUG -D_DEBUG" + ;; + *) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -W -Wall -DDEBUG" + LDFLAGS="$LDFLAGS -O0" + ;; + esac + DEBUG=1 + } + CHOICE_debug_OPTION_strictdebug_TITLE="Debug + strict compile checks" + CHOICE_debug_OPTION_strictdebug_ACTION='strictdebug_action' + strictdebug_action() { + case "$HOST_SYSTEM" in + WINSCW) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -W all -d DEBUG -d _DEBUG" + ;; + ARMV5|GCCE) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -DDEBUG -D_DEBUG" + ;; + *) + CCOMMONFLAGS="$CCOMMONFLAGS -g -O0 -DDEBUG -W -Wall" +# CCOMMONFLAGS="$CCOMMONFLAGS -O1" + # This is needed for -Wunitialized with gcc 3.4 + CCOMMONFLAGS="$CCOMMONFLAGS -Wcast-qual -Wmissing-declarations \ + -Wwrite-strings -Wimplicit -Wreturn-type -Wformat \ + -Wswitch -Wcomment -Wchar-subscripts \ + -Wparentheses -Wcast-align -Wuninitialized" + CFLAGS="$CFLAGS -Wbad-function-cast -Wmissing-prototypes \ + -Wstrict-prototypes" + # CFLAGS is for flags not valid in C++. + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + # Until we abandon MSVC 6 +# CCOMMONFLAGS="$CCOMMONFLAGS -Waggregate-return" + # It's not unreasonable to return structs at times. +# CCOMMONFLAGS="$CCOMMONFLAGS "-Wpointer-arith" + # Some standard header won't even compile with this on +# CCOMMONFLAGS="$CCOMMONFLAGS -Wshadow" + # This gives absurd conflicts with standard files, + # like from 'y0 and y1' +# CCOMMONFLAGS="$CCOMMONFLAGS -Werror" + # We shouldn't do this until we actually nail them + # all in the original code. Then we can enforce them + # on ourselves. +# CCOMMONFLAGS="$CCOMMONFLAGS -pedantic-errors -ansi -trigraphs" # ANSI +# CCOMMONFLAGS="$CCOMMONFLAGS -Wnested-externs" + # We know they're in the code, and though we'd like to + # get rid of them, they're not bugs. +# CCOMMONFLAGS="$CCOMMONFLAGS -Winline" + # This gives too many warnings which we can do nothing + # about, obscuring legitimate warnings. + CFLAGS=`echo $CFLAGS` + CXXFLAGS=`echo $CXXFLAGS` + CCOMMONFLAGS=`echo $CCOMMONFLAGS` + # Remove all the unnecessary spaces from the flags vars + # for more readable messages. + LDFLAGS="$LDFLAGS -O0" + ;; + esac + DEBUG=1 + } + case "$HOST_SYSTEM" in + ARMV5|WINSCW|GCCE) + CHOICE_debug_DEFAULT=nodebug + ;; + *) + CHOICE_debug_DEFAULT=debug + ;; + esac + + + CHOICE_graphics_OPTIONS="pure opengl sdl2" + CHOICE_graphics_TITLE="Graphics Engine" + CHOICE_graphics_OPTION_pure_TITLE="SDL1 without OpenGL graphics support" + CHOICE_graphics_OPTION_pure_ACTION='graphics_pure_action' + CHOICE_graphics_OPTION_pure_PRECOND='have_library SDL 1.2.8' + graphics_pure_action() { + CFLAGS="$CFLAGS -DGFXMODULE_SDL -DSDL_DIR=SDL" + CCOMMONFLAGS="$CCOMMONFLAGS -DGFXMODULE_SDL" + GFXMODULE=sdl + HAVE_OPENGL=0 + use_library SDL 1.2.8 + } + CHOICE_graphics_OPTION_opengl_TITLE="SDL1 with OpenGL graphics support" + CHOICE_graphics_OPTION_opengl_ACTION='graphics_opengl_action' + CHOICE_graphics_OPTION_opengl_PRECOND="have_library SDL 1.2.8 && have_library opengl" + graphics_opengl_action() { + CFLAGS="$CFLAGS -DGFXMODULE_SDL -DHAVE_OPENGL -DSDL_DIR=SDL" + GFXMODULE=sdl + HAVE_OPENGL=1 + use_library SDL 1.2.8 && use_library opengl + } + CHOICE_graphics_OPTION_sdl2_TITLE="SDL2 with modern graphics support" + CHOICE_graphics_OPTION_sdl2_ACTION='graphics_sdl2_action' + CHOICE_graphics_OPTION_sdl2_PRECOND='have_library SDL2' + graphics_sdl2_action() { + CFLAGS="$CFLAGS -DGFXMODULE_SDL -DSDL_DIR=SDL2" + GFXMODULE=sdl + HAVE_OPENGL=0 + use_library SDL2 + } + if have_library SDL2; then + CHOICE_graphics_DEFAULT=sdl2 + elif have_library opengl; then + CHOICE_graphics_DEFAULT=opengl + else + CHOICE_graphics_DEFAULT=pure + fi + + CHOICE_sound_OPTIONS="mixsdl openal" + CHOICE_sound_TITLE="Sound backend" + CHOICE_sound_OPTION_mixsdl_TITLE="Use MixSDL for sound (internal)" + CHOICE_sound_OPTION_mixsdl_ACTION=sound_mixsdl_action + sound_mixsdl_action() { + SOUNDMODULE=mixsdl + } + CHOICE_sound_OPTION_openal_TITLE="Include OpenAL support (experimental)" + CHOICE_sound_OPTION_openal_PRECOND="have_library openal" + CHOICE_sound_OPTION_openal_ACTION=sound_openal_action + sound_openal_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DHAVE_OPENAL" + SOUNDMODULE=openal + use_library openal + } + CHOICE_sound_DEFAULT=mixsdl + + CHOICE_ovcodec_OPTIONS="standard tremor none" + CHOICE_ovcodec_TITLE="Ogg Vorbis codec" + CHOICE_ovcodec_OPTION_standard_TITLE="Xiph libogg + libvorbis" + CHOICE_ovcodec_OPTION_standard_PRECOND="have_library vorbisfile" + CHOICE_ovcodec_OPTION_standard_ACTION=ovcodec_standard_action + ovcodec_standard_action() { + use_library vorbisfile + OGGVORBIS=vorbisfile + } + CHOICE_ovcodec_OPTION_tremor_TITLE="Tremor (avoids floating point math)" + CHOICE_ovcodec_OPTION_tremor_PRECOND="have_library tremor" + CHOICE_ovcodec_OPTION_tremor_ACTION=ovcodec_tremor_action + ovcodec_tremor_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DOVCODEC_TREMOR" + OGGVORBIS=tremor + use_library tremor + } + CHOICE_ovcodec_OPTION_none_TITLE="No Ogg Vorbis support" + CHOICE_ovcodec_OPTION_none_ACTION=ovcodec_none_action + ovcodec_none_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DOVCODEC_NONE" + OGGVORBIS=none + } + CHOICE_ovcodec_DEFAULT=standard + + CHOICE_mikmod_OPTIONS="internal external" + CHOICE_mikmod_TITLE="Tracker music support" + CHOICE_mikmod_OPTION_internal_TITLE="Included libmikmod" + CHOICE_mikmod_OPTION_internal_ACTION=mikmod_internal_action + mikmod_internal_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DUSE_INTERNAL_MIKMOD" + USE_INTERNAL_MIKMOD=1 + } + CHOICE_mikmod_OPTION_external_TITLE="System libmikmod" + CHOICE_mikmod_OPTION_external_PRECOND="have_library libmikmod" + CHOICE_mikmod_OPTION_external_ACTION=mikmod_external_action + mikmod_external_action() { + USE_INTERNAL_MIKMOD="" + use_library libmikmod + } + CHOICE_mikmod_DEFAULT=internal + + CHOICE_joystick_OPTIONS="enabled disabled" + CHOICE_joystick_TITLE="Joystick support" + CHOICE_joystick_OPTION_enabled_TITLE="enabled" + #CHOICE_joystick_OPTION_enabled_PRECOND="have_symbol SDL_Joystick" + # TODO: Check whether SDL has joystick support. + CHOICE_joystick_OPTION_enabled_ACTION=joystick_enabled_action + joystick_enabled_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DHAVE_JOYSTICK" + } + CHOICE_joystick_OPTION_disabled_TITLE="disabled" + case "$HOST_SYSTEM" in + ARMV5|WINSCW|GCCE) + CHOICE_joystick_DEFAULT=disabled + ;; + *) + CHOICE_joystick_DEFAULT=enabled + ;; + esac + + + CHOICE_netplay_OPTIONS="none full ipv4" + CHOICE_netplay_TITLE="Network Supermelee support" + CHOICE_netplay_OPTION_none_TITLE="disabled" + CHOICE_netplay_OPTION_none_ACTION=netplay_none_action + netplay_none_action() { + NETPLAY="" + } + CHOICE_netplay_OPTION_full_TITLE="IPv4 and IPv6" + CHOICE_netplay_OPTION_full_PRECOND="have_library netlibs" + CHOICE_netplay_OPTION_full_ACTION=netplay_full_action + netplay_full_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DNETPLAY=NETPLAY_FULL" + if [ -n "$MACRO_WIN32" ]; then + LDFLAGS="$LDFLAGS -lws2_32" + fi + NETPLAY="FULL" + use_library netlibs + } + CHOICE_netplay_OPTION_ipv4_TITLE="IPv4; no IPv6" + CHOICE_netplay_OPTION_ipv4_PRECOND="have_library netlibs" + CHOICE_netplay_OPTION_ipv4_ACTION=netplay_ipv4_action + netplay_ipv4_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DNETPLAY=NETPLAY_IPV4" + NETPLAY="IPV4" + use_library netlibs + } + CHOICE_netplay_DEFAULT=full + + CHOICE_ioformat_OPTIONS="stdio stdio_zip" + CHOICE_ioformat_TITLE="Supported file i/o methods" + CHOICE_ioformat_OPTION_stdio_TITLE="Only direct file i/o" + CHOICE_ioformat_OPTION_stdio_zip_TITLE="Direct & .zip file i/o" + CHOICE_ioformat_OPTION_stdio_zip_PRECOND="have_library zlib" + CHOICE_ioformat_OPTION_stdio_zip_ACTION="ioformat_stdio_zip_action" + ioformat_stdio_zip_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DHAVE_ZIP=1" + USE_ZIP_IO=1 + use_library zlib + } + CHOICE_ioformat_DEFAULT=stdio_zip + + CHOICE_accel_OPTIONS="asm plainc" + CHOICE_accel_TITLE="Graphics/Sound optimizations" + CHOICE_accel_OPTION_asm_TITLE="Platform acceleration (asm, etc.)" + CHOICE_accel_OPTION_asm_ACTION="accel_asm_action" + accel_asm_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DUSE_PLATFORM_ACCEL" + USE_PLATFORM_ACCEL=1 + } + CHOICE_accel_OPTION_plainc_TITLE="Only plain C code" + CHOICE_accel_OPTION_plainc_ACTION="accel_plainc_action" + accel_plainc_action() { + USE_PLATFORM_ACCEL=0 + } + CHOICE_accel_DEFAULT=asm + + CHOICE_threadlib_OPTIONS="sdl pthread" + CHOICE_threadlib_TITLE="Thread library" + CHOICE_threadlib_OPTION_sdl_TITLE="SDL-controlled thread library" + CHOICE_threadlib_OPTION_sdl_ACTION="threadlib_sdl_action" + threadlib_sdl_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DTHREADLIB_SDL" + THREADLIB="SDL" + } + CHOICE_threadlib_OPTION_pthread_TITLE="Pthread thread library" + CHOICE_threadlib_OPTION_pthread_PRECOND="have_library pthread" + CHOICE_threadlib_OPTION_pthread_ACTION="threadlib_pthread_action" + threadlib_pthread_action() { + CCOMMONFLAGS="$CCOMMONFLAGS -DTHREADLIB_PTHREAD" + THREADLIB="PTHREAD" + use_library pthread + } + CHOICE_threadlib_DEFAULT=sdl + + MENU_install_path_ITEMS="install_prefix install_bindir install_libdir \ + install_sharedir" + MENU_install_path_TITLE="Installation paths" + MENU_install_path_ITEM_install_prefix_TYPE=INPUT + MENU_install_path_ITEM_install_bindir_TYPE=INPUT + MENU_install_path_ITEM_install_libdir_TYPE=INPUT + MENU_install_path_ITEM_install_sharedir_TYPE=INPUT + + INPUT_install_prefix_DEFAULT="/usr/local/games" + INPUT_install_prefix_TITLE="Installation prefix" + INPUT_install_prefix_VALIDATOR=validate_path + INPUT_install_prefix_ACTION='eval INSTALL_PREFIX=$MENU_install_prefix_VALUE' + + INPUT_install_bindir_DEFAULT='$prefix/bin' + INPUT_install_bindir_TITLE="Location for binaries" + INPUT_install_bindir_VALIDATOR=validate_path + + INPUT_install_libdir_DEFAULT='$prefix/lib' + INPUT_install_libdir_TITLE="Location for non-sharable data" + INPUT_install_libdir_VALIDATOR=validate_path + + INPUT_install_sharedir_DEFAULT='$prefix/share' + INPUT_install_sharedir_TITLE="Location for sharable data" + INPUT_install_sharedir_VALIDATOR=validate_path +} + +uqm_do_config() +{ + # Show the menu and let people set things + do_menu MENU main "$BUILD_WORK/config.state" + echo "Configuration complete." +} + +uqm_process_config() { + menu_process MENU main + + # Set INSTALL_LIBDIR, INSTALL_BINDIR, and INSTALL_SHAREDIR to the specified + # values, replacing '$prefix' to the prefix set. + local prefix + prefix="$INPUT_install_prefix_VALUE" + eval INSTALL_BINDIR="${INPUT_install_bindir_VALUE%/}/" + eval INSTALL_LIBDIR="${INPUT_install_libdir_VALUE%/}/" + eval INSTALL_SHAREDIR="${INPUT_install_sharedir_VALUE%/}/" + + # Set the content dir + CONTENTDIR="${INSTALL_SHAREDIR}uqm/content" + + CCOMMONFLAGS="$CCOMMONFLAGS -I\"$BUILD_WORK\"" + + # Set C++ only flags + # These allow use of C++ without the standard library + CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions -nostdinc++" + + # At this point, all the compiler flags must be set. + CFLAGS="$CFLAGS $CCOMMONFLAGS" + CXXFLAGS="$CXXFLAGS $CCOMMONFLAGS" + CCOMMONFLAGS="" + + # Export the HAVE_ symbols to config_unix.h, using config_unix.h.in + # as template (or config_win.h/config_win.h.in). + SUBSTITUTE_VARS="$HAVE_SYMBOLS CONTENTDIR" + case "$HOST_SYSTEM" in + MINGW32*|CYGWIN*) + SUBSTITUTE_FILES="config_win.h" + ;; + *) + SUBSTITUTE_FILES="config_unix.h" + ;; + esac + substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES src "$BUILD_WORK" + + # Make build.vars from build.vars.in, substituting variables. + SUBSTITUTE_VARS="BUILD_SYSTEM HOST_SYSTEM CFLAGS CXXFLAGS LDFLAGS LINK \ + PREPROC_C MKDEP_C COMPILE_C \ + PREPROC_CXX MKDEP_CXX COMPILE_CXX \ + PREPROC_OBJC MKDEP_OBJC COMPILE_OBJC \ + MAKE ECHON SED DEBUG JOYSTICK NETPLAY \ + OGGVORBIS SOUNDMODULE USE_INTERNAL_MIKMOD \ + GFXMODULE HAVE_OPENGL \ + HAVE_GETOPT_LONG HAVE_REGEX_H_FLAG \ + USE_ZIP_IO USE_PLATFORM_ACCEL THREADLIB USE_WINSOCK \ + INSTALL_LIBDIR INSTALL_BINDIR INSTALL_SHAREDIR \ + REZ WINDRES $HAVE_SYMBOLS" + SUBSTITUTE_FILES="build.vars" + substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES . "$BUILD_WORK" + + # Make 'uqm' shell script from uqm-wrapper.in, substituting variables. + SUBSTITUTE_VARS="INSTALL_LIBDIR INSTALL_BINDIR INSTALL_SHAREDIR uqm_NAME" + SUBSTITUTE_FILES="uqm-wrapper" + substitute_vars SUBSTITUTE_VARS SUBSTITUTE_FILES build/unix "$BUILD_WORK" +} + +uqm_load_config() +{ + do_menu_load MENU main "$BUILD_WORK/config.state" +} + +uqm_save_config() +{ + do_menu_save MENU main "$BUILD_WORK/config.state" +} + +uqm_pre_build() { + : # Nothing to do +} + +uqm_post_build() { + local TARGET_FILE + local RFORK + eval TARGET_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_NAME}" + RFORK="src/res/darwin/${BUILD_PROJECT}.r" + + test -f "$TARGET_FILE" || return + + # If run from the command-line on OSX, the Window Manager + # will refuse to recognize the window unless the program has + # a resource fork; so we give it a small one here. When + # run from inside an application package, this step is useless + # (the cp command in the install step implicitly strips off + # the resource fork, in fact) + case "$HOST_SYSTEM" in + Darwin) + $REZ "$RFORK" -o "$TARGET_FILE" + ;; + ARMV5) + cp "$TARGET_FILE" "$BUILD_EPOCROOT/epoc32/release/armv5/urel/" + cd src/symbian + cmd \\/C bldmake bldfiles + cmd \\/C abld build armv5 urel + cd ../.. + ;; + WINSCW) + cp "$TARGET_FILE" "$BUILD_EPOCROOT/epoc32/release/winscw/udeb/" + cd src/symbian + cmd \\/C bldmake bldfiles + cmd \\/C abld build winscw udeb + cd ../.. + ;; + GCCE) + cp "$TARGET_FILE" "$BUILD_EPOCROOT/epoc32/release/armv5/urel/" + cd src/symbian + cmd \\/C bldmake bldfiles + cmd \\/C abld build gcce urel + cd ../.. + ;; + esac +} + +uqm_pre_install() { + : # Nothing to do +} + +uqm_install() { + case "$HOST_SYSTEM" in + Darwin) + uqm_install_osx + ;; + MINGW32*) + echo "No installation procedure available for MinGW." + echo "Read the manual for more information." + ;; + cegcc*) + echo "No installation procedure available for Windows CE." + echo "Read the manual for more information." + ;; + WINSCW) + uqm_install_winscw + ;; + ARMV5) + uqm_install_armv5 + ;; + GCCE) + uqm_install_gcce + ;; + *) + generic_install + ;; + esac +} + +uqm_post_install() { + : # Nothing to do +} + +uqm_install_osx() { + local VERSION HEADERS HEADER HEADER_FILE FRAMEWORK + + VERSION=`head -1 content/version` + + INSTROOT="$BUILD_WORK/The Ur-Quan Masters.app/Contents" + + # Make directory structure + echo "Creating directory structure..." >&2 + mkdirhier "$INSTROOT/MacOS" 0755 + mkdirhier "$INSTROOT/Frameworks" 0755 + mkdirhier "$INSTROOT/Resources/content/addons" 0755 + mkdirhier "$INSTROOT/Resources/content/packages" 0755 + + # Install misc. resources, icons, etc. + echo "Installing miscellaneous resources..." >&2 + $SED "s/@@VERSION@@/$VERSION/g" src/res/darwin/Info.plist > \ + "$INSTROOT/Info.plist" + cp src/res/darwin/PkgInfo "$INSTROOT" + cp "src/res/darwin/The Ur-Quan Masters.icns" "$INSTROOT/Resources" + + # Find Frameworks and copy them into the application. + echo "Copying dependancy Frameworks..." >&2 + HEADERS="Ogg/Ogg.h SDL/SDL.h SDL_image/SDL_image.h Vorbis/vorbisfile.h" + if [ "$uqm_SOUNDMODULE" = openal ]; then + HEADERS="$HEADERS OpenAL/al.h" + fi + for HEADER in $HEADERS; do + HEADER_FILE=`basename $HEADER` + eval FRAMEWORK=`echo '' | \ + $PREPROC_C -D__MACOSX__ -include $HEADER - | \ + awk '(/'$HEADER_FILE'/ && $2 == 1) { print $3; exit }' | \ + $SED 's/.Headers.*$/"/'` + cp -a "$FRAMEWORK" "$INSTROOT/Frameworks" + done + + # Install game content (it should probably make a zipfile) + echo "Creating base content package..." >&2 + cp content/version "$INSTROOT/Resources/content/" + (cd content && \ + find . -type f -not -path '*/CVS*' -not -path '*/.svn*' -not -path '*/addons*' -print | \ + $SED 's/^..//' | zip -X -q -n .ogg -8 -@ uqm-${VERSION}-prv-content.uqm) + mv content/uqm-$VERSION-prv-content.uqm "$INSTROOT/Resources/content/packages" + + echo "Creating voice content package..." >&2 + (cd content/addons && \ + find 3dovoice -type f -not -path '*/CVS*' -not -path '*/.svn*' -print | \ + zip -X -q -n .ogg -8 -@ ../uqm-${VERSION}-prv-voice.uqm) + mv content/uqm-$VERSION-prv-voice.uqm "$INSTROOT/Resources/content/addons" + + echo "Creating 3do music content package..." >&2 + (cd content/addons && \ + find 3domusic -type f -not -path '*/CVS*' -not -path '*/.svn*' -print | \ + zip -X -q -n .ogg -8 -@ ../uqm-${VERSION}-prv-3domusic.uqm) + mv content/uqm-$VERSION-prv-3domusic.uqm "$INSTROOT/Resources/content/addons" + + # Install game binary (and rename it) + echo "Installing executable..." >&2 + cp $uqm_NAME "$INSTROOT/MacOS/The Ur-Quan Masters" +} + +uqm_install_winscw() { + local PRIVATE_DIR + + PRIVATE_DIR="$BUILD_EPOCROOT/epoc32/winscw/c/private/A000A0C3" + + uqm_create_symbian_content_package + + echo "Creating directory structure to $PRIVATE_DIR ..." + mkdir "$PRIVATE_DIR" + mkdir "$PRIVATE_DIR/content" + mkdir "$PRIVATE_DIR/content/packages" + mkdir "$PRIVATE_DIR/userdata" + + echo "Copying data to $PRIVATE_DIR ..." + cp content/version "$PRIVATE_DIR/content" + cp content.uqm "$PRIVATE_DIR/content/packages" + cp src/symbian/uqm.cfg "$PRIVATE_DIR/userdata" +} + +uqm_install_armv5() { + uqm_create_symbian_content_package + + cd src/symbian + cmd \\/C makekeys -cert -expdays 9999 -password asdfgh -len 2048 -dname "CN=UQM OR=Ur-Quan Masters CO=FI" uqm.key uqm.cer + cmd \\/C makesis uqm-armv5.pkg uqm.sis + cmd \\/C signsis -v uqm.sis uqm.sisx uqm.cer uqm.key asdfgh + mv uqm.sisx ../.. + cd ../.. +} + +uqm_install_gcce() { + uqm_create_symbian_content_package + + cd src/symbian + cmd \\/C makekeys -cert -expdays 9999 -password asdfgh -len 2048 -dname "CN=UQM OR=Ur-Quan Masters CO=FI" uqm.key uqm.cer + cmd \\/C makesis uqm-gcce.pkg uqm.sis + cmd \\/C signsis -v uqm.sis uqm.sisx uqm.cer uqm.key asdfgh + mv uqm.sisx ../.. + cd ../.. +} + +uqm_create_symbian_content_package() { + if [ -e "content.uqm" ]; then + echo "Content package already exists, skipping" + return + fi + + local ANIFILE ANIFILES DNAME ESC_DNAME FONTDIR FONTDIRS FONTFILES + + echo "Building temporary content directory..." + cd content + find . -type f -not -path '*/CVS*' -not -path '*/.svn*' -not -path './addons*' -not -name "version" -not -name '*.png' -not -name '*.ani' -not -name '*.sml' -not -name '*.med' -not -name '*.mid' -not -name '*.big' >../content.lst + tar cf ../tmp1.tar -T ../content.lst + rm ../content.lst + mkdir ../tmpcontent + cd ../tmpcontent + tar xf ../tmp1.tar + rm ../tmp1.tar + cd ../content + + echo "Packing ani files..." + ANIFILES=`find . -regex ".*\(sml\|med\|mid\|big\|ani\)$"` + for ANIFILE in $ANIFILES; do + DNAME=`dirname $ANIFILE`/ + ESC_DNAME=`echo $DNAME|sed "s/\//\\\\\\\\\//g"` + mkdirhier ../tmpcontent/$DNAME 0755 + zip -q -j -0 ../tmpcontent/$ANIFILE $ANIFILE `cat $ANIFILE|cut -d " " -f 1|sed s/^/$ESC_DNAME/` + done + + echo "Packing font files..." + FONTDIRS=`find . -name '*.fon'` + for FONTDIR in $FONTDIRS; do + FONTFILES=`find $FONTDIR -name '*.png'|sort -t. +2.4 -n` + zip -q -j -0 ../tmpcontent/$FONTDIR $FONTFILES + done + + cd ../tmpcontent + echo "Building content package..." + zip -q -r ../content.uqm . + + cd .. + echo "Removing temporary content directory..." + rm -rf tmpcontent +} + +uqm_clean() { + case "$HOST_SYSTEM" in + MINGW32*|CYGWIN*) + rm -f "$BUILD_WORK/config_win.h" + ;; + ARMV5|GCCE) + local TARGET_FILE + eval TARGET_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_NAME}" + + rm -f "$BUILD_WORK/config_unix.h" + rm -f "$BUILD_EPOCROOT/epoc32/release/armv5/urel/$TARGET_FILE" + rm -f $TARGET_FILE uqm.sisx content.uqm + + cd src/symbian + cmd \\/C abld reallyclean + cmd \\/C bldmake clean + rm -f uqm.sis uqm.key uqm.cer + cd ../.. + ;; + WINSCW) + local TARGET_FILE + eval TARGET_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_NAME}" + + rm -f "$BUILD_WORK/config_unix.h" + rm -f "$BUILD_EPOCROOT/epoc32/release/winscw/udeb/$TARGET_FILE" + rm -f $TARGET_FILE content.uqm + + cd src/symbian + cmd \\/C abld reallyclean + cmd \\/C bldmake clean + cd ../.. + ;; + *) + rm -f "$BUILD_WORK/config_unix.h" + ;; + esac +} + + diff --git a/build/unix/build.docs b/build/unix/build.docs new file mode 100644 index 0000000..d24620b --- /dev/null +++ b/build/unix/build.docs @@ -0,0 +1,205 @@ +I've made this build system as a replacement for autoconf, autoheader, +automake, and aclocal as I found them to be too limiting and too slow. +This build system is not as complete as the auto* tools, but it's very +easy to extend. + +Some of the most important differences between this system and autoconf: +- it has a menu-driven configuration +- when compiling, the current directory will never change +- the object files are stored in a seperate tree from the source files, + leaving the latter clean, and easier grep-able. +- multiple object trees can be used, so you can have for instance a + debugging tree and a release tree side by side. +- it builds faster, mostly because libtool isn't used. + + +The files +--------- + +These are the files in the directory with the build script. +Of these files only build.config should be modified for a specific build. +For unknown dependencies, additions to config_proginfo_build or +config_proginfo_host might need to be made. The other files should not +be modified. +Only build.sh is to be called directly. + +ansi ansi colour definitions. +build.config configuration options for the program to build. + It contains the description of the configuration + menu, and specifies the dependencies. + The format of the menu description is listed briefly + below. +build.sh the sh script that is to be called for configuration, + building, and installation. +build_functions auxiliary functions to build.sh for building. +config_functions auxiliary functions to build.sh for configuration. +config_proginfo_build contains descriptions of dependencies for the + system where the code is being built. + The information in this file is used in particular + for detecting if those libraries and other external + programs are present. +config_proginfo_host contains descriptions of dependencies for the + system where the software will eventually be run. + The information in this file is used in particular + for detecting if those libraries and other external + programs are present. +menu_functions auxiliary functions to build.sh for menus. + + +The menu (from build.config) +---------------------------- + +There are three types of menu items. + +- Type MENU + A menu with menu items. + - Variables: + - MENU_${NAME}_TITLE + The title of the menu. + - MENU_${NAME}_TEXT (optional) + The text to show with the menu. + - MENU_${NAME}_ITEMS + The names of the menu items (space-seperated). + - MENU_${NAME}_ITEM_${ITEMNAME}_TYPE + The type of a menu item. +- Type CHOICE: + A choice between several options. + - Variables: + - CHOICE_${NAME}_TITLE + The title of the choice menu. + - CHOICE_${NAME}_TEXT (optional) + The text to show with the choice menu. + - CHOICE_${NAME}_OPTIONS + The names of the options (space-seperated). + - CHOICE_${NAME}_OPTION_${OPTIONNAME}_TITLE + The title of a menu option. + - CHOICE_${NAME}_OPTION_${OPTIONNAME}_ACTION + A command to be evaluated if this option is used. + - CHOICE_${NAME}_OPTION_${OPTIONNAME}_VALID (set by the config program) + 0 if the choice has been verified to be a valid choice + 1 if the choice has been verified to be not a valid choice + if the choice hasn't been verified to be valid + - CHOICE_${NAME}_DEFAULT (optional) + The default choice. + - CHOICE_${NAME}_VALUE (set by the config program) + The current choice. +- Type INPUT: + A string that is user-definable. + - Variables: + - INPUT_${NAME}_TITLE + The title of the input field. + - INPUT_${NAME}_TEXT (optional) + The text to show with the input field. + - INPUT_${NAME}_VALIDATOR (optional) + A function to call after the user supplied a new value which + checks if the value is allowed. It should accept the new value as + an argument, and return 1 if the value is not allowed, or return 0 + and output the (possibly modified) value, to accept it. + - INPUT_${NAME}_DEFAULT (optional) + The default value. + - INPUT_${NAME}_VALUE (set by the config program) + The current value. + - INPUT_${NAME}_OLD_VALUE (set by the config program) + The value as it was at the start of the config program. +- Type CHECK: + An option that can either be on or off, like a checkbox. + - Variables: + - CHECK_${NAME}_TITLE + The title of the input field. + - CHECK_${NAME}_DEFAULT (optional) + The default value, either 'CHECKED' or 'UNCHECKED'. + - CHECK_${NAME}_VALUE (set by the config program) + The current value, either 'CHECKED' or 'UNCHECKED'. + - CHECK_${NAME}_FIXED (optional) + A string that evaluates to 0 if this checkbox may not be changed. + + + +Program info (from config_proginfo_build) +----------------------------------------- + +Information about programs used should be supplied in the following form: + - PROG_${PROGRAM}_NAME + A string describing the program. + - PROG_${PROGRAM}_FILE + A string that evaluates to the executable that should be present if + this program is used. + - PROG_${PROGRAM}_ACTION (optional) + A command to be executed if this program is used, after the user is + done configuring. + - PROG_${PROGRAM}_DETECT (optional) + A command to be executed which should return 0 if the program is present + on the system, 1 if it is not present, or 2 to fallback to the default + detection. If no detect function was set, or it returned 2, 'type' is + used to check for the program in the path. + This command may include a shell command that modifies any of the + variables PROG_${PROGRAM}_FILE, PROG_${PROGRAM}_ACTION, or + PROG_${PROGRAM}_VERSION. + - PROG_${LIB}_DEPEND_DETECT_BIN (optional) + A list of space-separated binaries the detection of this program + depends on. + - PROG_${LIB}_DEPEND_DETECT_LIB (optional) + A list of space-separated libraries the detection of this program + depends on. + - PROG_${PROGRAM}_VERSION (optional) + A string that evaluates to the version of the executable that is + present, if it is present. + - PROG_${PROGRAM}_PRESENT (set by the configuration program) + 0 if the program has been verified to be present + 1 if the program has been verified to be not present + if presence of the program hasn't been verified + +Information about build tools in general (say "a C compiler"), where you're +not interested in what program is actually called, should be supplied in +the following corm: + - BUILDTOOL_${TOOL}_NAME + A string describing the build tool. + - BUILDTOOL_${TOOL}_COMMAND + The command, with arguments, that is to be executed to run this tool. + - BUILDTOOL_${TOOL}_DEPEND + A whitespace separated list of programs (as described above) + that this tool depends on. + - BUILDTOOL_${TOOL}_PRESENT (set by the configuration program) + 0 if the tool has been verified to be present + 1 if the tool has been verified to be not present + if presence of the tool hasn't been verified +Each tool described, once detected, will be available through the environment +variable with the name as specified in $TOOL. + + +Library info (from config_proginfo_host) +----------------------------------------- + +Information about libraries used should be supplied in the following form: + - LIB_${LIB}_NAME + A string describing the program. + - LIB_${LIB}_CFLAGS + A string which evaluates to the string to add to CFLAGS if this library + is used. + - LIB_${LIB}_LDLAGS + A string which evaluates to the string to add to LDLAGS if this library + is used. + - PROG_${LIB}_DETECT (optional) + A command to be executed which should return 0 if the library is present + on the system, 1 if it is not present, or 2 to fallback to the default + detection. If no detect function was set, or it returned 2, + an attempt is made to compile and link an empty C program with + the flags as in LIB_${LIB}_CFLAGS and LIB_${LIB}_LDFLAGS. + This command may include a shell command that modifies any of the + variables PROG_${LIB}_CFLAGS, PROG_${LIB}_LDFLAGS, or + PROG_${LIB}_VERSION. + - LIB_${LIB}_DEPEND_DETECT_BIN (optional) + A list of space-separated binaries the detection of this library depends + on. + - LIB_${LIB}_DEPEND_DETECT_LIB (optional) + A list of space-separated libraries the detection of this library depends + on. + - LIB_${LIB}_VERSION (optional) + A string that evaluates to the version of the library that is + present, if it is present. + - LIB_${LIB}_PRESENT (set by the configuration program) + 0 if the library has been verified to be present + 1 if the library has been verified to be not present + if presence of the library hasn't been verified + + diff --git a/build/unix/build.sh b/build/unix/build.sh new file mode 100644 index 0000000..002ce6a --- /dev/null +++ b/build/unix/build.sh @@ -0,0 +1,143 @@ +#!/bin/sh +# Build script +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This file contains functions for the general building procedure. +# You shouldn't need to change this file if your project changes. + +# Read in the functions we need +. build/unix/build_functions + +if [ -z "$BUILD_WORK" ]; then + BUILD_WORK=. + export BUILD_WORK +fi + +# Read in the config settings that affect the build, if present. +# Don't reread for every dir when recursing. +if [ -r "$BUILD_WORK/build.vars" ]; then + . "$BUILD_WORK/build.vars" +fi + +# Read in the Makeproject file +. ./Makeproject + +for VAR in TARGETS "$BUILD_PROJECT_NAME" "$BUILD_PROJECT_OBJS"; do + eval VALUE="\$$VAR" + if [ -z "$VALUE" ]; then + echo "$VAR needs to be defined in the top Makeproject file" + exit 1 + fi +done + +############################################## +### Everything below is parsing user input ### + +TOPDIR="$PWD" +export TOPDIR + +if [ $# -lt 1 ]; then + usage 1>&2 + exit 1; +fi + +# Load the configuration functions +. build/unix/build.config + +BUILD_THREADS="" +for i in "$@"; do + shift + if [ "`printf "%s" "$i" | cut -c1-2`" = "-j" ]; then + num="`printf "%s" "$i" | cut -c3-`" + if [ -z "$num" ] || [ "$num" -gt 0 ] 2>/dev/null; then + BUILD_THREADS="-j$num" + else + usage 1>&2 + exit 1 + fi + else + set -- "$@" "$i" + fi +done + +case "$1" in + cleanall) + build_cleanall + exit $? + ;; + distclean) + build_distclean + exit $? + ;; +esac + +unset TARGET +for TEMP in $TARGETS; do + if [ "$1" = "$TEMP" ]; then + TARGET="$1" + break + fi +done +if [ -z "$TARGET" ]; then + echo "Invalid target; choose one from:" + echo " $TARGETS" + exit 1 +fi +BUILD_PROJECT="$TARGET" +export TARGET BUILD_PROJECT ECHON +export PREPROC_C MKDEP_C COMPILE_C PREPROC_CXX MKDEP_CXX COMPILE_CXX PREPROC_OBJC MKDEP_OBJC COMPILE_OBJC WINDRES LINK +export "${BUILD_PROJECT}_CFLAGS" "${BUILD_PROJECT}_CXXFLAGS" "${BUILD_PROJECT}_LDFLAGS" + +# Add trailing / from objs dir +eval ${BUILD_PROJECT}_OBJS=\${${BUILD_PROJECT}_OBJS%/}/ +export "${BUILD_PROJECT}_OBJS" + +if [ $# -lt 2 ]; then + build_check_config + build_check_dependencies + build_compile $BUILD_THREADS + exit $? +fi + +case "$2" in + clean) + build_clean + ;; + config) + build_config + build_process_config + ;; + reprocess_config) + build_reconfig + ;; + depend) + build_check_config + build_depend + ;; + install) + build_check_config + build_check_dependencies + build_check_compile $BUILD_THREADS + build_install + ;; + *) + usage 1>&2 + exit 1; + ;; +esac + + diff --git a/build/unix/build_clean b/build/unix/build_clean new file mode 100644 index 0000000..ffc7440 --- /dev/null +++ b/build/unix/build_clean @@ -0,0 +1,29 @@ +#!/bin/sh + +# Find all the .c, .cpp, .m, and .rc files which are relevant for the project, +# and remove their respective object files in the work directory. + +# Expected to be passed from the environment: +# BUILD_PROJECT - the name of the project +# BUILD_ROOT - The root of the source files. +# BUILD_WORK - The root of the work directory. + +BUILD_ROOT=${BUILD_ROOT%/}/ +BUILD_WORK=${BUILD_WORK%/}/ +eval OBJDIR=\"${BUILD_WORK}\${${BUILD_PROJECT}_OBJS}\" + +. "${BUILD_ROOT}Makeproject" + +build/unix/recurse "$BUILD_PROJECT" "$BUILD_ROOT" | \ + while read TYPE FILE; do + case "$TYPE" in + C|CXX|M|RC) + rm -f -- "${OBJDIR}${REC_PREFIX}$FILE.d" \ + "${OBJDIR}${FILE}.o" + ;; + DIROUT) + rmdir -- "${OBJDIR}${FILE}" 2> /dev/null + ;; + esac +done + diff --git a/build/unix/build_collect b/build/unix/build_collect new file mode 100644 index 0000000..7a5dcb9 --- /dev/null +++ b/build/unix/build_collect @@ -0,0 +1,26 @@ +#!/bin/sh + +# Find all the .c, .cpp, .m, and .rc files which are relevant for the project, +# and map them to the work directory. + +# Expected to be passed from the environment: +# BUILD_PROJECT - the name of the project +# BUILD_ROOT - The root of the source files. +# BUILD_WORK - The root of the work directory. + +BUILD_ROOT=${BUILD_ROOT%/}/ +BUILD_WORK=${BUILD_WORK%/}/ +eval OBJDIR=\"${BUILD_WORK}\${${BUILD_PROJECT}_OBJS}\" + +. "${BUILD_ROOT}Makeproject" +. "${BUILD_WORK}build.vars" + +build/unix/recurse "$BUILD_PROJECT" "$BUILD_ROOT" | \ + while read TYPE FILE; do + case "$TYPE" in + C|CXX|M|RC) + echo "$OBJDIR$FILE" + ;; + esac +done + diff --git a/build/unix/build_functions b/build/unix/build_functions new file mode 100644 index 0000000..5f5d20b --- /dev/null +++ b/build/unix/build_functions @@ -0,0 +1,311 @@ +# Auxiliary functions for build.sh +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +DEPEND_NAME=make.depend + +# Show usage information +usage() { + echo "Main build script" + echo + echo "Syntax:" + echo " ./build.sh [-j[#JOBS]] " + echo " ./build.sh config" + echo " ./build.sh depend" + echo " ./build.sh clean" + echo " ./build.sh [-j[#JOBS]] install" + echo " ./build.sh cleanall" + echo " ./build.sh distclean" + echo + echo "Valid targets:" + for TARGET in $TARGETS; do + echo " $TARGET" + done + echo +} + +escape_string() { + $SED -e s,[\\\'\"\`\ \ \$\&\\\*\\\?\#\!],\\\\\&,g << EOF +$1 +EOF +} + +# Start the configure program. +# $1 = target +build_config() { + set_system + prepare_build_system + config_requirements + prepare_host_system + if [ "$BUILD_SYSTEM" '!=' "$HOST_SYSTEM" ]; then + build_message "Cross-compiling to $HOST_SYSTEM." + fi + eval "${TARGET}_requirements" + eval "${TARGET}_prepare_config" + eval "${TARGET}_load_config" + eval "${TARGET}_do_config" + eval "${TARGET}_save_config" +} + +build_reconfig() { + if [ ! -e "$BUILD_WORK/config.state" ]; then + echo "*** Warning: file 'config.state' not found - using defaults." + fi + + prepare_build_system + config_requirements + prepare_host_system + if [ "$BUILD_SYSTEM" '!=' "$HOST_SYSTEM" ]; then + build_message "Cross-compiling to $HOST_SYSTEM." + fi + eval "${TARGET}_requirements" + eval "${TARGET}_prepare_config" + eval "${TARGET}_load_config" + build_process_config + + echo "Reconfiguring complete..." >&2 +} + +# Process the configuration information +build_process_config() { + eval "${TARGET}_process_config" +} + +# Recursively build dependency index +build_depend() { + local DEPEND_FILE EXTRA_OFILES + + echo "Building file dependency index..." >&2 + + eval mkdir -p "\$BUILD_WORK/\${${BUILD_PROJECT}_OBJS}" + eval DEPEND_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_OBJS}\$DEPEND_NAME" + + # Remove the old dependency file, if it exists. + # The .tmp file is used to detect interrupted dependency builds. + rm -f -- "$DEPEND_FILE".tmp "$DEPEND_FILE" + + BUILD_ROOT=./ $SH ./build/unix/build_collect > "$DEPEND_FILE".tmp + mv -f -- "$DEPEND_FILE".tmp "$DEPEND_FILE" +} + +# Compile the lot. +# With the depend info set up, we can leave everything to make. +# $1 - additional arguments to pass to make (at the moment just +# an optional -j arg for parallel builds). +build_compile() { + local CFLAGS CXXFLAGS LDFLAGS TARGET_FILE DEPEND_FILE OBJDIR + + eval CFLAGS="\${${BUILD_PROJECT}_CFLAGS}" + eval CXXFLAGS="\${${BUILD_PROJECT}_CXXFLAGS}" + eval LDFLAGS="\${${BUILD_PROJECT}_LDFLAGS}" + eval OBJDIR=\""\$BUILD_WORK/\${${BUILD_PROJECT}_OBJS}"\" + eval TARGET_FILE=\""\$BUILD_WORK/\${${BUILD_PROJECT}_NAME}"\" + DEPEND_FILE=$OBJDIR$DEPEND_NAME + + eval "${TARGET}_pre_build" + + CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS \ + OBJDIR=$OBJDIR \ + BUILD_ROOT= \ + TARGET_FILE=$TARGET_FILE DEPEND_FILE=$DEPEND_FILE \ + SED=$SED \ + $MAKE $1 -f Makefile.build "$TARGET_FILE" + + eval "${TARGET}_post_build" +} + +build_clean() { + local DEPEND_FILE + + BUILD_ROOT=./ $SH ./build/unix/build_clean + + eval DEPEND_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_OBJS}${DEPEND_NAME}" + rm -f "$DEPEND_FILE" "$BUILD_WORK/build.vars" \ + "$BUILD_WORK/uqm-wrapper" \ + "$BUILD_WORK/config.state" + eval "${TARGET}_clean" +} + +build_cleanall() { + export BUILD_PROJECT + for TARGET in $TARGETS; do + BUILD_PROJECT="$TARGET" + build_clean + done + BUILD_PROJECT="" +} + +build_distclean() { + build_cleanall +} + + +# Description: check if the config files are present and load them. +# If they're not present, remake them. +build_check_config() { + if [ ! -e "$BUILD_WORK/build.vars" ]; then + build_config || exit $? + build_process_config + fi + . "$BUILD_WORK/build.vars" + . "${BUILD_REC_PATH:=./}Makeproject" +} + +# Description: check if the necessary depend file is present, +# if not, build it. +build_check_dependencies() { + eval DEPEND_FILE="\$BUILD_WORK/\${${BUILD_PROJECT}_OBJS}${DEPEND_NAME}" + [ ! -e "$DEPEND_FILE" -o -n "$BUILD_RUN_DEPEND" ] || return + + build_depend || exit $? +} + +# Description: check if the program is compiled, and otherwise compile +# $1 - additional arguments to pass to make (at the moment just +# an optional -j arg for parallel builds). +build_check_compile() { + local NAME + eval NAME="\${${BUILD_PROJECT}_NAME}" + [ ! -e "$NAME" ] || return + + build_compile "$1" || exit $? +} + +# Make a directory path, with mode and owner specified. +# $1 - name of directory path +# $2 - mode of the directories (may be empty) +# $3 - owner of the directories (may be empty) +mkdirhier() { + local REST DIR MODE OWNER + REST="$1" + MODE="$2" + OWNER="$3" + case "$REST" in + /*) + REST="${REST%/}" + DIR="/" + ;; + *) + DIR="" + ;; + esac + case "$REST" in + */) + ;; + *) + REST="${REST}/" + ;; + esac + while [ -n "$REST" ]; do + DIR="$DIR${REST%%/*}" + REST="${REST#*/}" + if [ ! -d "$DIR" ]; then + mkdir "$DIR" + [ -n "$MODE" ] && chmod "$MODE" "$DIR" + [ -n "$OWNER" ] && chown "$OWNER" "$DIR" + fi + DIR="${DIR}/" + done +} + +# Install a file or directory +# $1 - Source file/directory +# $2 - Destination directory/file +# $3 - Mode of destination file/directory +# $4 - Owner of destination file/directory +installsome() { + local SRC DEST MODE OWNDER DESTDIR SRCNAME + SRC="$1" + DEST="$2" + MODE="$3" + OWNDER="$4" + + DESTDIR="${DEST%/*}" + if [ ! -d "$DESTDIR" ]; then + mkdirhier "$DESTDIR" 0755 + fi + SRCNAME="${SRC##*/}" + cp -pr -- "$SRC" "$DEST" + if [ -n "$MODE" ]; then + if [ -d "$DEST" ]; then + chmod -R "$MODE" "${DEST}${SRCNAME}" + else + chmod "$MODE" "$DEST" + fi + fi + if [ -n "$OWNER" ]; then + if [ -d "$DEST" ]; then + chown -R "$OWNER" "${DEST}${SRCNAME}" + else + chown "$OWNER" "$DEST" + fi + fi +} + +# Install the program +build_install() { + eval "${TARGET}_install" +} + +# Generic installation routine +generic_install() { + local SRC DEST MODE OWNER + + eval "${TARGET}_pre_install" + + local LIB LIBS LIBDIR + echo "Installing system-dependent data..." >&2 + eval LIBS="\${${BUILD_PROJECT}_INSTALL_LIBS}" + eval LIBDIR="\${${BUILD_PROJECT}_INSTALL_LIBDIR%/}/" + mkdirhier "$LIBDIR" 0755 + for LIB in $LIBS; do + eval SRC="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_SRC%/}" + eval DEST="\$LIBDIR\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_DEST}" + eval MODE="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_MODE}" + eval OWNER="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_OWNER}" + installsome "$SRC" "$DEST" "$MODE" "$OWNER" + done + + local SHARE SHARED SHAREDIR + echo "Installing system-independent data..." >&2 + eval SHARED="\${${BUILD_PROJECT}_INSTALL_SHARED}" + eval SHAREDIR="\${${BUILD_PROJECT}_INSTALL_SHAREDIR%/}/" + mkdirhier "$SHAREDIR" 0755 + for SHARE in $SHARED; do + eval SRC="\${${BUILD_PROJECT}_INSTALL_SHARED_${SHARE}_SRC%/}" + eval DEST="\$SHAREDIR\${${BUILD_PROJECT}_INSTALL_SHARED_${SHARE}_DEST}" + eval MODE="\${${BUILD_PROJECT}_INSTALL_SHARED_${SHARE}_MODE}" + eval OWNER="\${${BUILD_PROJECT}_INSTALL_SHARED_${SHARE}_OWNER}" + installsome "$SRC" "$DEST" "$MODE" "$OWNER" + done + + local BINS BINDIR + echo "Installing binaries..." >&2 + eval BINS="\${${BUILD_PROJECT}_INSTALL_BINS}" + eval BINDIR="\${${BUILD_PROJECT}_INSTALL_BINDIR%/}/" + mkdirhier "$BINDIR" 0755 + for BIN in $BINS; do + eval SRC="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_SRC%/}" + eval DEST="\$BINDIR\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_DEST}" + eval MODE="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_MODE}" + eval OWNER="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_OWNER}" + installsome "$SRC" "$DEST" "$MODE" "$OWNER" + done + + eval "${TARGET}_post_install" +} + + diff --git a/build/unix/config_functions b/build/unix/config_functions new file mode 100644 index 0000000..23adc2d --- /dev/null +++ b/build/unix/config_functions @@ -0,0 +1,1139 @@ +# Auxiliary functions for custom build system +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +BUILDLOG=/dev/null +TEMPFILE="/tmp/build.$$.tmp" +#KEEPTEMPFILES=keeptempfiles + + +# Description: perform a command, and set the exit status to the opposite. +# (true +# Arguments: $1 - the command to run +# rest - arguments to the command +not() { + local CMD + CMD=$1 + shift + "$CMD" "$@" + return "$(($? == 0))" +} + +# Description: prints a command to stdout and then executes it +# Arguments: command with arguments +# Returns: the return value of the command +echo_and_perform() { + cat << EOF +$@ +EOF + "$@" +} + +# Description: Get the contents of a variable with a specific name, +# but don't expand it. (evalVar does expand it) +# Use this instead of 'eval', so that you won't have to +# worry about escaping. +# NB. this function only works on global variables. +# Arguments: $1 - the name of the variable +# Returns: 0 +# Prints: the value of the variable +getVar() { + local RESULT + eval RESULT=\$$1 + cat << EOF +$RESULT +EOF +} + +# Description: Get the contents of a variable with a specific name, +# and expand it. (getVar doesn't expand it) +# Use this instead of 'eval', so that you won't have to +# worry about escaping. +# NB. this function only works on global variables. +# Arguments: $1 - the name of the variable +# Returns: 0 +# Prints: the value of the variable +evalVar() { + local RESULT + eval RESULT=\$$1 + eval RESULT=\""$RESULT"\" + cat << EOF +$RESULT +EOF +} + +# Description: Set the value of a variable with a specific name, +# and expand it. +# Use this instead of 'eval', so that you won't have to +# worry about escaping. +# NB. this function only works on global variables. +# Arguments: $1 - the name of the variable +# $2 - the value to assign to it (will not be expanded) +setVar() { + eval $1=\$2 +} + +# Description: delete the files passed as arguments, unless +# $KEEPTEMPFILES is set. +deleteTempFiles() { + if [ -n "$KEEPTEMPFILES" ]; then + return + fi + + rm -f -- "$@" +} + +# Description: read text from stdin to use as a c file to compile +# Arguments: $1 - CFLAGS to use for compilation (optional) +# $2 - LDFLAGS to use for linking (optional) +# Returns: 0 - if compile successful +# something else - if compile failed +try_compile_c() { + local SYSTEM_FLAGS RESULT + + if [ -z "$COMPILE_C" ]; then + echo "Fatal: Program \$COMPILE_C is not defined!" >&2 + exit 1 + fi + + SYSTEM_FLAGS="$SYSTEM_BUILD_CFLAGS $SYSTEM_BUILD_LDFLAGS $SYSTEM_HOST_CFLAGS $SYSTEM_HOST_LDFLAGS" + cat > "$TEMPFILE.c" + + echo_and_perform $COMPILE_C $SYSTEM_FLAGS $1 "$TEMPFILE.c" \ + -o "$TEMPFILE.c.o" >> "$BUILDLOG" 2>&1 + RESULT=$? + + if [ $RESULT -eq 0 ]; then + echo_and_perform $LINK $SYSTEM_FLAGS $2 "$TEMPFILE.c.o" \ + -o "$TEMPFILE.out" >> "$BUILDLOG" 2>&1 + RESULT=$? + fi + + if [ $RESULT -ne 0 ]; then + echo "Failed program was:" >> "$BUILDLOG" + echo "+++ START $TEMPFILE.c" >> "$BUILDLOG" + cat "$TEMPFILE.c" >> "$BUILDLOG" + echo "+++ END $TEMPFILE.c" >> "$BUILDLOG" + fi + + deleteTempFiles "$TEMPFILE.c $TEMPFILE.c.o $TEMPFILE.out" + + echo >> "$BUILDLOG" + return $RESULT +} + +# Description: read text from stdin to use as a c file to compile +# Arguments: $1 - CFLAGS to use for compilation (optional) +# $2 - LDFLAGS to use for linking (optional) +# Returns: 128 - if compiling or linking failed +# otherwise - exit status of the program +try_compile_and_run_c() { + local SYSTEM_FLAGS RESULT + + if [ -z "$COMPILE_C" ]; then + echo "Fatal: Program \$COMPILE_C is not defined!" >&2 + exit 1 + fi + + SYSTEM_FLAGS="$SYSTEM_BUILD_CFLAGS $SYSTEM_BUILD_LDFLAGS $SYSTEM_HOST_CFLAGS $SYSTEM_HOST_LDFLAGS" + cat > "$TEMPFILE.c" + + echo_and_perform $COMPILE_C $SYSTEM_FLAGS $1 "$TEMPFILE.c" \ + -o "$TEMPFILE.c.o" >> "$BUILDLOG" 2>&1 + RESULT=$? + + if [ $RESULT -eq 0 ]; then + echo_and_perform $LINK $SYSTEM_FLAGS $2 "$TEMPFILE.c.o" \ + -o "$TEMPFILE.out" >> "$BUILDLOG" 2>&1 + RESULT=$? + fi + + if [ $RESULT -eq 0 ]; then + "$TEMPFILE.out" + RESULT=$? + fi + + deleteTempFiles "$TEMPFILE.c $TEMPFILE.c.o $TEMPFILE.out" + + echo >> "$BUILDLOG" + return $RESULT +} + +# Description: Output a message to stderr, unless BUILD_SILENT is set +# Arguments: the message +build_message() { + if [ -z "$BUILD_SILENT" ]; then + cat >&2 << EOF +$@ +EOF + fi +} + +# Description: check if a string is lexicographically before +# another string +# Arguments: $1 - the first string +# $2 - the second string +# Returns: 0 if $1 is lexicographically before $2 +# 1 otherwise +lexlt() { + # The 'test' builtin in some sh shells can't do this. + # To execute the non-builtin 'test' you need the path, and + # that differs per system (/bin/test or /usr/bin/test). + # It says '>=' instead of '<' because expr prints '1' for true, + # and sh uses 0. + return `expr "$1" ">=" "$2"` +} + +# Description: Check if one version is sufficiently new. +# Arguments: $1 - the required version +# $2 - the available version +# Returns: 0 - if $2 is at least as new as $1 +# 1 - if $2 is older than $1, or the two strings don't compare +version_match() { + # To compare the two version strings, the numbers in the version + # compared numerically, and all string parts should be equal. + local REST1 REST2 NUM1 NUM2 STR1 STR2 CHECKNUMS + REST1=$1 + REST2=$2 + CHECKNUMS=0 + + while [ -n "$REST1" -a -n "$REST2" ]; do + NUM1=`$SED -e 's/^\([0-9]*\).*$/\1/' << EOF +$REST1 +EOF +` + NUM2=`$SED -e 's/^\([0-9]*\).*$/\1/' << EOF +$REST2 +EOF +` + REST1=`$SED -e 's/^[0-9]*//' << EOF +$REST1 +EOF +` + REST2=`$SED -e 's/^[0-9]*//' << EOF +$REST2 +EOF +` + if [ "(" -n "$NUM1" -a -z "$NUM2" ")" -o \ + "(" -z "$NUM1" -a -n "$NUM2" ")" ]; then + # Only one of the versions contains a number here. No match. + return 1 + fi + if [ "(" -n "$NUM1" -a -z "$NUM2" ")" -o \ + "(" -z "$NUM1" -a -n "$NUM2" ")" ]; then + # Only one of the versions contains a number here. No match. + return 1 + fi + + if [ "$CHECKNUMS" -eq 0 ]; then + if [ "$NUM1" -gt "$NUM2" ]; then + # Too old. + return 1 + fi + if [ "$NUM1" -lt "$NUM2" ]; then + # A major number is larger. Minor numbers may be smaller. + CHECKNUMS=1 + fi + fi + + STR1=`$SED -e 's/^\([^0-9]*\).*$/\1/' << EOF +$REST1 +EOF +` + STR2=`$SED -e 's/^\([^0-9]*\).*$/\1/' << EOF +$REST2 +EOF +` + REST1=`$SED -e 's/^[^0-9]*//' << EOF +$REST1 +EOF +` + REST2=`$SED -e 's/^[^0-9]*//' << EOF +$REST2 +EOF +` + + if [ "x$STR1" "!=" "x$STR2" ]; then + # String parts don't match + return 1 + fi + done + + if [ -n "$REST1" -o -n "$REST2" ]; then + # One version string contains extra information. No match. + return 1 + fi + + return 0 +} + +# Description: try to detect a list of program dependencies. +# This only makes sure the PROG_xxx_PRESENT flag is set. +# It does not bail out if a dependency is not found. +# This function is called for programs in +# PROG_xxx_DEPEND_DETECT_BIN or LIB_xxx_DEPEND_DETECT_BIN. +# Using have_program in the respective depend functions would +# not save the PRESENT flag, as it is executed in a subshell. +# Arguments: $1 - the list of programs +detect_dependencies_program() { + local PROGS PROG + PROGS=$1 + for PROG in $PROGS; do + have_program "$PROG" + done +} + +# Description: try to detect a list of library dependencies. +# This only makes sure the LIB_xxx_PRESENT flag is set. +# It does not bail out if a dependency is not found. +# This function is called for libraries in +# PROG_xxx_DEPEND_DETECT_LIB or LIB_xxx_DEPEND_DETECT_LIB. +# Using have_library in the respective depend functions would +# not save the PRESENT flag, as it is executed in a subshell. +# Arguments: $1 - the list of libaries +detect_dependencies_library() { + local LIBS LIB + LIBS=$1 + for LIB in $LIBS; do + have_library "$LIB" + done +} + +# Description: check if a program is present in the path or as a built-in +# command. +# Arguments: $1 - The name of the program as it is executed +# Returns: 0 - if the command is found +# 1 - if the command is not found +have_command() { + type "$1" > /dev/null 2>&1 || false + # The '|| false' is because if 'type' does not recognise the + # command, it might return a different value than 1, on some + # shells. +} + +# Description: check if a program is present in the path or as a built-in +# command. +# Arguments: $1 - The name of the program as used in config_proginfo after +# "BIN_" +have_program() { + local PROG TEMP_NAME TEMP_FILE TEMP_VERSION TEMP_PRESENT TEMP_DETECT + local TEMP_DEPEND_DETECT_BIN TEMP_DEPEND_DETECT_LIB + + PROG=$1 + TEMP_NAME=`evalVar "PROG_${PROG}_NAME"` + if [ -z "$TEMP_NAME" ]; then + echo "Fatal: Program '$PROG' is not defined!" >&2 + exit 1 + fi + + TEMP_PRESENT=`getVar "PROG_${PROG}_PRESENT"` + if [ -n "$TEMP_PRESENT" ]; then + return "$TEMP_PRESENT" + fi + + # If a detection method is specified, try that one first. + TEMP_DETECT=`evalVar "PROG_${PROG}_DETECT"` + if [ -n "$TEMP_DETECT" ]; then + TEMP_DEPEND_DETECT_BIN=`evalVar "PROG_${PROG}_DEPEND_DETECT_BIN"` + TEMP_DEPEND_DETECT_LIB=`evalVar "PROG_${PROG}_DEPEND_DETECT_LIB"` + detect_dependencies_program "$TEMP_DEPEND_DETECT_BIN" + detect_dependencies_library "$TEMP_DEPEND_DETECT_LIB" + $TEMP_DETECT + # NB. TEMP_DETECT should make sure PROG_${PROG}_VERSION and + # PROG_${PROG}_FILE are set. + case $? in + 0) # Program found + setVar "PROG_${PROG}_PRESENT" 0 + ;; + 1) # Lib not found + setVar "PROG_${PROG}_PRESENT" 1 + ;; + 2) # Use default detection + ;; + esac + fi + + # If detection via a specified detection method was inconclusive, + # or no detection method was specified, try default detection + # based on whether the command name exists. + TEMP_PRESENT=`getVar "$PROG_${PROG}_PRESENT"` + if [ -z "$TEMP_PRESENT" ]; then + TEMP_FILE=`evalVar "PROG_${PROG}_FILE"` + have_command "${TEMP_FILE%% *}" + if [ $? -eq 0 ]; then + # Program found + setVar "PROG_${PROG}_PRESENT" 0 + fi + fi + + # If detection has yielded no results so far, we're calling it + # "not found". + TEMP_PRESENT=`getVar "PROG_${PROG}_PRESENT"` + if [ -z "$TEMP_PRESENT" ]; then + setVar "PROG_${PROG}_PRESENT" 1 + fi + + TEMP_PRESENT=`getVar "PROG_${PROG}_PRESENT"` + if [ "$TEMP_PRESENT" -eq 1 ]; then + build_message "$TEMP_NAME not found." + return 1 + fi + + # We have found the program. + # Test whether the version is sufficient. + if [ $# -gt 1 ]; then + # Minimum version supplied + TEMP_VERSION=`evalVar "PROG_${PROG}_VERSION"` + if [ -z "$TEMP_VERSION" ]; then + setVar "PROG_${PROG}_PRESENT" 1 + echo "Fatal: Could not determine the version of $TEMP_NAME" >&2 + exit 1 + fi + if not version_match "$2" "$TEMP_VERSION"; then + setVar "PROG_${PROG}_PRESENT" 1 + build_message "Found version $TEMP_VERSION of $TEMP_NAME, \ +but version $2 is required!" + return 1 + fi + setVar "PROG_${PROG}_PRESENT" 0 + build_message "$TEMP_NAME version $TEMP_VERSION found." + return 0 + fi + + setVar "PROG_${PROG}_PRESENT" 0 + build_message "$TEMP_NAME found." + return 0 +} + +# Description: check if a build tool is present, and define the appropriate +# environment variable for it. +# Arguments: $1 - The type of compile tool. One of PREPROC_C, MKDEP_C, +# COMPILE_C, PREPROC_OBJC, MKDEP_OBJC, COMPILE_OBJC, +# and LINK. +have_build_tool() { + local TOOL TEMP_NAME TEMP_PRESENT DEPENDS DEPEND SUCCESS COMMAND + + TOOL=$1 + + TEMP_NAME=`evalVar "BUILDTOOL_${TOOL}_NAME"` + if [ -z "$TEMP_NAME" ]; then + echo "Fatal: Build tool '$TOOL' is not defined!" >&2 + exit 1 + fi + + TEMP_PRESENT=`getVar "BUILDTOOL_${TOOL}_PRESENT"` + if [ -n "$TEMP_PRESENT" ]; then + return "$TEMP_PRESENT" + fi + + SUCCESS=0 + DEPENDS=`getVar "BUILDTOOL_${TOOL}_DEPEND"` + for DEPEND in $DEPENDS; do + if not have_program "$DEPEND"; then + SUCCESS=1 + fi + done + + setVar "BUILDTOOL_${TOOL}_PRESENT" "$SUCCESS" + + COMMAND=`evalVar "BUILDTOOL_${TOOL}_COMMAND"` + # Environment variables in $BUILDTOOL_xxx_COMMAND are expanded. + + if [ $SUCCESS -eq 0 ]; then + build_message "We have a $TEMP_NAME." + setVar "$TOOL" "$COMMAND" + else + build_message "No $TEMP_NAME found." + fi + + return $SUCCESS +} + +have_build_tools_language() { + local LANGUAGE + + LANGUAGE=$1 + + have_build_tool "PREPROC_$LANGUAGE" || return 1 + have_build_tool "MKDEP_$LANGUAGE" || return 1 + have_build_tool "COMPILE_$LANGUAGE" || return 1 + + return 0 +} + + +# Description: check if a library is present on the system +# Arguments: $1 - The name of the library as used in config_proginfo after +# "LIB_" +# $2 - (optional) minimum version required +# Pre: variables LIB_${1}_NAME, LIB_${1}_CFLAGS, and +# LIB_${1}_LDFLAGS are expected to exist. If two arguments are +# supplied, so is LIB_${1}_VERSION. +# Returns: 0 - if the library is found +# 1 - if the library is not found +have_library() { + local LIB TEMP_NAME TEMP_PRESENT TEMP_LDFLAGS TEMP_CFLAGS \ + TEMP_VERSION TEMP_DETECT + local TEMP_DEPEND_DETECT_BIN TEMP_DEPEND_DETECT_LIB + + LIB=$1 + TEMP_NAME=`evalVar "LIB_${LIB}_NAME"` + if [ -z "$TEMP_NAME" ]; then + echo "Fatal: Library '$LIB' is not defined!" >&2 + exit 1 + fi + + TEMP_PRESENT=`getVar "LIB_${LIB}_PRESENT"` + if [ -n "$TEMP_PRESENT" ]; then + return "$TEMP_PRESENT" + fi + + # If a detection method is specified, try that one first. + TEMP_DETECT=`evalVar "LIB_${LIB}_DETECT"` + if [ -n "$TEMP_DETECT" ]; then + TEMP_DEPEND_DETECT_BIN=`evalVar "LIB_${LIB}_DEPEND_DETECT_BIN"` + TEMP_DEPEND_DETECT_LIB=`evalVar "LIB_${LIB}_DEPEND_DETECT_LIB"` + detect_dependencies_program "$TEMP_DEPEND_DETECT_BIN" + detect_dependencies_library "$TEMP_DEPEND_DETECT_LIB" + $TEMP_DETECT + # NB. TEMP_DETECT should make sure PROG_$LIB_VERSION is set. + # return value of $TEMP_DETECT is used below. + case $? in + 0) # Lib found + setVar "LIB_${LIB}_PRESENT" 0 + ;; + 1) # Lib not found + setVar "LIB_${LIB}_PRESENT" 1 + ;; + 2) # Use default detection + ;; + esac + fi + + # If detection via a specified detection method was inconclusive, + # or no detection method was specified, try default detection + # based on whether we can compile against the library. + TEMP_PRESENT=`getVar "LIB_${LIB}_PRESENT"` + if [ -z "$TEMP_PRESENT" ]; then + TEMP_CFLAGS=`evalVar "LIB_${LIB}_CFLAGS"` + TEMP_LDFLAGS=`evalVar "LIB_${LIB}_LDFLAGS"` + + try_compile_c "$CFLAGS $TEMP_CFLAGS" "$LDFLAGS $TEMP_LDFLAGS" << EOF +int main(void) { + return 0; +} +EOF + if [ $? -eq 0 ]; then + # Build successful + setVar "LIB_${LIB}_PRESENT" 0 + fi + fi + + # If detection has yielded no results so far, we're calling it + # "not found". + TEMP_PRESENT=`getVar "LIB_${LIB}_PRESENT"` + if [ -z "$TEMP_PRESENT" ]; then + setVar "LIB_${LIB}_PRESENT" 1 + fi + + TEMP_PRESENT=`getVar "LIB_${LIB}_PRESENT"` + if [ "$TEMP_PRESENT" -eq 1 ]; then + build_message "$TEMP_NAME not found." + return 1 + fi + + # We have found the library. + # Test whether the version is sufficient. + if [ $# -gt 1 ]; then + # Minimum version supplied + TEMP_VERSION=`evalVar "LIB_${LIB}_VERSION"` + if [ -z "$TEMP_VERSION" ]; then + setVar "LIB_${LIB}_PRESENT" 1 + echo "Fatal: Could not determine the version of $TEMP_NAME" >&2 + exit 1 + fi + if not version_match "$2" "$TEMP_VERSION"; then + setVar "LIB_${LIB}_PRESENT" 1 + build_message "Found version $TEMP_VERSION of $TEMP_NAME, \ +but version $2 is required!" + return 1 + fi + setVar "LIB_${LIB}_PRESENT" 0 + build_message "$TEMP_NAME version $TEMP_VERSION found." + return 0 + fi + + setVar "LIB_${LIB}_PRESENT" 0 + build_message "$TEMP_NAME found." + return 0 +} + +# Description: check if a library is present on the system. +# If it is, add the appropriate flags to CFLAGS and LDFLAGS. +# If not, bail out. +# Arguments: $1 - The name of the library as used in config_proginfo after +# "LIB_" +# $2 - (optional) minimum version required +# Pre: variables LIB_${1}_NAME, LIB_${1}_CFLAGS, and +# LIB_${1}_LDFLAGS are expected to exist. If two arguments are +# supplied, so is LIB_${1}_VERSION. +use_library() { + local TEMP_CFLAGS TEMP_LDFLAGS + have_library "$@" + [ $? -eq 0 ] || exit 1 + + TEMP_CFLAGS=`evalVar "LIB_${1}_CFLAGS"` + TEMP_LDFLAGS=`evalVar "LIB_${1}_LDFLAGS"` + CFLAGS="$CFLAGS $TEMP_CFLAGS" + LDFLAGS="$LDFLAGS $TEMP_LDFLAGS" + return 0 +} + +# Description: check if a library are being provided by a framework outside +# of the normal system build process. +# If it is, mark it as found and add appropriate flags +# If not, do nothing. Do not even mark it as not found; it might +# be available by some other means. +# This function is currently specific to macOS builds. +# Arguments: $1 - The name of the library as used in config_proginfo +# $2 - (optional, default $1) the name of the framework +# DEPS_PATH - environment variable that if set specifies where to +# check for the framework. +# Pre: LIB_${1}_NAME is expected to exist. +have_framework() { + local TEMP_LIBNAME LIB LIBVAR FRAMEWORK_PATH + # If we aren't on a Mac, there is no framework + if [[ "x$HOST_SYSTEM" != "xDarwin" ]]; then + return 1 + fi + # If DEPS_PATH was not configured, there is no framework + if [[ -z "$DEPS_PATH" ]]; then + return 1 + fi + LIBVAR=$1 + LIB=$2 + if [[ -z "$2" ]]; then + LIB=$LIBVAR + fi + TEMP_LIBNAME=`evalVar "LIB_${LIBVAR}_NAME"` + FRAMEWORK_PATH="${DEPS_PATH}/${LIB}.framework" + if [[ -d "$FRAMEWORK_PATH" ]]; then + build_message "${TEMP_LIBNAME} found in ${DEPS_PATH}." + setVar "LIB_${LIBVAR}_PRESENT" 0 + setVar "LIB_${LIBVAR}_CFLAGS" "-F${DEPS_PATH} -I${FRAMEWORK_PATH}/Headers" + setVar "LIB_${LIBVAR}_LDFLAGS" "-F${DEPS_PATH} -framework ${LIB}" + return 0 + fi + build_message "${TEMP_LIBNAME} not found in ${DEPS_PATH}." + return 1 +} + +# Description: check if a symbol is defined +# Arguments: $1 - the name of the symbol +# $2 - the C code that does the actual checking +have_symbol_generic() { + local CODE DETECT EXTRA + + DETECT=`evalVar "SYMBOL_${1}_DETECT"` + if [ -n "$DETECT" ]; then + $DETECT + return $? + fi + + EXTRA=`evalVar "SYMBOL_${1}_EXTRA"` + CODE=`evalVar "SYMBOL_${1}_CODE"` + if [ -z "$CODE" ]; then + CODE=$2 + fi + + try_compile_c "$CFLAGS $TEMP_CFLAGS" "$LDFLAGS $TEMP_LDFLAGS" << EOF > /dev/null 2>&1 +#include +$EXTRA + +$CODE +EOF +} + +# Description: check if a symbol is defined. +# Arguments: $1 - the name of the symbol +have_symbol() { + local SYMBOL TEMP_PRESENT CODE + SYMBOL=$1 + + TEMP_PRESENT=`getVar "SYMBOL_${SYMBOL}_PRESENT"` + if [ -n "$TEMP_PRESENT" ]; then + return "$TEMP_PRESENT" + fi + + CODE=`cat << EOF +int main(void) { + (void) $SYMBOL; + return 0; +} +EOF +` + + have_symbol_generic "$SYMBOL" "$CODE" + if [ $? -gt 0 ]; then + build_message "Symbol '$SYMBOL' not found." + setVar "SYMBOL_${SYMBOL}_PRESENT" 1 + return 1 + fi + build_message "Symbol '$SYMBOL' found." + setVar "SYMBOL_${SYMBOL}_PRESENT" 0 + return 0 +} + +# Description: check if a type is present. +# Arguments: $1 - the name of the symbol +have_type() { + local TYPE TEMP_PRESENT CODE + TYPE=$1 + + TEMP_PRESENT=`getVar "TYPE_${TYPE}_PRESENT"` + if [ -n "$TEMP_PRESENT" ]; then + return "$TEMP_PRESENT" + fi + + CODE=`cat << EOF +int main(void) { + $TYPE var; + (void) var; + return 0; +} +EOF + ` + + have_symbol_generic "$TYPE" "$CODE" + if [ $? -gt 0 ]; then + build_message "Type '$TYPE' not found." + setVar "TYPE_${TYPE}_PRESENT" 1 + return 1 + fi + build_message "Type '$TYPE' found." + setVar "TYPE_${TYPE}_PRESENT" 0 + return 0 +} + +# Description: check if a symbol is defined. +# sets HAVE_ accordingly, where is the capitalized +# name of the symbol. +# Arguments: $1 - the name of the symbol +define_have_symbol() { + local NAME VALUE DEFNAME + + DEFNAME=`getVar "SYMBOL_${1}_DEFNAME"` + if [ -z "$DEFNAME" ]; then + # Why not "tr [:lower:] [:upper:]"? Because the capital "i" is not + # "I" in Turkish... An alternative would be setting LC_CTYPE to POSIX. + NAME=`$TR "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + << EOF +$1 +EOF + ` + DEFNAME="HAVE_$NAME" + fi + + if have_symbol "$1"; then + add_symbol "$DEFNAME" "#define $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 1 + else + add_symbol "$DEFNAME" "#undef $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 0 + fi +} + +# Description: check if a type is present. +# set HAVE_ accordingly, where is the capitalized +# name of the symbol. +# Arguments: $1 - the name of the symbol +define_have_type() { + local NAME VALUE DEFNAME + + DEFNAME=`getVar "TYPE_${1}_DEFNAME"` + if [ -z "$DEFNAME" ]; then + # Why not "tr [:lower:] [:upper:]"? Because the capital "i" is not + # "I" in Turkish... An alternative would be setting LC_CTYPE to POSIX. + NAME=`$TR "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + << EOF +$1 +EOF + ` + DEFNAME="HAVE_$NAME" + fi + + if have_type "$1"; then + add_symbol "$DEFNAME" "#define $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 1 + else + add_symbol "$DEFNAME" "#undef $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 0 + fi +} + +# Description: check if a header is available. +# Arguments: $1 - the name of the header file +have_header() { + local HEADER NAME EXTRA + HEADER=$1 + + NAME=${HEADER%.h} + EXTRA=`evalVar "HEADER_${NAME}_EXTRA"` + + try_compile_c "$CFLAGS $TEMP_CFLAGS" "$LDFLAGS $TEMP_LDFLAGS" << EOF > /dev/null 2>&1 +$EXTRA +#include <$HEADER> +int main(void) { + return 0; +} +EOF + if [ $? -gt 0 ]; then + build_message "Header '$HEADER' not found." + return 1 + fi + build_message "Header '$HEADER' found." + return 0 +} + +# Description: check if a header is available. +# sets HAVE_ accordingly, where is the capitalized +# name of the header file. "sys/time.h" becomes "SYS_TIME_H". +# Arguments: $1 - the name of the header file +define_have_header() { + local NAME VALUE DEFNAME + + DEFNAME=`getVar "HEADER_${1%.h}_DEFNAME"` + if [ -z "$DEFNAME" ]; then + # Why not "tr [:lower:] [:upper:]"? Because the capital "i" is not + # "I" in Turkish... An alternative would be setting LC_CTYPE to POSIX. + NAME=`$TR "/.abcdefghijklmnopqrstuvwxyz" \ + "__ABCDEFGHIJKLMNOPQRSTUVWXYZ" << EOF +$1 +EOF + ` + DEFNAME="HAVE_$NAME" + fi + + if have_header "$1"; then + add_symbol "$DEFNAME" "#define $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 1 + else + add_symbol "$DEFNAME" "#undef $DEFNAME" + add_symbol "${DEFNAME}_FLAG" 0 + fi +} + +# Description: check if a macro is available. +# Arguments: $1 - the name of the macro +have_macro() { + local MACRO EXTRA + MACRO=$1 + + EXTRA=`evalVar "MACRO_${NAME}_EXTRA"` + + try_compile_c "$CFLAGS $TEMP_CFLAGS" "$LDFLAGS $TEMP_LDFLAGS" << EOF > /dev/null 2>&1 +$EXTRA +#ifndef $MACRO +# error +#endif +int main(void) { + return 0; +} +EOF + if [ $? -gt 0 ]; then + build_message "Preprocessor macro '$MACRO' not found." + return 1 + fi + build_message "Preprocessor macro '$MACRO' found." + return 0 +} + +# Description: check if a macro is defined +# sets MACRO_ to a non-empty string if the macro with +# the specified name is defined, and to an empty string if it +# is not. +# Arguments: $1 - the name of the symbol +define_have_macro() { + local NAME + + NAME=$1 + + if have_macro "$1"; then + add_symbol "MACRO_$NAME" "1" + else + add_symbol "MACRO_$NAME" "" + fi +} + +# Description: Add a symbol to be replaced by substitute_vars +# $HAVE_SYMBOLS will contain the variable names of all +# symbols added by define_have_symbol and should be passed to +# substitute_vars for the file you want them in. +# Arguments: $1 - the symbol to add +# $2 - the value of the symbol +add_symbol() { + local NAME + + eval NAME="$1" + eval "$NAME"=\"\$2\" + HAVE_SYMBOLS="$HAVE_SYMBOLS $NAME" +} + +check_endianness() { + local ENDIAN + + if [ "$BUILD_SYSTEM" '!=' "$HOST_SYSTEM" ]; then + case "$BUILD_HOST_ENDIAN" in + "") + build_message "Cross-compiling - assuming little-endian host." + ENDIAN=little + ;; + big) + build_message "Cross-compiling for a big-endian host." + ENDIAN=big + ;; + little) + build_message "Cross-compiling for a little-endian host." + ENDIAN=little + ;; + *) + build_message "Bad endianness specified. Use \"little\" or \"big\"" + exit 1 + ;; + esac + else + # Detect endianness + try_compile_and_run_c "$CFLAGS" "$LDFLAGS" << EOF +int main(void) { + int i; + + i = 1; + return *((unsigned char *) &i); +} +EOF + if [ $? -eq 0 ]; then + build_message "Big-endian machine detected." + ENDIAN=big + else + build_message "Little-endian machine detected." + ENDIAN=little + fi + fi + + case "$ENDIAN" in + big) + add_symbol WORDS_BIGENDIAN "#define WORDS_BIGENDIAN" + add_symbol "WORDS_BIGENDIAN_FLAG" 1 + ;; + little) + add_symbol WORDS_BIGENDIAN "#undef WORDS_BIGENDIAN" + add_symbol "WORDS_BIGENDIAN_FLAG" 0 + ;; + esac +} + + +# Description: If pkg-config is installed, check if there's a pkg-config +# entry for some binary dependency. +# If successful, it sets the appropriate BIN_xxx_VERSION. +# Arguments: $1 - The name of the program as it is known in +# config_proginfo after "BIN_" +# $2 - The name of the dependency as it would be known to +# pkg-config. +try_pkgconfig_prog() { + have_program pkgconfig || return 1 + + local PROG PKG_NAME TEMP_NAME + PROG=$1 + PKG_NAME=$2 + + TEMP_NAME=`evalVar "PROG_${PROG}_NAME"` + if [ -z "$TEMP_NAME" ]; then + echo "Fatal: Program '$PROG' is not defined!" >&2 + exit 1 + fi + + if $PROG_pkgconfig_FILE --exists "$PKG_NAME"; then + local TEMP_VERSION + TEMP_VERSION=$($PROG_pkgconfig_FILE --modversion "$PKG_NAME") + setVar "PROG_${PROG}_VERSION" "$TEMP_VERSION" + return 0 + else + return 2 + fi +} + + +# Description: If pkg-config is installed, check if there's a pkg-config +# entry for some dependency. +# If successful, it sets the appropriate LIB_xxx_VERSION, +# LIB_xxx_CFLAGS and LIB_xxx_LDFLAGS. +# Arguments: $1 - The name of the library as it is known in +# config_proginfo after "LIB_" +# $2 - The name of the dependency as it would be known to +# pkg-config. +try_pkgconfig_lib() { + have_program pkgconfig || return 1 + + local LIB PKG_NAME TEMP_NAME + LIB=$1 + PKG_NAME=$2 + + TEMP_NAME=`evalVar "LIB_${LIB}_NAME"` + if [ -z "$TEMP_NAME" ]; then + echo "Fatal: Library '$LIB' is not defined!" >&2 + exit 1 + fi + + if $PROG_pkgconfig_FILE --exists "$PKG_NAME"; then + local TEMP_VERSION TEMP_CFLAGS TEMP_LDFLAGS + TEMP_VERSION=$($PROG_pkgconfig_FILE --modversion "$PKG_NAME") + TEMP_CFLAGS=$($PROG_pkgconfig_FILE --cflags "$PKG_NAME") + TEMP_LDFLAGS=$($PROG_pkgconfig_FILE --libs "$PKG_NAME") + setVar "LIB_${LIB}_VERSION" "$TEMP_VERSION" + setVar "LIB_${LIB}_CFLAGS" "$TEMP_CFLAGS" + setVar "LIB_${LIB}_LDFLAGS" "$TEMP_LDFLAGS" + return 2 # Force testing using the new CFLAGS and LDFLAGS + #return 0 + else + return 2 + fi +} + + +# Description: substitute variables in files. +# Every supplied variable name found between @'s in the +# supplied files, is replaced by its value. +# Arguments: $1 - The name of the variable which contains a list of +# variables to substitute in the files. +# $2 - The name of the variable which contains a list of +# files to substitute variables in. +# If a filename ends on .in, that filename is used as +# source, and the filename without .in as target. +# If a filename doesn't end on .in, that filename is used +# as target, and the filename with .in attached as source. +# $3 - A path to which the input file names are relative +# $4 - A path to which the output file names are relative +substitute_vars() { + local VARS VAR VALUE FILES FILE SRC_PATH DST_PATH + + eval VARS=\"\$$1\" + eval FILES=\"\$$2\" + SRC_PATH="$3" + DST_PATH="$4" + + for VAR in $VARS; do + # Escape all / in VAR so that we can use / as seperator char for sed + eval VALUE=\"\$$VAR\" + VALUE=$(echo "$VALUE" | $SED -e 's,\([\&/]\),\\\1,g') + cat << EOF +s/@${VAR}@/${VALUE}/g +EOF + done > "${TEMPFILE}.sed" + + for FILE in $FILES; do + FILE="${FILE%.in}" + cp -p -- "$SRC_PATH/$FILE".in "$DST_PATH/$FILE" + # The copy is done so that the file modes are equal. + $SED -f "${TEMPFILE}.sed" < "$SRC_PATH/$FILE".in > "$DST_PATH/$FILE" + done + deleteTempFiles "${TEMPFILE}.sed" +} + +# Define the build system type. +set_build_system() { + BUILD_SYSTEM=`uname -s` +} + +# Define the host system type. +set_host_system() { + local UHOST + + if [ -z "$BUILD_HOST" ]; then + HOST_SYSTEM=$BUILD_SYSTEM + else + case "$BUILD_HOST" in + *-*-*) + HOST_SYSTEM="${BUILD_HOST#*-}" + HOST_SYSTEM="${HOST_SYSTEM%-*}" + ;; + esac + + # Use a single capitalization. + # What is used is whatever 'uname -s' would give on such a platform. + case "$BUILD_HOST" in + [Ll][Ii][Nn][Uu][Xx]) + HOST_SYSTEM="Linux" ;; + [Ff][Rr][Ee][Ee][Bb][Ss][Dd]) + HOST_SYSTEM="FreeBSD" ;; + [Oo][Pp][Ee][Nn][Bb][Ss][Dd]) + HOST_SYSTEM="OpenBSD" ;; + [Mm][Ii][Nn][Gg][Ww]|[Mm][Ii][Nn][Gg][Ww]32) + HOST_SYSTEM="MINGW32" ;; + [Cc][Yy][Gg][Ww][Ii][Nn]*) + HOST_SYSTEM="CYGWIN" ;; + [Dd][Aa][Rr][Ww][Ii][Nn]) + HOST_SYSTEM="Darwin" ;; + [Ss][Uu][Nn][Oo][Ss]) + HOST_SYSTEM="SunOS" ;; + [Qq][Nn][Xx]) + HOST_SYSTEM="QNX" ;; + [Cc][Ee][Gg][Cc][Cc]) + HOST_SYSTEM="cegcc" ;; + [Ww][Ii][Nn][Ss][Cc][Ww]) + HOST_SYSTEM="WINSCW" ;; + [Aa][Rr][Mm][Vv]5) + HOST_SYSTEM="ARMV5" ;; + [Gg][Cc][Cc][Ee]) + HOST_SYSTEM="GCCE" ;; + *) + build_message "Warning: host type '$BUILD_HOST' unknown. Using defaults." + ;; + esac + fi + +} + +set_system() { + set_build_system + set_host_system +} + +prepare_build_system() { + # Include information about programs we can detect for the build system. + . build/unix/config_proginfo_build +} + +prepare_host_system() { + # Include information about programs we can detect for the host system. + . build/unix/config_proginfo_host +} + +# Some initialisations +HAVE_SYMBOLS="" + +config_requirements() { + # Requirements for the config program itself + have_program echon || exit 1 + ECHON="$PROG_echon_FILE" + have_program sed || exit 1 + SED="$PROG_sed_FILE" + have_program tr || exit 1 + TR="$PROG_tr_FILE" + have_program make || exit 1 + MAKE="$PROG_make_FILE" +} + diff --git a/build/unix/config_proginfo_build b/build/unix/config_proginfo_build new file mode 100644 index 0000000..b01cf09 --- /dev/null +++ b/build/unix/config_proginfo_build @@ -0,0 +1,336 @@ +# Set information on used programs and libraries +# This file contains the information for the programs that test the +# system on which the software is built. +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +############################################################################## +# System specific build flags # +############################################################################## + + +# CFLAGS +SYSTEM_BUILD_CFLAGS="" + +# CXXFLAGS +SYSTEM_BUILD_CXXFLAGS="" + +# LDFLAGS +SYSTEM_BUILD_LDFLAGS="" + +# Compilers etc. +BUILDTOOL_PREPROC_C_NAME="C preprocessor" +BUILDTOOL_MKDEP_C_NAME="C dependency generator" +BUILDTOOL_COMPILE_C_NAME="C compiler" +BUILDTOOL_PREPROC_CXX_NAME="C++ preprocessor" +BUILDTOOL_MKDEP_CXX_NAME="C++ dependency generator" +BUILDTOOL_COMPILE_CXX_NAME="C++ compiler" +BUILDTOOL_PREPROC_OBJC_NAME="Objective-C preprocessor" +BUILDTOOL_MKDEP_OBJC_NAME="Objective-C dependency generator" +BUILDTOOL_COMPILE_OBJC_NAME="Objective-C compiler" +BUILDTOOL_LINK_NAME="linker" +useGccBuildTools() { + # These strings will be evaluated later. + BUILDTOOL_PREPROC_C_COMMAND="\$PROG_gcc_FILE -E $EXTRA_PLATFORM_GCC_FLAGS_PREPROC_C" + BUILDTOOL_PREPROC_C_DEPEND='gcc' + + BUILDTOOL_MKDEP_C_COMMAND="\$PROG_gcc_FILE -MM $EXTRA_PLATFORM_GCC_FLAGS_MKDEP_C" + BUILDTOOL_MKDEP_C_DEPEND='gcc' + + BUILDTOOL_COMPILE_C_COMMAND="\$PROG_gcc_FILE -c $EXTRA_PLATFORM_GCC_FLAGS_COMPILE_C" + BUILDTOOL_COMPILE_C_DEPEND='gcc' + + BUILDTOOL_PREPROC_CXX_COMMAND="\$PROG_gcc_FILE -E $EXTRA_PLATFORM_GCC_FLAGS_PREPROC_CXX" + BUILDTOOL_PREPROC_CXX_DEPEND='gcc' + + BUILDTOOL_MKDEP_CXX_COMMAND="\$PROG_gcc_FILE -MM $EXTRA_PLATFORM_GCC_FLAGS_MKDEP_CXX" + BUILDTOOL_MKDEP_CXX_DEPEND='gcc' + + BUILDTOOL_COMPILE_CXX_COMMAND="\$PROG_gcc_FILE -c $EXTRA_PLATFORM_GCC_FLAGS_COMPILE_CXX" + BUILDTOOL_COMPILE_CXX_DEPEND='gcc' + + BUILDTOOL_PREPROC_OBJC_COMMAND="\$PROG_gcc_FILE -E $EXTRA_PLATFORM_GCC_FLAGS_PREPROC_OBJC" + BUILDTOOL_PREPROC_OBJC_DEPEND='gcc' + + BUILDTOOL_MKDEP_OBJC_COMMAND="\$PROG_gcc_FILE -MM $EXTRA_PLATFORM_GCC_FLAGS_MKDEP_OBJC" + BUILDTOOL_MKDEP_OBJC_DEPEND='gcc' + + BUILDTOOL_COMPILE_OBJC_COMMAND="\$PROG_gcc_FILE -c $EXTRA_PLATFORM_GCC_FLAGS_COMPILE_OBJC" + BUILDTOOL_COMPILE_OBJC_DEPEND='gcc' + + BUILDTOOL_LINK_COMMAND="\$PROG_gcc_FILE $EXTRA_PLATFORM_GCC_FLAGS_LINK" + BUILDTOOL_LINK_DEPEND='gcc' +} +case "$HOST_SYSTEM" in + Darwin) + EXTRA_PLATFORM_GCC_FLAGS_COMPILE_C='-mmacosx-version-min=10.6 -arch x86_64' + EXTRA_PLATFORM_GCC_FLAGS_COMPILE_OBJC='-mmacosx-version-min=10.6 -arch x86_64' + EXTRA_PLATFORM_GCC_FLAGS_LINK='-mmacosx-version-min=10.6 -arch x86_64' + useGccBuildTools + ;; + WINSCW) + EXTRA_WINSCW_FLAGS_COMPILE="-msgstyle gcc -gccinc -dialect c99 -relax_pointers -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -enum int -str pool -exc ms -trigraphs on -nostdinc -d _UNICODE -d __SYMBIAN32__ -d __SERIES60_30__ -d __SERIES60_3X__ -d __CW32__ -d __WINS__ -d __WINSCW__ -d __EXE__ -d __SUPPORT_CPP_EXCEPTIONS__ -I$BUILD_EPOCROOT/epoc32/include -I$BUILD_EPOCROOT/epoc32/include/stdapis -I$BUILD_EPOCROOT/epoc32/include/variant" + EXTRA_WINSCW_FLAGS_LINK='-library -msgstyle gcc -stdlib -noimplib -search' + + BUILDTOOL_PREPROC_C_COMMAND="\$PROG_mwccsym2_FILE -E $EXTRA_WINSCW_FLAGS_COMPILE" + BUILDTOOL_PREPROC_C_DEPEND='mwccsym2' + + BUILDTOOL_MKDEP_C_COMMAND="\$PROG_mwccsym2_FILE -MM -ext .o -gccdep $EXTRA_WINSCW_FLAGS_COMPILE" + BUILDTOOL_MKDEP_C_DEPEND='mwccsym2' + + BUILDTOOL_COMPILE_C_COMMAND="\$PROG_mwccsym2_FILE -c $EXTRA_WINSCW_FLAGS_COMPILE" + BUILDTOOL_COMPILE_C_DEPEND='mwccsym2' + + BUILDTOOL_PREPROC_OBJC_COMMAND="\$PROG_mwccsym2_FILE -E" + BUILDTOOL_PREPROC_OBJC_DEPEND='mwccsym2' + + BUILDTOOL_MKDEP_OBJC_COMMAND="\$PROG_mwccsym2_FILE -MM" + BUILDTOOL_MKDEP_OBJC_DEPEND='mwccsym2' + + BUILDTOOL_COMPILE_OBJC_COMMAND="\$PROG_mwccsym2_FILE -c" + BUILDTOOL_COMPILE_OBJC_DEPEND='mwccsym2' + + BUILDTOOL_LINK_COMMAND="\$PROG_mwldsym2_FILE $EXTRA_WINSCW_FLAGS_LINK" + BUILDTOOL_LINK_DEPEND='mwldsym2' + ;; + ARMV5) + EXTRA_ARMV5_FLAGS_COMPILE='--gnu --apcs //inter --diag_suppress 66,161,611,654,997,1152,1300,1464,1488,6318,6331 --diag_error 1267 --arm --cpu ARM926EJ-S --fpu softvfp --exceptions --exceptions_unwind -D__MARM_INTERWORK__ --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --dllimport_runtime -D_UNICODE -D__SYMBIAN32__ -D__SERIES60_30__ -D__SERIES60_3X__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__ARMCC_2__ -D__ARMCC_2_2__ -D__MARM_ARMV5__ -D__SUPPORT_CPP_EXCEPTIONS__ -J$BUILD_EPOCROOT/epoc32/include -J$BUILD_EPOCROOT/epoc32/include/stdapis -J$BUILD_EPOCROOT/epoc32/include/variant --preinclude $BUILD_EPOCROOT/epoc32/include/RVCT2_2/RVCT2_2.h' + EXTRA_ARMV5_FLAGS_LINK='' + + BUILDTOOL_PREPROC_C_COMMAND="\$PROG_armcc_FILE -E $EXTRA_ARMV5_FLAGS_COMPILE" + BUILDTOOL_PREPROC_C_DEPEND='armcc' + + BUILDTOOL_MKDEP_C_COMMAND="\$PROG_armcc_FILE -MM --unix_depend_format $EXTRA_ARMV5_FLAGS_COMPILE" + BUILDTOOL_MKDEP_C_DEPEND='armcc' + + BUILDTOOL_COMPILE_C_COMMAND="\$PROG_armcc_FILE -c $EXTRA_ARMV5_FLAGS_COMPILE" + BUILDTOOL_COMPILE_C_DEPEND='armcc' + + BUILDTOOL_PREPROC_OBJC_COMMAND="\$PROG_armcc_FILE -E" + BUILDTOOL_PREPROC_OBJC_DEPEND='armcc' + + BUILDTOOL_MKDEP_OBJC_COMMAND="\$PROG_armcc_FILE -MM" + BUILDTOOL_MKDEP_OBJC_DEPEND='armcc' + + BUILDTOOL_COMPILE_OBJC_COMMAND="\$PROG_armcc_FILE -c" + BUILDTOOL_COMPILE_OBJC_DEPEND='armcc' + + BUILDTOOL_LINK_COMMAND="\$PROG_armar_FILE $EXTRA_ARMV5_FLAGS_LINK" + BUILDTOOL_LINK_DEPEND='armar' + ;; + GCCE) + EXTRA_GCCE_FLAGS_COMPILE='-Wno-unknown-pragmas -march=armv5t -mapcs -pipe -nostdinc -msoft-float -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__SERIES60_30__ -D__SERIES60_3X__ -D__GCCE__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__MARM_ARMV5__ -D __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ -x c -include $BUILD_EPOCROOT/EPOC32/INCLUDE/GCCE/GCCE.h -I$BUILD_EPOCROOT/epoc32/include -I$BUILD_EPOCROOT/epoc32/include/stdapis -I$BUILD_EPOCROOT/epoc32/include/variant' + EXTRA_GCCE_FLAGS_LINK='' + + BUILDTOOL_PREPROC_C_COMMAND="\$PROG_gcce_FILE -E $EXTRA_GCCE_FLAGS_COMPILE" + BUILDTOOL_PREPROC_C_DEPEND='gcce' + + BUILDTOOL_MKDEP_C_COMMAND="\$PROG_gcce_FILE -MM $EXTRA_GCCE_FLAGS_COMPILE" + BUILDTOOL_MKDEP_C_DEPEND='gcce' + + BUILDTOOL_COMPILE_C_COMMAND="\$PROG_gcce_FILE -c $EXTRA_GCCE_FLAGS_COMPILE" + BUILDTOOL_COMPILE_C_DEPEND='gcce' + + BUILDTOOL_PREPROC_OBJC_COMMAND="\$PROG_gcce_FILE -E" + BUILDTOOL_PREPROC_OBJC_DEPEND='gcce' + + BUILDTOOL_MKDEP_OBJC_COMMAND="\$PROG_gcce_FILE -MM" + BUILDTOOL_MKDEP_OBJC_DEPEND='gcce' + + BUILDTOOL_COMPILE_OBJC_COMMAND="\$PROG_gcce_FILE -c" + BUILDTOOL_COMPILE_OBJC_DEPEND='gcce' + + BUILDTOOL_LINK_COMMAND="\$PROG_gcce_FILE $EXTRA_GCCE_FLAGS_LINK" + BUILDTOOL_LINK_DEPEND='gcce' + ;; + *) + useGccBuildTools + ;; +esac +case "$HOST_SYSTEM" in + Darwin) + BUILDTOOL_REZ_NAME="MacOS X resource compiler (Rez)" + BUILDTOOL_REZ_COMMAND='$PROG_Rez_FILE' + BUILDTOOL_REZ_DEPEND='Rez' + ;; + MINGW32*|CYGWIN*|cegcc) + BUILDTOOL_WINDRES_NAME="Windows resource linker (windres)" + BUILDTOOL_WINDRES_COMMAND='$PROG_windres_FILE' + BUILDTOOL_WINDRES_DEPEND='windres' + ;; +esac + + +############################################################################## +# Describe the programs (possibly) used: # +############################################################################## + + +### gcc ### +PROG_gcc_NAME="GNU C compiler" +PROG_gcc_FILE="gcc" +PROG_gcc_ACTION="" +PROG_gcc_VERSION='$(gcc --version)' + + +### sed ### +PROG_sed_NAME="Sed stream editor" +PROG_sed_FILE="sed" +PROG_sed_ACTION="" +PROG_sed_VERSION='' + + +### echo -n ### +PROG_echon_NAME="'echo -n' capable echo" +PROG_echon_FILE="" +PROG_echon_ACTION="" +PROG_echon_VERSION='' +PROG_echon_DETECT="echon_detect" +echon_detect() { + local TEST LOCATIONS LOCATION + + # Default echo (probably builtin) + TEST=`echo -n X` + if [ "$TEST" = X ]; then + PROG_echon_FILE="echo -n" + return 0; + fi + + # External echo + LOCATIONS="/bin/ /usr/ucb/" + for LOCATION in $LOCATIONS; do + if [ -x ${LOCATION}echo ]; then + TEST=`${LOCATION}echo -n X` + if [ "$TEST" = X ]; then + PROG_echon_FILE="${LOCATION}echo -n" + return 0; + fi + fi + done + + # Using printf as echo + TEST=`printf %s X` + if [ "$TEST" = X ]; then + PROG_echon_FILE="printf %s" + return 0; + fi + + # No good echo found + return 1 +} + + +### GNU Make ### +PROG_make_NAME="Make" +case "$BUILD_SYSTEM" in + FreeBSD|OpenBSD|SunOS) + PROG_make_FILE="gmake" + ;; + *) + PROG_make_FILE="make" + ;; +esac +PROG_make_ACTION="" +PROG_make_VERSION='' + + +### tr ### +PROG_tr_NAME="tr" +PROG_tr_FILE="tr" +PROG_tr_ACTION="" +PROG_tr_VERSION='' + + +### windres (for Windows) ### +PROG_windres_NAME=windres +PROG_windres_FILE=windres +PROG_windres_ACTION="" +PROG_windres_VERSION='windres --version' + + +### Rez resource compiler (for MacOS X) ### +PROG_Rez_NAME="Rez resource compiler (Apple Developer Tools)" +PROG_Rez_FILE="/usr/bin/Rez" +PROG_Rez_ACTION="" +PROG_Rez_VERSION='' + + +### pkg-config ### +PROG_pkgconfig_NAME="pkg-config" +PROG_pkgconfig_FILE="pkg-config" +PROG_pkgconfig_ACTION="" +PROG_pkgconfig_VERSION='$(pkg-config --version)' + + +### mwccsym2 ### +PROG_mwccsym2_NAME="Nokia CodeWarrior C/C++ Compiler for Windows/x86" +PROG_mwccsym2_FILE="mwccsym2" +PROG_mwccsym2_ACTION="" +PROG_mwccsym2_VERSION='$(mwccsym2 -version)' + + +### mwldsym2 ### +PROG_mwldsym2_NAME="Nokia CodeWarrior Linker for Windows/x86" +PROG_mwldsym2_FILE="mwldsym2" +PROG_mwldsym2_ACTION="" +PROG_mwldsym2_VERSION='$(mwldsym2 -version)' + + +### armcc ### +PROG_armcc_NAME="ARM/Thumb C/C++ Compiler" +PROG_armcc_FILE="armcc" +PROG_armcc_ACTION="" +PROG_armcc_VERSION='$(armcc --vsn)' + + +### armlink ### +PROG_armlink_NAME="ARM Linker" +PROG_armlink_FILE="armlink" +PROG_armlink_ACTION="" +PROG_armlink_VERSION='$(armlink --vsn)' + + +### armar ### +PROG_armar_NAME="ARM Archiver" +PROG_armar_FILE="armar" +PROG_armar_ACTION="" +PROG_armar_VERSION='$(armar --vsn)' + + +### gcce ### +PROG_gcce_NAME="GNU C Compiler (CodeSourcery ARM)" +PROG_gcce_FILE="arm-none-symbianelf-gcc" +PROG_gcce_ACTION="" +PROG_gcce_VERSION='$(arm-none-symbianelf-gcc --version)' + + +### mingw-gcc ### +PROG_mingw_gcc_NAME="GNU C MinGW Cross-compiler" +PROG_mingw_gcc_FILE="i686-pc-mingw32-gcc" +PROG_mingw_gcc_ACTION="" +PROG_mingw_gcc_VERSION='$(i686-pc-mingw32-gcc --version)' + + +############################################################################## +# Describe the libaries (possibly) used: # +############################################################################## + + + +############################################################################## +# Describe the symbols (possibly) used: # +############################################################################## diff --git a/build/unix/config_proginfo_host b/build/unix/config_proginfo_host new file mode 100644 index 0000000..748ffbd --- /dev/null +++ b/build/unix/config_proginfo_host @@ -0,0 +1,356 @@ +# Set information on used programs and libraries +# This file contains the information for the programs that test the +# system on which the software will be run. +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +############################################################################## +# System specific build flags # +############################################################################## + + +# CFLAGS +SYSTEM_HOST_CFLAGS="" + +# LDFLAGS +SYSTEM_HOST_LDFLAGS="" + + +############################################################################## +# Describe the programs (possibly) used: # +############################################################################## + + + +############################################################################## +# Describe the libaries (possibly) used: # +############################################################################## + + +### SDL ### +LIB_SDL_NAME="Simple DirectMedia Layer" +case "$HOST_SYSTEM" in + WINSCW|GCCE) + LIB_SDL_CFLAGS='-I$BUILD_EPOCROOT/epoc32/include/SDL' + LIB_SDL_LDFLAGS='' + LIB_SDL_VERSION='1.2.13' + LIB_SDL_DETECT="true" + ;; + ARMV5) + LIB_SDL_CFLAGS='-J$BUILD_EPOCROOT/epoc32/include/SDL' + LIB_SDL_LDFLAGS='' + LIB_SDL_VERSION='1.2.13' + LIB_SDL_DETECT="true" + ;; + Darwin) + if not have_framework SDL; then + LIB_SDL_DETECT="have_command sdl-config" + LIB_SDL_CFLAGS='$(sdl-config --cflags)' + LIB_SDL_LDFLAGS='$(sdl-config --libs)' + LIB_SDL_VERSION='$(sdl-config --version)' + fi + LIB_SDL_LDFLAGS="$LIB_SDL_LDFLAGS -lobjc -framework Cocoa" + ;; + *) + LIB_SDL_DETECT="have_command sdl-config" + LIB_SDL_CFLAGS='$(sdl-config --cflags)' + LIB_SDL_LDFLAGS='$(sdl-config --libs)' + LIB_SDL_VERSION='$(sdl-config --version)' + ;; +esac + + +### SDL2 ### +LIB_SDL2_NAME="Simple DirectMedia Layer version 2.x" +case "$HOST_SYSTEM" in + WINSCW|GCCE|ARMV5) + LIB_SDL2_DETECT="false" + ;; + Darwin) + if not have_framework SDL2; then + LIB_SDL2_DETECT="have_command sdl2-config" + LIB_SDL2_CFLAGS='$(sdl2-config --cflags)' + LIB_SDL2_LDFLAGS='$(sdl2-config --libs)' + LIB_SDL2_VERSION='$(sdl2-config --version)' + fi + LIB_SDL2_LDFLAGS="$LIB_SDL2_LDFLAGS -lobjc -framework Cocoa" + ;; + *) + LIB_SDL2_DETECT="have_command sdl2-config" + LIB_SDL2_CFLAGS='$(sdl2-config --cflags)' + LIB_SDL2_LDFLAGS='$(sdl2-config --libs)' + LIB_SDL2_VERSION='$(sdl2-config --version)' + ;; +esac + + +### libpng ### +LIB_libpng_NAME="libpng" +# libpng generally integrates with pkg-config, but that also generally +# only matters if we're building against a non-systemwide version. UQM +# should not need to do that. +# +# To link against a static libpng, set LDFLAGS with an appropriate -L +# argument before calling `build.sh uqm config`. +case "$HOST_SYSTEM" in + Darwin) + if not have_framework libpng; then + LIB_libpng_CFLAGS="" + LIB_libpng_LDFLAGS="-lpng" + fi + ;; + *) + LIB_libpng_CFLAGS="" + LIB_libpng_LDFLAGS="-lpng" + ;; +esac + + +### OpenAL ### +LIB_openal_NAME="OpenAL" +LIB_openal_CFLAGS="" +case "$HOST_SYSTEM" in + FreeBSD|OpenBSD) + LIB_openal_LDFLAGS="-L/usr/local/lib -pthread -lopenal" + ;; + MINGW32*|CYGWIN*|cegcc) + LIB_openal_LDFLAGS="-lopenal32" + ;; + Darwin) + LIB_openal_CFLAGS='' + LIB_openal_LDFLAGS="-framework OpenAL" + ;; + *) + LIB_openal_LDFLAGS="-lopenal" + ;; +esac +LIB_openal_VERSION="" +case "$HOST_SYSTEM" in + Darwin) + ## Apple does not ship pkg-config on Mac OSX + ;; + *) + LIB_openal_DETECT="try_pkgconfig_lib openal openal" + LIB_openal_DEPEND_DETECT_BIN="pkgconfig" + ;; +esac + + +### OpenGL ### +LIB_opengl_NAME="OpenGL" +case "$HOST_SYSTEM" in + FreeBSD|OpenBSD) + LIB_opengl_CFLAGS="-I/usr/X11R6/include -D_THREAD_SAFE" + LIB_opengl_LDFLAGS="-L/usr/X11R6/lib -lX11 -lXext -pthread -lGL" + ;; + MINGW32*|CYGWIN*|cegcc) + LIB_opengl_CFLAGS="" + LIB_opengl_LDFLAGS="-lopengl32" + ;; + Darwin) + LIB_opengl_CFLAGS="" + LIB_opengl_LDFLAGS="-framework OpenGL" + ;; + ARMV5|WINSCW|GCCE) + LIB_opengl_DETECT="false" + ;; + *) + LIB_opengl_CFLAGS="" + LIB_opengl_LDFLAGS="-lGL" + ;; +esac +LIB_opengl_VERSION="" + + +### Vorbisfile ### +LIB_vorbisfile_NAME="vorbisfile" +case "$HOST_SYSTEM" in + FreeBSD|OpenBSD) + LIB_vorbisfile_CFLAGS="-I/usr/local/include" + LIB_vorbisfile_LDFLAGS="-L/usr/local/lib -lvorbisfile -lvorbis" + ;; + MINGW32*|CYGWIN*|cegcc) + LIB_vorbisfile_CFLAGS="" + LIB_vorbisfile_LDFLAGS="-lvorbisfile -lvorbis -lm -logg" + ;; + Darwin) + if not have_framework vorbisfile Vorbis; then + LIB_vorbisfile_CFLAGS="-D__MACOSX__" + LIB_vorbisfile_LDFLAGS="-lvorbisfile -lvorbis" + fi + ;; + QNX) + LIB_vorbisfile_CFLAGS="" + LIB_vorbisfile_LDFLAGS="-lvorbisfile -lvorbis -logg -lm" + ;; + *) + LIB_vorbisfile_CFLAGS="" + LIB_vorbisfile_LDFLAGS="-lvorbisfile -lvorbis" + ;; +esac +LIB_vorbisfile_VERSION="" +case "$HOST_SYSTEM" in + ARMV5|WINSCW|GCCE) + LIB_vorbisfile_DETECT="false" + ;; + Darwin) + ## Apple does not ship pkg-config on Mac OSX + ;; + *) + LIB_vorbisfile_DETECT="try_pkgconfig_lib vorbisfile vorbisfile" + LIB_vorbisfile_DEPEND_DETECT_BIN="pkgconfig" + ;; +esac + + +### Tremor ### +LIB_tremor_NAME="tremor" +case "$HOST_SYSTEM" in + FreeBSD|OpenBSD) + LIB_tremor_CFLAGS="-I/usr/local/include" + LIB_tremor_LDFLAGS="-L/usr/local/lib -lvorbisidec" + ;; + Darwin) + if not have_framework tremor Tremor; then + # Assumed values - please let me know if you can verify this. + LIB_tremor_CFLAGS="" + LIB_tremor_LDFLAGS="-framework Tremor" + fi + ;; + ARMV5|WINSCW|GCCE) + LIB_tremor_DETECT="true" + ;; + *) + LIB_tremor_CFLAGS="" + LIB_tremor_LDFLAGS="-lvorbisidec" + ;; +esac +LIB_tremor_VERSION="" + + +### libmikmod ### +LIB_libmikmod_NAME="libmikmod" +case "$HOST_SYSTEM" in + ARMV5|WINSCW|GCCE) + LIB_libmikmod_DETECT="false" + ;; + *) + LIB_libmikmod_DETECT="have_command libmikmod-config" + LIB_libmikmod_CFLAGS="$(libmikmod-config --cflags)" + LIB_libmikmod_LDFLAGS="$(libmikmod-config --libs)" + LIB_libmikmod_VERSION="$(libmikmod-config --version)" + ;; +esac + + +### zlib ### +LIB_zlib_NAME="zlib" +LIB_zlib_CFLAGS="" +case "$HOST_SYSTEM" in + MINGW32*|CYGWIN*|cegcc) + LIB_zlib_LDFLAGS="-lzdll" + ;; + ARMV5|WINSCW|GCCE) + LIB_zlib_LDFLAGS="" + ;; + *) + LIB_zlib_LDFLAGS="-lz" + ;; +esac +LIB_zlib_VERSION="" +case "$HOST_SYSTEM" in + ARMV5|WINSCW|GCCE) + LIB_zlib_DETECT="true" + ;; + Darwin) + ## Apple does not ship pkg-config on Mac OSX + ;; + *) + LIB_zlib_DETECT="try_pkgconfig_lib zlib zlib" + LIB_zlib_DEPEND_DETECT_BIN="pkgconfig" + ;; +esac + + + +### pthread ### +LIB_pthread_NAME="pthread" +case "$HOST_SYSTEM" in + Linux) + LIB_pthread_CFLAGS="" + LIB_pthread_LDFLAGS="" + LIB_pthread_VERSION="" + ;; + FreeBSD|OpenBSD) + LIB_pthread_DETECT="have_command pthread-config" + LIB_pthread_CFLAGS="$(pthread-config --cflags)" + LIB_pthread_LDFLAGS="$(pthread-config --ldflags)" + LIB_pthread_VERSION="$(pthread-config --version)" + ;; + WINSCW|ARMV5|GCCE) + LIB_pthread_DETECT="true" + ;; + *) + LIB_pthread_CFLAGS="" + LIB_pthread_LDFLAGS="-lpthread" + LIB_pthread_VERSION="" + ;; +esac + + +# Additional platform-specific libraries for networking. +LIB_netlibs_NAME="Platform-specific network libraries" +case "$HOST_SYSTEM" in + SunOS) + LIB_netlibs_CFLAGS="" + LIB_netlibs_LDFLAGS="-lsocket" + LIB_netlibs_VERSION="" + ;; + ARMV5|WINSCW|GCCE) + LIB_netlibs_DETECT="false" + ;; +esac + + +############################################################################## +# Describe the symbols (possibly) used: # +############################################################################## + +HEADER_regex_EXTRA="#include " + +SYMBOL_readdir_r_EXTRA="#include " + +SYMBOL_setenv_EXTRA="#include " + +SYMBOL_strcasecmp_EXTRA="#include " + +SYMBOL_strcasecmp_DEFNAME="HAVE_STRCASECMP_UQM" + # HAVE_STRCASECMP would conflict with SDL (SDL_config.h). + +SYMBOL_stricmp_EXTRA="#include " + +SYMBOL_strupr_EXTRA="#include " + +SYMBOL_wchar_t_EXTRA="#include " + +SYMBOL_wint_t_EXTRA="#include " + +SYMBOL_iswgraph_EXTRA="#include " + +SYMBOL_getopt_long_EXTRA="#include " + + diff --git a/build/unix/make/buildtools-armv5 b/build/unix/make/buildtools-armv5 new file mode 100644 index 0000000..bf73689 --- /dev/null +++ b/build/unix/make/buildtools-armv5 @@ -0,0 +1,17 @@ +# Definitions for build tools for the makefile used by the UQM build system. +# This file defines the build commands for ARM tools. + +include build/unix/make/buildtools-generic + +define act_mkdep_c + $(MKDEP_C) $(CFLAGS) -o "$(@D)/$( $@ + @cat "$@.tmp" >> $@ + @rm -f "$@.tmp" +endef + +define act_mkdep_cxx + $(MKDEP_C) $(CXXFLAGS) "$<" -o "$@.tmp" + @echo -n "$(@D)/" > $@ + @cat "$@.tmp" >> $@ + @rm -f "$@.tmp" +endef + diff --git a/build/unix/menu_functions b/build/unix/menu_functions new file mode 100644 index 0000000..8de5ff4 --- /dev/null +++ b/build/unix/menu_functions @@ -0,0 +1,662 @@ +# Auxiliary functions for menu system for custom build system +# Copyright (c) 2002 Serge van den Boom +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +MENU_ITEM_TYPES="MENU CHOICE INPUT CHECK" + +MENU_ITEM_TYPE_MENU_INIT=menu_init_menu +MENU_ITEM_TYPE_MENU_PRINT_VALUE=menu_print_value_menu +MENU_ITEM_TYPE_MENU_HANDLER=menu_handle_menu +MENU_ITEM_TYPE_MENU_SAVE=menu_save_menu +MENU_ITEM_TYPE_MENU_PROCESS=menu_process_menu + +MENU_ITEM_TYPE_CHOICE_INIT=menu_init_choice +MENU_ITEM_TYPE_CHOICE_PRINT_VALUE=menu_print_value_choice +MENU_ITEM_TYPE_CHOICE_HANDLER=menu_handle_choice +MENU_ITEM_TYPE_CHOICE_SAVE=menu_save_choice +MENU_ITEM_TYPE_CHOICE_PROCESS=menu_process_choice + +MENU_ITEM_TYPE_INPUT_INIT=menu_init_input +MENU_ITEM_TYPE_INPUT_PRINT_VALUE=menu_print_value_input +MENU_ITEM_TYPE_INPUT_HANDLER=menu_handle_input +MENU_ITEM_TYPE_INPUT_SAVE=menu_save_input +MENU_ITEM_TYPE_INPUT_PROCESS=menu_process_input + +MENU_ITEM_TYPE_CHECK_INIT=menu_init_check +MENU_ITEM_TYPE_CHECK_PRINT_VALUE=menu_print_value_check +MENU_ITEM_TYPE_CHECK_HANDLER=menu_handle_check +MENU_ITEM_TYPE_CHECK_SAVE=menu_save_check +MENU_ITEM_TYPE_CHECK_PROCESS=menu_process_check + +# Description: Check if a string can be used as a path. +# No checks are done if the path really exists. +# Arguments: $1 - the string to check +# Returns: 0 if the string makes a valid path +# 1 if the string doesn't make a valid path +# Outputs: the path, possibly modified +validate_path() { + if [ "$1" = "/" ]; then + echo "/" + return + fi + cat << EOF +${1%/} +EOF + return 0 +} + +# Description: Initialise a menu, setting unset values to default +# Arguments: $1 - the type of menu item +# $2 - the name of the menu item +menu_init() { + local INIT_FUN + + eval INIT_FUN="\$MENU_ITEM_TYPE_$1_INIT" + "$INIT_FUN" "$2" +} + +# Description: Initialise this menu +# Arguments: $1 - the name of the menu +menu_init_menu() { + local MENU TEMP_ITEMS ITEM TEMP_TYPE + + MENU="$1" + eval TEMP_ITEMS="\$MENU_${MENU}_ITEMS" + for ITEM in $TEMP_ITEMS; do + eval TEMP_TYPE="\$MENU_${MENU}_ITEM_${ITEM}_TYPE" + if [ -z "$TEMP_TYPE" ]; then + echo "Fatal: \$MENU_${MENU}_ITEM_${ITEM}_TYPE is not defined!" >&2 + exit 1 + fi + menu_init "$TEMP_TYPE" "$ITEM" + done +} + +# Description: Check if this choice is available +# Arguments: $1 - the name of the choice menu +# $2 - the name of the choice +# Returns: 0 - if the choice is available +# 1 - if the choice is not available +menu_have_choice() { + local MENU CHOICE TEMP_VALID TEMP_PRECOND + MENU="$1" + CHOICE="$2" + eval TEMP_VALID="\$CHOICE_${MENU}_OPTION_${CHOICE}_VALID" + if [ -n "$TEMP_VALID" ]; then + return "$TEMP_VALID" + fi + eval TEMP_PRECOND="\$CHOICE_${MENU}_OPTION_${CHOICE}_PRECOND" + if [ -z "$TEMP_PRECOND" ] || $TEMP_PRECOND; then + eval "CHOICE_${MENU}_OPTION_${CHOICE}_VALID"=0 + return 0 + fi + eval "CHOICE_${MENU}_OPTION_${CHOICE}_VALID"=1 + return 1 +} + +# Description: Initialise this choice menu +# Arguments: $1 - the name of the choice menu +menu_init_choice() { + local MENU TEMP_VALUE TEMP_DEFAULT TEMP_OPTIONS OPTION TEMP_TITLE + MENU="$1" + eval TEMP_VALUE="\$CHOICE_${MENU}_VALUE" + eval TEMP_DEFAULT="\$CHOICE_${MENU}_DEFAULT" + eval TEMP_OPTIONS="\$CHOICE_${MENU}_OPTIONS" + for OPTION in $TEMP_VALUE $TEMP_DEFAULT $TEMP_OPTIONS; do + if menu_have_choice "$MENU" "$OPTION"; then + eval CHOICE_${MENU}_VALUE="$OPTION" + eval CHOICE_${MENU}_OLD_VALUE="$OPTION" + return + fi + done + eval TEMP_VALUE="\$CHOICE_${MENU}_TITLE" + echo "Error: No option for '$TEMP_VALUE' is available for your system." + exit 1 +} + +# Description: Initialise this input menu +# Arguments: $1 - the name of the input menu +menu_init_input() { + local MENU TEMP_VALUE + MENU="$1" + eval TEMP_VALUE="\$INPUT_${MENU}_VALUE" + if [ -z "$TEMP_VALUE" ]; then + eval TEMP_VALUE="\$INPUT_${MENU}_DEFAULT" + eval INPUT_${MENU}_VALUE="\$TEMP_VALUE" + fi + eval INPUT_${MENU}_OLD_VALUE="\$TEMP_VALUE" +} + +# Description: Initialise this checkbox +# Arguments: $1 - the name of the checkbox +menu_init_check() { + local CHECKBOX TEMP_VALUE TEMP_DEFAULT + CHECKBOX="$1" + + eval TEMP_VALUE="\$CHECK_${CHECKBOX}_VALUE" + eval TEMP_DEFAULT="\$CHECK_${CHECKBOX}_DEFAULT" + + # Make sure the default is either 'CHECKED' or 'UNCHECKED' + case "$TEMP_DEFAULT" in + yes|Yes|YES|checked|Checked|CHECKED|1|true|True|TRUE) + TEMP_DEFAULT=CHECKED + ;; + *) + TEMP_DEFAULT=UNCHECKED + ;; + esac + eval CHECK_${CHECKBOX}_DEFAULT="\$TEMP_DEFAULT" + + if [ -z "$TEMP_VALUE" ]; then + TEMP_VALUE="$TEMP_DEFAULT" + eval CHECK_${CHECKBOX}_VALUE="\$TEMP_DEFAULT" + fi + eval CHECK_${CHECKBOX}_OLD_VALUE="\$TEMP_VALUE" +} + +# Description: Print the string describing the value of a menu item. +# Arguments: $1 - the type of menu item +# $2 - the name of the menu item +# Outputs: The string describing the value of the menu item +menu_print_value() { + local PRINT_VALUE + + eval PRINT_VALUE="\$MENU_ITEM_TYPE_$1_PRINT_VALUE" + "$PRINT_VALUE" "$2" +} + +# Description: Print the string describing the value of this menu +# Arguments: $1 - the name of the menu item +# Outputs: The string describing the value of this menu +menu_print_value_menu() { + echo "[...]" +} + +# Description: Print the string describing the value this choice menu +# Arguments: $1 - the name of the choice menu item +# Outputs: The string describing the value of this choice menu +menu_print_value_choice() { + local TEMP_VALUE TEMP_TITLE + eval TEMP_VALUE="\$CHOICE_$1_VALUE" + eval TEMP_TITLE=\"\$CHOICE_$1_OPTION_${TEMP_VALUE}_TITLE\" + cat << EOF +$TEMP_TITLE +EOF +} + +# Description: Print the value of this input menu +# Arguments: $1 - the name of the input menu item +# Outputs: The value of the given input menu +menu_print_value_input() { + local TEMP_VALUE + eval TEMP_VALUE="\$INPUT_$1_VALUE" + cat << EOF +$TEMP_VALUE +EOF +} + +# Description: Print the value of this checkbox +# Arguments: $1 - the name of the checkbox item +# Outputs: The value of the given checkbox +menu_print_value_check() { + local TEMP_VALUE TEMP_DEFAULT TEMP_FIXED RESULT EXTRA + eval TEMP_VALUE="\$CHECK_$1_VALUE" + eval TEMP_DEFAULT="\$CHECK_$1_DEFAULT" + eval TEMP_FIXED="\$CHECK_$1_FIXED" + + if [ "$TEMP_VALUE" = "CHECKED" ]; then + RESULT="Yes" + else + RESULT="No" + fi + + EXTRA="" + if [ "$TEMP_VALUE" = "$TEMP_DEFAULT" ]; then + EXTRA="default" + fi + + if [ "$TEMP_FIXED" = "TRUE" ]; then + EXTRA="${EXTRA:+$EXTRA, }unchangable" + fi + + RESULT="$RESULT${EXTRA:+ ($EXTRA)}" + echo "$RESULT" +} + +# Description: Print the string describing the value of a menu item. +# Arguments: $1 - the type of menu item +# $2 - the name of the menu item +# Outputs: The string describing the value of the menu item +menu_handle() { + local HANDLER + + eval HANDLER="\$MENU_ITEM_TYPE_$1_HANDLER" + "$HANDLER" "$2" +} + +# Description: Process a menu-type menu item +# Arguments: $1 - The name of the menu +menu_handle_menu() { + local TEMP_ITEMS I CHOICE NUM_ITEMS TEMP_TYPE MENU ITEM TEMP_TITLE \ + TEMP_TEXT + eval TEMP_ITEMS="\$MENU_$1_ITEMS" + eval TEMP_TEXT="\$MENU_$1_TEXT" + + MENU="$1" + while :; do + echo + eval TEMP_TITLE="\$MENU_${MENU}_TITLE" + cat << EOF + $ANSI_BOLD-= $TEMP_TITLE =-$ANSI_NORMAL +EOF + + if [ -n "$TEMP_TEXT" ]; then + cat << EOF +$TEMP_TEXT +EOF + fi + + # Count the number of options + I=0 + for ITEM in $TEMP_ITEMS; do + I=$(($I + 1)) + done + NUM_ITEMS="$I" + + I=0 + for ITEM in $TEMP_ITEMS; do + I=$(($I + 1)) + eval TEMP_TYPE="\$MENU_${MENU}_ITEM_${ITEM}_TYPE" + eval TEMP_TITLE="\$${TEMP_TYPE}_${ITEM}_TITLE" + printf " %${#NUM_ITEMS}i. %-36s %s\n" $I "$TEMP_TITLE" \ + "$(menu_print_value $TEMP_TYPE $ITEM)" + done + + echo + echo "Press a number plus if you want to change something, " + $ECHON "or just if everything is ok: " + read CHOICE + + # Check if the choice was empty + if [ -z "$CHOICE" ]; then + # We're done + return + fi + + # Check if what the user entered was a number + egrep '^[0-9]+$' << EOF > /dev/null +$CHOICE +EOF + if [ $? -ne 0 ]; then + echo "Invalid choice." + continue + fi + + # Check if the number the user entered if valid + if [ "$CHOICE" -lt 1 -o "$CHOICE" -gt "$NUM_ITEMS" ]; then + echo "Invalid choice." + continue + fi + + # Now look up the choice + I=0 + for ITEM in $TEMP_ITEMS; do + I=$(($I + 1)) + if [ "$I" -eq "$CHOICE" ]; then + eval TEMP_TYPE="\$MENU_${MENU}_ITEM_${ITEM}_TYPE" + menu_handle "$TEMP_TYPE" "$ITEM" + break + fi + done + done +} + +# Description: Process a choice-type menu item +# Arguments: $1 - The name of the menu +menu_handle_choice() { + local TEMP_OPTIONS I CHOICE NUM_OPTIONS TEMP_TYPE MENU OPTION \ + TEMP_VALUE TEMP_TITLE SELECTED TEMP_TEXT + eval TEMP_OPTIONS="\$CHOICE_$1_OPTIONS" + eval TEMP_TEXT="\$CHOICE_$1_TEXT" + + MENU="$1" + while :; do + echo + eval TEMP_TITLE="\$CHOICE_${MENU}_TITLE" + cat << EOF + $ANSI_BOLD-= $TEMP_TITLE =-$ANSI_NORMAL +EOF + if [ -n "$TEMP_TEXT" ]; then + cat << EOF +$TEMP_TEXT +EOF + fi + + eval TEMP_VALUE="\$CHOICE_${MENU}_VALUE" + + # Check in advance which options are present, so that that + # is echoed before the menu is printed. + # menu_have_choice caches results. + # Also, count the number of options + I=0 + for OPTION in $TEMP_OPTIONS; do + I=$(($I + 1)) + menu_have_choice "$MENU" "$OPTION" + done + NUM_OPTIONS="$I" + + I=0 + for OPTION in $TEMP_OPTIONS; do + I=$(($I + 1)) + eval TEMP_TITLE="\$CHOICE_${MENU}_OPTION_${OPTION}_TITLE" + if [ "$TEMP_VALUE" = "$OPTION" ]; then + SELECTED="-->" + else + SELECTED=" " + fi + if menu_have_choice "$MENU" "$OPTION"; then + printf " %${#NUM_OPTIONS}i. %s %s\n" "$I" "$SELECTED" \ + "$TEMP_TITLE" + else + printf " %-${#NUM_OPTIONS}s %s (N/A) %s\n" "-" \ + "$SELECTED" "$TEMP_TITLE" + fi + done + + echo + echo "Select the option you want by typing a number plus " + $ECHON "or just if everything is ok: " + read CHOICE + echo + + # Check if the choice was empty + if [ -z "$CHOICE" ]; then + # We're done + return + fi + + # Check if what the user entered was a number + egrep '^[0-9]+$' << EOF > /dev/null +$CHOICE +EOF + if [ $? -ne 0 ]; then + echo "Invalid choice." + continue + fi + + # Check if the number the user entered if valid + if [ "$CHOICE" -lt 1 -o "$CHOICE" -gt "$NUM_ITEMS" ]; then + echo "Invalid choice." + continue + fi + + # Now look up the choice + I=0 + for OPTION in $TEMP_OPTIONS; do + I=$(($I + 1)) + if [ "$I" -eq "$CHOICE" ]; then + if menu_have_choice "$MENU" "$OPTION"; then + eval "CHOICE_${MENU}_VALUE"="$OPTION" + return + else + echo "That option is unavailable on your system." + fi + fi + done + done +} + +# Description: Process an input-type menu item +# Arguments: $1 - The name of the menu +menu_handle_input() { + local ITEM TEMP_TITLE TEMP_VALUE TEMP_DEFAULT NEW_VALUE \ + TEMP_VALIDATOR TEMP_TEXT + + ITEM="$1" + eval TEMP_TITLE="\$INPUT_${ITEM}_TITLE" + eval TEMP_TEXT="\$INPUT_${ITEM}_TEXT" + + while :; do + echo + cat << EOF + $ANSI_BOLD-= $TEMP_TITLE =-$ANSI_NORMAL +EOF + + if [ -n "$TEMP_TEXT" ]; then + cat << EOF +$TEMP_TEXT +EOF + fi + + eval TEMP_VALUE="\$INPUT_${ITEM}_VALUE" + eval TEMP_DEFAULT="\$INPUT_${ITEM}_DEFAULT" + echo " Default value: $TEMP_DEFAULT" + echo " Current value: $TEMP_VALUE" + $ECHON " New value: " + read NEW_VALUE + + # If no new value is entered, keep the old one. + if [ -z "$NEW_VALUE" ]; then + return + fi + + # If a validator function is present, validate the new value + eval TEMP_VALIDATOR="\$INPUT_${ITEM}_VALIDATOR" + if [ -n "$TEMP_VALIDATOR" ]; then + NEW_VALUE=`$TEMP_VALIDATOR "$NEW_VALUE"` + if [ $? -ne 0 ]; then + echo "Invalid value" + continue + fi + fi + break + done + eval "INPUT_${ITEM}_VALUE"=\"\$NEW_VALUE\" +} + +# Description: Process an checkbox-type menu item +# Arguments: $1 - The name of the checkbox +menu_handle_check() { + local CHECKBOX OLD_VALUE NEW_VALUE TEMP_FIXED + + CHECKBOX="$1" + eval TEMP_FIXED="\$CHECK_${CHECKBOX}_FIXED" + + if [ "$TEMP_FIXED" = "TRUE" ]; then + # Unchangable + return; + fi + + eval OLD_VALUE="\$CHECK_${CHECKBOX}_VALUE" + if [ "$OLD_VALUE" = "CHECKED" ]; then + NEW_VALUE="UNCHECKED" + else + NEW_VALUE="CHECKED" + fi + eval "CHECK_${CHECKBOX}_VALUE"=\"\$NEW_VALUE\" +} + +# Description: echo the current state of a menu item in a form that can be +# executed to restore the state. +# Arguments: $1 - the type of menu item +# $2 - the name of the menu item +# Outputs: The string describing the value of the menu item +menu_save() { + local SAVE_FUN + eval SAVE_FUN="\$MENU_ITEM_TYPE_$1_SAVE" + "$SAVE_FUN" "$2" +} + +# Description: echo the current state of a menu in a form that can be +# executed to restore the state. +# Arguments: $1 - the name of the menu +# Outputs: The string describing the value of the menu +menu_save_menu() { + local MENU TEMP_ITEMS ITEM TEMP_TYPE + + MENU="$1" + eval TEMP_ITEMS="\$MENU_${MENU}_ITEMS" + for ITEM in $TEMP_ITEMS; do + eval TEMP_TYPE="\$MENU_${MENU}_ITEM_${ITEM}_TYPE" + menu_save "$TEMP_TYPE" "$ITEM" + done +} + +# Description: echo the current state of a choice menu in a form that can be +# executed to restore the state. +# Arguments: $1 - the name of the choice menu +# Outputs: The string describing the value of the choice menu +menu_save_choice() { + local MENU TEMP_VALUE + MENU="$1" + eval TEMP_VALUE="\$CHOICE_${MENU}_VALUE" + cat << EOF +CHOICE_${MENU}_VALUE='$TEMP_VALUE' +EOF +} + +# Description: echo the current state of an input menu in a form that can be +# executed to restore the state. +# Arguments: $1 - the name of the input menu +# Outputs: The string describing the value of the input menu +menu_save_input() { + local MENU TEMP_VALUE + MENU="$1" + eval TEMP_VALUE="\$INPUT_${MENU}_VALUE" + cat << EOF +INPUT_${MENU}_VALUE='$TEMP_VALUE' +EOF +} + +# Description: echo the current state of an check box in a form that can be +# executed to restore the state. +# Arguments: $1 - the name of the checkbox +# Outputs: The string describing the value of the checkbox +menu_save_check() { + local CHECKBOX TEMP_VALUE + CHECKBOX="$1" + eval TEMP_VALUE="\$CHECK_${CHECKBOX}_VALUE" + cat << EOF +CHECK_${CHECKBOX}_VALUE='$TEMP_VALUE' +EOF +} + +# Description: Perform the actions associated with the choice made for a +# menu items. +# Arguments: $1 - the type of menu item +# $2 - the name of the menu item +menu_process() { + local PROCESS_FUN + eval PROCESS_FUN="\$MENU_ITEM_TYPE_$1_PROCESS" + "$PROCESS_FUN" "$2" +} + +# Description: Perform the actions associated with the chosen menu items +# for a menu. +# Arguments: $1 - the name of the menu +menu_process_menu() { + local MENU TEMP_ITEMS ITEM TEMP_TYPE + + MENU="$1" + eval TEMP_ITEMS="\$MENU_${MENU}_ITEMS" + for ITEM in $TEMP_ITEMS; do + eval TEMP_TYPE="\$MENU_${MENU}_ITEM_${ITEM}_TYPE" + menu_process "$TEMP_TYPE" "$ITEM" + done +} + +# Description: Perform the actions associated with the choice made for +# a choice menu. +# Arguments: $1 - the name of the choice menu +menu_process_choice() { + local MENU TEMP_VALUE TEMP_ACTION + MENU="$1" + eval TEMP_VALUE="\$CHOICE_${MENU}_VALUE" + eval TEMP_ACTION="\$CHOICE_${MENU}_OPTION_${TEMP_VALUE}_ACTION" + if [ -n "$TEMP_ACTION" ]; then + $TEMP_ACTION + fi +} + +# Description: Perform the actions associated with the input menu. +# Arguments: $1 - the name of the input menu +menu_process_input() { + # Nothing to do + : +} + +# Description: Perform the actions associated with the status of a +# check box. +# Arguments: $1 - the name of the check box +menu_process_check() { + local CHECKBOX TEMP_VALUE TEMP_ACTION + CHECKBOX="$1" + eval TEMP_VALUE="\$CHECK_${CHECKBOX}_VALUE" + eval TEMP_ACTION="\$CHECK_${CHECKBOX}_OPTION_${TEMP_VALUE}_ACTION" + if [ -n "$TEMP_ACTION" ]; then + $TEMP_ACTION + fi +} + +# Description: Start processing a menu +# Arguments: $1 - the type of the main menu +# $2 - the name of the main menu +do_menu() { + local MENU_TYPE START_MENU SAVE_FILE + + MENU_TYPE=$1 + START_MENU=$2 + + menu_init "$MENU_TYPE" "$START_MENU" + menu_handle "$MENU_TYPE" "$START_MENU" + echo +} + +# Description: Load the menu settings from file +# Arguments: $1 - the type of the menu (currently ignored) +# $2 - the name of the menu (currently ignored) +# $3 - the name of the file to load from +# Returns: 0 - if the file was loaded successfully +# 1 - if the file did not exist +do_menu_load() { + SAVE_FILE=$3 + + if [ ! -e "$SAVE_FILE" ]; then + return 1 + fi + + . "$SAVE_FILE" + return 0 +} + +# Description: Save the menu settings to file +# Arguments: $1 - the type of the menu +# $2 - the name of the menu +# $3 - the name of the file to save to +# Returns: 0 - if the file was saved successfully +do_menu_save() { + MENU_TYPE=$1 + START_MENU=$2 + SAVE_FILE=$3 + + echo "Saving choices..." + menu_save "$MENU_TYPE" "$START_MENU" > "$SAVE_FILE" + return 0 +} + + + + diff --git a/build/unix/recurse b/build/unix/recurse new file mode 100755 index 0000000..0d39efa --- /dev/null +++ b/build/unix/recurse @@ -0,0 +1,88 @@ +#!/bin/sh + +# Generic code for traversing the source code directory structure according to +# the Makeinfo files. + +usage() { + cat << EOF +Usage: + recurse + +With the parameters: + + The name identifying the project, used as prefix in variables in + 'Makeproject' and 'Makeinfo'. + + + The root directory, containing 'Makeproject'. +EOF +} + +if [ $# -ne 2 ]; then + usage >&2 + exit 1 +fi + +BUILD_PROJECT=$1 +BUILD_ROOT=${2%/}/ + +# $1 - The prefix up to this point +# $2 - The name of the current subdir +recurse_subdir() { + local REC_PREFIX SUBDIRS SUBDIR CFILES CXXFILES HFILES MFILES RCFILES FILE + eval local ${BUILD_PROJECT}_CFILES \ + ${BUILD_PROJECT}_CXXFILES \ + ${BUILD_PROJECT}_HFILES \ + ${BUILD_PROJECT}_MFILES \ + ${BUILD_PROJECT}_RCFILES \ + ${BUILD_PROJECT}_SUBDIRS + + REC_PREFIX="$1$2/" + if [ "$REC_PREFIX" = "/" ]; then + REC_PREFIX= + fi + + eval ${BUILD_PROJECT}_CFILES= + eval ${BUILD_PROJECT}_CXXFILES= + eval ${BUILD_PROJECT}_HFILES= + eval ${BUILD_PROJECT}_MFILES= + eval ${BUILD_PROJECT}_RCFILES= + eval ${BUILD_PROJECT}_SUBDIRS= + + . "${BUILD_ROOT}${REC_PREFIX}Makeinfo" + + eval CFILES=\$${BUILD_PROJECT}_CFILES + eval CXXFILES=\$${BUILD_PROJECT}_CXXFILES + eval HFILES=\$${BUILD_PROJECT}_HFILES + eval MFILES=\$${BUILD_PROJECT}_MFILES + eval RCFILES=\$${BUILD_PROJECT}_RCFILES + + for FILE in $CFILES; do + echo "C ${OBJDIR}${REC_PREFIX}$FILE" + done + for FILE in $CXXFILES; do + echo "CXX ${OBJDIR}${REC_PREFIX}$FILE" + done + for FILE in $HFILES; do + echo "H ${OBJDIR}${REC_PREFIX}$FILE" + done + for FILE in $MFILES; do + echo "M ${OBJDIR}${REC_PREFIX}$FILE" + done + for FILE in $RCFILES; do + echo "RC ${OBJDIR}${REC_PREFIX}$FILE" + done + + eval SUBDIRS=\$${BUILD_PROJECT}_SUBDIRS + + for SUBDIR in $SUBDIRS; do + echo "DIRIN ${OBJDIR}${REC_PREFIX}$SUBDIR" + recurse_subdir "$REC_PREFIX" "$SUBDIR" + echo "DIROUT ${OBJDIR}${REC_PREFIX}$SUBDIR" + done +} + +. "${BUILD_ROOT}Makeproject" + +recurse_subdir "" "" + diff --git a/build/unix/todo b/build/unix/todo new file mode 100644 index 0000000..d156e61 --- /dev/null +++ b/build/unix/todo @@ -0,0 +1,15 @@ +- flag for an option to set if changing it will trigger a new 'make depend' +- same for 'make clean' +- Specify files to be removed on clean. +- static compilationa (?) +- Let the dependency index depend on the Makeinfo files + (What about the internal dependencies among Makeinfo) + +some docs +- uqm_LDFLAGS etc are only relevant in the top dir +- some variables are 'inherited' from parent dir + update: this is not true anymore. The behavior was not needed and + would just complicate things. +- files are sourced (.) + + diff --git a/build/unix/uqm-wrapper.in b/build/unix/uqm-wrapper.in new file mode 100755 index 0000000..262f7f4 --- /dev/null +++ b/build/unix/uqm-wrapper.in @@ -0,0 +1,4 @@ +#!/bin/sh +# Wrapper script for starting The Ur-Quan Masters +exec "@INSTALL_LIBDIR@uqm/uqm" "--contentdir=@INSTALL_SHAREDIR@uqm/content" "$@" + diff --git a/build/unix_installer/README b/build/unix_installer/README new file mode 100644 index 0000000..23122d3 --- /dev/null +++ b/build/unix_installer/README @@ -0,0 +1,3 @@ +This directory contains files pertaining to generating self-extracting +installer files for unix-like platforms. + diff --git a/build/unix_installer/USAGE b/build/unix_installer/USAGE new file mode 100644 index 0000000..c73ca8c --- /dev/null +++ b/build/unix_installer/USAGE @@ -0,0 +1,14 @@ +Making a release binary: + +- Build the game in release mode. + +- Change build/unix_installer/template to suit your needs. + +- From the 'sc2' dir of the svn tree, run the following command, changing + the arguments if necessary. + The first one is the name of the final executable, the second + the template to use. + + build/unix_installer/buildinstaller.sh uqm-0.2-linux-dynamic.sh \ + "build/unix_installer/template" + diff --git a/build/unix_installer/buildinstaller.sh b/build/unix_installer/buildinstaller.sh new file mode 100755 index 0000000..1a14aac --- /dev/null +++ b/build/unix_installer/buildinstaller.sh @@ -0,0 +1,107 @@ +#!/bin/sh +# Script for creating self-extracting installer files for unix-like systems. +# By Serge van den Boom, 2003-02-20 + +TEMPDIR="/tmp/buildinstaller_$$" + +if [ $# -ne 2 ]; then + cat >&2 << EOF +Usage: buildinstaller.sh