116 lines
2.8 KiB
Makefile
116 lines
2.8 KiB
Makefile
NAME = push_swap
|
|
CFLAGS = -Ofast \
|
|
-march=native \
|
|
-pipe \
|
|
-Wall \
|
|
-Wextra \
|
|
-Wpedantic
|
|
CPPFLAGS = -I$(LFTDIR) \
|
|
-Iinclude \
|
|
-MMD \
|
|
-MP
|
|
LDFLAGS = -L$(LFTDIR) \
|
|
-L$(DIST_DIR)
|
|
LDLIBS = -lftstack \
|
|
-lftarray \
|
|
-lft
|
|
SANITIZE = -fsanitize=address,undefined
|
|
DEBUG = -O0 \
|
|
-g3 \
|
|
-ggdb
|
|
DIST_DIR = dist/
|
|
LFTDIR = libft/
|
|
LFT = $(addprefix $(LFTDIR), libft.a)
|
|
|
|
ARRAY_SRC = $(addprefix src/array/, \
|
|
ft_array_life.c \
|
|
func.c \
|
|
func_extra.c \
|
|
)
|
|
LARRAY = $(addprefix $(DIST_DIR), libftarray.a)
|
|
STACK_SRC = $(addprefix src/stack/, \
|
|
attr.c \
|
|
op_common.c \
|
|
op_extra.c \
|
|
stack_int.c \
|
|
stack_life.c \
|
|
)
|
|
LSTACK = $(addprefix $(DIST_DIR), libftstack.a)
|
|
PUSHWAP_SRC = $(addprefix src/pushswap/, \
|
|
exec.c \
|
|
move.c \
|
|
op.c \
|
|
op_push_swap.c \
|
|
presort.c \
|
|
push_swap_ctx.c \
|
|
push_swap_info.c \
|
|
push_swap_info_item.c \
|
|
push_swap_info_update.c \
|
|
sort.c \
|
|
)
|
|
LPUSHSWAP = $(addprefix $(DIST_DIR), libpushswap.a)
|
|
|
|
TEST_STACK_SRC = test/stack.c
|
|
TEST_STACK = $(addprefix $(DIST_DIR), test_stack)
|
|
|
|
TEST_PUSHSWAP_SRC = test/push_swap.c
|
|
TEST_PUSHSWAP = $(addprefix $(DIST_DIR), test_push_swap)
|
|
|
|
TUI_MONITOR_SRC = extra/main.c \
|
|
extra/tui.c
|
|
TUI_MONITOR = $(addprefix $(DIST_DIR), pushdemon)
|
|
|
|
ALL_TEST = $(TEST_STACK) $(TEST_PUSHSWAP)
|
|
ALL_SRC = $(ARRAY_SRC) $(STACK_SRC) $(TEST_STACK_SRC) \
|
|
$(TUI_MONITOR_SRC) $(PUSHWAP_SRC) $(TEST_PUSHSWAP_SRC)
|
|
ALL_OBJ = $(ALL_SRC:.c=.o)
|
|
DEPENDENCIES = $(ALL_SRC:.c=.d)
|
|
|
|
all: $(TUI_MONITOR) test;
|
|
|
|
clean:
|
|
$(MAKE) -C $(LFTDIR) clean
|
|
$(RM) $(ALL_OBJ) $(DEPENDENCIES)
|
|
|
|
fclean: clean
|
|
$(MAKE) -C $(LFTDIR) fclean
|
|
$(RM) -r $(DIST_DIR)
|
|
|
|
debug: CFLAGS += $(DEBUG)
|
|
debug: | fclean all
|
|
|
|
test: $(ALL_TEST)
|
|
|
|
sanitize: CFLAGS += $(DEBUG) $(SANITIZE)
|
|
sanitize: | fclean all
|
|
|
|
$(LFT):
|
|
$(MAKE) -C $(LFTDIR)
|
|
|
|
$(LARRAY): $(ARRAY_SRC:.c=.o)
|
|
mkdir -p $(DIST_DIR)
|
|
$(AR) -rs $@ $^
|
|
|
|
$(LSTACK): $(STACK_SRC:.c=.o)
|
|
mkdir -p $(DIST_DIR)
|
|
$(AR) -rs $@ $^
|
|
|
|
$(LPUSHSWAP): $(PUSHWAP_SRC:.c=.o)
|
|
mkdir -p $(DIST_DIR)
|
|
$(AR) -rs $@ $^
|
|
|
|
$(TEST_STACK): $(TEST_STACK_SRC:.c=.o) $(LSTACK) $(LARRAY) $(LFT)
|
|
mkdir -p $(DIST_DIR)
|
|
$(CC) -o $@ $(TEST_STACK_SRC:.c=.o) $(CFLAGS) $(LDFLAGS) $(LDLIBS)
|
|
|
|
$(TEST_PUSHSWAP): $(TEST_PUSHSWAP_SRC:.c=.o) $(LPUSHSWAP) $(LSTACK) $(LARRAY) $(LFT)
|
|
mkdir -p $(DIST_DIR)
|
|
$(CC) -o $@ $(TEST_PUSHSWAP_SRC:.c=.o) $(CFLAGS) $(LDFLAGS) -lpushswap $(LDLIBS)
|
|
|
|
$(TUI_MONITOR): $(TUI_MONITOR_SRC:.c=.o) $(LPUSHSWAP) $(LSTACK) $(LARRAY) $(LFT)
|
|
mkdir -p $(DIST_DIR)
|
|
$(CC) -o $@ $(TUI_MONITOR_SRC:.c=.o) $(CFLAGS) $(LDFLAGS) -lpushswap $(LDLIBS) $(shell pkg-config --libs ncurses)
|
|
|
|
.PHONY: all clean debug fclean test sanitize;
|
|
-include $(DEPENDENCIES)
|