# Try to detect operating system ifeq ($(OS),Windows_NT) ifeq ($(shell uname -s),) # not in a bash-like shell RM = del /F /Q MKDIR = mkdir else # in a bash-like shell, like msys RM = rm -rf MKDIR = mkdir -p endif EXTENSION=.exe INC=-I C:\MinGW\lib else RM = rm -rf MKDIR = mkdir -p EXTENSION= INC= endif SRC=src/RuneOptimizer/RuneOptimizer.c CC=gcc CFLAGS= OPTS_DEBUG=-Wall -g OPTS_TEST= OPTS=-O3 OPTS_REPORT=-O3 -fdump-tree-all LIBS=-lsqlite3 -lm -ljson-c -lpthread OUT=bin/RuneOptimizer OUT_DEBUG=bin/RuneOptimizer_DEBUG TEST_SRC=src/test/RuneOptimizerTest.c TEST_SRC_UNIT=src/test/RuneOptimizerUnitTest.c TEST_SRC_INTEGRATION=src/test/RuneOptimizerIntegrationTest.c TEST_SRC_E2E=srctest/RuneOptimizerE2ETest.c TEST_OUT_UNIT=bin/RuneOptimizerUnitTest TEST_OUT_INTEGRATION=bin/RuneOptimizerIntegrationTest TEST_OUT_E2E=bin/RuneOptimizerE2ETest #TEST_FUNCTION=-nostartfiles -Wl,-emain_test TEST_FUNCTION= INSTALL_DIR=/usr/local/bin/ GUI_INSTALL_DIR=/usr/share/ GUI_EXECUTABLE_SRC=/usr/share/RuneOptimizerGUI/RuneOptimizer.py GUI_EXECUTABLE_DST=/usr/local/bin/RuneOptimizerGUI DOC_COMMAND=doxygen default : @echo Compiling... @$(CC) -o $(OUT)$(EXTENSION) $(SRC) $(INC) $(LIBS) $(OPTS) @echo Compiled executable $(OUT)$(EXTENSION) debug : @echo Compiling with debug symbols... @$(CC) -o $(OUT_DEBUG)$(EXTENSION) $(SRC) $(INC) $(LIBS) @echo Compiled debug executable $(OUT_DEBUG) test : default @echo Generating tests... @$(CC) $(OPTS_TEST) -o $(TEST_OUT_UNIT)$(EXTENSION) $(TEST_SRC_UNIT) $(INC) $(LIBS) $(TEST_FUNCTION) @echo Compiled testing executable $(TEST_OUT_UNIT)$(EXTENSION) @$(CC) $(OPTS_TEST) -o $(TEST_OUT_INTEGRATION)$(EXTENSION) $(TEST_SRC_INTEGRATION) $(INC) $(LIBS) $(TEST_FUNCTION) @echo Compiled testing executable $(TEST_OUT_INTEGRATION)$(EXTENSION) @$(CC) $(OPTS_TEST) -o $(TEST_OUT_E2E)$(EXTENSION) $(TEST_SRC_E2E) $(INC) $(LIBS) $(TEST_FUNCTION) @echo Compiled testing executable $(TEST_OUT_E2E)$(EXTENSION) install : @echo Installing... @mkdir -p $(INSTALL_DIR) @cp $(OUT)$(EXTENSION) $(INSTALL_DIR) @cp -rf RuneOptimizerGUI $(GUI_INSTALL_DIR) -@rm $(GUI_EXECUTABLE_DST) @ln -s $(GUI_EXECUTABLE_SRC) $(GUI_EXECUTABLE_DST) @echo Installed RuneOptimizer and RuneOptimizerGUI docs : ifeq ($(shell which $(DOC_COMMAND)),) $(error "No $(DOC_COMMAND) commannd found. Install it and run 'make doc' to generate documentation") else @echo Generating documentation... @mkdir -p doc/cli @mkdir -p doc/gui @doxygen doxygen-cli.conf @doxygen doxygen-gui.conf 2>/dev/null @echo Documentation generated in doc/ endif clean : @echo Cleaning... @$(RM) bin/* @$(RM) doc/* @echo All clean