144 lines
4.4 KiB
Makefile
144 lines
4.4 KiB
Makefile
HOSTCXX:=$(CXX)
|
|
|
|
ifeq ($(TARGET),SDL)
|
|
# SDL
|
|
CC=gcc
|
|
CXX=g++
|
|
LD=g++
|
|
STRIP=strip
|
|
|
|
SDL_INCLUDE=$(shell pkg-config --cflags sdl2)
|
|
SDL_LIBS=$(shell pkg-config --libs sdl2)
|
|
|
|
CFLAGS=-g -DBUILD_SDL $(SDL_INCLUDE)
|
|
CXXFLAGS=$(CFLAGS)
|
|
LDFLAGS=
|
|
LDLIBS=$(SDL_LIBS) -lstdc++
|
|
EXE=game
|
|
EXTRA_FILES=
|
|
SYSTEM=SDL
|
|
PLATFORM_OBJ=
|
|
else ifeq ($(TARGET),SDLWIN)
|
|
# SDL on Windows
|
|
CC=i686-w64-mingw32-gcc
|
|
CXX=i686-w64-mingw32-g++
|
|
LD=i686-w64-mingw32-g++
|
|
STRIP=i686-w64-mingw32-strip
|
|
WINDRES=i686-w64-mingw32-windres
|
|
|
|
SDL_INCLUDE=-I/usr/i686-w64-mingw32/include/SDL2
|
|
SDL_LDFLAGS=-L/usr/i686-w64-mingw32/lib
|
|
SDL_LIBS=-lmingw32 -lSDL2main -lSDL2.dll
|
|
|
|
CFLAGS=-g -DBUILD_SDL $(SDL_INCLUDE) -m32
|
|
CXXFLAGS=$(CFLAGS)
|
|
LDFLAGS=$(SDL_LDFLAGS)
|
|
#LDFLAGS+=-mwindows
|
|
LDLIBS=$(SDL_LIBS) -lstdc++
|
|
EXE=game.exe
|
|
EXTRA_FILES=$(shell find /usr/i686-w64-mingw32/ -iname 'SDL2.dll' | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/i686-w64-mingw32/ -iname 'libgcc_s_dw2-1.dll' | grep win32 | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/i686-w64-mingw32/ -iname 'libgcc_s_seh-1.dll' | grep win32 | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/i686-w64-mingw32/ -iname 'libstdc++-6.dll' | grep win32 | head -n1)
|
|
SYSTEM=SDL
|
|
PLATFORM_OBJ=app.res
|
|
else ifeq ($(TARGET),SDLWIN64)
|
|
# SDL on Windows
|
|
CC=x86_64-w64-mingw32-gcc
|
|
CXX=x86_64-w64-mingw32-g++
|
|
LD=x86_64-w64-mingw32-g++
|
|
STRIP=x86_64-w64-mingw32-strip
|
|
WINDRES=x86_64-w64-mingw32-windres
|
|
|
|
SDL_INCLUDE=-I/usr/x86_64-w64-mingw32/include/SDL2
|
|
SDL_LDFLAGS=-L/usr/x86_64-w64-mingw32/lib
|
|
SDL_LIBS=-lmingw32 -lSDL2main -lSDL2.dll
|
|
|
|
CFLAGS=-g -DBUILD_SDL $(SDL_INCLUDE) -m64
|
|
CXXFLAGS=$(CFLAGS)
|
|
LDFLAGS=$(SDL_LDFLAGS)
|
|
#LDFLAGS+=-mwindows
|
|
LDLIBS=$(SDL_LIBS) -lstdc++
|
|
EXE=game.exe
|
|
EXTRA_FILES=$(shell find /usr/x86_64-w64-mingw32/ -iname 'SDL2.dll' | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/x86_64-w64-mingw32/ -iname 'libgcc_s_dw2-1.dll' | grep win32 | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/x86_64-w64-mingw32/ -iname 'libgcc_s_seh-1.dll' | grep win32 | head -n1)
|
|
EXTRA_FILES+=$(shell find /usr/lib/gcc/x86_64-w64-mingw32/ -iname 'libstdc++-6.dll' | grep win32 | head -n1)
|
|
SYSTEM=SDL
|
|
PLATFORM_OBJ=app.res
|
|
else
|
|
# DOS
|
|
CC=/usr/local/djgpp/bin/i586-pc-msdosdjgpp-gcc
|
|
CXX=/usr/local/djgpp/bin/i586-pc-msdosdjgpp-g++
|
|
LD=/usr/local/djgpp/bin/i586-pc-msdosdjgpp-g++
|
|
STRIP=i586-pc-msdosdjgpp-strip
|
|
|
|
# FIXME: we override the host compiler to build tools here, maybe move tools to a separate Makefile
|
|
HOSTCXX=g++
|
|
|
|
CFLAGS=-O3 -march=i486
|
|
CXXFLAGS=$(CFLAGS)
|
|
LDFLAGS=
|
|
LDLIBS=
|
|
EXE=game.exe
|
|
DPMI_HOST=CWSDPMI.EXE
|
|
EXTRA_FILES=install.bat $(DPMI_HOST)
|
|
SYSTEM=DOS
|
|
PLATFORM_OBJ=
|
|
endif
|
|
|
|
OBJ=main.o
|
|
OBJ+=$(PLATFORM_OBJ)
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard graphics/*.cpp))
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard audio/*.cpp))
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard util/*.cpp))
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard scenes/*.cpp))
|
|
|
|
ifeq ($(SYSTEM),SDL)
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard system/sdl/*.cpp))
|
|
else ifeq ($(SYSTEM),DOS)
|
|
OBJ+=$(patsubst %.cpp,%.o,$(wildcard system/dos/*.cpp))
|
|
else
|
|
$(error Unknown SYSTEM variable:$(SYSTEM))
|
|
endif
|
|
|
|
CONVERTER_CXX=$(HOSTCXX)
|
|
CONVERTER_EXE=gbmconv
|
|
CONVERTER_SRC=converter.cpp
|
|
CONVERTER_SRC+=graphics/Bitmap.cpp
|
|
CONVERTER_SRC+=util/Files.cpp util/Bmp.cpp util/Gbm.cpp
|
|
|
|
COMPILED_GFX_ASSETS=assets/font1.gbm assets/cow.gbm assets/witch.gbm
|
|
GFX_ASSETS=assets/bg.bmp $(COMPILED_GFX_ASSETS)
|
|
MUSIC_ASSETS=assets/rain.rad assets/getup.rad assets/spiral.rad
|
|
|
|
RELEASE_FILES=$(EXE) $(GFX_ASSETS) $(MUSIC_ASSETS) $(EXTRA_FILES)
|
|
|
|
FLOPPY_IMG=game.img
|
|
|
|
.PHONY: all clean release debug assets floppy
|
|
|
|
all: $(CONVERTER_EXE) $(EXE)
|
|
|
|
clean: ; rm -rf $(OBJ) $(EXE) $(CONVERTER_EXE) $(FLOPPY_IMG) $(COMPILED_GFX_ASSETS) release debug
|
|
|
|
release: all assets; $(STRIP) $(EXE); upx $(EXE); mkdir -p release; cp -Rv $(RELEASE_FILES) release/
|
|
|
|
debug: all assets; mkdir -p debug; cp -Rv $(RELEASE_FILES) debug/
|
|
|
|
floppy: release; dd if=/dev/zero of=$(FLOPPY_IMG) bs=512 count=2880 && mkfs.fat -F12 $(FLOPPY_IMG) && mcopy -i $(FLOPPY_IMG) -s release/* ::
|
|
|
|
$(CONVERTER_EXE): $(CONVERTER_SRC); $(CONVERTER_CXX) -o $@ $(CONVERTER_SRC)
|
|
|
|
$(EXE): $(OBJ); $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS)
|
|
|
|
%.o : %.c ; $(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
%.o : %.cpp ; $(CXX) $(CXXFLAGS) -c $< -o $@
|
|
|
|
assets: $(CONVERTER_EXE) $(GFX_ASSETS)
|
|
|
|
%.gbm : %.bmp %_m.bmp $(CONVERTER_EXE) ; ./$(CONVERTER_EXE) $@ $^
|
|
|
|
%.res : %.rc ; $(WINDRES) $< -O coff -o $@
|