121 lines
5.3 KiB
Makefile
121 lines
5.3 KiB
Makefile
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
|