From b71b921364daeba5492737930d4685e8a20a67bf Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 31 Jan 2017 16:36:24 +0100 Subject: [PATCH] new makefile and update script for libft, thanks wescande@42 :D --- libftasm/Makefile | 207 ++++++++++++++++++++++++++++++++---- libftasm/update_makefile.sh | 17 +++ 2 files changed, 205 insertions(+), 19 deletions(-) create mode 100755 libftasm/update_makefile.sh diff --git a/libftasm/Makefile b/libftasm/Makefile index 4e8fdb23..935d6bd5 100644 --- a/libftasm/Makefile +++ b/libftasm/Makefile @@ -2,38 +2,207 @@ NAME = libft.a CC = gcc AR = ar -rc -D_SRC = src -D_OBJ = obj - -O_FLAGS = -W_FLAGS = -Wall -Wextra -Werror -DEBUG = MKDIR = mkdir -p RM = /bin/rm -rf -D_INC = includes +FLAGS = -Wall -Wextra -Werror +D_FLAGS = -g -F_SRC := $(shell find $(D_SRC) -type f -regex ".*\.c$$") -F_OBJ := $(addprefix $(D_OBJ)/, $(notdir $(F_SRC:.c=.o))) +LEN_NAME = `printf "%s" $(NAME) |wc -c` +DELTA = $$(echo "$$(tput cols)-24-$(LEN_NAME)"|bc) -.PHONY: all clean fclean re +SRC_DIR = src/ +INC_DIR = includes/ +OBJ_DIR = objs/ + +SRC_BASE = \ +btree/btree_apply_by_level.c\ +btree/btree_apply_infix.c\ +btree/btree_apply_prefix.c\ +btree/btree_apply_suffix.c\ +btree/btree_create_node.c\ +btree/btree_del.c\ +btree/btree_delone.c\ +btree/btree_insert_data.c\ +btree/btree_level_count.c\ +btree/btree_print.c\ +btree/btree_search_item.c\ +char/ft_isalnum.c\ +char/ft_isalpha.c\ +char/ft_isascii.c\ +char/ft_isdigit.c\ +char/ft_isprint.c\ +char/ft_tolower.c\ +char/ft_toupper.c\ +color/ft_color_mk.c\ +color/ft_color_mkif.c\ +color/ft_color_reset.c\ +color/ft_color_set.c\ +dlst/ft_dlstadd_after.c\ +dlst/ft_dlstadd_before.c\ +dlst/ft_dlstdel.c\ +dlst/ft_dlstdelone.c\ +dlst/ft_dlstlast.c\ +dlst/ft_dlstnew.c\ +dlst/ft_dlstrtostr.c\ +dlst/ft_dlstsize.c\ +env/ft_getenv.c\ +ft_printf/ft_conversion.c\ +ft_printf/ft_fmt_simplify.c\ +ft_printf/ft_fmt_validate_conv.c\ +ft_printf/ft_fmt_validate_flags.c\ +ft_printf/ft_fmt_validate_mod.c\ +ft_printf/ft_printf.c\ +ft_printf/ft_printf_color.c\ +ft_printf/ft_printf_parse.c\ +ft_printf/ft_transform.c\ +ft_printf/lib_fmt.c\ +ft_printf/lib_fmt_error.c\ +ft_printf/lib_pad.c\ +ft_printf/lib_pad_sharp.c\ +get_next_line/get_next_line.c\ +lst/ft_id.c\ +lst/ft_lst_at.c\ +lst/ft_lst_bfree.c\ +lst/ft_lst_cfree.c\ +lst/ft_lst_delif.c\ +lst/ft_lst_delsub.c\ +lst/ft_lst_filter.c\ +lst/ft_lst_find.c\ +lst/ft_lst_merge.c\ +lst/ft_lst_order_delsub.c\ +lst/ft_lst_print.c\ +lst/ft_lst_print2.c\ +lst/ft_lst_removeif.c\ +lst/ft_lst_reverse.c\ +lst/ft_lst_size.c\ +lst/ft_lst_sorted_insert.c\ +lst/ft_lst_sorted_merge.c\ +lst/ft_lstadd.c\ +lst/ft_lstdel.c\ +lst/ft_lstdelone.c\ +lst/ft_lsteadd.c\ +lst/ft_lstiter.c\ +lst/ft_lstlast.c\ +lst/ft_lstmap.c\ +lst/ft_lstnadd.c\ +lst/ft_lstnew.c\ +lst/ft_lstnew_range.c\ +lst/ft_lstpop.c\ +lst/ft_lstsort.c\ +math/ft_addrcmp.c\ +math/ft_ilen.c\ +math/ft_ilen_base.c\ +math/ft_itoa.c\ +math/ft_itoa_base.c\ +math/ft_lllen.c\ +math/ft_lllen_base.c\ +math/ft_lltoa_base.c\ +math/ft_uilen.c\ +math/ft_uitoa_base.c\ +math/ft_ulltoa_base.c\ +mem/ft_bzero.c\ +mem/ft_memalloc.c\ +mem/ft_memccpy.c\ +mem/ft_memchr.c\ +mem/ft_memcmp.c\ +mem/ft_memcpy.c\ +mem/ft_memdel.c\ +mem/ft_memmove.c\ +mem/ft_memset.c\ +mem/ft_realloc.c\ +misc/ft_debug.c\ +path/ft_path_notdir.c\ +printing/ft_putaddr.c\ +printing/ft_putchar.c\ +printing/ft_putchar_fd.c\ +printing/ft_putendl.c\ +printing/ft_putendl_fd.c\ +printing/ft_putnbr.c\ +printing/ft_putnbr_fd.c\ +printing/ft_putstr.c\ +printing/ft_putstr_fd.c\ +sstr/ft_sstradd.c\ +sstr/ft_sstrcat.c\ +sstr/ft_sstrdel.c\ +sstr/ft_sstrdup.c\ +sstr/ft_sstrfree.c\ +sstr/ft_sstrprint.c\ +sstr/ft_sstrprint_fd.c\ +sstr/ft_sstrsort.c\ +str/ft_atoi.c\ +str/ft_convert_base.c\ +str/ft_split_whitespaces.c\ +str/ft_str3join.c\ +str/ft_strappend.c\ +str/ft_strbetween.c\ +str/ft_strcat.c\ +str/ft_strcatf.c\ +str/ft_strchr.c\ +str/ft_strclr.c\ +str/ft_strcmp.c\ +str/ft_strcpy.c\ +str/ft_strcut.c\ +str/ft_strdel.c\ +str/ft_strdup.c\ +str/ft_strequ.c\ +str/ft_strinsert.c\ +str/ft_striter.c\ +str/ft_striteri.c\ +str/ft_strjoin.c\ +str/ft_strlcat.c\ +str/ft_strlen.c\ +str/ft_strmap.c\ +str/ft_strmapi.c\ +str/ft_strncat.c\ +str/ft_strncmp.c\ +str/ft_strncpy.c\ +str/ft_strnequ.c\ +str/ft_strnew.c\ +str/ft_strnstr.c\ +str/ft_strrchr.c\ +str/ft_strreplace.c\ +str/ft_strrev.c\ +str/ft_strsplit.c\ +str/ft_strstr.c\ +str/ft_strsub.c\ +str/ft_strtrim.c\ +time/ft_mytime_free.c\ +time/ft_mytime_get.c\ +time/ft_time_isrecent.c\ +xattr/ft_xattr_count.c\ +xattr/ft_xattr_print.c + +SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) +OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) all: $(NAME) -$(D_OBJ)/%.o: $(D_SRC)/*/%.c - @$(MKDIR) $(D_OBJ) - @$(CC) -I$(D_INC) $(W_FLAGS) -c $< -o $@ $(DEBUG) - @echo "(libft) Compiling "$<"..." +$(OBJ_DIR)%.o: $(SRC_DIR)%.c | $(OBJ_DIR) + @$(MKDIR) $(OBJ_DIR) + @$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\ + -I $(INC_DIR) + @printf "\r\033[38;5;11m⌛ MAKE %s plz wait : %*s\033[0m\033[K" $(NAME) $(DELTA) "$@" -$(NAME): $(F_OBJ) - @$(AR) $(NAME) $(F_OBJ) - @echo "(libft) Linking "$@"..." +$(OBJ_DIR): + @$(MKDIR) $(OBJ_DIR) + @$(MKDIR) $(dir $(OBJS)) + +$(NAME): $(OBJ_DIR) $(OBJS) + @$(AR) $(NAME) $(OBJS) @ranlib $(NAME) + @echo "\r\033[48;5;15;38;5;25m✅ MAKE $(NAME)\033[0m\033[K" clean: - $(RM) $(D_OBJ) + @$(RM) $(OBJ_DIR) + @echo "\r\033[38;5;202m✖ clean $(NAME).\033[0m\033[K" fclean: clean - $(RM) $(NAME) + @$(RM) $(NAME) + @echo "\r\033[38;5;196m❌ fclean $(NAME).\033[0m\033[K" re: fclean all + +.PHONY: all clean fclean re + +-include $(OBJS:.o=.d) diff --git a/libftasm/update_makefile.sh b/libftasm/update_makefile.sh new file mode 100755 index 00000000..a1b3228d --- /dev/null +++ b/libftasm/update_makefile.sh @@ -0,0 +1,17 @@ +MYPATH=$(pwd) +CUR_MAKEFILE=$MYPATH/Makefile +if [ -e $CUR_MAKEFILE ] +then + echo "regenerate Makefile" + sed "`grep -n 'SRC_BASE =' $CUR_MAKEFILE | sed 's/:.*//'`, \$d" $CUR_MAKEFILE > NEWMAKEFILE + grep 'SRC_BASE =' $CUR_MAKEFILE >> NEWMAKEFILE + expr "$(find ./src | grep "\.c" | sed -e 's/src\///' -e 's/\.\///' -e 's/$/\\/')" : "\(.*\).$" >> NEWMAKEFILE + echo "" >> NEWMAKEFILE + grep 'SRCS =' $CUR_MAKEFILE >> NEWMAKEFILE + sed "1, `grep -n 'SRCS =' $CUR_MAKEFILE | sed 's/:.*//'`d" $CUR_MAKEFILE >> NEWMAKEFILE + mv $CUR_MAKEFILE ~/Documents/.OLDMakefile + mv NEWMAKEFILE $CUR_MAKEFILE + echo "Makefile done (copy still alive in ~/Documents/.OLDMakefile)" +else + echo "Makefile not found." +fi