feat: Added nix flake for build.
This commit is contained in:
Vendored
+84
@@ -0,0 +1,84 @@
|
||||
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)"
|
||||
Reference in New Issue
Block a user