Makefile 924 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. CC := cc
  2. CFLAGS := -Wall -Wextra -O2 -Isrc -I/usr/include/libxml2
  3. LDFLAGS :=
  4. LIBS := -lbeaker -lcurl -lxml2 -lpthread -lm -lssl -lcrypto
  5. SRC_DIR := src
  6. BIN_DIR := bin
  7. OBJ_DIR := obj
  8. SRCS := $(shell find $(SRC_DIR) -name '*.c')
  9. OBJS := $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
  10. TARGET := $(BIN_DIR)/omnisearch
  11. all: $(TARGET)
  12. $(TARGET): $(OBJS)
  13. @mkdir -p $(BIN_DIR)
  14. $(CC) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)
  15. @echo "Build complete: $(TARGET)"
  16. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
  17. @mkdir -p $(dir $@)
  18. $(CC) $(CFLAGS) -c $< -o $@
  19. @echo "Compiled: $<"
  20. run: $(TARGET)
  21. ./$(TARGET)
  22. clean:
  23. rm -rf $(OBJ_DIR) $(BIN_DIR)
  24. @echo "Cleaned build artifacts"
  25. rebuild: clean all
  26. info:
  27. @echo "Compiler: $(CC)"
  28. @echo "CFlags: $(CFLAGS)"
  29. @echo ""
  30. @echo "Sources to compile:"
  31. @echo "$(SRCS)" | tr ' ' '\n'
  32. @echo ""
  33. @echo "Object files to generate:"
  34. @echo "$(OBJS)" | tr ' ' '\n'
  35. .PHONY: all run clean rebuild info