-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
111 lines (89 loc) · 2.87 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
##
## EPITECH PROJECT, 2020
## Makefile
## File description:
## Makefile
##
###############################################################################
# Make includes
include ./makeinclude/commands.mk
###############################################################################
###############################################################################
# Project Configuration
PROJECT := Mini LibC
NAME := asm
BINARY := lib$(NAME).so
# Use Clang (set to 1 tu use clang, 0 to use gcc)
USE_CLANG := 0
# Compilation Process (set to 1 to add strict flags like -Werror ... )
PRODUCTION := 0
# If Compilation variables should be print when launching rules
PRINT_VARS := 1
PRINT_OBJ := 1
###############################################################################
###############################################################################
# Project Architecture
PROJECT_DIR := .
INCLUDE_DIR := include
SRC_DIR := src
LIBS_DIR := lib
TESTS_DIR := tests
###############################################################################
###############################################################################
# Sources/Includes/Test Files Required for Compilation
INCLUDE_DIRS = \
include \
include/essentials \
MAIN_FILE := main.c
SOURCES := \
strlen.asm \
strchr.asm \
memset.asm \
memcpy.asm \
memmove.asm \
strcmp.asm \
strncmp.asm \
rindex.asm \
strstr.asm \
strcasecmp.asm \
strpbrk.asm \
strcspn.asm \
TESTS_FILES := \
test_strlen.c \
test_strchr.c \
test_memset.c \
test_memcpy.c \
test_memmove.c \
test_strcmp.c \
test_strncmp.c \
test_rindex.c \
test_strstr.c \
test_strcasecmp.c \
test_strpbrk.c \
test_strcspn.c \
LIBS := \
CFLAGS := -Wall -Wextra
DEBUG_FLAGS :=
CPPFLAGS +=
LDLIBS +=
#LDFLAGS += -Llib
LDSHARED += -shared -fPIC
ASFLAGS += -felf64
###############################################################################
# Makefile includes Compilation, Tests and Print once Project Configured
include ./makeinclude/compilation.mk
include ./makeinclude/tests.mk
include ./makeinclude/print.mk
###############################################################################
.DEFAULT: all
all: $(NAME)
###############################################################################
# Available rules:
# - executable (below)
# - StaticLib / SharedLib (makeinclude/compilation.mk)
# - debug / gdb (makeinclude/compilation.mk)
$(NAME): SharedLib
###############################################################################
executable: LIBS_MAKE print_header $(PROJECT_OBJECTS) print_project_vars
@$(CC) -o $(BINARY) $(PROJECT_OBJECTS) $(LDLIBS) $(LDFLAGS) $(DEBUG_FLAGS)
@-$(PRINT_LINE)