53 lines
1.4 KiB
Makefile
53 lines
1.4 KiB
Makefile
CXX = clang++
|
|
|
|
# Detect OS
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
# Default LLVM_CONFIG
|
|
LLVM_CONFIG ?= llvm-config
|
|
|
|
# If llvm-config is not in PATH, try to guess location based on OS
|
|
ifeq ($(shell which $(LLVM_CONFIG) 2>/dev/null),)
|
|
ifeq ($(UNAME_S),Darwin)
|
|
# macOS Homebrew path
|
|
LLVM_CONFIG = /opt/homebrew/opt/llvm/bin/llvm-config
|
|
endif
|
|
endif
|
|
|
|
# Verify if llvm-config exists
|
|
ifeq ($(shell which $(LLVM_CONFIG) 2>/dev/null),)
|
|
# If still not found, try common versioned names on Linux
|
|
ifneq ($(UNAME_S),Darwin)
|
|
LLVM_CONFIG := $(shell which llvm-config-18 2>/dev/null || which llvm-config-17 2>/dev/null || which llvm-config-16 2>/dev/null || which llvm-config-15 2>/dev/null)
|
|
endif
|
|
endif
|
|
|
|
# Final check
|
|
ifeq ($(LLVM_CONFIG),)
|
|
$(error "llvm-config not found. Please install LLVM or set LLVM_CONFIG manually (e.g., make LLVM_CONFIG=llvm-config-15)")
|
|
endif
|
|
|
|
CXXFLAGS = -std=c++17 -Wall -Wextra -Wno-unused-parameter $(shell $(LLVM_CONFIG) --cxxflags)
|
|
LDFLAGS = $(shell $(LLVM_CONFIG) --ldflags --system-libs --libs core)
|
|
|
|
SRC_DIR = src
|
|
BUILD_DIR = build
|
|
TARGET = sun
|
|
|
|
SRCS = $(wildcard $(SRC_DIR)/*.cpp)
|
|
OBJS = $(patsubst $(SRC_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(SRCS))
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJS)
|
|
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
|
|
@mkdir -p $(BUILD_DIR)
|
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR) $(TARGET)
|
|
|
|
.PHONY: all clean
|