diff --git a/Makefile b/Makefile index 52356b8882..55632f6999 100644 --- a/Makefile +++ b/Makefile @@ -44,6 +44,7 @@ # UNIX: building on *nix derivate (Linux, FreeBSD) # OSX: building on Mac OS X # MORPHOS: building on MorphOS +# BEOS: building on BeOS # # Summary of library choice defines # WITH_ZLIB: savegames using zlib @@ -330,6 +331,16 @@ ifdef UNIX CDEFS += -DUNIX endif +ifdef BEOS +CDEFS += -DBEOS +LDFLAGS += -lmidi -lbe +ifdef WITH_NETWORK + ifdef BEOS_NET_SERVER + CDEFS += -DBEOS_NET_SERVER + endif +endif +endif + # SDL config ifdef WITH_SDL CDEFS += -DWITH_SDL @@ -493,7 +504,7 @@ endif ### Sources -ttd_SOURCES = \ +C_SOURCES = \ ai.c ai_build.c ai_new.c ai_pathfinder.c ai_shared.c aircraft_cmd.c \ aircraft_gui.c airport.c airport_gui.c aystar.c bridge_gui.c \ clear_cmd.c command.c console.c console_cmds.c disaster_cmd.c dock_gui.c dummy_land.c economy.c \ @@ -507,19 +518,24 @@ ttd_SOURCES = \ smallmap_gui.c sound.c sprite.c spritecache.c station_cmd.c station_gui.c \ strings.c subsidy_gui.c terraform_gui.c texteff.c town_cmd.c \ town_gui.c train_cmd.c train_gui.c tree_cmd.c ttd.c tunnelbridge_cmd.c \ - unmovable_cmd.c vehicle.c vehicle_gui.c viewport.c water_cmd.c widget.c window.c \ + unmovable_cmd.c vehicle.c vehicle_gui.c viewport.c water_cmd.c widget.c window.c +CXX_SOURCES = ifdef WITH_SDL -ttd_SOURCES += sdl.c +C_SOURCES += sdl.c endif ifdef WIN32 -ttd_SOURCES += win32.c w32dm.c +C_SOURCES += win32.c w32dm.c else -ttd_SOURCES += extmidi.c unix.c +C_SOURCES += extmidi.c unix.c endif -ttd_OBJS = $(ttd_SOURCES:%.c=%.o) +ttd_OBJS = $(C_SOURCES:%.c=%.o) $(CXX_SOURCES:%.cpp=%.o) + +ifdef BEOS +CXX_SOURCES += bemidi.cpp +endif ifdef WIN32 # Resource file @@ -527,8 +543,7 @@ ttd_OBJS += winres.o endif ifdef WITH_DIRECTMUSIC -ttd_SOURCES += w32dm2.cpp -ttd_OBJS += w32dm2.o +CXX_SOURCES += w32dm2.cpp endif ttd_DEPS1 = $(foreach obj,$(ttd_OBJS),.deps/$(obj)) diff --git a/makefiledir/Makefile.config_writer b/makefiledir/Makefile.config_writer index 55315a07c6..cf02dbfa82 100644 --- a/makefiledir/Makefile.config_writer +++ b/makefiledir/Makefile.config_writer @@ -76,12 +76,14 @@ $(MAKE_CONFIG): $(call CONFIG_LINE,OSX:=$(OSX)) $(call CONFIG_LINE,FREEBSD:=$(FREEBSD)) $(call CONFIG_LINE,MORPHOS:=$(MORPHOS)) + $(call CONFIG_LINE,BEOS:=$(BEOS)) $(call CONFIG_LINE,CYGWIN:=$(CYGWIN)) $(call CONFIG_LINE,MINGW:=$(MINGW)) $(call CONFIG_LINE,) $(call CONFIG_LINE,\# misc) $(call CONFIG_LINE,SDL-CONFIG:=$(SDL-CONFIG)) + $(call CONFIG_LINE,BEOS_NET_SERVER:=$(BEOS_NET_SERVER)) $(call CONFIG_LINE,CONFIG_INCLUDED:=yes) $(call CONFIG_LINE,PATH_SET:=$(PATH_SET)) $(call CONFIG_LINE,CONFIG_VERSION:=$(MAKEFILE_VERSION)) diff --git a/makefiledir/Makefile.libdetection b/makefiledir/Makefile.libdetection index 8f8458c760..084d137079 100644 --- a/makefiledir/Makefile.libdetection +++ b/makefiledir/Makefile.libdetection @@ -28,6 +28,17 @@ MORPHOS:=1 UNIX:=1 endif +# Automatically recognize if building on BeOS +ifeq ($(shell uname), BeOS) +BEOS:=1 +# BeOS uses UNIX setup too +UNIX:=1 +# Except that in BeOS 5.0 we need to use net_server, not BONE networking +ifeq ($(shell uname -r), 5.0) +BEOS_NET_SERVER:=1 +endif +endif + # FreeBSD uses sdl11 instead of sdl ifdef FREEBSD SDL-CONFIG:=sdl11-config @@ -77,4 +88,4 @@ ifndef BIN_DIR endif endif endif -endif \ No newline at end of file +endif