Advertisement
NWPlayer123

fUCK Makefiles

Jun 27th, 2019
874
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.52 KB | None | 0 0
  1. ####### Globals #######
  2. CC = gcc
  3. CXX = g++
  4. EXT = .exe
  5.  
  6. ####### Folder names + output name #######
  7. TARGET      :=  $(notdir $(CURDIR))
  8. BUILD       :=  build
  9. SOURCES     :=  src
  10. DATA        :=  data
  11. INCLUDES    :=  include
  12.  
  13. ####### Compile flags #######
  14. CFLAGS      = -I./include/ -g -O2 -Wall -Wextra $(INCLUDE)
  15. CXXFLAGS    = $(CFLAGS) -std=c++17
  16. LDFLAGS     =
  17.  
  18. ####### Find all compilable files #######
  19. FILES_C     :=  $(shell find . -name *.c)
  20. FILES_CPP   :=  $(shell find . -name *.cpp)
  21. FILES_SRC   :=  $(shell find . -name *.s)
  22.  
  23. ####### Generate list of all .o files #######
  24. OBJS_C      :=  $(foreach file,$(FILES_C),./$(BUILD)/$(subst ./$(SOURCES)/,,$(file:%.c=%.o)))
  25. OBJS_CPP    :=  $(foreach file,$(FILES_CPP),./$(BUILD)/$(subst ./$(SOURCES)/,,$(file:%.cpp=%.o)))
  26. OBJS_SRC    :=  $(foreach file,$(FILES_SRC),./$(BUILD)/$(subst ./$(SOURCES)/,,$(file:%.s=%.o)))
  27.  
  28. ####### Rules #######
  29. all: $(BUILD)
  30. .PHONY: clean all
  31.  
  32. ####### Link and output .exe #######
  33. $(BUILD): $(OBJS_C) $(OBJS_CPP) $(OBJS_SRC)
  34.     @echo output ... $(TARGET)$(EXT)
  35.     @$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS_C) $(OBJS_CPP) $(OBJS_SRC)
  36.  
  37. ####### Compile .cpp to .o #######
  38. $(OBJS_CPP): $(FILES_CPP)
  39.     @echo $(notdir $<)
  40.     @mkdir -p $(dir $@)
  41.     @$(CXX) $(FLAGS) $(CXXFLAGS) -c -o $@ $<
  42.  
  43. ####### Compile .s to .o #######
  44. $(OBJS_SRC): $(FILES_SRC)
  45.     @echo $(notdir $<)
  46.     @mkdir -p $(dir $@)
  47.     @$(CC) $(CFLAGS) -c -o $@ $<
  48.  
  49. ####### Compile .c to .o #######
  50. $(OBJS_C): $(FILES_C)
  51.     @echo $(notdir $<)
  52.     @mkdir -p $(dir $@)
  53.     @$(CC) $(CFLAGS) -c -o $@ $<
  54.  
  55. clean:
  56.     rm -rf $(BUILD)
  57.     rm -rf $(TARGET)$(EXT)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement