diff --git a/polymer/build/Makefile b/polymer/build/Makefile index b55bb2c18..1754d20c7 100644 --- a/polymer/build/Makefile +++ b/polymer/build/Makefile @@ -1,4 +1,6 @@ +# # Build Makefile for GNU Make +# # Notes: # As of 6 July 2005, the engine should handle optimisations being enabled. @@ -22,34 +24,40 @@ NOASM ?= 0 LINKED_GTK ?= 0 BUILD32_ON_64 ?= 0 -# Debugging options +# Debugging/Build options # RELEASE - 1 = no debugging # EFENCE - 1 = compile with Electric Fence for malloc() debugging +# OPTLEVEL - 0..3 = GCC optimization strategy +# RELEASE?=1 -OPTLEVEL?=2 EFENCE?=0 +OPTLEVEL ?= 2 -# SDK locations - adjust to match your setup +# SDK locations for Windows - adjust to match your setup +# DXROOT=c:/sdks/directx/dx61 FMODROOTWIN=c:/sdks/fmodapi374win/api -# build locations - OBJ gets overridden to the game-specific objects dir +# Build locations - OBJ gets overridden to the game-specific objects dir +# OBJ?=obj.gnu SRC=src RSRC=rsrc INC=include -# filename extensions - these won't need to change +# Filename extensions - these won't need to change +# o=o res=o asm=nasm -# debugging and release -ifneq (0,$(RELEASE)) - # debugging disabled +# Debugging and release +# +ifneq ($(RELEASE),0) + # Debugging disabled debug=-fomit-frame-pointer -O$(OPTLEVEL) else - # debugging enabled + # Debugging enabled debug=-ggdb -O0 -DDEBUGGINGAIDS -DNOSDLPARACHUTE endif @@ -98,11 +106,18 @@ endif EDITOROBJS=$(OBJ)/build.$o \ $(OBJ)/config.$o -# detect the platform +# PLATFORM SPECIFIC SETTINGS + ifeq ($(PLATFORM),LINUX) ASFLAGS+= -f elf LIBS+= -lm endif +ifeq ($(PLATFORM),DARWIN) + ENGINEOBJS += $(OBJ)/StartupWinController.editor.$o \ + $(OBJ)//osxbits.$o + ASFLAGS += -f Mach-O + TARGETOPTS += -DNOASM +endif ifeq ($(PLATFORM),BSD) ASFLAGS+= -f elf OURCFLAGS+= -I/usr/X11R6/include @@ -153,18 +168,6 @@ OURCFLAGS+= $(BUILDCFLAGS) # TARGETS -# Invoking Make from the terminal in OSX just chains the build on to xcode -ifeq ($(PLATFORM),DARWIN) -ifeq ($(RELEASE),0) -style=Development -else -style=Deployment -endif -.PHONY: alldarwin -alldarwin: - cd osx/engine && xcodebuild -target All -buildstyle $(style) -endif - UTILS=kextract$(EXESUFFIX) kgroup$(EXESUFFIX) transpal$(EXESUFFIX) wad2art$(EXESUFFIX) wad2map$(EXESUFFIX) all: $(OBJ)/$(ENGINELIB) $(OBJ)/$(EDITORLIB) @@ -212,6 +215,9 @@ $(OBJ)/%.$o: $(SRC)/%.nasm $(OBJ)/%.$o: $(SRC)/%.c $(CC) $(CFLAGS) $(OURCFLAGS) -c $< -o $@ +$(OBJ)/%.$o: $(SRC)/%.m + $(CC) $(CFLAGS) $(OURCFLAGS) -c $< -o $@ + $(OBJ)/%.$o: $(SRC)/%.cpp $(CXX) $(CXXFLAGS) $(OURCXXFLAGS) $(OURCFLAGS) -c $< -o $@ @@ -232,18 +238,12 @@ $(RSRC)/editor_banner.c: $(RSRC)/build.bmp gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $^ | sed 's/load_inc//' >> $@ # PHONIES + clean: -ifeq ($(PLATFORM),DARWIN) - cd osx/engine && xcodebuild -target All clean -else -rm -f $(OBJ)/* -endif veryclean: clean -ifeq ($(PLATFORM),DARWIN) -else -rm -f $(ENGINELIB) $(EDITORLIB) $(UTILS) -endif .PHONY: fixlineends fixlineends: diff --git a/polymer/build/Makefile.shared b/polymer/build/Makefile.shared index efd330e56..ccb260d97 100644 --- a/polymer/build/Makefile.shared +++ b/polymer/build/Makefile.shared @@ -4,9 +4,9 @@ ENGINELIB=libengine.a EDITORLIB=libbuild.a SDLCONFIG=sdl-config -#SDLCONFIG=/usr/local/bin/sdl11-config +SDL_FRAMEWORK = 0 -# overridden for OSes that don't have the cutdown stdc++ that is supc++ +# Overridden for OSes that don't have the cutdown stdc++ that is supc++ STDCPPLIB=-lsupc++ BUILDCFLAGS= @@ -14,6 +14,7 @@ BUILDCFLAGS= # Detect the platform if it wasn't explicitly given to us from # the outside world. This allows cross-compilation by overriding # CC and giving us PLATFORM specifically. +# ifndef PLATFORM uname=$(strip $(shell uname -s)) PLATFORM=UNKNOWN @@ -49,20 +50,28 @@ endif ifeq ($(PLATFORM),LINUX) RENDERTYPE=SDL BUILDCFLAGS+= -DHAVE_INTTYPES - GTKCOMPAT32=0 + ifeq ($(findstring x86_64,$(shell uname -m)),x86_64) ifeq (1,$(BUILD32_ON_64)) - # on my 64bit Gentoo these are the 32bit emulation libs + # On my 64bit Gentoo these are the 32bit emulation libs LIBS+= -m32 -L/emul/linux/x86/usr/lib BUILDCFLAGS+= -m32 - #override WITHOUT_GTK=0 + # Override WITHOUT_GTK=0 GTKCOMPAT32=1 else override NOASM=1 endif endif endif +ifeq ($(PLATFORM),DARWIN) + RENDERTYPE = SDL + BUILDCFLAGS += -DHAVE_INTTYPES + GTKCOMPAT32 = 0 + SDL_FRAMEWORK = 1 + # ASM won't work on PowerPC and currently throws errors on i386 too :-/ + override NOASM = 1 +endif ifeq ($(PLATFORM),WINDOWS) RENDERTYPE ?= WIN BUILDCFLAGS+= -DHAVE_INTTYPES @@ -107,17 +116,22 @@ ifeq ($(PLATFORM),SYLLABLE) endif ifeq ($(RENDERTYPE),SDL) + ifeq ($(SDL_FRAMEWORK),1) + LIBS += -Wl,-framework,SDL + SDLCONFIG_CFLAGS+= -I/Library/Frameworks/SDL.framework/Headers + else ifneq ($(SDLCONFIG),) LIBS+= $(shell $(SDLCONFIG) --libs) SDLCONFIG_CFLAGS+=$(shell $(SDLCONFIG) --cflags) endif + endif ifeq (1,$(WITHOUT_GTK)) HAVE_GTK2=0 else ifneq (No,$(shell pkg-config --exists gtk+-2.0 || echo No)) HAVE_GTK2=1 - # on my 64bit Gentoo box I have Cairo enabled which means the libs list includes + # On my 64bit Gentoo box I have Cairo enabled which means the libs list includes # -lpangocairo-1.0 and -lcairo, however the 32bit compatibility libraries don't # include cairo, so we need to filter out those -l switches in order to link ifneq ($(LINKED_GTK),0) diff --git a/polymer/build/include/a.h b/polymer/build/include/a.h index 9c57c2745..e709a61ec 100644 --- a/polymer/build/include/a.h +++ b/polymer/build/include/a.h @@ -95,7 +95,7 @@ extern int drawslab(int,int,int,int,int,int); #elif defined(__GNUC__) && defined(__i386__) && !defined(NOASM) // __WATCOMC__ -#if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__SYLLABLE__) +#if defined(__linux) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__SYLLABLE__) #define __cdecl #endif diff --git a/polymer/build/include/sdl_inc.h b/polymer/build/include/sdl_inc.h index 8996c8a64..267703358 100644 --- a/polymer/build/include/sdl_inc.h +++ b/polymer/build/include/sdl_inc.h @@ -1,7 +1,7 @@ #ifndef __SDL_INC_H #define __SDL_INC_H -#if defined(__APPLE__) +#if defined(SDL_FRAMEWORK) # include #else # include "SDL.h" @@ -27,8 +27,8 @@ Minimum required SDL versions: #endif #if defined(_NEED_SDLMIXER) -# if defined(__APPLE__) -# include +# if defined(SDL_FRAMEWORK) +# include # else # include "SDL_mixer.h" # endif diff --git a/polymer/build/src/compat.c b/polymer/build/src/compat.c index 5e9fb1e83..24b42179f 100644 --- a/polymer/build/src/compat.c +++ b/polymer/build/src/compat.c @@ -28,9 +28,11 @@ #include #ifdef __APPLE__ +#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 # include # include #endif +#endif #if defined(__WATCOMC__) # include @@ -343,7 +345,7 @@ char *Bgethomedir(void) if (SUCCEEDED(aSHGetSpecialFolderPathA(NULL, appdata, CSIDL_APPDATA, FALSE))) return strdup(appdata); return NULL; -#elif defined __APPLE__ +#elif defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 FSRef ref; CFStringRef str; CFURLRef base; @@ -368,7 +370,7 @@ char *Bgethomedir(void) char *Bgetsupportdir(int global) { -#ifndef __APPLE__ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3_ UNREFERENCED_PARAMETER(global); return Bgethomedir(); #else diff --git a/polymer/eduke32/Apple/include/ogg/config_types.h b/polymer/eduke32/Apple/include/ogg/config_types.h new file mode 100644 index 000000000..496e900f2 --- /dev/null +++ b/polymer/eduke32/Apple/include/ogg/config_types.h @@ -0,0 +1,11 @@ +#ifndef __CONFIG_TYPES_H__ +#define __CONFIG_TYPES_H__ + +/* these are filled in by configure */ +typedef int16_t ogg_int16_t; +typedef u_int16_t ogg_uint16_t; +typedef int32_t ogg_int32_t; +typedef u_int32_t ogg_uint32_t; +typedef int64_t ogg_int64_t; + +#endif diff --git a/polymer/eduke32/Apple/include/ogg/ogg.h b/polymer/eduke32/Apple/include/ogg/ogg.h new file mode 100644 index 000000000..9082679d9 --- /dev/null +++ b/polymer/eduke32/Apple/include/ogg/ogg.h @@ -0,0 +1,202 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: toplevel libogg include + last mod: $Id: ogg.h 7188 2004-07-20 07:26:04Z xiphmont $ + + ********************************************************************/ +#ifndef _OGG_H +#define _OGG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct { + long endbyte; + int endbit; + + unsigned char *buffer; + unsigned char *ptr; + long storage; +} oggpack_buffer; + +/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ + +typedef struct { + unsigned char *header; + long header_len; + unsigned char *body; + long body_len; +} ogg_page; + +/* ogg_stream_state contains the current encode/decode state of a logical + Ogg bitstream **********************************************************/ + +typedef struct { + unsigned char *body_data; /* bytes from packet bodies */ + long body_storage; /* storage elements allocated */ + long body_fill; /* elements stored; fill mark */ + long body_returned; /* elements of fill returned */ + + + int *lacing_vals; /* The values that will go to the segment table */ + ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact + this way, but it is simple coupled to the + lacing fifo */ + long lacing_storage; + long lacing_fill; + long lacing_packet; + long lacing_returned; + + unsigned char header[282]; /* working space for header encode */ + int header_fill; + + int e_o_s; /* set when we have buffered the last packet in the + logical bitstream */ + int b_o_s; /* set after we've written the initial page + of a logical bitstream */ + long serialno; + long pageno; + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a seperate abstraction + layer) also knows about the gap */ + ogg_int64_t granulepos; + +} ogg_stream_state; + +/* ogg_packet is used to encapsulate the data and metadata belonging + to a single raw Ogg/Vorbis packet *************************************/ + +typedef struct { + unsigned char *packet; + long bytes; + long b_o_s; + long e_o_s; + + ogg_int64_t granulepos; + + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a seperate abstraction + layer) also knows about the gap */ +} ogg_packet; + +typedef struct { + unsigned char *data; + int storage; + int fill; + int returned; + + int unsynced; + int headerbytes; + int bodybytes; +} ogg_sync_state; + +/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ + +extern void oggpack_writeinit(oggpack_buffer *b); +extern void oggpack_writetrunc(oggpack_buffer *b,long bits); +extern void oggpack_writealign(oggpack_buffer *b); +extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpack_reset(oggpack_buffer *b); +extern void oggpack_writeclear(oggpack_buffer *b); +extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpack_look(oggpack_buffer *b,int bits); +extern long oggpack_look1(oggpack_buffer *b); +extern void oggpack_adv(oggpack_buffer *b,int bits); +extern void oggpack_adv1(oggpack_buffer *b); +extern long oggpack_read(oggpack_buffer *b,int bits); +extern long oggpack_read1(oggpack_buffer *b); +extern long oggpack_bytes(oggpack_buffer *b); +extern long oggpack_bits(oggpack_buffer *b); +extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); + +extern void oggpackB_writeinit(oggpack_buffer *b); +extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); +extern void oggpackB_writealign(oggpack_buffer *b); +extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpackB_reset(oggpack_buffer *b); +extern void oggpackB_writeclear(oggpack_buffer *b); +extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpackB_look(oggpack_buffer *b,int bits); +extern long oggpackB_look1(oggpack_buffer *b); +extern void oggpackB_adv(oggpack_buffer *b,int bits); +extern void oggpackB_adv1(oggpack_buffer *b); +extern long oggpackB_read(oggpack_buffer *b,int bits); +extern long oggpackB_read1(oggpack_buffer *b); +extern long oggpackB_bytes(oggpack_buffer *b); +extern long oggpackB_bits(oggpack_buffer *b); +extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); + +/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ + +extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); +extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); + +/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ + +extern int ogg_sync_init(ogg_sync_state *oy); +extern int ogg_sync_clear(ogg_sync_state *oy); +extern int ogg_sync_reset(ogg_sync_state *oy); +extern int ogg_sync_destroy(ogg_sync_state *oy); + +extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); +extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); +extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); +extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); +extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); +extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); + +/* Ogg BITSTREAM PRIMITIVES: general ***************************/ + +extern int ogg_stream_init(ogg_stream_state *os,int serialno); +extern int ogg_stream_clear(ogg_stream_state *os); +extern int ogg_stream_reset(ogg_stream_state *os); +extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); +extern int ogg_stream_destroy(ogg_stream_state *os); +extern int ogg_stream_eos(ogg_stream_state *os); + +extern void ogg_page_checksum_set(ogg_page *og); + +extern int ogg_page_version(ogg_page *og); +extern int ogg_page_continued(ogg_page *og); +extern int ogg_page_bos(ogg_page *og); +extern int ogg_page_eos(ogg_page *og); +extern ogg_int64_t ogg_page_granulepos(ogg_page *og); +extern int ogg_page_serialno(ogg_page *og); +extern long ogg_page_pageno(ogg_page *og); +extern int ogg_page_packets(ogg_page *og); + +extern void ogg_packet_clear(ogg_packet *op); + + +#ifdef __cplusplus +} +#endif + +#endif /* _OGG_H */ + + + + + + diff --git a/polymer/eduke32/Apple/include/ogg/os_types.h b/polymer/eduke32/Apple/include/ogg/os_types.h new file mode 100644 index 000000000..32dcb8bff --- /dev/null +++ b/polymer/eduke32/Apple/include/ogg/os_types.h @@ -0,0 +1,127 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: #ifdef jail to whip a few platforms into the UNIX ideal. + last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $ + + ********************************************************************/ +#ifndef _OS_TYPES_H +#define _OS_TYPES_H + +/* make it easy on the folks that want to compile the libs with a + different malloc than stdlib */ +#define _ogg_malloc malloc +#define _ogg_calloc calloc +#define _ogg_realloc realloc +#define _ogg_free free + +#if defined(_WIN32) + +# if defined(__CYGWIN__) +# include <_G_config.h> + typedef _G_int64_t ogg_int64_t; + typedef _G_int32_t ogg_int32_t; + typedef _G_uint32_t ogg_uint32_t; + typedef _G_int16_t ogg_int16_t; + typedef _G_uint16_t ogg_uint16_t; +# elif defined(__MINGW32__) + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + typedef unsigned long long ogg_uint64_t; +# elif defined(__MWERKS__) + typedef long long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; +# else + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; + typedef __int32 ogg_int32_t; + typedef unsigned __int32 ogg_uint32_t; + typedef __int16 ogg_int16_t; + typedef unsigned __int16 ogg_uint16_t; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 ogg_int16_t; + typedef UInt16 ogg_uint16_t; + typedef SInt32 ogg_int32_t; + typedef UInt32 ogg_uint32_t; + typedef SInt64 ogg_int64_t; + +#elif defined(__MACOSX__) /* MacOS X Framework build */ + +# include + typedef int16_t ogg_int16_t; + typedef u_int16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef u_int32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16_t ogg_int16_t; + typedef u_int16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef u_int32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short ogg_int16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(R5900) + + /* PS2 EE */ + typedef long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned ogg_uint32_t; + typedef short ogg_int16_t; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#else + +# include +# include + +#endif + +#endif /* _OS_TYPES_H */ diff --git a/polymer/eduke32/Apple/include/vorbis/codec.h b/polymer/eduke32/Apple/include/vorbis/codec.h new file mode 100644 index 000000000..b23fe0af7 --- /dev/null +++ b/polymer/eduke32/Apple/include/vorbis/codec.h @@ -0,0 +1,241 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + + ******************************************************************** + + function: libvorbis codec headers + last mod: $Id: codec.h 13293 2007-07-24 00:09:47Z xiphmont $ + + ********************************************************************/ + +#ifndef _vorbis_codec_h_ +#define _vorbis_codec_h_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include + +typedef struct vorbis_info{ + int version; + int channels; + long rate; + + /* The below bitrate declarations are *hints*. + Combinations of the three values carry the following implications: + + all three set to the same value: + implies a fixed rate bitstream + only nominal set: + implies a VBR stream that averages the nominal bitrate. No hard + upper/lower limit + upper and or lower set: + implies a VBR bitstream that obeys the bitrate limits. nominal + may also be set to give a nominal rate. + none set: + the coder does not care to speculate. + */ + + long bitrate_upper; + long bitrate_nominal; + long bitrate_lower; + long bitrate_window; + + void *codec_setup; +} vorbis_info; + +/* vorbis_dsp_state buffers the current vorbis audio + analysis/synthesis state. The DSP state belongs to a specific + logical bitstream ****************************************************/ +typedef struct vorbis_dsp_state{ + int analysisp; + vorbis_info *vi; + + float **pcm; + float **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + + int preextrapolate; + int eofflag; + + long lW; + long W; + long nW; + long centerW; + + ogg_int64_t granulepos; + ogg_int64_t sequence; + + ogg_int64_t glue_bits; + ogg_int64_t time_bits; + ogg_int64_t floor_bits; + ogg_int64_t res_bits; + + void *backend_state; +} vorbis_dsp_state; + +typedef struct vorbis_block{ + /* necessary stream state for linking to the framing abstraction */ + float **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + + long lW; + long W; + long nW; + int pcmend; + int mode; + + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + + /* local storage to avoid remallocing; it's up to the mapping to + structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + + /* bitmetrics for the frame */ + long glue_bits; + long time_bits; + long floor_bits; + long res_bits; + + void *internal; + +} vorbis_block; + +/* vorbis_block is a single block of data to be processed as part of +the analysis/synthesis stream; it belongs to a specific logical +bitstream, but is independant from other vorbis_blocks belonging to +that logical bitstream. *************************************************/ + +struct alloc_chain{ + void *ptr; + struct alloc_chain *next; +}; + +/* vorbis_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). vorbis_info and substructures are in backends.h. +*********************************************************************/ + +/* the comments are not part of vorbis_info so that vorbis_info can be + static storage */ +typedef struct vorbis_comment{ + /* unlimited user comment fields. libvorbis writes 'libvorbis' + whatever vendor is set to in encode */ + char **user_comments; + int *comment_lengths; + int comments; + char *vendor; + +} vorbis_comment; + + +/* libvorbis encodes in two abstraction layers; first we perform DSP + and produce a packet (see docs/analysis.txt). The packet is then + coded into a framed OggSquish bitstream by the second layer (see + docs/framing.txt). Decode is the reverse process; we sync/frame + the bitstream and extract individual packets, then decode the + packet back into PCM audio. + + The extra framing/packetizing is used in streaming formats, such as + files. Over the net (such as with UDP), the framing and + packetization aren't necessary as they're provided by the transport + and the streaming layer is not used */ + +/* Vorbis PRIMITIVES: general ***************************************/ + +extern void vorbis_info_init(vorbis_info *vi); +extern void vorbis_info_clear(vorbis_info *vi); +extern int vorbis_info_blocksize(vorbis_info *vi,int zo); +extern void vorbis_comment_init(vorbis_comment *vc); +extern void vorbis_comment_add(vorbis_comment *vc, char *comment); +extern void vorbis_comment_add_tag(vorbis_comment *vc, + char *tag, char *contents); +extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count); +extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); +extern void vorbis_comment_clear(vorbis_comment *vc); + +extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); +extern int vorbis_block_clear(vorbis_block *vb); +extern void vorbis_dsp_clear(vorbis_dsp_state *v); +extern double vorbis_granule_time(vorbis_dsp_state *v, + ogg_int64_t granulepos); + +/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ + +extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); +extern int vorbis_analysis_headerout(vorbis_dsp_state *v, + vorbis_comment *vc, + ogg_packet *op, + ogg_packet *op_comm, + ogg_packet *op_code); +extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); + +extern int vorbis_bitrate_addblock(vorbis_block *vb); +extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, + ogg_packet *op); + +/* Vorbis PRIMITIVES: synthesis layer *******************************/ +extern int vorbis_synthesis_idheader(ogg_packet *op); +extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, + ogg_packet *op); + +extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_synthesis_restart(vorbis_dsp_state *v); +extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); +extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); + +extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag); +extern int vorbis_synthesis_halfrate_p(vorbis_info *v); + +/* Vorbis ERRORS and return codes ***********************************/ + +#define OV_FALSE -1 +#define OV_EOF -2 +#define OV_HOLE -3 + +#define OV_EREAD -128 +#define OV_EFAULT -129 +#define OV_EIMPL -130 +#define OV_EINVAL -131 +#define OV_ENOTVORBIS -132 +#define OV_EBADHEADER -133 +#define OV_EVERSION -134 +#define OV_ENOTAUDIO -135 +#define OV_EBADPACKET -136 +#define OV_EBADLINK -137 +#define OV_ENOSEEK -138 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/polymer/eduke32/Apple/include/vorbis/vorbisenc.h b/polymer/eduke32/Apple/include/vorbis/vorbisenc.h new file mode 100644 index 000000000..82797a496 --- /dev/null +++ b/polymer/eduke32/Apple/include/vorbis/vorbisenc.h @@ -0,0 +1,112 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: vorbis encode-engine setup + last mod: $Id: vorbisenc.h 13293 2007-07-24 00:09:47Z xiphmont $ + + ********************************************************************/ + +#ifndef _OV_ENC_H_ +#define _OV_ENC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "codec.h" + +extern int vorbis_encode_init(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +extern int vorbis_encode_setup_managed(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +extern int vorbis_encode_setup_vbr(vorbis_info *vi, + long channels, + long rate, + + float quality /* quality level from 0. (lo) to 1. (hi) */ + ); + +extern int vorbis_encode_init_vbr(vorbis_info *vi, + long channels, + long rate, + + float base_quality /* quality level from 0. (lo) to 1. (hi) */ + ); + +extern int vorbis_encode_setup_init(vorbis_info *vi); + +extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); + + /* deprecated rate management supported only for compatability */ +#define OV_ECTL_RATEMANAGE_GET 0x10 +#define OV_ECTL_RATEMANAGE_SET 0x11 +#define OV_ECTL_RATEMANAGE_AVG 0x12 +#define OV_ECTL_RATEMANAGE_HARD 0x13 + +struct ovectl_ratemanage_arg { + int management_active; + + long bitrate_hard_min; + long bitrate_hard_max; + double bitrate_hard_window; + + long bitrate_av_lo; + long bitrate_av_hi; + double bitrate_av_window; + double bitrate_av_window_center; +}; + + + /* new rate setup */ +#define OV_ECTL_RATEMANAGE2_GET 0x14 +#define OV_ECTL_RATEMANAGE2_SET 0x15 + +struct ovectl_ratemanage2_arg { + int management_active; + + long bitrate_limit_min_kbps; + long bitrate_limit_max_kbps; + long bitrate_limit_reservoir_bits; + double bitrate_limit_reservoir_bias; + + long bitrate_average_kbps; + double bitrate_average_damping; +}; + + + +#define OV_ECTL_LOWPASS_GET 0x20 +#define OV_ECTL_LOWPASS_SET 0x21 + +#define OV_ECTL_IBLOCK_GET 0x30 +#define OV_ECTL_IBLOCK_SET 0x31 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + + diff --git a/polymer/eduke32/Apple/include/vorbis/vorbisfile.h b/polymer/eduke32/Apple/include/vorbis/vorbisfile.h new file mode 100644 index 000000000..569b3f44a --- /dev/null +++ b/polymer/eduke32/Apple/include/vorbis/vorbisfile.h @@ -0,0 +1,183 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + last mod: $Id: vorbisfile.h 13293 2007-07-24 00:09:47Z xiphmont $ + + ********************************************************************/ + +#ifndef _OV_FILE_H_ +#define _OV_FILE_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include +#include "codec.h" + +/* The function prototypes for the callbacks are basically the same as for + * the stdio functions fread, fseek, fclose, ftell. + * The one difference is that the FILE * arguments have been replaced with + * a void * - this is to be used as a pointer to whatever internal data these + * functions might need. In the stdio case, it's just a FILE * cast to a void * + * + * If you use other functions, check the docs for these functions and return + * the right values. For seek_func(), you *MUST* return -1 if the stream is + * unseekable + */ +typedef struct { + size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); + int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); + int (*close_func) (void *datasource); + long (*tell_func) (void *datasource); +} ov_callbacks; + +/* a few sets of convenient callbacks, especially for use under + * Windows where ov_open_callbacks() should always be used instead of + * ov_open() to avoid problems with incompatable crt.o version linking + * issues. */ + +static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){ + if(f==NULL)return(-1); + return fseek(f,off,whence); +} + +static ov_callbacks OV_CALLBACKS_DEFAULT = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) fclose, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) NULL, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) fclose, + (long (*)(void *)) NULL +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) NULL, + (long (*)(void *)) NULL +}; + +#define NOTOPEN 0 +#define PARTOPEN 1 +#define OPENED 2 +#define STREAMSET 3 +#define INITSET 4 + +typedef struct OggVorbis_File { + void *datasource; /* Pointer to a FILE *, etc. */ + int seekable; + ogg_int64_t offset; + ogg_int64_t end; + ogg_sync_state oy; + + /* If the FILE handle isn't seekable (eg, a pipe), only the current + stream appears */ + int links; + ogg_int64_t *offsets; + ogg_int64_t *dataoffsets; + long *serialnos; + ogg_int64_t *pcmlengths; /* overloaded to maintain binary + compatability; x2 size, stores both + beginning and end values */ + vorbis_info *vi; + vorbis_comment *vc; + + /* Decoding working state local storage */ + ogg_int64_t pcm_offset; + int ready_state; + long current_serialno; + int current_link; + + double bittrack; + double samptrack; + + ogg_stream_state os; /* take physical pages, weld into a logical + stream of packets */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + + ov_callbacks callbacks; + +} OggVorbis_File; + + +extern int ov_clear(OggVorbis_File *vf); +extern int ov_fopen(char *path,OggVorbis_File *vf); +extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); +extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, + char *initial, long ibytes, ov_callbacks callbacks); + +extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); +extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, + char *initial, long ibytes, ov_callbacks callbacks); +extern int ov_test_open(OggVorbis_File *vf); + +extern long ov_bitrate(OggVorbis_File *vf,int i); +extern long ov_bitrate_instant(OggVorbis_File *vf); +extern long ov_streams(OggVorbis_File *vf); +extern long ov_seekable(OggVorbis_File *vf); +extern long ov_serialnumber(OggVorbis_File *vf,int i); + +extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); +extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); +extern double ov_time_total(OggVorbis_File *vf,int i); + +extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page(OggVorbis_File *vf,double pos); + +extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek_lap(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos); + +extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); +extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); +extern double ov_time_tell(OggVorbis_File *vf); + +extern vorbis_info *ov_info(OggVorbis_File *vf,int link); +extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); + +extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, + int *bitstream); +extern long ov_read(OggVorbis_File *vf,char *buffer,int length, + int bigendianp,int word,int sgned,int *bitstream); +extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2); + +extern int ov_halfrate(OggVorbis_File *vf,int flag); +extern int ov_halfrate_p(OggVorbis_File *vf); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + + diff --git a/polymer/eduke32/Apple/lib/libSDLmain.a b/polymer/eduke32/Apple/lib/libSDLmain.a new file mode 100644 index 000000000..cdb70ab16 Binary files /dev/null and b/polymer/eduke32/Apple/lib/libSDLmain.a differ diff --git a/polymer/eduke32/Apple/lib/libogg.a b/polymer/eduke32/Apple/lib/libogg.a new file mode 100644 index 000000000..c80168202 Binary files /dev/null and b/polymer/eduke32/Apple/lib/libogg.a differ diff --git a/polymer/eduke32/Apple/lib/libvorbis.a b/polymer/eduke32/Apple/lib/libvorbis.a new file mode 100644 index 000000000..534eae131 Binary files /dev/null and b/polymer/eduke32/Apple/lib/libvorbis.a differ diff --git a/polymer/eduke32/Apple/lib/libvorbisenc.a b/polymer/eduke32/Apple/lib/libvorbisenc.a new file mode 100644 index 000000000..ec030df0a Binary files /dev/null and b/polymer/eduke32/Apple/lib/libvorbisenc.a differ diff --git a/polymer/eduke32/Apple/lib/libvorbisfile.a b/polymer/eduke32/Apple/lib/libvorbisfile.a new file mode 100644 index 000000000..0942ec1d7 Binary files /dev/null and b/polymer/eduke32/Apple/lib/libvorbisfile.a differ diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index 206578292..28007ae26 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -1,26 +1,31 @@ +# # EDuke32 Makefile for GNU Make +# + +# DEFINES # SDK locations - adjust to match your setup DXROOT=../sdk/dx -ALROOT=AL + +ALROOT = AL +SDLROOT = # Engine options SUPERBUILD = 1 POLYMOST = 1 -POLYMER = 1 +POLYMER = 0 USE_OPENGL = 1 NOASM = 0 LINKED_GTK = 0 BUILD32_ON_64 = 0 -# Debugging options +# Debugging/Build options RELEASE?=1 NOSOUND?=0 -USE_OPENAL?=1 +USE_OPENAL ?= 1 OPTLEVEL?=2 -# build locations - +# Build locations SRC=source RSRC=rsrc EROOT=../build @@ -30,10 +35,10 @@ INC=$(SRC) o=o ifneq (0,$(RELEASE)) - # debugging disabled + # Debugging disabled debug=-fomit-frame-pointer -O$(OPTLEVEL) else - # debugging enabled + # Debugging enabled debug=-ggdb -O0 -DDEBUGGINGAIDS endif @@ -41,31 +46,23 @@ CC=gcc CXX=g++ OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \ - -fno-pic -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -DNOCOPYPROTECT \ + -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -DNOCOPYPROTECT \ -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(SRC)/jaudiolib OURCXXFLAGS=-fno-exceptions -fno-rtti LIBS=-lm -NASMFLAGS=-s #-g +NASMFLAGS = -s EXESUFFIX= include $(EROOT)/Makefile.shared -ifeq ($(PLATFORM),LINUX) - OBJ=obj - EOBJ=eobj - NASMFLAGS+= -f elf - LIBS+= -lvorbisfile -lvorbis -logg -else ifeq ($(PLATFORM),WINDOWS) OBJ=obj_win EOBJ=eobj_win - LIBS+= -L$(ALROOT)/lib -lvorbisfile -lvorbis -logg else OBJ=obj EOBJ=eobj endif -endif JMACTOBJ=$(OBJ)/util_lib.$o \ $(OBJ)/file_lib.$o \ @@ -135,19 +132,59 @@ GAMEOBJS=$(OBJ)/game.$o \ EDITOROBJS=$(OBJ)/astub.$o +# PLATFORM SPECIFIC SETTINGS + +ifeq ($(PLATFORM),LINUX) + OURCFLAGS += -fno-pic + NASMFLAGS += -f elf + LIBS += -lvorbisfile -lvorbis -logg +endif + +ifeq ($(PLATFORM),DARWIN) + ALROOT = Apple + ifeq (1,$(SDL_FRAMEWORK)) + OURCFLAGS += -I$(ALROOT)/include -I/Library/Frameworks/SDL.framework/Headers \ + -I-I/Library/Frameworks/SDL_mixer.framework/Headers + LIBS += -L$(ALROOT)/lib -lvorbisfile -lvorbis -logg -lm \ + -Wl,-framework,SDL -Wl,-framework,SDL_mixer $(ALROOT)/lib/libSDLmain.a \ + -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,OpenGL \ + -Wl,-framework,CoreMidi -Wl,-framework,AudioUnit \ + -Wl,-framework,AudioToolbox -Wl,-framework,IOKit -Wl,-framework,AGL \ + -Wl,-framework,QuickTime -lm + + else + OURCFLAGS += -I$(ALROOT)/include -I$(SDLROOT)/include -I$(SDLROOT)/include/SDL + LIBS += -L$(ALROOT)/lib -lvorbisfile -lvorbis -logg -lm -lSDL_mixer \ + -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,OpenGL \ + -Wl,-framework,CoreMidi -Wl,-framework,AudioUnit \ + -Wl,-framework,AudioToolbox -Wl,-framework,IOKit -Wl,-framework,AGL \ + -Wl,-framework,QuickTime -lm + endif + NASMFLAGS += -f Mach-O + GAMEOBJS += $(OBJ)/startdummy.game.$o + EDITOROBJS += $(OBJ)/startdummy.game.$o +endif + ifeq ($(PLATFORM),WINDOWS) - OURCFLAGS+= -DUNDERSCORES -I$(DXROOT)/include -I$(ALROOT)/include + OURCFLAGS += -fno-pic -DUNDERSCORES -I$(DXROOT)/include -I$(ALROOT)/include NASMFLAGS+= -DUNDERSCORES -f win32 + LIBS += -L$(ALROOT)/lib -lvorbisfile -lvorbis -logg GAMEOBJS+= $(OBJ)/gameres.$o $(OBJ)/winbits.$o $(OBJ)/startwin.game.$o EDITOROBJS+= $(OBJ)/buildres.$o endif ifeq ($(RENDERTYPE),SDL) + ifeq (0,$(SDL_FRAMEWORK)) OURCFLAGS+= $(subst -Dmain=SDL_main,,$(shell sdl-config --cflags)) + else + OURCFLAGS += -DSDL_FRAMEWORK + endif ifneq ($(PLATFORM),WINDOWS) AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_SDL) $(AUDIOLIB_FX_SDL) $(OBJ)/sounds.$o + ifeq (0,$(SDL_FRAMEWORK)) LIBS+= -lSDL_mixer + endif else AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_STUB) $(AUDIOLIB_FX_STUB) $(OBJ)/sounds.$o endif @@ -182,18 +219,6 @@ endif # TARGETS -# Invoking Make from the terminal in OSX just chains the build on to xcode -ifeq ($(PLATFORM),DARWIN) -ifeq ($(RELEASE),0) -style=Development -else -style=Deployment -endif -.PHONY: alldarwin -alldarwin: - cd osx && xcodebuild -target All -buildstyle $(style) -endif - ifeq ($(PLATFORM),WINDOWS) all: eduke32$(EXESUFFIX) mapster32$(EXESUFFIX) duke3d_w32$(EXESUFFIX) else @@ -263,15 +288,9 @@ $(RSRC)/editor_banner.c: $(RSRC)/build.bmp gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $^ | sed 's/load_inc//' >> $@ # PHONIES + clean: -ifeq ($(PLATFORM),DARWIN) - cd osx && xcodebuild -target All clean -else -rm -f $(OBJ)/* eduke32$(EXESUFFIX) eduke32.sym$(EXESUFFIX) mapster32$(EXESUFFIX) mapster32.sym$(EXESUFFIX) core* duke3d_w32$(EXESUFFIX) -endif veryclean: clean -ifeq ($(PLATFORM),DARWIN) -else -rm -f $(EOBJ)/* -endif diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 074eca6ba..dc574873f 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -10113,8 +10113,13 @@ static void genspriteremaps(void) if (fp != -1) kread(fp,(char *)&g_NumPalettes,1); else - gameexit("\nERROR: File 'LOOKUP.DAT' not found."); + gameexit("\nERROR: File 'lookup.dat' not found."); +#if defined(__APPLE__) && B_BIG_ENDIAN != 0 + // this is almost as bad as just setting the value to 25 :P + g_NumPalettes = (g_NumPalettes * (uint64)0x0202020202 & (uint64)0x010884422010) % 1023; +#endif + for (j=0;j < g_NumPalettes;j++) { kread(fp,(signed char *)&look_pos,1); @@ -10574,8 +10579,8 @@ void app_main(int argc,const char **argv) addsearchpath("/usr/share/games/eduke32"); addsearchpath("/usr/local/share/games/eduke32"); #elif defined(__APPLE__) - addsearchpath("/Library/Application Support/JFDuke3D"); addsearchpath("/Library/Application Support/EDuke32"); + addsearchpath("/Library/Application Support/JFDuke3D"); #endif ud.multimode = 1; @@ -10585,7 +10590,15 @@ void app_main(int argc,const char **argv) g_player[0].ps = (player_struct *) Bcalloc(1, sizeof(player_struct)); g_player[0].sync = (input_t *) Bcalloc(1, sizeof(input_t)); - if (getcwd(cwd,BMAX_PATH)) addsearchpath(cwd); + if (getcwd(cwd,BMAX_PATH)) { + addsearchpath(cwd); + #if defined(__APPLE__) + /* Dirty hack on OS X to also look for gamedata inside the application bundle - rhoenie 08/08 */ + char seekinappcontainer[BMAX_PATH]; + Bsnprintf(seekinappcontainer,sizeof(seekinappcontainer),"%s/EDuke32.app/", cwd); + addsearchpath(seekinappcontainer); + #endif + } if (CommandPaths) {