43 lines
913 B
Makefile
43 lines
913 B
Makefile
LIB=libcx
|
|
|
|
BUILD_DIR?=build
|
|
|
|
COM_FLAGS = -fPIC -Isrc/include
|
|
CC_FLAGS = -std=c23 -ggdb
|
|
CXX_FLAGS = -std=c++23 -nostdinc++ -ggdb -fexceptions
|
|
LD_FLAGS = -nostdlib++ -lsupc++ -ggdb -fexceptions
|
|
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: shared static compile_commands.json
|
|
|
|
shared: $(BUILD_DIR)/$(LIB).so
|
|
static: $(BUILD_DIR)/$(LIB).a
|
|
|
|
$(BUILD_DIR)/$(LIB).a: $(objects)
|
|
$(AR) rcs $@ $^
|
|
|
|
$(BUILD_DIR)/$(LIB).so: $(objects)
|
|
$(LD) -shared -o $@ $^
|
|
|
|
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
|