CC := gcc LD := $(CC) LDFLAGS := CFLAGS := $(shell cat compile_flags.txt | sed -z "s/\n/ /g") SRC := $(wildcard src/*.c) LIB := lib/lib.a OBJ_DIR := build OBJ := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o,$(SRC))) DIR := . RAW_NAME:= libft_malloc ifeq ($(HOSTTYPE),) HOSTTYPE := $(shell uname -m)_$(shell uname -s) endif NAME := $(RAW_NAME).so NAME_L := $(RAW_NAME)_$(HOSTTYPE).so all: $(NAME) $(NAME): $(OBJ) @make --no-print -C lib all $(LD) $(LDFLAGS) -o $(DIR)/$(NAME_L) $(OBJ) $(LIB) ln -sf $(DIR)/$(NAME_L) $(DIR)/$(NAME) $(OBJ_DIR)/%.o: %.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c -o $@ $< clean: @rm -rf $(OBJ_DIR) fclean: clean @rm -f $(DIR)/$(NAME) @rm -f $(DIR)/$(NAME_L) re: @make --no-print clean @make --no-print all .PHONY: all clean re