diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4d46ec2 --- /dev/null +++ b/Makefile @@ -0,0 +1,63 @@ +TARGET_LIB := libsparklepaw.so +SRC_DIR := libsparklepaw +BUILD_DIR := build + +PREFIX ?= /usr/local +LIBDIR ?= $(PREFIX)/lib +INCLUDEDIR ?= $(PREFIX)/include +MANDIR ?= $(PREFIX)/share/man + +CFLAGS := -Wall -Wextra -flto + +### build mode + +ifeq ($(mode),debug) + CFLAGS += -g -Og -DDEBUG + BUILD_DIR := $(BUILD_DIR)/debug +else + CFLAGS += -O3 + LDFLAGS += -s +endif + +### automatically populated variables + +SRCS := $(shell find $(SRC_DIR) -name '*.c') +OBJS := $(SRCS:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o) +HEADERS := $(shell find $(SRC_DIR) -name '*.h') + +TARGET := $(BUILD_DIR)/$(TARGET_LIB) + +### build targets + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) -shared -o $@ $(LDFLAGS) $(OBJS) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c + @mkdir -p $(BUILD_DIR) + $(CC) $(CFLAGS) -c $< -o $@ + +### other targets + +clean: + $(RM) $(OBJS) $(TARGET) + +install: $(TARGET) $(HEADERS) + install -m 755 $(TARGET) $(LIBDIR) + install -m 755 -d $(INCLUDEDIR)/libsparklepaw/ + install -m 644 $(HEADERS) $(INCLUDEDIR)/libsparklepaw/ + +uninstall: + $(RM) $(LIBDIR)/$(TARGET_LIB) + $(RM) -r $(INCLUDEDIR)/libsparklepaw/ + +doc: + doxygen + +clean-doc: + $(RM) -r docs-generated/ + +### end + +.PHONY: all clean install uninstall doc clean-doc |
