41 lines
795 B
Makefile
41 lines
795 B
Makefile
|
MAKEFLAGS += -j
|
||
|
|
||
|
CC := gcc
|
||
|
LD := $(CC)
|
||
|
CFLAGS := -g -O0 -Wall -Wextra -Werror -MMD
|
||
|
|
||
|
OBJ := $(patsubst src/%.c,build/%.o,$(wildcard src/*.c))
|
||
|
DEP := $(patsubst %.o,%.d,$(OBJ))
|
||
|
NAME := libmalloc.so
|
||
|
|
||
|
all: $(NAME)
|
||
|
|
||
|
$(NAME): $(OBJ)
|
||
|
@printf 'LD %s\n' "$@"
|
||
|
$(LD) -shared -o $(NAME) $(OBJ)
|
||
|
|
||
|
build/%.o: src/%.c
|
||
|
@printf 'CC %s\n' "$@"
|
||
|
@mkdir -p $(@D)
|
||
|
@$(CC) $(CFLAGS) -fPIC -c -o $@ $<
|
||
|
|
||
|
clean:
|
||
|
@printf 'RM build\n'
|
||
|
@rm -rf build/
|
||
|
|
||
|
fclean:
|
||
|
@printf 'RM build %s\n' "$(NAME)"
|
||
|
@rm -rf build/ $(NAME) bozo bozo.d
|
||
|
|
||
|
re:
|
||
|
@make --no-print-directory fclean
|
||
|
@make --no-print-directory all
|
||
|
|
||
|
test:
|
||
|
@make --no-print-directory all
|
||
|
@$(CC) $(CFLAGS) test/main.c -o bozo -L. -lmalloc
|
||
|
@export LD_LIBRARY_PATH=$(shell pwd) && valgrind ./bozo
|
||
|
|
||
|
.PHONY: all clean fclean re test
|
||
|
|
||
|
-include $(DEP)
|