# ExHouse Engine Makefile # Windows, OS X and Linux #better gzip compression: 7z a -tGZIP -mx=9 -mfb=64 file.gz file CHECK_OS = $(shell uname) ifeq ($(CHECK_OS),) PLATFORM = WIN32 endif ifeq ($(CHECK_OS),Linux) PLATFORM = LINUX endif ifeq ($(CHECK_OS),Darwin) PLATFORM = OS_X endif #random parameters DEBUG = FALSE #FMOD/MINIFMOD SOUND = SDL_MIXER #compiler we're using CC = gcc CXX = g++ #sourcefiles in use OBJ = main.o Vector.o Window.o Graphics.o Extensions.o Sound.o Timer.o Init.o Input.o Shader.o Image.o loader3DS.o FileIO.o MeshObject.o InitReadDirectoryContent.o DataPack.o Layer.o Font.o GraphicsLayer.o Spline.o TARGET = engine LDFLAGS = -lm -L./ INCLUDES = -Iinclude -Iinclude/libpng13 -Iinclude/SDL CFLAGS = -O2 $(INCLUDES) CXXFLAGS = CCFLAGS = #-msse -ftree-vectorize your friends #CFLAGS = -Os -fno-exceptions -fno-rtti $(INCLUDES) RELEASES = ifeq ($(SOUND), SDL_MIXER) CFLAGS += -D_SDL_MIXER endif ifeq ($(DEBUG),TRUE) CFLAGS += -D__DEBUG -ggdb -Wall #CFLAGS += -D__DEBUG -Wall CXXFLAGS += -pedantic -Wextra endif #Linux Makefile setup ifeq ($(PLATFORM), LINUX) ifeq ($(SOUND), SDL_MIXER) LDFLAGS += -lSDL_mixer endif LDFLAGS += -L/usr/lib/ -L/usr/X11R6/lib/ -lGL -lGLU -lz -lpng12 `sdl-config --libs` CFLAGS += -D__X11__ -DSDL `sdl-config --cflags` -I/usr/include/GL/ INCLUDES += -Iinclude/GL endif #Mac OS X Makefile setup ifeq ($(PLATFORM), OS_X) ifeq ($(DEBUG),TRUE) CFLAGS += `/sw/bin/sdl-config --cflags` LDFLAGS += `/sw/bin/sdl-config --libs` -lpng -lz -lSDL_mixer else OBJ += SDLMain.o LDFLAGS += -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -framework SDL -framework Cocoa -framework OpenGL -framework SDL_mixer -lz -framework libpng endif CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -DOS_X -DSDL -I/System/Library/Frameworks/AGL.framework/Headers #for PowerPC - Intel crosscompilation use -arch switch #lipo tool can merge the binaries easily #CC = gcc-3.3 #CXX = g++-3.3 ENDIAN = $(shell uname -m) ifeq ($(ENDIAN),Power Macintosh) CFLAGS += -DBIGENDIAN endif endif #Windows Makefile setup ifeq ($(PLATFORM), WIN32) INCLUDES += -Iinclude/GL CFLAGS += -DSDL -D_SDL_MIXER LDFLAGS += -lmingw32 -liberty -lglu32 -lopengl32 -lgdi32 #ifeq ($(DEBUG),FALSE) CFLAGS += -Dmain=SDL_main LDFLAGS += -mwindows -lSDLmain #endif LDFLAGS += -lSDL -lSDL_mixer -lpng -lz TARGET = ../release/engine.exe endif .PHONY: all all-before all-after clean clean-custom all: all-before $(TARGET) all-after #define some system utilities RM = rm -f CP = cp -R MKDIR = mkdir clean: $(RM) $(OBJ) $(TARGET) %.o: %.m $(HEADERS) $(CC) $(CFLAGS) $(CCFLAGS) -c $< %.o: %.c $(HEADERS) $(CX) $(CFLAGS) $(CCFLAGS) -c $< %.o: %.cpp $(HEADERS) $(CXX) $(CFLAGS) $(CXXFLAGS) -c $< %.o: effects/%.cpp $(HEADERS) $(CXX) $(CFLAGS) $(CXXFLAGS) -c $< $(TARGET): $(OBJ) $(CXX) -o $@ $(OBJ) $(LDFLAGS)