# /\ +--------------------------------------------------------------+ # ____/ \____ /| - zlib/MIT/Unlicenced game framework licensed to freely use, | # \ / / | copy, modify and sell without restriction | # +--\ ^__^ /--+ | | # | ~/ \~ | | - originally created at [http://nugget.fun] | # | ~~~~~~~~~~~~ | +--------------------------------------------------------------+ # | SPACE ~~~~~ | / # | ~~~~~~~ BOX |/ # +--------------+ # # [ Makefile for 2D collision demo ] # # This should build the 2D collision demo for Linux. Compilation to other platforms # hasn't been attempted yet. # # Edit the parameters as necessary and run `make linux` in the current directory. # ####################### # Location parameters # ####################### # Location of source files for the demo SRC_DIR := ./ # Locations of [SPACE BOX] source and dependencies required to be compiled from source. These # locations are configured to match the structure of the [SPACE BOX] repository but can be # modified as necessary. SB_DIR := ../../ SB_SRC_DIR := $(SB_DIR)src/ SB_LIB_DIR := $(SB_DIR)lib/ SDLGFX2_DIR := $(SB_LIB_DIR)sdl2-gfx/ GLEW_DIR := $(SB_LIB_DIR)glew/ # C and C++ compiler commands CC := clang CPPC := clang++ # Location of SDL config program SDLCONFIG := ~/local/sdl/bin/sdl2-config # Edit to point to the location of BPmono.ttf CREATE_FONT_SYMLINK := ln -nsf $(SB_DIR)"BPmono.ttf" . ############################# # Based on above parameters # ############################# CFLAGS := -Wall -O0 -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) -g $(shell $(SDLCONFIG) --cflags) CPP_FLAGS := $(CFLAGS) --std=c++17 LFLAGS := $(shell $(SDLCONFIG) --libs) -lpthread SB_H_FILES := $(wildcard $(addprefix $(SB_SRC_DIR),*.hpp)) SB_O_FILES := $(filter-out $(addprefix $(SB_SRC_DIR),filesystem.o),$(SB_H_FILES:.hpp=.o)) SRC_H_FILES := $(wildcard $(addprefix $(SRC_DIR),*.hpp)) SRC_O_FILES := $(SRC_H_FILES:.hpp=.o) ################################################################## # Targets for building [SPACE BOX], dependencies and demo source # ################################################################## $(SDLGFX2_DIR)%.o: $(SDLGFX2_DIR)%.c $(SDLGFX2_DIR)%.h $(GLEW_DIR)%.o: $(GLEW_DIR)%.c $(GLEW_DIR)%.h $(CC) $(CFLAGS) $< -c -o $@ $(SB_SRC_DIR)extension.o : $(addprefix $(SB_SRC_DIR),Box.hpp Segment.hpp Color.hpp filesystem.hpp Pixels.hpp) $(SB_SRC_DIR)Node.o : $(addprefix $(SB_SRC_DIR),Game.hpp Configuration.hpp Delegate.hpp Display.hpp Input.hpp Box.hpp Audio.hpp) $(SB_SRC_DIR)Sprite.o : $(addprefix $(SB_SRC_DIR),Node.hpp Game.hpp Box.hpp Animation.hpp Color.hpp extension.hpp Pixels.hpp) $(SB_SRC_DIR)Game.o : $(addprefix $(SB_SRC_DIR),extension.hpp Node.hpp Sprite.hpp Recorder.hpp Input.hpp Configuration.hpp \ Delegate.hpp Audio.hpp) $(SB_SRC_DIR)Animation.o : $(addprefix $(SB_SRC_DIR),Node.hpp Timer.hpp) $(SB_SRC_DIR)Recorder.o : $(addprefix $(SB_SRC_DIR),Node.hpp Game.hpp Configuration.hpp Delegate.hpp Animation.hpp extension.hpp) $(SB_SRC_DIR)Input.o : $(addprefix $(SB_SRC_DIR),Node.hpp Animation.hpp Configuration.hpp Delegate.hpp) $(SB_SRC_DIR)Configuration.o : $(addprefix $(SB_SRC_DIR),Node.hpp Animation.hpp) $(SB_SRC_DIR)Delegate.o : $(addprefix $(SB_SRC_DIR),Node.hpp Game.hpp Input.hpp) $(SB_SRC_DIR)Display.o : $(addprefix $(SB_SRC_DIR),Node.hpp Game.hpp Box.hpp Configuration.hpp Delegate.hpp) $(SB_SRC_DIR)Box.o : $(addprefix $(SB_SRC_DIR),extension.hpp Segment.hpp) $(SB_SRC_DIR)Segment.o : $(addprefix $(SB_SRC_DIR),extension.hpp Box.hpp) $(SB_SRC_DIR)Pixels.o : $(addprefix $(SB_SRC_DIR),Box.hpp extension.hpp) $(SB_SRC_DIR)Audio.o : $(addprefix $(SB_SRC_DIR),Node.hpp Display.hpp Configuration.hpp Box.hpp filesystem.hpp extension.hpp) $(SRC_DIR)CollisionTest.o : $(SB_H_FILES) %.o : %.cpp %.hpp $(CPPC) $(CPP_FLAGS) $< -c -o $@ ########################## # Target for Linux build # ########################## linux : $(GLEW_DIR)glew.o $(addprefix $(SDLGFX2_DIR),SDL2_rotozoom.o SDL2_gfxPrimitives.o) \ $(SB_O_FILES) CollisionTest.o $(CREATE_FONT_SYMLINK) $(CPPC) $(LFLAGS) -D__LINUX__ -lGL -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs $^ -o 2d_collision ####################################### # Target for cleaning up object files # ####################################### clean : - rm *.o - rm $(SB_SRC_DIR)*.o - rm $(GLEW_DIR)*.o - rm $(SDLGFX2_DIR)*.o