Makefile 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # Try to detect operating system
  2. ifeq ($(OS),Windows_NT)
  3. ifeq ($(shell uname -s),) # not in a bash-like shell
  4. RM = del /F /Q
  5. MKDIR = mkdir
  6. else # in a bash-like shell, like msys
  7. RM = rm -rf
  8. MKDIR = mkdir -p
  9. endif
  10. EXTENSION=.exe
  11. INC=-I C:\MinGW\lib
  12. else
  13. RM = rm -rf
  14. MKDIR = mkdir -p
  15. EXTENSION=
  16. INC=
  17. endif
  18. SRC=src/RuneOptimizer/RuneOptimizer.c
  19. CC=gcc
  20. CFLAGS=
  21. OPTS_DEBUG=-Wall -g
  22. OPTS_TEST=
  23. OPTS=-O3
  24. OPTS_REPORT=-O3 -fdump-tree-all
  25. LIBS=-lsqlite3 -lm -ljson-c -lpthread
  26. OUT=bin/RuneOptimizer
  27. OUT_DEBUG=bin/RuneOptimizer_DEBUG
  28. TEST_SRC=src/test/RuneOptimizerTest.c
  29. TEST_SRC_UNIT=src/test/RuneOptimizerUnitTest.c
  30. TEST_SRC_INTEGRATION=src/test/RuneOptimizerIntegrationTest.c
  31. TEST_SRC_E2E=srctest/RuneOptimizerE2ETest.c
  32. TEST_OUT_UNIT=bin/RuneOptimizerUnitTest
  33. TEST_OUT_INTEGRATION=bin/RuneOptimizerIntegrationTest
  34. TEST_OUT_E2E=bin/RuneOptimizerE2ETest
  35. #TEST_FUNCTION=-nostartfiles -Wl,-emain_test
  36. TEST_FUNCTION=
  37. INSTALL_DIR=/usr/local/bin/
  38. GUI_INSTALL_DIR=/usr/share/
  39. GUI_EXECUTABLE_SRC=/usr/share/RuneOptimizerGUI/RuneOptimizer.py
  40. GUI_EXECUTABLE_DST=/usr/local/bin/RuneOptimizerGUI
  41. DOC_COMMAND=doxygen
  42. default :
  43. @echo Compiling...
  44. @$(CC) -o $(OUT)$(EXTENSION) $(SRC) $(INC) $(LIBS) $(OPTS)
  45. @echo Compiled executable $(OUT)$(EXTENSION)
  46. debug :
  47. @echo Compiling with debug symbols...
  48. @$(CC) -o $(OUT_DEBUG)$(EXTENSION) $(SRC) $(INC) $(LIBS)
  49. @echo Compiled debug executable $(OUT_DEBUG)
  50. test : default
  51. @echo Generating tests...
  52. @$(CC) $(OPTS_TEST) -o $(TEST_OUT_UNIT)$(EXTENSION) $(TEST_SRC_UNIT) $(INC) $(LIBS) $(TEST_FUNCTION)
  53. @echo Compiled testing executable $(TEST_OUT_UNIT)$(EXTENSION)
  54. @$(CC) $(OPTS_TEST) -o $(TEST_OUT_INTEGRATION)$(EXTENSION) $(TEST_SRC_INTEGRATION) $(INC) $(LIBS) $(TEST_FUNCTION)
  55. @echo Compiled testing executable $(TEST_OUT_INTEGRATION)$(EXTENSION)
  56. @$(CC) $(OPTS_TEST) -o $(TEST_OUT_E2E)$(EXTENSION) $(TEST_SRC_E2E) $(INC) $(LIBS) $(TEST_FUNCTION)
  57. @echo Compiled testing executable $(TEST_OUT_E2E)$(EXTENSION)
  58. install :
  59. @echo Installing...
  60. @mkdir -p $(INSTALL_DIR)
  61. @cp $(OUT)$(EXTENSION) $(INSTALL_DIR)
  62. @cp -rf RuneOptimizerGUI $(GUI_INSTALL_DIR)
  63. -@rm $(GUI_EXECUTABLE_DST)
  64. @ln -s $(GUI_EXECUTABLE_SRC) $(GUI_EXECUTABLE_DST)
  65. @echo Installed RuneOptimizer and RuneOptimizerGUI
  66. docs :
  67. ifeq ($(shell which $(DOC_COMMAND)),)
  68. $(error "No $(DOC_COMMAND) commannd found. Install it and run 'make doc' to generate documentation")
  69. else
  70. @echo Generating documentation...
  71. @mkdir -p doc/cli
  72. @mkdir -p doc/gui
  73. @doxygen doxygen-cli.conf
  74. @doxygen doxygen-gui.conf 2>/dev/null
  75. @echo Documentation generated in doc/
  76. endif
  77. clean :
  78. @echo Cleaning...
  79. @$(RM) bin/*
  80. @$(RM) doc/*
  81. @echo All clean