aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-22 12:02:28 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-22 12:25:58 +0100
commit2d515c104c9e8bc3d2cc9d27c44fd3feb8945699 (patch)
tree584974ddaa048d8d791bc97020054a9c98df872c
parent9493ebbb311781fc3f7b889eb63b7d209cfca44d (diff)
downloadLibft-master.tar.gz
Libft-master.zip
Add NOMALLOC=1 flag to build library without malloc/free functionsHEADmaster
Split SRCS into SRCS_BASE (allocation-free) and SRCS_ALLOC (malloc/free-dependent). When NOMALLOC=1 is set, only SRCS_BASE is compiled, producing a library with no heap allocation dependencies.
-rw-r--r--Makefile34
-rw-r--r--README.md6
2 files changed, 25 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index 38628dd..e70510d 100644
--- a/Makefile
+++ b/Makefile
@@ -8,19 +8,27 @@ LIBDIR = lib
NAME = $(LIBDIR)/libft.a
-SRCS = ft_isalpha.c ft_isdigit.c ft_isalnum.c ft_isascii.c ft_isprint.c \
- ft_strlen.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c \
- ft_memchr.c ft_memcmp.c ft_strncmp.c \
- ft_strlcpy.c ft_strlcat.c \
- ft_strchr.c ft_strrchr.c ft_strnstr.c ft_atoi.c \
- ft_calloc.c ft_strdup.c \
- ft_toupper.c ft_tolower.c \
- ft_substr.c ft_strjoin.c ft_strtrim.c ft_split.c ft_itoa.c \
- ft_strmapi.c ft_striteri.c \
- ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c \
- ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \
- ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c \
- ft_lstmap.c
+SRCS_BASE = ft_isalpha.c ft_isdigit.c ft_isalnum.c ft_isascii.c ft_isprint.c \
+ ft_strlen.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c \
+ ft_memchr.c ft_memcmp.c ft_strncmp.c \
+ ft_strlcpy.c ft_strlcat.c \
+ ft_strchr.c ft_strrchr.c ft_strnstr.c ft_atoi.c \
+ ft_toupper.c ft_tolower.c \
+ ft_striteri.c \
+ ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c \
+ ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \
+ ft_lstadd_back.c ft_lstiter.c
+
+SRCS_ALLOC = ft_calloc.c ft_strdup.c \
+ ft_substr.c ft_strjoin.c ft_strtrim.c ft_split.c ft_itoa.c \
+ ft_strmapi.c \
+ ft_lstnew.c ft_lstdelone.c ft_lstclear.c ft_lstmap.c
+
+ifdef NOMALLOC
+SRCS = $(SRCS_BASE)
+else
+SRCS = $(SRCS_BASE) $(SRCS_ALLOC)
+endif
OBJS = $(SRCS:%.c=$(OBJDIR)/%.o)
diff --git a/README.md b/README.md
index 03eaa18..ab8f39d 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,8 @@ All functions are prefixed with `ft_` and exposed through a single header,
### Building the library
```sh
-make # compiles lib/libft.a
+make # compiles lib/libft.a (all functions)
+make NOMALLOC=1 # compiles lib/libft.a without malloc/free-dependent functions
```
### Using the library in your project
@@ -55,7 +56,8 @@ make # compiles lib/libft.a
| Target | Description |
|-------------------------|------------------------------------------------------|
-| `make` / `make all` | Build `lib/libft.a` |
+| `make` / `make all` | Build `lib/libft.a` (all functions) |
+| `make NOMALLOC=1` | Build without malloc/free-dependent functions |
| `make clean` | Remove object files |
| `make fclean` | Remove object files and the library archive |
| `make re` | Full rebuild (`fclean` + `all`) |