| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # Try to detect operating system
- ifeq ($(OS),Windows_NT)
- ifeq ($(shell uname -s),) # not in a bash-like shell
- OS_RM = del /F /Q
- OS_CP = copy
- OS_MKDIR = mkdir
- else # in a bash-like shell, like msys
- OS_RM = rm -rf
- OS_CP = cp -rf
- OS_MKDIR = mkdir -p
- endif
- OS_EXTENSION=.exe
- OS_INC=-I C:\MinGW\lib
- else
- OS_RM = rm -rf
- OS_CP = cp -rf
- OS_MKDIR = mkdir -p
- OS_EXTENSION=
- OS_INC=
- endif
- # Files to compile
- # For tests, RuneOptimizer.c is not included in the list: is is included from
- # each test file with a redefinition of main.
- FILES=src/RuneOptimizer/RuneOptimizer.c src/RuneOptimizer/*/*.c
- TESTU_FILES=src/test/RuneOptimizerUnitTest.c src/RuneOptimizer/*/*.c
- TESTI_FILES=src/test/RuneOptimizerIntegrationTest.c src/RuneOptimizer/*/*.c
- TESTE_FILES=src/test/RuneOptimizerE2ETest.c src/RuneOptimizer/*/*.c
- # Compiler
- CC=gcc
- # Compiler flags
- CFLAGS=
- DEBUG_CFLAGS=-Wall -Wextra -g
- EXTRA_CFLAGS=-fdump-tree-all
- # Libraries for the compiler
- LIBS=-lsqlite3 -lm -ljson-c -lpthread
- # Include direcotries (Win32 only)
- INC=$(OS_INC)
- # Optimization options
- OPTS=-O3
- TESTX_OPTS=
- DEBUG_OPTS=
- # Output files
- OUT_DIR=bin/
- OUT_EXT=$(OS_EXTENSION)
- OUT_NAME=runeoptimizer
- OUT=$(OUT_DIR)$(OUT_NAME)$(OUT_EXT)
- DEBUG_OUT_NAME=$(OUT_NAME)_debug
- DEBUG_OUT=$(OUT_DIR)$(DEBUG_OUT_NAME)$(OUT_EXT)
- TESTU_OUT_NAME=$(OUT_NAME)_test_unit
- TESTU_OUT=$(OUT_DIR)$(TESTU_OUT_NAME)$(OUT_EXT)
- TESTI_OUT_NAME=$(OUT_NAME)_test_integration
- TESTI_OUT=$(OUT_DIR)$(TESTI_OUT_NAME)$(OUT_EXT)
- TESTE_OUT_NAME=$(OUT_NAME)_test_e2e
- TESTE_OUT=$(OUT_DIR)$(TESTE_OUT_NAME)$(OUT_EXT)
- # Instalation directories
- INSTALL_CLI_SRC=$(OUT)
- INSTALL_GUI_SRC=RuneOptimizerGUI
- INSTALL_DIR_BASE=/usr/share/runeoptimizer/
- INSTALL_DIR_EXEC=/usr/local/bin/
- INSTALL_CLI_EXEC_SRC=$(INSTALL_DIR_BASE)$(OUT_NAME)$(OUT_EXT)
- INSTALL_GUI_EXEC_SRC=$(INSTALL_DIR_BASE)$(INSTALL_GUI_SRC)$(OUT_EXT)/RuneOptimizer.py
- INSTALL_CLI_EXEC_DST=$(INSTALL_DIR_EXEC)$(OUT_NAME)$(OUT_EXT)
- INSTALL_GUI_EXEC_DST=$(INSTALL_DIR_EXEC)$(OUT_NAME)-gui$(OUT_EXT)
- CMD_DOC=doxygen
- CMD_RM=$(OS_RM)
- CMD_CP=$(OS_CP)
- CMD_MKDIR=$(OS_MKDIR)
- # Default, just build RuneOptimizer
- default :
- @echo Compiling...
- @$(CC) -o $(OUT) $(CFLAGS) $(FILES) $(INC) $(LIBS) $(OPTS)
- @echo Compiled executable $(OUT)
- # Debug, compile with extra flags and no optimization
- debug :
- @echo Compiling with debug symbols...
- $(CC) -o $(DEBUG_OUT) $(DEBUG_CFLAGS) $(FILES) $(INC) $(LIBS) $(DEBUG_OPTS)
- @echo Compiled debug executable $(DEBUG_OUT)
- # Test, run default and compile the tests.
- test : default
- @echo Generating tests...
- @$(CC) -o $(TESTU_OUT) $(TESTU_FILES) $(INC) $(LIBS) $(TESTX_OPTS)
- @echo Compiled testing executable $(TESTU_OUT)
- @$(CC) -o $(TESTI_OUT) $(TESTI_FILES) $(INC) $(LIBS) $(TESTX_OPTS)
- @echo Compiled testing executable $(TESTI_OUT)
- @$(CC) -o $(TESTE_OUT) $(TESTE_FILES) $(INC) $(LIBS) $(TESTX_OPTS)
- @echo Compiled testing executable $(TESTE_OUT)
- # Install, install to the system
- install :
- @echo Installing...
- @$(CMD_MKDIR) $(INSTALL_DIR_BASE)
- @$(CMD_CP) $(INSTALL_CLI_SRC) $(INSTALL_DIR_BASE)
- @$(CMD_CP) $(INSTALL_GUI_SRC) $(INSTALL_DIR_BASE)
- -@$(CMD_RM) $(INSTALL_CLI_EXEC_DST)
- -@$(CMD_RM) $(INSTALL_GUI_EXEC_DST)
- @ln -s $(INSTALL_CLI_EXEC_SRC) $(INSTALL_CLI_EXEC_DST)
- @ln -s $(INSTALL_GUI_EXEC_SRC) $(INSTALL_GUI_EXEC_DST)
- @echo Installed RuneOptimizer and RuneOptimizerGUI
- # Unisnstall, delete every file create by install in the system
- uninstall :
- @echo Uninstalling...
- @$(CMD_RM) $(INSTALL_CLI_EXEC_DST)
- @$(CMD_RM) $(INSTALL_GUI_EXEC_DST)
- @$(CMD_RM) $(INSTALL_DIR_BASE)
- @echo RuneOptimizer and RuneOptimizerGUI uninstalled.
- # Docs, generate doxygen documentation
- docs :
- ifeq ($(shell which $(CMD_DOC)),)
- $(error "No $(CMD_DOC) commannd found. Install it and run 'make doc' to generate documentation")
- else
- @echo Generating documentation...
- @$(CMD_MKDIR) doc/cli
- @$(CMD_MKDIR) doc/gui
- @$(CMD_DOC) doxygen-cli.conf
- @$(CMD_DOC) doxygen-gui.conf 2>/dev/null
- @echo Documentation generated in doc/
- endif
- # Clean, remove all geenerated files
- clean :
- @echo Cleaning...
- @$(CMD_RM) bin/*
- @$(CMD_RM) doc/*
- @echo All clean
|