Makefile 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #
  2. # Copyright (c) 2013 No Face Press, LLC
  3. # License http://opensource.org/licenses/mit-license.php MIT License
  4. #
  5. include build/Makefile.in-os
  6. CPROG = civetweb
  7. #CXXPROG = civetweb
  8. BUILD_DIR = out
  9. INSTALL_DIR = /
  10. BUILD_DIRS += $(BUILD_DIR)
  11. LIB_SOURCES = civetweb.c md5.c
  12. APP_SOURCES = main.c
  13. SOURCE_DIRS =
  14. OBJECTS = $(LIB_SOURCES:.c=.o) $(APP_SOURCES:.c=.o)
  15. # only set main compile options if none were chosen
  16. CFLAGS += -W -Wall -O2 -D$(TARGET_OS) $(COPT)
  17. ifdef WITH_DEBUG
  18. CFLAGS += -g -DDEBUG_ENABLED
  19. endif
  20. ifdef WITH_LUA
  21. include build/Makefile.in-lua
  22. endif
  23. ifdef WITH_IPV6
  24. CFLAGS += -DDSE_IPV6
  25. endif
  26. ifdef WITH_WEBSOCKET
  27. CFLAGS += -DUSE_WEBSOCKET
  28. endif
  29. BUILD_DIRS += $(addprefix $(BUILD_DIR)/, $(SOURCE_DIRS))
  30. BUILD_OBJECTS = $(addprefix $(BUILD_DIR)/, $(OBJECTS))
  31. LIBS = -lpthread -lm
  32. ifeq ($(TARGET_OS),LINUX)
  33. LIBS += -ldl
  34. endif
  35. all: help
  36. help:
  37. @echo "make help show this message"
  38. @echo "make build compile"
  39. @echo "make install install on the system"
  40. @echo "make clean clean up the mess"
  41. @echo ""
  42. @echo "Make Options"
  43. @echo " WITH_LUA=1 build with LUA support"
  44. @echo " WITH_DEBUG=1 build with GDB debug support"
  45. @echo " WITH_IPV6=1 with IPV6 support"
  46. @echo " WITH_WEBSOCKET=1 build with web socket support"
  47. @echo " COPT=\"-DNO_SSL\" method to insert additional options"
  48. @echo " INSTALL_DIR=/ sets the install directory"
  49. @echo ""
  50. @echo "Compile Flags"
  51. @echo " NDEBUG strip off all debug code"
  52. @echo " DEBUG build debug version (very noisy)"
  53. @echo " NO_CGI disable CGI support"
  54. @echo " NO_SSL disable SSL functionality"
  55. @echo " NO_SSL_DL link against system libssl library"
  56. @echo " CONFIG_FILE=\"file\" use 'file' as the config file"
  57. @echo " SSL_LIB=\"libssl.so.<version>\" use system versioned SSL shared object"
  58. @echo " CRYPTO_LIB=\"libcrypto.so.<version>\" use system versioned CRYPTO so"
  59. @echo ""
  60. @echo "Variables"
  61. @echo " TARGET_OS='$(TARGET_OS)'"
  62. @echo " CFLAGS='$(CFLAGS)'"
  63. @echo " CXXFLAGS='$(CXXFLAGS)'"
  64. @echo " LDFLAGS='$(LDFLAGS)'"
  65. @echo " CC='$(CC)'"
  66. @echo " CXX='$(CXX)'"
  67. build: $(CPROG) $(CXXPROG)
  68. install: build
  69. ifeq ($(TARGET_OS),LINUX)
  70. install -Dm755 "$(CPROG)" "$(INSTALL_DIR)/usr/bin/$(CPROG)"
  71. install -Dm644 "distribution/arch/$(CPROG).conf" "$(INSTALL_DIR)/etc/$(CPROG)/$(CPROG).conf"
  72. install -Dm644 "distribution/arch/$(CPROG).service" "$(INSTALL_DIR)/usr/lib/systemd/system/$(CPROG).service"
  73. install -d "$(INSTALL_DIR)/usr/share/$(CPROG)"
  74. install -m644 "UserManual.md" "README.md" "$(INSTALL_DIR)/usr/share/$(CPROG)"
  75. endif
  76. clean:
  77. rm -rf $(BUILD_DIR)
  78. $(CPROG): $(BUILD_DIRS) $(BUILD_OBJECTS)
  79. $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(BUILD_OBJECTS) $(LIBS)
  80. $(CXXPROG): $(BUILD_DIRS) $(BUILD_OBJECTS)
  81. $(CXX) -o $@ $(CFLAGS) $(LDFLAGS) $(BUILD_OBJECTS) $(LIBS)
  82. $(BUILD_DIRS):
  83. -@mkdir -p $@
  84. $(BUILD_DIR)/%.o : %.cpp
  85. $(CXX) -c $(CFLAGS) $(CXXFLAGS) $< -o $@
  86. $(BUILD_DIR)/%.o : %.c
  87. $(CC) -c $(CFLAGS) $< -o $@
  88. .PHONY: all help build install clean