71 lines
No EOL
1.7 KiB
Makefile
71 lines
No EOL
1.7 KiB
Makefile
CC := cc
|
|
CFLAGS := -Wall -Wextra -Werror -fPIC -Iincludes -Ilibft
|
|
|
|
ifeq ($(HOSTTYPE),)
|
|
HOSTTYPE := $(shell uname -m)_$(shell uname -s)
|
|
endif
|
|
|
|
NAME := libft_malloc_$(HOSTTYPE).so
|
|
LINK := libft_malloc.so
|
|
|
|
# --------------------------------------------------------------------------- #
|
|
# Sources / objects
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
SRCS_DIR := srcs
|
|
SRCS := $(SRCS_DIR)/ft_malloc.c \
|
|
$(SRCS_DIR)/ft_free.c \
|
|
$(SRCS_DIR)/ft_calloc.c \
|
|
$(SRCS_DIR)/ft_realloc.c \
|
|
$(SRCS_DIR)/init_state.c \
|
|
$(SRCS_DIR)/bonus_utils.c \
|
|
$(SRCS_DIR)/utils.c
|
|
|
|
OBJS := $(SRCS:.c=.o)
|
|
|
|
LIBFT_DIR := libft
|
|
LIBFT_A := $(LIBFT_DIR)/libft.a
|
|
|
|
# --------------------------------------------------------------------------- #
|
|
# Rules
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
.PHONY: all clean fclean re test
|
|
|
|
all: $(NAME) $(LINK)
|
|
|
|
# Build the shared library
|
|
$(NAME): $(LIBFT_A) $(OBJS)
|
|
$(CC) -shared -o $@ $(OBJS) -L$(LIBFT_DIR) -lft -lpthread
|
|
|
|
# Symlink libft_malloc.so -> libft_malloc_$HOSTTYPE.so
|
|
$(LINK): $(NAME)
|
|
ln -sf $(NAME) $(LINK)
|
|
|
|
# Build libft first (using its own Makefile)
|
|
$(LIBFT_A):
|
|
$(MAKE) -C $(LIBFT_DIR)
|
|
|
|
# Object files
|
|
$(SRCS_DIR)/%.o: $(SRCS_DIR)/%.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -f $(OBJS)
|
|
$(MAKE) -C $(LIBFT_DIR) clean
|
|
|
|
fclean: clean
|
|
rm -f $(NAME) $(LINK)
|
|
$(MAKE) -C $(LIBFT_DIR) fclean
|
|
|
|
re: fclean all
|
|
|
|
# Simple helper target to remind how to test with LD_PRELOAD
|
|
test: all
|
|
@echo "Library built:"
|
|
@echo " $(NAME)"
|
|
@echo "Symlink:"
|
|
@echo " $(LINK) -> $(NAME)"
|
|
@echo ""
|
|
@echo "Example usage (run any program with your malloc):"
|
|
@echo " LD_PRELOAD=./$(LINK) ls"
|