diff --git a/Jamfile.next b/Jamfile.next new file mode 100644 --- /dev/null +++ b/Jamfile.next @@ -0,0 +1,163 @@ +CFILES = ai.c aircraft_cmd.c aircraft_gui.c airport_gui.c + bridge_gui.c clear_cmd.c command.c disaster_cmd.c + dock_gui.c dummy_land.c economy.c engine.c engine_gui.c + fileio.c gfx.c graph_gui.c industry_cmd.c industry_gui.c + intro_gui.c landscape.c main_gui.c minilzo.c misc.c + misc_cmd.c misc_gui.c music_gui.c namegen.c network.c + news_gui.c oldloader.c order_cmd.c order_gui.c pathfind.c + player_gui.c players.c rail_cmd.c rail_gui.c road_cmd.c + road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c sdl.c + settings.c settings_gui.c ship_cmd.c ship_gui.c smallmap_gui.c + sound.c spritecache.c station_cmd.c station_gui.c + strings.c subsidy_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 + viewport.c water_cmd.c widget.c window.c screenshot.c + airport.c grfspecial.c terraform_gui.c ; + + +LANGFILES = english.txt swedish.txt french.txt german.txt italian.txt slovak.txt hungarian.txt norwegian.txt danish.txt czech.txt galician.txt polish.txt; + +#################### +# On UNIX we use gcc +#################### +if $(UNIX) { + SDL_CONFIG_CFLAGS = `XX_SDL_CONFIG_PLACEHOLDER_XX --cflags` ; + SDL_CONFIG_LIBS = `XX_SDL_CONFIG_PLACEHOLDER_XX --libs` ; + + LINKFLAGS += $(SDL_CONFIG_LIBS) ; + CC = gcc ; + CCFLAGS += -Wall -Wno-multichar -DUNIX -DWITH_SDL ; + + OPTIMFLAGS = -O2 -fomit-frame-pointer ; + DEBUGFLAGS = -g ; + +# also include extmidi + CFILES += extmidi.c unix.c ; + +# compile in PNG support? + if $(WITH_PNG) { + CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ; + LINKFLAGS += -lpng ; + } + +# compile in zlib support? + if $(WITH_ZLIB) { + CCFLAGS += -DWITH_ZLIB ; + LINKFLAGS += -lz ; + } +# compile for BeOS 5.1 and higher + if $(WITH_BONE_NETWORKING) { + CCFLAGS += -DENABLE_NETWORK ; + LINKFLAGS += -lsocket -lbind ; + } +# link in BeOS MIDI and Be API libraries + if $(BEOS_MIDI) { + CCFLAGS += -DBEOS_MIDI ; + LINKFLAGS += -lbe -lmidi ; + CFILES += bemidi.cpp ; + } +} + +#################### +# MSVC on Win32 +#################### + +actions ActWin32Res { + $(VISUALC)\\..\\common\\msdev98\\bin\\rc /r /i $(STDHDRS) /fo $(<) $(>) +} + +rule Win32Res { ActWin32Res $(<) : $(>) ; DEPENDS $(<) : $(>) ; } + +if $(TOOLSET) = VISUALC { + OPTIMFLAGS = /Oa /Os /Ow /Oy /Oi /Og /Ox /Gr /Gf /Gy /Zp4 /J /WX /W3 -DNDEBUG ; + + CCFLAGS += -DWIN32 -DWIN32_EXCEPTION_TRACKER ; + CFILES += win32.c ; + LINKFLAGS += /opt:nowin98 /LIBPATH:$(VISUALC)\\lib ; + + LINKLIBS = ws2_32.lib winmm.lib user32.lib gdi32.lib ; + +# compile resources too + EOBJ = ttd.res ; + Win32Res ttd.res : ttd.rc ; + +# png screenshots? + if $(WITH_PNG) { + CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ; + LINKLIBS += libpng.lib ; + } + +# zlib savegames? + if $(WITH_ZLIB) { + CCFLAGS += -DWITH_ZLIB ; + LINKLIBS += zlibstat.lib ; + } + +# build release by default + RELEASE = 1 ; +} + + +#################### +# Common +#################### +rule MyObjects { + local _i _t _s ; + + _t = $(OUTDIR)/$(>:S=$(SUFOBJ)) ; + OPTIM on $(_t) = $(3) ; + + MkDir $(OUTDIR) ; + Depends $(_t) : $(OUTDIR) ; + + for _i in $(>) { + _s = $(OUTDIR)/$(_i:S=$(SUFOBJ)) ; + Object $(_s) : $(_i) ; + +# special handling for sdl.c and unix.c + if $(_i) = sdl.c || $(_i) = unix.c { CCFLAGS on $(_s) += $(SDL_CONFIG_CFLAGS) ; } + } + MainFromObjects $(OUTDIR)/$(<) : $(_t) $(EOBJ) ; +} + +rule MyMain { + if $(RELEASE) { + OUTDIR = release ; + MyObjects ttd : $(>) : $(OPTIMFLAGS) ; + } else { + OUTDIR = debug ; + MyObjects ttd : $(>) : -D_DEBUG $(DEBUGFLAGS) ; + } +} + +actions CompileLang { + strgen$(SLASH)strgen $(>) +} + +rule LangFile { + if $(>) = lang/english.txt { + CompileLang $(<) table/strings.h : ; + DEPENDS table/string.h : $(>) ; + } else { + CompileLang $(<) : $(>) ; + } + + Clean clean : $(<) ; + DEPENDS $(<) : $(>) ; + DEPENDS all : $(<) ; + DEPENDS $(<) : strgen/strgen ; +} + +rule LangFiles { + local _i ; + for _i in $(<) { LangFile $(_i:S=.lng) : $(_i) ; } + Clean clean : table/strings.h ; +} + +LangFiles lang/$(LANGFILES) ; + +Main strgen/strgen : strgen/strgen.c ; + +MyMain ttd : $(CFILES) ; +