Files
haikuports/media-libs/allegro/patches/allegro-4.3.10-haiku-1.diff
2010-03-26 14:50:48 +00:00

737 lines
26 KiB
Diff

diff -urN allegro-4.3.10/fix.sh allegro-4.3.10-haiku/fix.sh
--- allegro-4.3.10/fix.sh 2008-01-01 13:59:18.000000000 -0800
+++ allegro-4.3.10-haiku/fix.sh 2008-08-23 17:29:03.000000000 -0700
@@ -9,7 +9,7 @@
echo
echo "Usage: $0 <platform> [--quick|--dtou|--utod|--utom|--mtou]"
echo
- echo "Where platform is one of: bcc32, beos, djgpp, mingw, qnx, unix"
+ echo "Where platform is one of: bcc32, beos, djgpp, haiku, mingw, qnx, unix"
echo "mac, macosx, macosx-universal and watcom."
echo "The --quick parameter turns off text file conversion, --dtou converts from"
echo "DOS/Win32 format to Unix, --utod converts from Unix to DOS/Win32 format,"
@@ -140,6 +140,7 @@
"bcc32" ) proc_fix "Windows (BCC32)" "makefile.bcc" "ALLEGRO_BCC32";;
"beos" ) proc_fix "BeOS" "makefile.be" "ALLEGRO_BEOS";;
"djgpp" ) proc_fix "DOS (djgpp)" "makefile.dj" "ALLEGRO_DJGPP";;
+ "haiku" ) proc_fix "Haiku" "makefile.haiku" "ALLEGRO_HAIKU";;
"mingw" ) proc_fix "Windows (MinGW)" "makefile.mgw" "ALLEGRO_MINGW32";;
"mingw32" ) proc_fix "Windows (MinGW)" "makefile.mgw" "ALLEGRO_MINGW32";;
# The 'msvc' target is undocumented in the help message, but is used
diff -urN allegro-4.3.10/include/allegro/internal/alconfig.h allegro-4.3.10-haiku/include/allegro/internal/alconfig.h
--- allegro-4.3.10/include/allegro/internal/alconfig.h 2007-06-24 01:13:22.000000000 -0700
+++ allegro-4.3.10-haiku/include/allegro/internal/alconfig.h 2008-08-25 22:04:47.000000000 -0700
@@ -48,6 +48,8 @@
#include "allegro/platform/albcc32.h"
#elif defined ALLEGRO_MSVC
#include "allegro/platform/almsvc.h"
+ #elif defined ALLEGRO_HAIKU
+ #include "allegro/platform/alhakcfg.h"
#elif defined ALLEGRO_BEOS
#include "allegro/platform/albecfg.h"
#elif defined ALLEGRO_MPW
diff -urN allegro-4.3.10/include/allegro/platform/ainthaiku.h allegro-4.3.10-haiku/include/allegro/platform/ainthaiku.h
--- allegro-4.3.10/include/allegro/platform/ainthaiku.h 1969-12-31 16:00:00.000000000 -0800
+++ allegro-4.3.10-haiku/include/allegro/platform/ainthaiku.h 2006-03-18 07:05:34.000000000 -0800
@@ -0,0 +1,151 @@
+/* ______ ___ ___
+ * /\ _ \ /\_ \ /\_ \
+ * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
+ * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
+ * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
+ * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
+ * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
+ * /\____/
+ * \_/__/
+ *
+ * Definitions for internal use by the BeOS configuration.
+ *
+ * By Jason Wilkins.
+ *
+ * See readme.txt for copyright information.
+ */
+
+
+#include "bealleg.h"
+
+#ifdef __cplusplus
+extern status_t ignore_result;
+
+extern volatile int32 focus_count;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WND_TITLE_SIZE 128
+
+AL_ARRAY(char, wnd_title);
+
+int be_key_init(void);
+void be_key_exit(void);
+void be_key_set_leds(int leds);
+void be_key_set_rate(int delay, int repeat);
+void be_key_wait_for_input(void);
+void be_key_stop_waiting_for_input(void);
+void be_key_suspend(void);
+void be_key_resume(void);
+
+int be_sys_init(void);
+void be_sys_exit(void);
+void _be_sys_get_executable_name(char *output, int size);
+void be_sys_get_executable_name(char *output, int size);
+int be_sys_find_resource(char *dest, AL_CONST char *resource, int size);
+void be_sys_set_window_title(AL_CONST char *name);
+int be_sys_set_close_button_callback(void (*proc)(void));
+void be_sys_message(AL_CONST char *msg);
+int be_sys_set_display_switch_mode(int mode);
+int be_sys_desktop_color_depth(void);
+int be_sys_get_desktop_resolution(int *width, int *height);
+void be_sys_get_gfx_safe_mode(int *driver, struct GFX_MODE *mode);
+void be_sys_yield_timeslice(void);
+void *be_sys_create_mutex(void);
+void be_sys_destroy_mutex(void *handle);
+void be_sys_lock_mutex(void *handle);
+void be_sys_unlock_mutex(void *handle);
+void be_sys_suspend(void);
+void be_sys_resume(void);
+void be_main_suspend(void);
+void be_main_resume(void);
+
+struct BITMAP *be_gfx_bwindowscreen_accel_init(int w, int h, int v_w, int v_h, int color_depth);
+struct BITMAP *be_gfx_bwindowscreen_init(int w, int h, int v_w, int v_h, int color_depth);
+void be_gfx_bwindowscreen_exit(struct BITMAP *b);
+void be_gfx_bwindowscreen_acquire(struct BITMAP *b);
+void be_gfx_bwindowscreen_release(struct BITMAP *b);
+void be_gfx_bwindowscreen_set_palette(AL_CONST struct RGB *p, int from, int to, int vsync);
+int be_gfx_bwindowscreen_scroll(int x, int y);
+int be_gfx_bwindowscreen_request_scroll(int x, int y);
+int be_gfx_bwindowscreen_poll_scroll(void);
+int be_gfx_bwindowscreen_request_video_bitmap(struct BITMAP *bitmap);
+void be_gfx_vsync(void);
+struct GFX_MODE_LIST *be_gfx_bwindowscreen_fetch_mode_list(void);
+void be_gfx_bwindowscreen_accelerate(int color_depth);
+#ifdef ALLEGRO_NO_ASM
+uintptr_t be_gfx_bwindowscreen_read_write_bank(BITMAP *bmp, int lyne);
+void be_gfx_bwindowscreen_unwrite_bank(BITMAP *bmp);
+#else
+uintptr_t _be_gfx_bwindowscreen_read_write_bank_asm(BITMAP *bmp, int lyne);
+void _be_gfx_bwindowscreen_unwrite_bank_asm(BITMAP *bmp);
+#endif
+
+struct BITMAP *be_gfx_bdirectwindow_init(int w, int h, int v_w, int v_h, int color_depth);
+void be_gfx_bdirectwindow_exit(struct BITMAP *b);
+void be_gfx_bdirectwindow_acquire(struct BITMAP *bmp);
+void be_gfx_bdirectwindow_release(struct BITMAP *bmp);
+void be_gfx_bdirectwindow_set_palette(AL_CONST struct RGB *p, int from, int to, int vsync);
+
+struct BITMAP *be_gfx_bwindow_init(int w, int h, int v_w, int v_h, int color_depth);
+void be_gfx_bwindow_exit(struct BITMAP *b);
+void be_gfx_bwindow_acquire(struct BITMAP *bmp);
+void be_gfx_bwindow_release(struct BITMAP *bmp);
+void be_gfx_bwindow_set_palette(AL_CONST struct RGB *p, int from, int to, int vsync);
+
+#ifdef ALLEGRO_NO_ASM
+void _be_gfx_bwindow_unwrite_bank(BITMAP *bmp);
+uintptr_t _be_gfx_bwindow_read_write_bank(BITMAP *bmp, int lyne);
+#else
+void _be_gfx_bwindow_unwrite_bank_asm(BITMAP *bmp);
+uintptr_t _be_gfx_bwindow_read_write_bank_asm(BITMAP *bmp, int lyne);
+#endif
+
+struct BITMAP *be_gfx_overlay_init(int w, int h, int v_w, int v_h, int color_depth);
+void be_gfx_overlay_exit(struct BITMAP *b);
+
+int be_time_init(void);
+void be_time_exit(void);
+void be_time_rest(unsigned int tyme, AL_METHOD(void, callback, (void)));
+void be_time_suspend(void);
+void be_time_resume(void);
+
+int be_mouse_init(void);
+void be_mouse_exit(void);
+void be_mouse_position(int x, int y);
+void be_mouse_set_range(int x1, int y_1, int x2, int y2);
+void be_mouse_set_speed(int xspeed, int yspeed);
+void be_mouse_get_mickeys(int *mickeyx, int *mickeyy);
+
+int be_joy_init(void);
+void be_joy_exit(void);
+int be_joy_poll(void);
+
+int be_sound_detect(int input);
+int be_sound_init(int input, int voices);
+void be_sound_exit(int input);
+void *be_sound_lock_voice(int voice, int start, int end);
+void be_sound_unlock_voice(int voice);
+int be_sound_buffer_size(void);
+int be_sound_set_mixer_volume(int volume);
+int be_sound_get_mixer_volume(void);
+void be_sound_suspend(void);
+void be_sound_resume(void);
+
+int be_midi_detect(int input);
+int be_midi_init(int input, int voices);
+void be_midi_exit(int input);
+int be_midi_set_mixer_volume(int volume);
+int be_midi_get_mixer_volume(void);
+void be_midi_key_on(int inst, int note, int bend, int vol, int pan);
+void be_midi_key_off(int voice);
+void be_midi_set_volume(int voice, int vol);
+void be_midi_set_pitch(int voice, int note, int bend);
+void be_midi_set_pan(int voice, int pan);
+
+#ifdef __cplusplus
+}
+#endif
diff -urN allegro-4.3.10/include/allegro/platform/alhaiku.h allegro-4.3.10-haiku/include/allegro/platform/alhaiku.h
--- allegro-4.3.10/include/allegro/platform/alhaiku.h 1969-12-31 16:00:00.000000000 -0800
+++ allegro-4.3.10-haiku/include/allegro/platform/alhaiku.h 2002-10-01 11:05:12.000000000 -0700
@@ -0,0 +1,76 @@
+/* ______ ___ ___
+ * /\ _ \ /\_ \ /\_ \
+ * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
+ * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
+ * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
+ * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
+ * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
+ * /\____/
+ * \_/__/
+ *
+ * BeOS specific definitions header file.
+ *
+ * By Jason Wilkins.
+ *
+ * See readme.txt for copyright information.
+ */
+
+
+/* system driver */
+#define SYSTEM_BEOS AL_ID('B','S','Y','S')
+AL_VAR(SYSTEM_DRIVER, system_beos);
+
+/* timer driver */
+#define TIMER_BEOS AL_ID('B','T','I','M')
+AL_VAR(TIMER_DRIVER, timer_beos);
+
+/* keyboard driver */
+#define KEYBOARD_BEOS AL_ID('B','K','E','Y')
+AL_VAR(KEYBOARD_DRIVER, keyboard_beos);
+
+/* mouse driver */
+#define MOUSE_BEOS AL_ID('B','M','O','U')
+AL_VAR(MOUSE_DRIVER, mouse_beos);
+
+/* joystick driver */
+#define JOYSTICK_BEOS AL_ID('B','J','O','Y')
+AL_VAR(JOYSTICK_DRIVER, joystick_beos);
+
+/* graphics drivers */
+#define GFX_BWINDOWSCREEN_ACCEL AL_ID('B','W','S','A')
+#define GFX_BWINDOWSCREEN AL_ID('B','W','S',' ')
+AL_VAR(GFX_DRIVER, gfx_beos_bwindowscreen_accel);
+AL_VAR(GFX_DRIVER, gfx_beos_bwindowscreen);
+
+#define GFX_BDIRECTWINDOW AL_ID('B','D','W','N')
+#define GFX_BWINDOW AL_ID('B','W','N',' ')
+AL_VAR(GFX_DRIVER, gfx_beos_bdirectwindow);
+AL_VAR(GFX_DRIVER, gfx_beos_bwindow);
+
+#define GFX_BWINDOW_OVERLAY AL_ID('B','O','V','L')
+AL_VAR(GFX_DRIVER, gfx_beos_overlay);
+
+/* digi drivers */
+#define DIGI_BEOS AL_ID('B','D','I','G')
+AL_VAR(DIGI_DRIVER, digi_beos);
+
+/* midi drivers */
+#define MIDI_BEOS AL_ID('B','M','I','D')
+AL_VAR(MIDI_DRIVER, midi_beos);
+
+#define GFX_DRIVER_BEOS \
+ { GFX_BWINDOWSCREEN_ACCEL, &gfx_beos_bwindowscreen_accel, TRUE }, \
+ { GFX_BWINDOWSCREEN, &gfx_beos_bwindowscreen, TRUE }, \
+ { GFX_BDIRECTWINDOW, &gfx_beos_bdirectwindow, TRUE }, \
+ { GFX_BWINDOW, &gfx_beos_bwindow, TRUE }, \
+ { GFX_BWINDOW_OVERLAY, &gfx_beos_overlay, TRUE },
+
+#define DIGI_DRIVER_BEOS \
+ { DIGI_BEOS, &digi_beos, TRUE },
+
+#define MIDI_DRIVER_BEOS \
+ { MIDI_BEOS, &midi_beos, TRUE },
+
+#define JOYSTICK_DRIVER_BEOS \
+ { JOYSTICK_BEOS, &joystick_beos, TRUE },
+
diff -urN allegro-4.3.10/include/allegro/platform/alhakcfg.h allegro-4.3.10-haiku/include/allegro/platform/alhakcfg.h
--- allegro-4.3.10/include/allegro/platform/alhakcfg.h 1969-12-31 16:00:00.000000000 -0800
+++ allegro-4.3.10-haiku/include/allegro/platform/alhakcfg.h 2008-08-25 22:07:11.000000000 -0700
@@ -0,0 +1,43 @@
+/* ______ ___ ___
+ * /\ _ \ /\_ \ /\_ \
+ * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
+ * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
+ * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
+ * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
+ * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
+ * /\____/
+ * \_/__/
+ *
+ * Configuration defines for use with BeOS.
+ *
+ * By Jason Wilkins.
+ *
+ * See readme.txt for copyright information.
+ */
+
+
+#include <fcntl.h>
+#include <unistd.h>
+
+/* provide implementations of missing functions */
+#define ALLEGRO_NO_STRICMP
+#define ALLEGRO_NO_STRLWR
+#define ALLEGRO_NO_STRUPR
+
+/* a static auto config */
+#define ALLEGRO_HAVE_DIRENT_H 1
+#define ALLEGRO_HAVE_INTTYPES_H 1 /* TODO: check this */
+#define ALLEGRO_HAVE_STDINT_H 1 /* TODO: check this */
+#define ALLEGRO_HAVE_SYS_TIME_H 1
+
+/* describe this platform */
+#define ALLEGRO_PLATFORM_STR "Haiku"
+#define ALLEGRO_LITTLE_ENDIAN
+#define ALLEGRO_CONSOLE_OK
+#define ALLEGRO_USE_CONSTRUCTOR
+#define ALLEGRO_MULTITHREADED
+
+/* arrange for other headers to be included later on */
+#define ALLEGRO_EXTRA_HEADER "allegro/platform/alhaiku.h"
+#define ALLEGRO_INTERNAL_HEADER "allegro/platform/ainthaiku.h"
+#define ALLEGRO_ASMCAPA_HEADER "obj/beos/asmcapa.h"
diff -urN allegro-4.3.10/makefile.all allegro-4.3.10-haiku/makefile.all
--- allegro-4.3.10/makefile.all 2008-01-14 03:55:28.000000000 -0800
+++ allegro-4.3.10-haiku/makefile.all 2008-08-23 17:44:44.000000000 -0700
@@ -8,7 +8,7 @@
# DEBUGMODE=2 selects a build intended to debug Allegro itself.
# PROFILEMODE=1 selects a profiling build.
# WARNMODE=1 selects strict compiler warnings.
-# STATICLINK=1 use static linking (MinGW32, MSVC, BeOS).
+# STATICLINK=1 use static linking (MinGW32, MSVC, BeOS, Haiku).
# STATICRUNTIME=1 link to a static C runtime library (/MT) (MSVC)
# TARGET_ARCH_COMPAT optimize for the given processor while preserving backwards
# compatibility with older processors (GCC-based platforms).
@@ -132,7 +132,7 @@
# XXX this is duplicated in makefile.in
DOCBASEFILES = ahack changes faq mistakes help thanks allegro const abi api packfile \
readme makedoc datafile grabber dat dat2c dat2s license addons targets
-DOCBUILDFILES = bcc32 beos darwin djgpp dmc linux macosx mingw32 msvc qnx unix watcom
+DOCBUILDFILES = bcc32 beos darwin djgpp dmc haiku linux macosx mingw32 msvc qnx unix watcom
DOCTXTBUILDFILES = $(addprefix docs/build/,$(addsuffix .txt,$(DOCBUILDFILES)))
DOCS = $(addprefix docs/txt/,$(addsuffix .txt,$(filter-out changes thanks readme, $(DOCBASEFILES))))
diff -urN allegro-4.3.10/makefile.haiku allegro-4.3.10-haiku/makefile.haiku
--- allegro-4.3.10/makefile.haiku 1969-12-31 16:00:00.000000000 -0800
+++ allegro-4.3.10-haiku/makefile.haiku 2008-08-25 21:19:47.000000000 -0700
@@ -0,0 +1,315 @@
+#
+# Rules for building the Allegro library with Haiku. This file is included
+# by the primary makefile, and should not be used directly.
+#
+# The "depend" target uses sed.
+#
+# See makefile.all for a list of the available targets.
+
+
+
+# -------- define some variables that the primary makefile will use --------
+
+PLATFORM = Haiku
+CC = gcc
+EXE =
+OBJ = .o
+HTML = html
+
+PLATFORM_DIR = obj/beos
+
+UNIX_TOOLS = 1
+
+ifdef STATICLINK
+
+# -------- link as a static library --------
+OBJ_DIR = obj/beos/$(VERSION)
+LIB_NAME = lib/beos/lib$(VERSION).a
+
+else
+
+# -------- link as a DLL --------
+OBJ_DIR = obj/beos/$(VERSION)
+LIB_NAME = lib/beos/lib$(VERSION)-$(shared_version).so
+
+endif # STATICLINK
+
+# -------- give a sensible default target for make without any args --------
+
+.PHONY: _default
+
+_default: default
+
+
+# -------- decide what compiler options to use --------
+
+ifdef WARNMODE
+WFLAGS = -Wall -W -Wstrict-prototypes -Wno-unused -Wno-multichar -Wno-ctor-dtor-privacy -Werror
+else
+WFLAGS = -Wall -Wno-unused -Wno-multichar -Wno-ctor-dtor-privacy
+endif
+
+ifdef TARGET_ARCH_COMPAT
+ TARGET_ARCH = $(GCC_MTUNE)=$(TARGET_ARCH_COMPAT)
+else
+ ifdef TARGET_ARCH_EXCL
+ TARGET_ARCH = -march=$(TARGET_ARCH_EXCL)
+ else
+ TARGET_ARCH = $(GCC_MTUNE)=i586
+ endif
+endif
+
+ifndef TARGET_OPTS
+ TARGET_OPTS = -O6 -funroll-loops -ffast-math
+endif
+
+OFLAGS = $(TARGET_ARCH) $(TARGET_OPTS)
+
+CFLAGS = -DALLEGRO_LIB_BUILD
+
+
+
+ifdef DEBUGMODE
+
+# -------- debugging build --------
+CFLAGS += -DDEBUGMODE=$(DEBUGMODE) $(WFLAGS) -g -O0
+SFLAGS = -DDEBUGMODE=$(DEBUGMODE) $(WFLAGS)
+LFLAGS = -g
+
+else
+ifdef PROFILEMODE
+
+# -------- profiling build --------
+CFLAGS += $(WFLAGS) $(OFLAGS) -pg
+SFLAGS = $(WFLAGS)
+LFLAGS = -pg
+
+else
+
+# -------- optimised build --------
+CFLAGS += $(WFLAGS) $(OFLAGS) -fomit-frame-pointer
+SFLAGS = $(WFLAGS)
+
+ifndef SYMBOLMODE
+LFLAGS = -s
+else
+LFLAGS =
+endif
+
+endif
+endif
+
+
+# -------- list which platform specific objects to include --------
+
+VPATH = src/haiku src/misc src/unix tools/haiku
+
+ifdef ALLEGRO_USE_C
+
+# ------ build a C-only version ------
+
+VPATH += src/c
+MY_OBJECTS = $(C_OBJECTS) cmiscs
+CFLAGS +=
+
+else
+
+# ------ build the normal asm version ------
+
+VPATH += src/i386
+MY_OBJECTS = $(I386_OBJECTS)
+
+endif # ALLEGRO_USE_C
+
+OBJECT_LIST = $(COMMON_OBJECTS) $(MY_OBJECTS) $(basename $(notdir $(ALLEGRO_SRC_HAIKU_FILES)))
+
+LIBRARIES = -lbe -lgame -ldevice -lmidi -lmedia -lnetwork
+
+PROGRAMS = bfixicon
+
+bfixicon: tools/haiku/bfixicon
+
+DISTCLEAN_FILES += tools/haiku/bfixicon
+
+
+
+# -------- rules for installing and removing the library files --------
+
+INSTALLDIR = /boot/develop
+LIBDIR = lib/x86
+INCDIR = headers
+
+SHARED_LIBDIR = /boot/common/lib
+
+
+ifdef STATICLINK
+
+$(INSTALLDIR)/$(LIBDIR)/lib$(VERSION).a: $(LIB_NAME)
+ cp $< $@
+
+else
+
+$(SHARED_LIBDIR)/lib$(VERSION)-$(shared_version).so: $(LIB_NAME)
+ cp $< $@
+
+endif
+
+
+/bin/allegro-config:
+ifdef STATICLINK
+ sed -e "s/@LINK_WITH_STATIC_LIBS@/yes/" misc/allegro-config.in >temp
+else
+ sed -e "s/@LINK_WITH_STATIC_LIBS@/no/" misc/allegro-config.in >temp
+endif
+ sed -e "s/@prefix@/\/boot\/develop/" temp > temp2
+ sed -e "s/@LIB_TO_LINK@/$(VERSION)/" temp2 > temp
+ sed -e "s/@LDFLAGS@//" temp > temp2
+ sed -e "s/@LIBS@/$(LIBRARIES)/" temp2 > temp
+ sed -e "s/include/headers/" temp >temp2
+ sed -e "s/ -l\$${lib_type}_unsharable//" temp2 >temp
+ sed -e "s/libdirs=-L\$${exec_prefix}\/lib/libdirs=\"-L\$${exec_prefix}\/lib\/x86 -L\/boot\/common\/lib\"/" temp >/bin/allegro-config
+ rm -f temp temp2
+ chmod a+x /bin/allegro-config
+
+
+HEADERS = $(INSTALLDIR)/$(INCDIR)/bealleg.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/aintbeos.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/al386gcc.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/albecfg.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/alplatf.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/astdint.h \
+ $(INSTALLDIR)/$(INCDIR)/allegro/platform/albeos.h
+
+ifdef STATICLINK
+ INSTALL_FILES = $(INSTALLDIR)/$(LIBDIR)/lib$(VERSION).a
+else
+ INSTALL_FILES = $(SHARED_LIBDIR)/lib$(VERSION)-$(shared_version).so
+endif
+
+INSTALL_FILES += $(HEADERS) /bin/allegro-config
+
+
+install: generic-install
+ @echo The $(DESCRIPTION) $(PLATFORM) library has been installed.
+
+UNINSTALL_FILES = $(INSTALLDIR)/$(LIBDIR)/liballeg.a \
+ $(INSTALLDIR)/$(LIBDIR)/liballd.a \
+ $(INSTALLDIR)/$(LIBDIR)/liballp.a \
+ $(SHARED_LIBDIR)/liballeg-$(shared_version).so \
+ $(SHARED_LIBDIR)/liballd-$(shared_version).so \
+ $(SHARED_LIBDIR)/liballp-$(shared_version).so \
+ $(HEADERS) \
+ /bin/allegro-config
+
+uninstall: generic-uninstall
+ @echo All gone!
+
+
+
+# -------- test capabilities --------
+
+TEST_CPP = @echo ...system compiler
+
+include makefile.tst
+
+
+
+# -------- finally, we get to the fun part... --------
+
+ifdef PROFILEMODE
+OTHER_OBJECTS = /boot/develop/lib/x86/i386-mcount.o
+endif
+
+ifdef STATICLINK
+
+# -------- link as a static library --------
+define MAKE_LIB
+ar rs $(LIB_NAME) $(OBJECTS) $(OTHER_OBJECTS)
+endef
+
+else
+
+# -------- link as a shared library --------
+
+define MAKE_LIB
+$(CC) -nostart $(PFLAGS) -o $(LIB_NAME) $(OBJECTS) $(OTHER_OBJECTS) $(LIBRARIES)
+endef
+
+endif # STATICLINK
+
+COMPILE_FLAGS = $(subst src/,-DALLEGRO_SRC ,$(findstring src/, $<))$(CFLAGS)
+
+$(OBJ_DIR)/%.o: %.c
+ $(CC) $(COMPILE_FLAGS) -I. -I./include -o $@ -c $<
+
+$(OBJ_DIR)/%.o: %.cpp
+ $(CC) $(COMPILE_FLAGS) -I. -I./include -o $@ -c $<
+
+$(OBJ_DIR)/%.o: %.s
+ $(CC) $(SFLAGS) -I. -I./include -x assembler-with-cpp -o $@ -c $<
+
+demos/shooter/shooter: $(OBJECTS_SHOOTER) $(LIB_NAME)
+ $(CC) $(LFLAGS) -o $@ $(OBJECTS_SHOOTER) $(LIB_NAME) $(LIBRARIES)
+
+demos/skater/skater: $(OBJECTS_SKATER) $(LIB_NAME)
+ $(CC) $(LFLAGS) -o $@ $(OBJECTS_SKATER) $(LIB_NAME) $(LIBRARIES)
+
+*/%: $(OBJ_DIR)/%.o $(LIB_NAME)
+ $(CC) $(LFLAGS) -o $@ $< $(LIB_NAME) $(LIBRARIES)
+
+obj/haiku/asmdef.inc: obj/haiku/asmdef
+ obj/haiku/asmdef obj/haiku/asmdef.inc
+
+obj/haiku/asmdef: src/i386/asmdef.c include/*.h include/allegro/*.h obj/haiku/asmcapa.h
+ $(CC) -O $(WFLAGS) -I. -I./include -o obj/haiku/asmdef src/i386/asmdef.c
+
+define LINK_WITHOUT_LIB
+ $(CC) $(LFLAGS) -o $@ $^ $(OTHER_OBJECTS)
+endef
+
+PLUGIN_LIB = lib/haiku/lib$(VERY_SHORT_VERSION)dat.a
+PLUGINS_H = obj/haiku/plugins.h
+PLUGIN_DEPS = $(LIB_NAME) $(PLUGIN_LIB)
+PLUGIN_SCR = scr
+
+define GENERATE_PLUGINS_H
+cat tools/plugins/*.inc > obj/haiku/plugins.h
+endef
+
+define MAKE_PLUGIN_LIB
+ar rs $(PLUGIN_LIB) $(PLUGIN_OBJS)
+endef
+
+define LINK_WITH_PLUGINS
+$(CC) $(LFLAGS) -o $@ $< $(strip $(PLUGIN_LIB) $(addprefix @,$(PLUGIN_SCRIPTS)) $(LIB_NAME))
+endef
+
+tools/haiku/%: $(OBJ_DIR)/%.o $(LIB_NAME)
+ $(CC) $(LFLAGS) -o $@ $< $(LIB_NAME) $(LIBRARIES)
+
+
+
+# -------- demo program iconification --------
+
+.PHONY: fixdemo
+
+fixdemo: demos/shooter/shooter demo/demo.dat tools/haiku/bfixicon
+ tools/haiku/bfixicon demos/shooter/shooter -d demos/shooter/demo.dat SHIP3 GAME_PAL
+
+
+
+# -------- generate automatic dependencies --------
+
+DEPEND_PARAMS = -MM -MG -I. -I./include -DSCAN_DEPEND -DALLEGRO_HAIKU
+
+depend:
+ $(CC) $(DEPEND_PARAMS) src/*.c src/haiku/*.c src/i386/*.c src/misc/*.c src/unix/*.c demos/shooter/*.c > _depend.tmp
+ $(CC) $(DEPEND_PARAMS) docs/src/makedoc/*.c examples/*.c setup/*.c tests/*.c tools/*.c tools/plugins/*.c >> _depend.tmp
+ $(CC) $(DEPEND_PARAMS) demos/skater/source/*.c >> _depend.tmp
+ $(CC) $(DEPEND_PARAMS) -x c src/haiku/*.cpp tests/*.cpp tools/haiku/*.cpp >> _depend.tmp
+ $(CC) $(DEPEND_PARAMS) -x assembler-with-cpp src/i386/*.s src/misc/*.s >> _depend.tmp
+ sed -e "s/^[a-zA-Z0-9_\/]*\///" _depend.tmp > _depend2.tmp
+ sed -e "s/^\([a-zA-Z0-9_]*\.o *:\)/obj\/haiku\/alleg\/\1/" _depend2.tmp > obj/haiku/alleg/makefile.dep
+ sed -e "s/^\([a-zA-Z0-9_]*\.o *:\)/obj\/haiku\/alld\/\1/" _depend2.tmp > obj/haiku/alld/makefile.dep
+ sed -e "s/^\([a-zA-Z0-9_]*\.o *:\)/obj\/haiku\/allp\/\1/" _depend2.tmp > obj/haiku/allp/makefile.dep
+ rm _depend.tmp _depend2.tmp
diff -urN allegro-4.3.10/misc/mkunixdists.sh allegro-4.3.10-haiku/misc/mkunixdists.sh
--- allegro-4.3.10/misc/mkunixdists.sh 2008-01-10 13:45:48.000000000 -0800
+++ allegro-4.3.10-haiku/misc/mkunixdists.sh 2008-08-23 20:56:44.000000000 -0700
@@ -73,9 +73,9 @@
# Hack'n'slash
echo "Stripping to form end-user distribution"
(cd $dir/$basename && {
- (cd src && rm -rf beos qnx dos mac ppc win)
- (cd obj && rm -rf bcc32 beos qnx djgpp mingw32 msvc watcom)
- (cd lib && rm -rf bcc32 beos qnx djgpp mingw32 msvc watcom)
+ (cd src && rm -rf beos haiku qnx dos mac ppc win)
+ (cd obj && rm -rf bcc32 beos haiku qnx djgpp mingw32 msvc watcom)
+ (cd lib && rm -rf bcc32 beos haiku qnx djgpp mingw32 msvc watcom)
(cd include && rm -f bealleg.h qnxalleg.h macalleg.h winalleg.h)
(cd misc && rm -f cmplog.pl dllsyms.lst findtext.sh fixpatch.sh fixver.sh)
(cd misc && rm -f allegro-config-qnx.sh zipup.sh zipwin.sh *.bat *.c)
@@ -91,11 +91,11 @@
# jpgalleg addon
(cd addons/jpgalleg && rm -rf examples)
- (cd addons/jpgalleg && rm -f makefile.be makefile.mgw makefile.dj)
+ (cd addons/jpgalleg && rm -f makefile.be makefile.haiku makefile.mgw makefile.dj)
(cd addons/jpgalleg && rm -f makefile.osx makefile.vc fix.bat readme.txt)
(cd addons/jpgalleg/misc && rm -f fixver.sh runner.c)
- (cd addons/jpgalleg/lib && rm -rf beos djgpp macosx mingw32 msvc)
- (cd addons/jpgalleg/obj && rm -rf beos djgpp macosx mingw32 msvc)
+ (cd addons/jpgalleg/lib && rm -rf beos djgpp haiku macosx mingw32 msvc)
+ (cd addons/jpgalleg/obj && rm -rf beos djgpp haiku macosx mingw32 msvc)
# logg addon
(cd addons/logg && rm -f Makefile.mingw play_ogg.c stream_ogg.c fix.bat)
diff -urN allegro-4.3.10/misc/zipup.sh allegro-4.3.10-haiku/misc/zipup.sh
--- allegro-4.3.10/misc/zipup.sh 2008-01-19 04:16:56.000000000 -0800
+++ allegro-4.3.10-haiku/misc/zipup.sh 2008-08-23 20:53:10.000000000 -0700
@@ -126,6 +126,14 @@
make depend UNIX_TOOLS=1 CC=gcc
+# generate dependencies for Haiku
+echo "Generating Haiku dependencies..."
+
+./fix.sh haiku --quick
+
+make depend UNIX_TOOLS=1 CC=gcc
+
+
# generate dependencies for QNX
echo "Generating QNX dependencies..."
@@ -164,7 +172,7 @@
for base in abi ahack allegro const faq help mistakes; do
./_makedoc.exe -ascii docs/txt/$base.txt docs/src/$base._tx
done
-for base in bcc32 beos darwin djgpp linux macosx mingw32 msvc qnx unix watcom; do
+for base in bcc32 beos darwin djgpp haiku linux macosx mingw32 msvc qnx unix watcom; do
./_makedoc.exe -ascii docs/build/$base.txt docs/src/build/$base._tx
done
diff -urN allegro-4.3.10/tools/dat2c.c allegro-4.3.10-haiku/tools/dat2c.c
--- allegro-4.3.10/tools/dat2c.c 2005-04-28 02:53:38.000000000 -0700
+++ allegro-4.3.10-haiku/tools/dat2c.c 2008-08-23 20:44:06.000000000 -0700
@@ -342,7 +342,7 @@
}
if (dat2c->lformat == lineformat_default)
-#if (defined ALLEGRO_UNIX || defined ALLEGRO_QNX || defined ALLEGRO_BEOS || defined ALLEGRO_MACOSX)
+#if (defined ALLEGRO_UNIX || defined ALLEGRO_QNX || defined ALLEGRO_BEOS || defined ALLEGRO_HAIKU || defined ALLEGRO_MACOSX)
dat2c->lformat = lineformat_unix;
#elif (defined ALLEGRO_WINDOWS || defined ALLEGRO_DOS)
dat2c->lformat = lineformat_dos;
diff -urN allegro-4.3.10/tools/datedit.c allegro-4.3.10-haiku/tools/datedit.c
--- allegro-4.3.10/tools/datedit.c 2007-10-08 09:23:36.000000000 -0700
+++ allegro-4.3.10-haiku/tools/datedit.c 2008-08-23 20:42:07.000000000 -0700
@@ -121,6 +121,8 @@
#include "obj/dmc/plugins.h"
#elif defined ALLEGRO_BEOS
#include "obj/beos/plugins.h"
+ #elif defined ALLEGRO_HAIKU
+ #include "obj/beos/plugins.h"
#elif defined ALLEGRO_BCC32
#include "obj/bcc32/plugins.h"
#elif defined ALLEGRO_MPW