54 lines
1.3 KiB
Makefile
54 lines
1.3 KiB
Makefile
# -- Project Configuration --
|
|
|
|
# Project Meta Settings
|
|
NAME = ft_ping
|
|
RELEASE_TYPE = Release
|
|
CURRENT_DIR = ${CURDIR}
|
|
|
|
# Project Build Output Settings
|
|
BUILD_DIR = build
|
|
INSTALL_DIR = ${CURRENT_DIR}
|
|
|
|
# Project Build Settings
|
|
GENERATOR_TYPE = Ninja
|
|
WORKERS = 4
|
|
|
|
# Project C Settings
|
|
CFLAGS = -Wall -Wextra -Werror
|
|
C_SRCS = srcs/main.c
|
|
INCLUDE_DIRS = includes
|
|
INCLUDE_SRCS = includes/main.h
|
|
|
|
# Project Subdirectory Settings
|
|
SUBDIRECTORIES =
|
|
|
|
# -- Make Recipes --
|
|
# DO NOT TOUCH BELOW UNLESS YOU KNOW WHAT YOU ARE DOING :)
|
|
all: $(BUILD_DIR)/$(NAME)
|
|
|
|
install: $(NAME)
|
|
|
|
re: fclean all
|
|
|
|
$(BUILD_DIR): Makefile CMakeLists.txt $(C_SRCS) $(INCLUDES) $(SUBDIRECTORIES)
|
|
@MAKE_NAME="$(NAME)" MAKE_C_SRCS="$(C_SRCS)" MAKE_CFLAGS="$(CFLAGS)" MAKE_INCLUDE_DIRS="$(INCLUDE_DIRS)" \
|
|
MAKE_INCLUDE_SRCS="$(INCLUDE_SRCS)" MAKE_INSTALL_DIR="$(INSTALL_DIR)" MAKE_NAME="$(NAME)" \
|
|
MAKE_SUBDIRECTORIES="$(SUBDIRECTORIES)" \
|
|
cmake -G "$(GENERATOR_TYPE)" -DCMAKE_BUILD_TYPE=$(RELEASE_TYPE) -S . -B $(BUILD_DIR)
|
|
|
|
$(BUILD_DIR)/$(NAME): $(BUILD_DIR)
|
|
@cmake --build $(BUILD_DIR) -- -j $(WORKERS)
|
|
|
|
$(NAME): $(BUILD_DIR)/$(NAME)
|
|
@sudo cmake --build $(BUILD_DIR) --target install --config $(RELEASE_TYPE)
|
|
|
|
fclean:
|
|
@rm -rf $(NAME)
|
|
@rm -rf $(BUILD_DIR)
|
|
|
|
clean:
|
|
@cmake --build $(BUILD_DIR) -- clean
|
|
|
|
|
|
.PHONY: all re fclean clean
|