SFW_DIR = ../ SFW_SRC_DIR = $(SFW_DIR)src/ SFW_LIB_DIR = $(SFW_DIR)lib/ SDLGFX2_DIR = $(SFW_LIB_DIR)sdl2-gfx/ GLEW_DIR = $(SFW_LIB_DIR)glew/ CC_LINUX = clang-7 CPPC_LINUX = clang++-7 SDLCONFIG = /home/frank/local/sdl/bin/sdl2-config CFLAGS = -Wall -O0 -c -I$(SFW_LIB_DIR) -I$(SFW_SRC_DIR) -g CPP_FLAGS = $(CFLAGS) --std=c++17 SDL_FLAGS = $(shell $(SDLCONFIG) --cflags) LFLAGS = $(shell $(SDLCONFIG) --libs) -lpthread export ANDROID_HOME = /home/frank/ext/software/android-sdk export ANDROID_NDK_HOME = /home/frank/ext/software/android-ndk-r8d BUILDDIR = build ANDROIDPROJECT = com.tarecontrol.demo SOFTWARE_ROOT = /home/frank/ext/software SDLHOME = $(SOFTWARE_ROOT)/SDL2-2.0.9 SDL_IMG_HOME = $(SOFTWARE_ROOT)/SDL2_image-2.0.4 SDL_TTF_HOME = $(SOFTWARE_ROOT)/SDL2_ttf-2.0.14 GLEW_WIN32_HOME = $(SOFTWARE_ROOT)/glew-2.1.0-win32 PROJECTHOME = $(shell pwd) EMSCRIPTENHOME = /home/frank/ext/software/emsdk/emscripten/tag-1.38.12 SDLEMLIBSHOME = $(SDLHOME)/build/em/build/.libs EMBUILDDIR = em WINBUILDDIR = win SDLMINGWHOME = $(SDLHOME)/i686-w64-mingw32 SDL_IMG_MINGW_HOME = $(SDL_IMG_HOME)/i686-w64-mingw32 SDL_TTF_MINGW_HOME = $(SDL_TTF_HOME)/i686-w64-mingw32 APPDIR = Main.app/Contents SYSFWPATH = /Library/Frameworks $(SDLGFX2_DIR)%.o: $(SDLGFX2_DIR)%.c $(SDLGFX2_DIR)%.h $(CC_LINUX) $(CFLAGS) $(SDL_FLAGS) $< -o $@ $(GLEW_DIR)%.o: $(GLEW_DIR)%.c $(GLEW_DIR)%.h $(CC_LINUX) $(CFLAGS) $< -o $@ $(SFW_SRC_DIR)Sprite.o: $(addprefix $(SFW_SRC_DIR),Game.*pp Box.*pp Node.*pp Animation.*pp) $(SFW_SRC_DIR)Game.o: $(addprefix $(SFW_SRC_DIR),Sprite.*pp Configuration.*pp Delegate.*pp Display.*pp \ Recorder.*pp Node.*pp Input.*pp) $(SFW_SRC_DIR)Node.o: $(addprefix $(SFW_SRC_DIR),Game.*pp Configuration.*pp Delegate.*pp) $(SFW_SRC_DIR)Animation.o: $(addprefix $(SFW_SRC_DIR),Node.*pp Timer.*pp) $(SFW_SRC_DIR)Recorder.o: $(addprefix $(SFW_SRC_DIR),extension.*pp Node.*pp Delegate.*pp Animation.*pp Display.*pp) $(SFW_SRC_DIR)Input.o: $(addprefix $(SFW_SRC_DIR),Delegate.*pp Node.*pp) $(SFW_SRC_DIR)Configuration.o: $(addprefix $(SFW_SRC_DIR),Node.*pp) $(SFW_SRC_DIR)Delegate.o: $(addprefix $(SFW_SRC_DIR),Node.*pp) $(SFW_SRC_DIR)Display.o: $(addprefix $(SFW_SRC_DIR),Node.*pp) $(SFW_SRC_DIR)%.o: $(addprefix $(SFW_SRC_DIR),%.cpp %.hpp) $(CPPC_LINUX) $(CPP_FLAGS) $(SDL_FLAGS) $< -o $@ Demo.o: Demo.cpp Demo.hpp $(addprefix $(SFW_SRC_DIR),Sprite.*pp Node.*pp Game.*pp Box.*pp Input.*pp \ Recorder.*pp Timer.*pp Animation.*pp extension.*pp) $(CPPC_LINUX) $(CPP_FLAGS) $(SDL_FLAGS) $< -o $@ linux: Demo.o $(addprefix $(SFW_SRC_DIR),Sprite.o Node.o Game.o Box.o Configuration.o Input.o Delegate.o \ Display.o Recorder.o Timer.o Animation.o extension.o) \ $(GLEW_DIR)glew.o $(addprefix $(SDLGFX2_DIR),SDL2_rotozoom.o SDL2_gfxPrimitives.o) $(CPPC_LINUX) $(LFLAGS) -D__LINUX__ $^ -lGL -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs -o demo clean: rm *.o rm $(SFW_SRC_DIR)*.o rm $(GLEW_DIR)*.o rm $(SDLGFX2_DIR)*.o android : if [ ! -d $(BUILDDIR) ]; then mkdir $(BUILDDIR); fi; cd $(SDLHOME)/build-scripts/ && \ ./androidbuild.sh $(ANDROIDPROJECT) $(PROJECTHOME)/main.cpp cp -r $(SDLHOME)/build/$(ANDROIDPROJECT) $(BUILDDIR) sed -i s/2\.3\.3/2\.2\.3/g $(BUILDDIR)/$(ANDROIDPROJECT)/build.gradle sed -i s/26\.0\.1/23\.0\.1/g $(BUILDDIR)/$(ANDROIDPROJECT)/app/build.gradle cd $(BUILDDIR)/$(ANDROIDPROJECT) && ./gradlew assembleDebug emscripten : if [ ! -d $(BUILDDIR)/$(EMBUILDDIR) ]; then mkdir -p $(BUILDDIR)/$(EMBUILDDIR); fi; cd $(BUILDDIR)/$(EMBUILDDIR) && \ $(EMSCRIPTENHOME)/em++ -O2 $(PROJECTHOME)/main.cpp -I$(SDLHOME)/include \ -Wall -s USE_SDL=2 -o main.html mingw : if [ ! -d $(BUILDDIR)/$(WINBUILDDIR) ]; then mkdir -p $(BUILDDIR)/$(WINBUILDDIR); fi; cd $(BUILDDIR)/$(WINBUILDDIR) && \ i686-w64-mingw32-g++ -std=c++17 $(PROJECTHOME)/main.cpp -I$(SDLMINGWHOME)/include/SDL2 \ -I$(SDL_IMG_MINGW_HOME)/include/SDL2 -I$(SDL_TTF_MINGW_HOME)/include/SDL2 $(INC) \ $(PROJECTHOME)/sdl2-gfx/SDL2_gfxPrimitives.c $(PROJECTHOME)/sdl2-gfx/SDL2_rotozoom.c $(PROJECTHOME)/glew/glew.c \ -L$(SDLMINGWHOME)/lib -L$(SDL_IMG_MINGW_HOME)/lib -L$(SDL_TTF_MINGW_HOME)/lib \ -lmingw32 -lSDL2_image \ -lSDL2_ttf -lstdc++fs \ -lSDL2main -lSDL2 -lopengl32 -Wall -O2 -o main.exe && \ cp $(SDLMINGWHOME)/bin/SDL2.dll $(SDL_IMG_MINGW_HOME)/bin/SDL2_image.dll \ $(SDL_TTF_MINGW_HOME)/bin/SDL2_ttf.dll . osx : g++ -I $(SYSFWPATH)/SDL2.framework/Headers $(INC) \ -I $(SYSFWPATH)/SDL2_image.framework/Headers -Wl,-rpath,$(SYSFWPATH) \ -framework SDL2 -framework SDL2_image -framework OpenGL main.cpp sdl2-gfx/SDL2_rotozoom.c \ -o main osx-bundle : if [ ! -d "$(APPDIR)" ]; then mkdir -p $(APPDIR); fi; if [ ! -d "$(APPDIR)" ]; then mkdir $(APPDIR); fi; if [ ! -d "$(APPDIR)/MacOS" ]; then mkdir $(APPDIR)/MacOS; fi; if [ ! -d "$(APPDIR)/Frameworks" ]; then mkdir $(APPDIR)/Frameworks; fi; if [ ! -d "$(APPDIR)/Resources" ]; then mkdir $(APPDIR)/Resources; fi; touch $(APPDIR)/Info.plist cp -r $(SYSFWPATH)/SDL2.framework $(APPDIR)/Frameworks cp -r $(SYSFWPATH)/SDL2_image.framework $(APPDIR)/Frameworks g++ -I $(SYSFWPATH)/SDL2.framework/Headers -I $(SYSFWPATH)/SDL2_image.framework/Headers \ -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,$(SYSFWPATH) \ -framework SDL2 -framework SDL2_image -framework OpenGL main.cpp -o $(APPDIR)/MacOS/main cross : linux android emscripten mingw # main : main.o # g++ -o main $(LFLAGS) -lGL main.o # main.o : main.cpp # g++ -c $(CFLAGS) -DLINUX main.cpp