Add dynamic and static as makefile targets
This commit is contained in:
38
Makefile
38
Makefile
@@ -2,29 +2,47 @@
|
|||||||
CC := gcc
|
CC := gcc
|
||||||
CFLAGS := -g -O3 -std=c2x -Wall -Wextra -Wpedantic -Werror
|
CFLAGS := -g -O3 -std=c2x -Wall -Wextra -Wpedantic -Werror
|
||||||
|
|
||||||
OBJS := obj/arena.o obj/alloc_backend.o
|
BUILD_DIR := build
|
||||||
|
BIN_DIR := lib
|
||||||
|
TEST_DIR := test
|
||||||
|
|
||||||
all : test/test_arena
|
OBJS := $(BUILD_DIR)/arena.o $(BUILD_DIR)/alloc_backend.o
|
||||||
|
FPIC_OBJS := $(BUILD_DIR)/fpic/arena.o $(BUILD_DIR)/fpic/alloc_backend.o
|
||||||
|
|
||||||
test/test_arena : src/test_arena.c obj/libarena.a | test
|
static : $(BIN_DIR)/libarena.a
|
||||||
|
|
||||||
|
dynamic : $(BIN_DIR)/libarena.so
|
||||||
|
|
||||||
|
tests : test/test_arena
|
||||||
|
|
||||||
|
$(TEST_DIR)/test_arena : src/test_arena.c $(BIN_DIR)/libarena.a | $(TEST_DIR)
|
||||||
$(CC) -o $@ $(CFLAGS) $^
|
$(CC) -o $@ $(CFLAGS) $^
|
||||||
|
|
||||||
obj/libarena.a : obj/arena.o obj/alloc_backend.o | obj
|
$(BIN_DIR)/libarena.a : $(OBJS) | $(BIN_DIR)
|
||||||
ar cr $@ $^
|
ar cr $@ $^
|
||||||
|
|
||||||
obj/%.o : src/%.c | obj
|
$(BIN_DIR)/libarena.so : $(FPIC_OBJS) | $(BIN_DIR)
|
||||||
|
$(CC) -shared -o $@ $^
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o : src/%.c | $(BUILD_DIR)
|
||||||
$(CC) -o $@ -c $(CFLAGS) $<
|
$(CC) -o $@ -c $(CFLAGS) $<
|
||||||
|
|
||||||
obj:
|
$(BUILD_DIR)/fpic/%.o : src/%.c | $(BUILD_DIR)/fpic
|
||||||
|
$(CC) -o $@ -c -fPIC $(CFLAGS) $<
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
bin:
|
$(BUILD_DIR)/fpic:
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
test:
|
$(BIN_DIR) :
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(TEST_DIR) :
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf obj bin test
|
rm -rf $(BUILD_DIR) $(BIN_DIR) $(TEST_DIR)
|
||||||
|
|
||||||
.PHONY: clean obj test bin all
|
.PHONY: clean $(BUILD_DIR) test bin all
|
||||||
|
|||||||
Reference in New Issue
Block a user