makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. CXX=/usr/bin/g++
  2. SRC_DIR=src
  3. INC_DIR=include
  4. BUILD_DIR=build
  5. TESTS_DIR=tests
  6. FPGA_LIB_DIR=lib/mlfpga
  7. CFLAGS=-g -Wall -pthread -std=c++11
  8. LFLAGS=-shared -Wl,--no-as-needed,-Map=$(BUILD_DIR)/project.map
  9. TF_CFLAGS=$(shell cat $(BUILD_DIR)/TF_CFLAGS)
  10. TF_LFLAGS=$(shell cat $(BUILD_DIR)/TF_LFLAGS)
  11. SRCS=$(wildcard $(SRC_DIR)/*.cpp)
  12. OBJS=$(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS))
  13. FPGA_LIB_SRCS=$(wildcard $(FPGA_LIB_DIR)/$(SRC_DIR)/*.cpp)
  14. FPGA_LIB_OBJS=$(patsubst $(FPGA_LIB_DIR)/$(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(FPGA_LIB_SRCS))
  15. TESTS_SRCS=$(wildcard $(TESTS_DIR)/main.cpp)
  16. ECHO_SRCS=$(wildcard $(TESTS_DIR)/echo.cpp)
  17. EXECUTABLE=op_lib.so
  18. TEST_EXEC=test
  19. ECHO_EXEC=echo
  20. all: config $(BUILD_DIR)/$(EXECUTABLE)
  21. config:
  22. @if [ ! -f "$(BUILD_DIR)/TF_CFLAGS" -o ! -f "$(BUILD_DIR)/TF_LFLAGS" ]; then ./configure $(BUILD_DIR) || exit 1; fi
  23. $(BUILD_DIR)/$(EXECUTABLE): $(OBJS) $(FPGA_LIB_OBJS)
  24. $(CXX) $(LFLAGS) $(TF_LFLAGS) -o $@ $^
  25. $(OBJS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp $(INC_DIR)/%.hpp
  26. $(CXX) $(CFLAGS) -fPIC -c $(TF_CFLAGS) -I$(INC_DIR) -o $@ $<
  27. $(FPGA_LIB_OBJS): $(BUILD_DIR)/%.o : $(FPGA_LIB_DIR)/$(SRC_DIR)/%.cpp $(FPGA_LIB_DIR)/$(INC_DIR)/%.hpp
  28. $(CXX) $(CFLAGS) -fPIC -c -I$(FPGA_LIB_DIR)/$(INC_DIR) -o $@ $<
  29. test: config $(BUILD_DIR)/$(EXECUTABLE) $(BUILD_DIR)/$(TEST_EXEC)
  30. $(BUILD_DIR)/$(TEST_EXEC): $(TESTS_SRCS) $(FPGA_LIB_OBJS)
  31. $(CXX) $(CFLAGS) -I$(FPGA_LIB_DIR)/$(INC_DIR) -o $@ $^
  32. echo: $(BUILD_DIR)/$(ECHO_EXEC)
  33. $(BUILD_DIR)/$(ECHO_EXEC): $(ECHO_SRCS)
  34. $(CXX) $(CFLAGS) -o $@ $^
  35. clean:
  36. rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/$(EXECUTABLE) $(BUILD_DIR)/$(TEST_EXEC) $(BUILD_DIR)/$(ECHO_EXEC)