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