Makefile (902B)
1 .SUFFIXES: .c .o .so 2 CC=clang 3 CFLAGS+=-std=c99 -pedantic -Wall -Werror -Wstrict-prototypes 4 CFLAGS+=-Wmissing-prototypes -Wmissing-declarations -Wshadow 5 CFLAGS+=-Wpointer-arith -Wcast-qual -Wsign-compare 6 CFLAGS+=-O2 -g 7 CFLAGS+=-fstack-protector-all -Wtype-limits -fno-common 8 CFLAGS+=-fno-builtin 9 CFLAGS+=-I/usr/local/include 10 11 INSTALL_PATH=$(HOME)/.local 12 BUILD=build 13 14 TEST_SOURCE=test_stack_str.c 15 HEADER=stack_str.h 16 OBJS=stack_str.o 17 SHARED=stack_str.so 18 LIBSHARED=libstack_str.so 19 20 all: build $(OBJS) $(SHARED) test 21 22 .c.o: 23 $(CC) $(CFLAGS) -c $< -o $(BUILD)/$@ 24 25 .o.so: 26 $(CC) -shared -fPIC $(BUILD)/$< -o $(BUILD)/$@ 27 28 test: $(TEST_SOURCE) 29 $(CC) $(CFLAGS) -o $(BUILD)/test $(TEST_SOURCE) $(BUILD)/$(OBJS) 30 31 build: 32 mkdir -p $(BUILD) 33 34 install: 35 cp $(BUILD)/$(SHARED) $(INSTALL_PATH)/lib/$(LIBSHARED) 36 chmod 644 $(INSTALL_PATH)/lib/$(LIBSHARED) 37 cp $(HEADER) $(INSTALL_PATH)/include/ 38 39 clean: 40 rm -rf $(BUILD)