You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
660 B
40 lines
660 B
SRC = $(wildcard src/*.c)
|
|
INCLUDE = include
|
|
|
|
CFLAGS?= -O3 -flto -fgraphite
|
|
CFLAGS+= -Wall $(addprefix -I,$(INCLUDE)) --std=gnu11 -pedantic
|
|
|
|
LDFLAGS?= -O3 -flto
|
|
|
|
OBJ:= obj
|
|
|
|
STATIC = $(addprefix $(OBJ)/static/,$(SRC:.c=.o))
|
|
SHARED = $(addprefix $(OBJ)/shared/,$(SRC:.c=.o))
|
|
|
|
BUILD = librc
|
|
|
|
.PHONY: all
|
|
all: dirs $(BUILD)
|
|
|
|
dirs:
|
|
@mkdir -p obj/{shared,static}/src
|
|
|
|
obj/static/%.o: %.c
|
|
$(CC) -c $< $(CFLAGS) -o $@
|
|
|
|
obj/shared/%.o: %.c
|
|
$(CC) -fPIC -c $< $(CFLAGS) -o $@
|
|
|
|
$(BUILD).a: $(STATIC)
|
|
ar rcs $@ $^
|
|
|
|
$(BUILD).so: $(SHARED)
|
|
$(CC) -shared $^ $(CFLAGS) -o $@ $(LDFLAGS)
|
|
strip $@
|
|
|
|
$(BUILD): $(BUILD).a $(BUILD).so
|
|
|
|
clean:
|
|
rm -f $(BUILD).{a,so}
|
|
rm -rf obj
|