From bd367b97dcabcd9384a619d87e0aa51b9c1cfe86 Mon Sep 17 00:00:00 2001 From: lohhiiccc <96543753+lohhiiccc@users.noreply.github.com> Date: Tue, 27 Jan 2026 05:28:49 +0100 Subject: [PATCH] fix: separate build and install steps and fix symlink --- Makefile | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 4c2c633..c50cf21 100644 --- a/Makefile +++ b/Makefile @@ -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 -