PRJ ?= TEST CONFIG ?= release BUILD_DIR := ./build/${CONFIG} JUCE_ROOT := juce/JUCE-3.1.1 JUCE_LIB := juce/build/${CONFIG}/libjuce.a GUI_CXX_SRCS := gui.cpp Rbm.cpp Layer.cpp AStack.cpp StackCreator.cpp DeepStack.cpp RnnStack.cpp MainComponent.cpp RbmComponent.cpp RnnComponentLayer.cpp DrawComponent.cpp GUI_GCC_SRCS := TEST_CXX_SRCS := main.cpp Rbm.cpp Layer.cpp AStack.cpp StackCreator.cpp DeepStack.cpp RnnStack.cpp TEST_GCC_SRCS := POET_CXX_SRCS := poet.cpp Rbm.cpp Layer.cpp AStack.cpp StackCreator.cpp DeepStack.cpp RnnStack.cpp RnnTextHelper.cpp POET_GCC_SRCS := CXX_OBJS := $(addprefix ${BUILD_DIR}/, $(subst .cpp,.o,$(${PRJ}_CXX_SRCS))) GCC_OBJS := $(addprefix ${BUILD_DIR}/, $(subst .c,.o,$(${PRJ}_GCC_SRCS))) CXXFLAGS_common := -std=c++11 -L juce/build/${CONFIG} -g CXXFLAGS_debug := -O0 CXXFLAGS_release := -O2 CXXFLAGS = ${CXXFLAGS_common} ${CXXFLAGS_${CONFIG}} CFLAGS_common := -g CFLAGS_debug := -O0 CFLAGS_release :=- O2 CFLAGS := ${CFLAGS_common} ${CFLAGS_${CONFIG}} LFLAGS_common := -L juce/build/${CONFIG} LFLAGS_release := LFLAGS_debug := LFLAGS := ${LFLAGS_common} ${LFLAGS_${CONFIG}} -g INCLUDES := -I${JUCE_ROOT} -I. LIBS_${GUI} = -ljuce -ljuce -lfreetype -lpthread -ldl -lrt -lX11 -lGL -lXinerama -lXext LIBS_COMMON = -lstdc++ -lm -larmadillo -ljsoncpp LIBS := ${LIBS_COMMON} ${LIBS_LIBS_${GUI}} DEFINES := -DARMA_OPENMP_THREADS=1 GUI_TARGET := ${JUCE_LIB} ${BUILD_DIR}/rbm.elf TEST_TARGET := ${BUILD_DIR}/test.elf POET_TARGET := ${BUILD_DIR}/poet.elf all: ${${PRJ}_TARGET} install: ${BUILD_DIR}/rbm.elf @cp $< ${HOME}/bin @echo "Installed to" $< ${CXX_OBJS}: $(BUILD_DIR)/%.o : source/%.cpp @mkdir -p $(dir $@) g++ -MMD ${CXXFLAGS} ${DEFINES} ${INCLUDES} -o $@ -c $< ${GCC_OBJS}: $(BUILD_DIR)/%.o : source/%.c @mkdir -p $(dir $@) gcc -MMD ${CFLAGS} ${DEFINES} ${INCLUDES} -o $@ -c $< -include $(BUILD_DIR)/*.d ${BUILD_DIR}/rbm.elf: ${CXX_OBJS} ${GCC_OBJS} juce/build/${CONFIG}/libjuce.a gcc ${LFLAGS} ${CXX_OBJS} ${GCC_OBJS} ${LIBS} -o $@ ${BUILD_DIR}/test.elf: ${CXX_OBJS} ${GCC_OBJS} gcc ${LFLAGS} ${CXX_OBJS} ${GCC_OBJS} ${LIBS} -o $@ ${BUILD_DIR}/poet.elf: ${CXX_OBJS} ${GCC_OBJS} gcc ${LFLAGS} ${CXX_OBJS} ${GCC_OBJS} ${LIBS} -o $@ ${JUCE_LIB}: make -C juce clean: rm -rf ${BUILD_DIR}