diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..66e5016 --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +CC = gcc +AR = ar +CFLAGS = -Wall -fPIC -I. -Isrc +LDFLAGS = -shared +BUILD_DIR ?= build +OBJ_DIR = $(BUILD_DIR)/obj +INSTALL_PREFIX ?= /usr/ + +SRCS = $(wildcard src/*.c) +OBJS = $(patsubst src/%.c,$(OBJ_DIR)/%.o,$(SRCS)) + +LIB = $(BUILD_DIR)/libbeaker +HEADER = beaker.h + +.PHONY: all clean install uninstall + +all: $(LIB).so $(LIB).a + + +$(OBJ_DIR): + @mkdir -p $(OBJ_DIR) + +$(LIB).a: $(OBJS) + @echo "Linking shared library $@..." + $(AR) rcs $@ $^ + @echo "Successfully built $@" + +$(LIB).so: $(OBJS) + @echo "Linking shared library $@..." + $(CC) $(LDFLAGS) $(OBJS) -o $@ -lm + @echo "Successfully built $@" + +$(OBJ_DIR)/%.o: src/%.c | $(OBJ_DIR) + @echo "Compiling $<..." + $(CC) $(CFLAGS) -c $< -o $@ + +clean: + @echo "Cleaning up object files and shared library..." + @rm -rf $(OBJ_DIR) $(LIB) + @echo "Clean complete." + +install: all + @echo "Installing $(LIB) to $(INSTALL_PREFIX)/lib" + @cp $(LIB).so $(INSTALL_PREFIX)/lib/ + @ldconfig + @echo "Installing $(HEADER) to $(INSTALL_PREFIX)/include" + @cp $(HEADER) $(INSTALL_PREFIX)/include + @echo "Installation complete." + +uninstall: + @echo "Uninstalling $(LIB) from $(INSTALL_PREFIX)/lib..." + @rm -f $(INSTALL_PREFIX)/lib/$(LIB) + @ldconfig + @echo "Removing $(HEADER) from $(INSTALL_PREFIX)/include" + @rm -f $(INSTALL_PREFIX)/include/$(HEADER) + @echo "Uninstallation complete." |
