CC ?= gcc PKG_CONFIG ?= pkg-config CFLAGS = -I./include -Wall -Wextra -MMD -MP $(shell $(PKG_CONFIG) --cflags json-c ncurses) LDLIBS = $(shell $(PKG_CONFIG) --libs json-c ncurses) BUNDLE_LDFLAGS = -Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2 -Wl,-rpath,'$$ORIGIN/lib' SRC_DIR = src BUILD_DIR = build SOURCES = $(filter-out $(SRC_DIR)/testLogic.c, $(wildcard $(SRC_DIR)/*.c)) OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES)) EXEC = productManager DEPS = $(OBJECTS:.o=.d) all: $(EXEC) # 1. Per testare in locale su NixOS $(EXEC): $(OBJECTS) $(CC) $^ -o $@ $(LDLIBS) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ -include $(DEPS) # 2. Per creare il pacchetto portabile da inviare bundle: $(OBJECTS) @mkdir -p dist/lib $(CC) $^ -o dist/$(EXEC) $(BUNDLE_LDFLAGS) $(LDLIBS) @cp -L $$( $(PKG_CONFIG) --variable=libdir json-c )/libjson-c.so* dist/lib/ @cp -L $$( $(PKG_CONFIG) --variable=libdir ncurses )/libncurses*.so* dist/lib/ @tar czf productManager.tar.gz --directory dist/ . @echo "=== Pacchetto portabile creato con successo in productManager.tar.gz ===" @rm -fr dist/ clean: rm -rf $(BUILD_DIR) $(EXEC) dist *.json .fpm .PHONY: all clean bundle