36 lines
619 B
Makefile
36 lines
619 B
Makefile
CC = gcc
|
|
CFLAGS = -Wall -Wextra -Werror
|
|
|
|
NAME = zzsh
|
|
SRC_DIR = src
|
|
OBJ_DIR = obj
|
|
LIB_DIR = lib
|
|
SOURCES = $(shell find $(SRC_DIR) -type f -name '*.c')
|
|
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SOURCES))
|
|
LIBRARIES = $(shell find $(LIB_DIR) -maxdepth 1 -mindepth 1 -type d)
|
|
DEPS = $(OBJECTS:.o=.d)
|
|
|
|
all: $(NAME)
|
|
|
|
$(LIBRARIES):
|
|
@echo Create $@
|
|
@$(MAKE) -C $@
|
|
|
|
$(NAME): $(OBJECTS)
|
|
$(CC) $(OBJECTS) -o $(NAME)
|
|
|
|
-include $(DEPS)
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
|
@mkdir -p $(@D)
|
|
@echo Compiling $< -> $@
|
|
@$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -rf $(OBJ_DIR)
|
|
|
|
fclean: clean
|
|
rm -f $(NAME)
|
|
|
|
re: fclean $(NAME)
|