Files
cpp3ds/Makefile
T
2014-02-27 22:16:28 -05:00

79 lines
2.5 KiB
Makefile

PROJECT = libcpp3ds
INCLUDES = -Iinclude/ -I../tween-engine/include
CXX = arm-none-eabi-g++
AR = arm-none-eabi-ar
CXXFLAGS = -g -Wall -pedantic -std=c++11 -march=armv5te -fno-rtti -fno-exceptions
SOURCES = $(wildcard src/*.cpp) $(wildcard src/*/*.cpp) $(wildcard src/*.S)
OBJECTS = $(SOURCES:src/%.cpp=build/arm/%.o) $(SOURCES:src/%.S=build/arm/%.o)
TEST_CXX = g++
TEST_AR = ar
TEST_CXXFLAGS = -g -Wall -pedantic -std=c++11 -fno-rtti -fno-exceptions -DTESTING
TEST_SOURCES = $(wildcard src/*.cpp) $(wildcard src/*/*.cpp)
TEST_OBJECTS = $(TEST_SOURCES:src/%.cpp=build/test/%.o)
SIM_CXX = g++
SIM_AR = ar
SIM_CXXFLAGS = -g -Wall -pedantic -std=c++11 -DSIMULATION `pkg-config gtkmm-3.0 gmodule-2.0 --cflags --libs`
SIM_SOURCES = $(wildcard sim/*.cpp) $(wildcard sim/*/*.cpp) $(wildcard src/*.cpp) $(wildcard src/*/*.cpp) sim/res.cpp
SIM_OBJECTS = $(SIM_SOURCES:sim/%.cpp=build/sim/%.o) $(SIM_SOURCES:src/%.cpp=build/sim/%.o)
GLIB_COMPILE_RESOURCES = `pkg-config --variable glib_compile_resources gio-2.0`
.PHONY: all dir clean lib test sim
all: lib test sim
lib: dir $(PROJECT).a
test: dir $(PROJECT)-test.a
sim: dir include/sim3ds/res.h $(PROJECT)-sim.a
dir:
@mkdir -p build/arm/actors
@mkdir -p build/test/actors
@mkdir -p build/sim/actors
@mkdir -p lib
clean:
@rm -rf build
@rm -rf lib
@rm -f sim/res.cpp
@rm -f include/sim3ds/res.h
@rm -f $(PROJECT)
@echo "Successfully cleaned."
$(PROJECT).a: $(OBJECTS)
$(AR) rvs lib/$@ $^
$(PROJECT)-test.a: $(TEST_OBJECTS)
$(TEST_AR) rvs lib/$@ $^
$(PROJECT)-sim.a: $(SIM_OBJECTS)
$(SIM_AR) rvs lib/$@ $^
build/arm/%.o: src/%.cpp
$(CXX) $(INCLUDES) $(CXXFLAGS) -c $< -o $@
$(CXX) -MM $< > build/arm/$*.d
build/arm/%.o: src/%.S
$(CXX) $(INCLUDES) $(CXXFLAGS) -c $< -o $@
$(CXX) -MM $< > build/arm/$*.d
build/test/%.o: src/%.cpp
$(TEST_CXX) $(INCLUDES) $(TEST_CXXFLAGS) -c $< -o $@
$(TEST_CXX) -MM $< > build/test/$*.d
build/sim/%.o: sim/%.cpp
$(SIM_CXX) $(INCLUDES) $(SIM_CXXFLAGS) -c $< -o $@
$(SIM_CXX) -MM $< > build/sim/$*.d
build/sim/%.o: src/%.cpp
$(SIM_CXX) $(INCLUDES) $(SIM_CXXFLAGS) -c $< -o $@
$(SIM_CXX) -MM $< > build/sim/$*.d
# Resource building
include/sim3ds/res.h: res/sim/simulator.gresource.xml
$(GLIB_COMPILE_RESOURCES) --sourcedir res/sim --generate-header $< --target=$@
sim/res.cpp: res/sim/simulator.gresource.xml
$(GLIB_COMPILE_RESOURCES) --sourcedir res/sim --generate-source $< --target=$@
sim/res.cpp include/sim3ds/res.h: \
res/sim/simulator.gresource.xml \
$(shell $(GLIB_COMPILE_RESOURCES) --sourcedir res/sim --generate-dependencies res/sim/simulator.gresource.xml)