47 lines
963 B
Makefile
47 lines
963 B
Makefile
CC := gcc
|
|
LD := $(CC)
|
|
LDFLAGS := -shared
|
|
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:= ft_malloc
|
|
LIB_NAME:= lib$(RAW_NAME)
|
|
ifeq ($(HOSTTYPE),)
|
|
HOSTTYPE := $(shell uname -m)_$(shell uname -s)
|
|
endif
|
|
NAME := $(LIB_NAME).so
|
|
NAME_L := $(LIB_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)
|
|
@rm -f main.o
|
|
|
|
fclean: clean
|
|
@rm -f $(DIR)/$(NAME)
|
|
@rm -f $(DIR)/$(NAME_L)
|
|
@rm -f main
|
|
|
|
re:
|
|
@make --no-print clean
|
|
@make --no-print all
|
|
|
|
main: $(NAME)
|
|
export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(shell pwd)/
|
|
$(CC) main.c -L. -l$(RAW_NAME) -o main
|
|
|
|
.PHONY: all clean re
|