fix: separate build and install steps and fix symlink

This commit is contained in:
lohhiiccc 2026-01-27 05:28:49 +01:00
parent bfd61e3636
commit bd367b97dc

View file

@ -2,6 +2,7 @@ LIB_NAME = icmp
LIB_STATIC = lib$(LIB_NAME).a
LIB_SHARED = lib$(LIB_NAME).so
LIB_VERSION = 1.0.0
LIB_SHARED_VERSIONED = $(LIB_SHARED).$(LIB_VERSION)
TEST_BIN = test.out
# Build configuration
@ -15,6 +16,7 @@ LIBDIR = $(PREFIX)/lib
.DEFAULT_GOAL := all
MAKEFLAGS += --no-print-directory
include sources.mk
CC = clang
@ -47,7 +49,7 @@ $(LIB_STATIC): $(OBJS_STATIC)
$(AR) rcs $@ $^
$(LIB_SHARED): $(OBJS_SHARED)
$(CC) -shared -Wl,-soname,$(LIB_SHARED).$(LIB_VERSION) -o $@ $^
$(CC) -shared -Wl,-soname,$(LIB_SHARED_VERSIONED) -o $@ $^
$(OBJ_DIR_STATIC)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(dir $@)
@ -68,17 +70,19 @@ $(TEST_BIN): $(TESTS) $(OBJS_STATIC)
$(CC) $(CPPFLAGS) -I tests $(CFLAGS) $(TEST_LDFLAGS) $^ -o $@
.PHONY: install
install: all
install:
@test -f $(LIB_STATIC) -o -f $(LIB_SHARED) || \
(echo "Error: No libraries found. Run 'make' first." >&2 && false)
install -d $(DESTDIR)$(INCLUDEDIR)
install -d $(DESTDIR)$(LIBDIR)
install -m 644 includes/icmp.h $(DESTDIR)$(INCLUDEDIR)
install -m 644 includes/icmp_types.h $(DESTDIR)$(INCLUDEDIR)
ifeq ($(BUILD_STATIC),yes)
ifneq ($(wildcard $(LIB_STATIC)),)
install -m 644 $(LIB_STATIC) $(DESTDIR)$(LIBDIR)
endif
ifeq ($(BUILD_SHARED),yes)
install -m 755 $(LIB_SHARED) $(DESTDIR)$(LIBDIR)
ln -sf $(LIB_SHARED) $(DESTDIR)$(LIBDIR)/$(LIB_SHARED).$(LIB_VERSION)
ifneq ($(wildcard $(LIB_SHARED)),)
install -m 755 $(LIB_SHARED) $(DESTDIR)$(LIBDIR)/$(LIB_SHARED_VERSIONED)
ln -sf $(LIB_SHARED_VERSIONED) $(DESTDIR)$(LIBDIR)/$(LIB_SHARED)
endif
.PHONY: uninstall
@ -100,4 +104,3 @@ fclean: clean
.PHONY: re
re: fclean
$(MAKE) all