Files
ft_printf/libftprintf/Makefile

171 lines
4.3 KiB
Makefile
Raw Normal View History

2022-04-13 08:01:46 +02:00
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: gbaconni@student.42lausanne.ch +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/01/18 15:11:16 by gbaconni #+# #+# #
2022-04-29 09:35:15 +02:00
# Updated: 2022/04/29 09:33:55 by gbaconni ### ########.fr #
2022-04-13 08:01:46 +02:00
# #
# **************************************************************************** #
#
# make libftprintf.a
# make all
# make clean
# make fclean
# make re
# make
#
NAME = libftprintf.a
LIB = libftprintf.so
LIBFT = libft
LFLAGS = -L.
SRC = \
$(LIBFT)/ft_memset.c \
$(LIBFT)/ft_bzero.c \
$(LIBFT)/ft_calloc.c \
$(LIBFT)/ft_strlen.c \
$(LIBFT)/ft_strchr.c \
$(LIBFT)/ft_isdigit.c \
2022-04-13 08:01:46 +02:00
$(LIBFT)/ft_itoa.c \
ft_eoflags.c \
ft_skipchars.c \
ft_strrev.c \
ft_ltoa_base.c \
ft_putchar.c \
ft_puts.c \
2022-04-13 08:01:46 +02:00
ft_vprintf_char.c \
ft_vprintf_string.c \
ft_vprintf_pointer.c \
ft_vprintf_decimal.c \
ft_vprintf_hexadecimal.c \
ft_vprintf_percent.c \
ft_vprintf_escape.c \
2022-04-13 08:01:46 +02:00
ft_vprintf_other.c \
ft_vprintf.c \
ft_printf.c
2022-04-25 13:19:42 +02:00
SRC_BONUS = \
ft_vprintf_flags_bonus.c
2022-04-13 08:01:46 +02:00
OBJ = ${SRC:.c=.o}
OBJ_BONUS = ${SRC_BONUS:.c=.o}
INCLUDE = -I.
HDR = libftprintf.h
CC = gcc
CFLAGS = -Wall -Wextra -Werror
ifeq ($(FAST), 1)
CFLAGS += -pipe -O3 -ffast-math -fomit-frame-pointer -funroll-loops
#CFLAGS += -pipe -Ofast -ffast-math -funroll-loops -fomit-frame-pointer
2022-04-13 08:01:46 +02:00
endif
ifeq ($(DEBUG), 1)
CFLAGS += -g -O0 -fsanitize=address -fsanitize=undefined -fsanitize=signed-integer-overflow
endif
VALGRIND = valgrind
VALGRINDFLAGS = --quiet --leak-check=full --show-leak-kinds=all
ifeq ($(LEAK), 1)
2022-04-26 19:23:00 +02:00
CFLAGS += -g -O0
PREFIX += $(VALGRIND) $(VALGRINDFLAGS)
2022-04-13 08:01:46 +02:00
endif
AR = ar
ARFLAGS = -rcs
RM = rm
RMFLAGS = -vf
VALGRIND = valgrind
VALGRINDFLAGS = --quiet --leak-check=full --show-leak-kinds=all
NORMINETTE = norminette
NORMINETTEFLAGS = -o
MAKE = make
all: $(NAME)
$(NAME): $(OBJ)
$(AR) $(ARFLAGS) $@ $^
%.o: %.c
$(CC) $(CFLAGS) $(INCLUDE) $< -c -o $@
clean:
$(RM) $(RMFLAGS) $(OBJ) $(OBJ_BONUS)
@$(RM) $(RMFLAGS) $(LIB) || true
fclean: clean
$(RM) $(RMFLAGS) $(NAME)
re: fclean all
bonus: $(OBJ_BONUS)
$(AR) $(ARFLAGS) $(NAME) $(OBJ_BONUS)
rebonus: fclean bonus
so: $(OBJ) $(OBJ_BONUS)
@$(CC) $(CFLAGS) -shared -fPIC -o $(LIB) $(OBJ) $(OBJ_BONUS)
check:
@$(NORMINETTE) $(NORMINETTEFLAGS) $(HDR) $(SRC) ${SRC_BONUS} 2>&1 | grep -v '\.[ch]: OK!' || true
leak:
@$(MAKE) re LEAK=1
2022-04-13 08:01:46 +02:00
debug:
@$(MAKE) re DEBUG=1
fast:
@$(MAKE) re FAST=1
func:
@echo "external functions:"
@nm -o *.o | grep ' U _' | grep -v ' U _ft' || true
@echo ""
@echo "allowed functions:"
@nm -o *.o | grep ' U _' | grep -e malloc -e free -e write -e va_start -e va_arg -e va_copy -e va_end || true
@echo ""
@echo "forbidden functions:"
@nm -o *.o | grep ' U _' | grep -v ' U _ft' | grep -v -e malloc -e free -e write -e va_start -e va_arg -e va_copy -e va_end || true
@echo ""
ft:
@echo "objects:"
@ar -t $(NAME) | grep '\.o$$'
@echo ""
@echo "functions:"
@nm $(NAME) | grep T | grep -o 'ft_.*' | sort -u
2022-04-26 17:53:39 +02:00
watch:
2022-04-26 19:23:00 +02:00
@read -p "cmd: " cmd; while :; do clear; date "+%F %T (every 2.0s)"; echo; sh -c "$${cmd} 2>&1" | tail -n 20 || true; sleep 2; done
2022-04-26 17:53:39 +02:00
2022-04-24 11:42:11 +02:00
update: sync
sync: online pull
@git ls-files --others --exclude-standard | xargs diff -Naur '' | less -F
@git status | grep -q 'nothing to commit' || (git diff; read -p "Comment: " comment; git add -A; git commit -am "$${comment-$$(date '+%F %T')}"; git push)
online:
@dig +short vogsphere.42lausanne.ch A | grep -qE '(185\.25\.195\.180|10\.51\.1\.5)' || echo 'vogsphere.42lausanne.ch unresolvable'
2022-04-29 09:35:15 +02:00
@nc -vzw3 vogsphere.42lausanne.ch 443 >/dev/null 2>&1 || echo 'vogsphere.42lausanne.ch unreachable'
2022-04-24 11:42:11 +02:00
pull: config
@git pull
2022-04-25 22:40:45 +02:00
status:
@git status
config:
@git config user.name "gbaconni"
@git config user.email "gbaconni@student.42lausanne.ch"
@git config pull.rebase false