aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-16 00:51:22 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-16 00:51:22 +0100
commitae1412fdc283e442a0869aa7d63778449a7e5cfe (patch)
tree0f5d5ff124129b3f085ce94d3004622c0d041323
parente8a7d07f1c99b5ce6210603d88098580af95fb13 (diff)
downloadlibft-ae1412fdc283e442a0869aa7d63778449a7e5cfe.tar.gz
libft-ae1412fdc283e442a0869aa7d63778449a7e5cfe.tar.bz2
libft-ae1412fdc283e442a0869aa7d63778449a7e5cfe.zip
Features toggle to avoid bloat and unauthorized functions, config file, script to generate a rendu branch
-rw-r--r--Makefile156
-rw-r--r--include/libft.h10
-rw-r--r--libft.conf11
-rw-r--r--pre2019_subject.en.pdfbin1455686 -> 0 bytes
-rw-r--r--scripts/generate_rendu.sh26
-rw-r--r--src/str/ft_atoi_strict.c (renamed from src/str/ft_strict_atoi.c)0
-rw-r--r--subject.pdf (renamed from subject.en.pdf)bin1657956 -> 1657956 bytes
7 files changed, 88 insertions, 115 deletions
diff --git a/Makefile b/Makefile
index 429d029..fbe4ee7 100644
--- a/Makefile
+++ b/Makefile
@@ -13,137 +13,69 @@
LIB = ar rcs
RM = rm -f
-SRC_DIR = src
-OBJ_DIR = build
-INCLUDE_DIR = include
-GET_NEXT_LINE_DIR = get_next_line
-
CC = gcc
CCFLAGS = -I$(INCLUDE_DIR) -Wall -Wextra -Werror
NAME = libft.a
-# SRC_CTYPE_DIR = ctype
-# SRC_CTYPE = ft_isalnum.c \
-# ft_isalpha.c \
-# ft_isascii.c \
-# ft_isdigit.c \
-# ft_isprint.c \
-# ft_tolower.c \
-# ft_toupper.c
-#
-# SRC_IO_DIR = io
-# SRC_IO = ft_asprintf.c \
-# ft_dprintf.c \
-# ft_printf \
-# ft_printf.c \
-# ft_putchar.c \
-# ft_putchar_fd.c \
-# ft_putendl.c \
-# ft_putendl_fd.c \
-# ft_putnbr.c \
-# ft_putnbr_fd.c \
-# ft_putstr.c \
-# ft_putstr_fd.c \
-# ft_snprintf.c \
-# ft_sprintf.c \
-# ft_vasprintf.c \
-# ft_vdprintf.c \
-# ft_vprintf.c \
-# ft_vsnprintf.c \
-# ft_vsprintf.c \
-# get_next_line
-#
-# SRC_LST_DIR = lst
-# SRC_LST = ft_lstadd_back.c \
-# ft_lstadd_front.c \
-# ft_lstclear.c \
-# ft_lstdelone.c \
-# ft_lstiter.c \
-# ft_lstlast.c \
-# ft_lstmap.c \
-# ft_lstnew.c \
-# ft_lstpop_front.c \
-# ft_lstsize.c
-#
-# SRC_MEM_DIR = mem
-# SRC_MEM = ft_bzero.c \
-# ft_calloc.c \
-# ft_memalloc.c \
-# ft_memccpy.c \
-# ft_memchr.c \
-# ft_memcmp.c \
-# ft_memcpy.c \
-# ft_memdel.c \
-# ft_memmove.c \
-# ft_memset.c
-#
-# SRC_STR_DIR = str
-# SRC_STR = ft_atoi.c \
-# ft_itoa.c \
-# ft_split.c \
-# ft_strcat.c \
-# ft_strchr.c \
-# ft_strclr.c \
-# ft_strcmp.c \
-# ft_strcount.c \
-# ft_strcpy.c \
-# ft_strdel.c \
-# ft_strdup.c \
-# ft_strequ.c \
-# ft_striter.c \
-# ft_striteri.c \
-# ft_strjoin.c \
-# ft_strjoin_free.c \
-# ft_strjoin_free_snd.c \
-# ft_strlcat.c \
-# ft_strlcpy.c \
-# ft_strlen.c \
-# ft_strmap.c \
-# ft_strmapi.c \
-# ft_strncat.c \
-# ft_strncmp.c \
-# ft_strncpy.c \
-# ft_strndup.c \
-# ft_strnequ.c \
-# ft_strnew.c \
-# ft_strnstr.c \
-# ft_strrchr.c \
-# ft_strstr.c \
-# ft_strtrim.c \
-# ft_substr.c
-
-SRC = $(shell find $(SRC_DIR) -name *.c)
-
-# SRC = $(addprefix $(SRC_DIR)/,$(SRC_FILES))
-OBJ = $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
+# AVAILABLE_FEATURES = get_next_line ft_printf ft_lst
+CONF_FILE = libft.conf
+
+ifeq ($(wildcard $(CONF_FILE)),)
+$(warning "No configuration file found with name $(CONF_FILE), using default")
+ SRC_DIR = src
+ BUILD_DIR = build
+ INCLUDE_DIR = include
+ FEATURES = get_next_line
+else
+ SRC_DIR = $(shell sed -n 's/SRC_DIR=//p' $(CONF_FILE))
+ BUILD_DIR = $(shell sed -n 's/BUILD_DIR=//p' $(CONF_FILE))
+ INCLUDE_DIR = $(shell sed -n 's/INCLUDE_DIR=//p' $(CONF_FILE))
+ FEATURES = $(shell sed -n 's/FEATURES=//p' $(CONF_FILE))
+endif
+
+ifeq ($(findstring get_next_line,$(FEATURES)),)
+ FIND_ARGS += -not -path "*get_next_line*"
+endif
+ifeq ($(findstring ft_printf,$(FEATURES)),)
+ FIND_ARGS += -not -path "*printf*"
+endif
+ifeq ($(findstring ft_lst,$(FEATURES)),)
+ FIND_ARGS += -not -name "ft_lst*"
+endif
+
+SRC = $(shell find $(SRC_DIR) $(FIND_ARGS) -name *.c)
+
+OBJ = $(SRC:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o)
HEADER_FILES = libft.h get_next_line.h
HEADER = $(addprefix $(INCLUDE_DIR)/,$(HEADER_FILES))
-
-BONUSOBJ = $(BONUSSRC:.c=.o)
-
all: make_build_dirs $(NAME)
make_build_dirs:
- @for dir in $$(find $(SRC_DIR)/* -type d | sed 's_$(SRC_DIR)/_$(OBJ_DIR)/_g'); \
+ @for dir in $$(find $(SRC_DIR)/* $(FIND_ARGS) -type d | \
+ sed 's_$(SRC_DIR)/_$(BUILD_DIR)/_g'); \
do \
- if [ ! -d "$$dir" ]; then mkdir -p $$dir; fi \
+ if [ ! -d "$$dir" ]; then \
+ mkdir -p $$dir; echo "Making build dir: $$dir"; fi \
done
$(NAME): $(OBJ) $(HEADER)
- $(LIB) $(NAME) $(OBJ)
+ @echo "Linking: $@"
+ @$(LIB) $(NAME) $(OBJ)
-$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
- $(CC) $(CCFLAGS) -c -o $@ $<
+$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
+ @echo "Compiling: $@"
+ @$(CC) $(CCFLAGS) -c -o $@ $<
clean:
- $(RM) $(OBJ)
+ @echo "Removing objects"
+ @$(RM) -r $(BUILD_DIR)
+
fclean: clean
- $(RM) $(NAME)
+ @echo "Removing library"
+ @$(RM) $(NAME)
-re:
- @make fclean
- @make all
+re: fclean all
diff --git a/include/libft.h b/include/libft.h
index a7f86af..c2215ed 100644
--- a/include/libft.h
+++ b/include/libft.h
@@ -18,11 +18,16 @@
# include <stdlib.h>
# include <stddef.h>
# include <limits.h>
+
# include <errno.h>
+
+
# include "get_next_line.h"
-# define TRUE 1
-# define FALSE 0
+# ifdef __linux__
+# include <stdio.h>
+# define OPEN_MAX FOPEN_MAX
+# endif
# define MIN(x, y) ((x) < (y) ? (x) : (y))
# define MAX(x, y) ((x) > (y) ? (x) : (y))
@@ -157,5 +162,4 @@ char *ft_itoa(int n);
int ft_strict_atoi(const char *s);
long ft_strtol(const char *s, char **endptr, int base);
-
#endif
diff --git a/libft.conf b/libft.conf
new file mode 100644
index 0000000..a9f3ea7
--- /dev/null
+++ b/libft.conf
@@ -0,0 +1,11 @@
+# Making
+
+SRC_DIR=src
+INCLUDE_DIR=include
+BUILD_DIR=build
+FEATURES=get_next_line ft_lst
+
+
+# Repository
+
+RENDU_IGNORE=subject.pdf README.md scripts build libft.conf
diff --git a/pre2019_subject.en.pdf b/pre2019_subject.en.pdf
deleted file mode 100644
index e5bee09..0000000
--- a/pre2019_subject.en.pdf
+++ /dev/null
Binary files differ
diff --git a/scripts/generate_rendu.sh b/scripts/generate_rendu.sh
new file mode 100644
index 0000000..1b68a97
--- /dev/null
+++ b/scripts/generate_rendu.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+if [ "$(git status --porcelain)" ]
+then
+ echo "Error: Your working directory isn't clean"
+ exit
+fi
+
+BASE_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
+RENDU_BRANCH_NAME="rendu-$BASE_BRANCH_NAME"
+
+if [ -z $(git show-ref --verify --quiet refs/heads/$RENDU_BRANCH_NAME) ]
+then
+ echo "Error: $RENDU_BRANCH_NAME was already generated"
+ exit
+fi
+
+git checkout -b $RENDU_BRANCH_NAME
+RENDU_IGNORE=$(sed -n 's/RENDU_IGNORE=//p')
+make fclean
+rm -f $RENDU_IGNORE
+
+# generate makefile strict src
+
+git add .
+git commit --message "Generated commit: creation of rendu for $BASE_BRANCH_NAME"
diff --git a/src/str/ft_strict_atoi.c b/src/str/ft_atoi_strict.c
index 6156b03..6156b03 100644
--- a/src/str/ft_strict_atoi.c
+++ b/src/str/ft_atoi_strict.c
diff --git a/subject.en.pdf b/subject.pdf
index 67a054c..67a054c 100644
--- a/subject.en.pdf
+++ b/subject.pdf
Binary files differ