Files
omnisearch/vendor/beaker/Makefile
T

85 lines
2.1 KiB
Makefile

CC ?= cc
UNAME_S := $(shell uname -s)
AR := ar
CFLAGS := -Wall -fPIC -I. -Isrc
BUILD_DIR ?= build
OBJ_DIR := $(BUILD_DIR)/obj
ifeq ($(UNAME_S),Darwin)
INSTALL_PREFIX ?= /usr/local/
SHARED_EXT := dylib
LDCONFIG := true
LDFLAGS := -dynamiclib -lpthread -Wl,-install_name,$(INSTALL_PREFIX)lib/libbeaker.$(SHARED_EXT)
else
INSTALL_PREFIX ?= /usr/
SHARED_EXT := so
LDCONFIG := ldconfig
LDFLAGS := -shared -lpthread
endif
SRCS := $(wildcard src/*.c)
OBJS := $(patsubst src/%.c,$(OBJ_DIR)/%.o,$(SRCS))
LIB_BASE := $(BUILD_DIR)/libbeaker
STATIC_LIB := $(LIB_BASE).a
SHARED_LIB := $(LIB_BASE).$(SHARED_EXT)
HEADER := beaker.h
.PHONY: all clean install uninstall info
all: $(SHARED_LIB) $(STATIC_LIB)
$(OBJ_DIR):
@mkdir -p $(OBJ_DIR)
$(STATIC_LIB): $(OBJS)
@echo "Linking static library $@..."
$(AR) rcs $@ $^
@echo "Successfully built $@"
$(SHARED_LIB): $(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 libraries..."
@rm -rf $(BUILD_DIR)
@echo "Clean complete."
install: all
@echo "Installing libraries to $(INSTALL_PREFIX)lib"
@mkdir -p $(INSTALL_PREFIX)lib
ifeq ($(UNAME_S),Darwin)
@rm -f $(INSTALL_PREFIX)lib/libbeaker.so
endif
@cp $(SHARED_LIB) $(STATIC_LIB) $(INSTALL_PREFIX)lib/
@$(LDCONFIG) || true
@echo "Installing $(HEADER) to $(INSTALL_PREFIX)include"
@mkdir -p $(INSTALL_PREFIX)include
@cp $(HEADER) $(INSTALL_PREFIX)include
@echo "Installation complete."
uninstall:
@echo "Uninstalling from $(INSTALL_PREFIX)..."
@rm -f $(INSTALL_PREFIX)lib/libbeaker.$(SHARED_EXT)
@rm -f $(INSTALL_PREFIX)lib/libbeaker.a
ifeq ($(UNAME_S),Darwin)
@rm -f $(INSTALL_PREFIX)lib/libbeaker.so
endif
@rm -f $(INSTALL_PREFIX)include/$(HEADER)
@$(LDCONFIG) || true
@echo "Uninstallation complete."
info:
@echo "Detected OS: '$(UNAME_S)'"
@echo "Compiler: $(CC)"
@echo "Install Prefix: $(INSTALL_PREFIX)"
@echo "Shared Library: $(SHARED_LIB)"
@echo "Source Files: $(SRCS)"