BIN=morph BUILD_DIR?=build CC_FLAGS = -std=c23 -ggdb -Isrc/include CXX_FLAGS = -std=c++23 -ggdb LD_FLAGS = -ggdb CC=clang CXX=clang LD=clang AR=ar cxx_sources=$(wildcard src/*.cpp) c_sources=$(wildcard src/*.c) objects=$(patsubst src/%.cpp,$(BUILD_DIR)/obj/%.cpp.o,$(cxx_sources)) $(patsubst src/%.c,$(BUILD_DIR)/obj/%.c.o,$(c_sources)) all: $(BUILD_DIR)/$(BIN) # compile_commands.json $(BUILD_DIR)/$(BIN): $(objects) $(LD) -o $@ $^ $(LD_FLAGS) clean: rm -r $(BUILD_DIR)/obj/ $(BUILD_DIR)/obj/%.cpp.o: */%.cpp @mkdir -p $(dir $@) $(CXX) -c -o $@ $< $(CXX_FLAGS) $(COM_FLAGS) $(BUILD_DIR)/obj/%.c.o: */%.c @mkdir -p $(dir $@) $(CC) -c -o $@ $< $(CC_FLAGS) $(COM_FLAGS) compile_commands.json: compiledb -n make