1
1
# C++/C Recursive Project Makefile
2
2
# (c) Jack
3
- # Version 6 (20211110 )
3
+ # Version 9 (20231231 )
4
4
5
5
# Project Name
6
6
PROJECT_NAME = libmbedtls
@@ -23,13 +23,6 @@ ifeq ($(ROOT_PROJECT_NAME),)
23
23
export ROOT_PROJECT_DEPENDENCY_PATH = $(ROOT_PROJECT_PATH)/deps
24
24
endif
25
25
26
- # Shared Library Definitions
27
- PROJECT_SO_VER_MAJOR = 0
28
- PROJECT_SO_VER_MINOR = 2
29
- PROJECT_SO_VER_PATCH = 0
30
- PROJECT_SONAME = $(PROJECT_NAME ) .so.$(PROJECT_SO_VER_MAJOR )
31
- PROJECT_SO_FILENAME = $(PROJECT_SONAME ) .$(PROJECT_SO_VER_MINOR ) .$(PROJECT_SO_VER_PATCH )
32
-
33
26
# Project Dependencies
34
27
PROJECT_DEPEND =
35
28
PROJECT_DEPEND_LOCAL_DIR =
@@ -82,45 +75,47 @@ ifeq ($(PROJECT_PLATFORM), WIN32)
82
75
# Windows Flags/Libs
83
76
CC = x86_64-w64-mingw32-gcc
84
77
CXX = x86_64-w64-mingw32-g++
78
+ DEFINEFLAGS =
85
79
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
86
80
ARCHFLAGS =
87
81
INC +=
88
82
LIB += -static
89
- ARFLAGS = cr -o
83
+ ARFLAGS = cr
90
84
else ifeq ($(PROJECT_PLATFORM), GNU)
91
85
# GNU/Linux Flags/Libs
92
86
# CC =
93
87
# CXX =
88
+ DEFINEFLAGS =
94
89
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
95
90
ARCHFLAGS =
96
91
INC +=
97
92
LIB +=
98
- ARFLAGS = cr -o
93
+ ARFLAGS = cr
99
94
else ifeq ($(PROJECT_PLATFORM), MACOS)
100
95
# MacOS Flags/Libs
101
96
# CC =
102
97
# CXX =
98
+ DEFINEFLAGS =
103
99
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-private-field
104
100
ARCHFLAGS = -arch $(PROJECT_PLATFORM_ARCH)
105
101
INC +=
106
102
LIB +=
107
- ARFLAGS = rc
103
+ ARFLAGS = rc
108
104
endif
109
105
110
106
# Compiler Flags
111
- CXXFLAGS = -std=c++11 $(INC ) $(WARNFLAGS ) $(ARCHFLAGS ) -fPIC
112
- CFLAGS = -std=c11 $(INC ) $(WARNFLAGS ) $(ARCHFLAGS ) -fPIC
107
+ CXXFLAGS = -std=c++11 $(INC ) $(DEFINEFLAGS ) $( WARNFLAGS ) $(ARCHFLAGS ) -fPIC
108
+ CFLAGS = -std=c11 $(INC ) $(DEFINEFLAGS ) $( WARNFLAGS ) $(ARCHFLAGS ) -fPIC
113
109
114
110
# Object Files
115
111
SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS ) ,$(subst .cpp,.o,$(wildcard $(dir ) /* .cpp) ) ) $(foreach dir,$(PROJECT_SRC_SUBDIRS ) ,$(subst .cc,.o,$(wildcard $(dir ) /* .cc) ) ) $(foreach dir,$(PROJECT_SRC_SUBDIRS ) ,$(subst .c,.o,$(wildcard $(dir ) /* .c) ) )
116
112
TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS ) ,$(subst .cpp,.o,$(wildcard $(dir ) /* .cpp) ) ) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS ) ,$(subst .cc,.o,$(wildcard $(dir ) /* .cc) ) ) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS ) ,$(subst .c,.o,$(wildcard $(dir ) /* .c) ) )
117
113
118
114
# all is the default, user should specify what the default should do
119
- # - 'static_lib' for building static library
120
- # - 'shared_lib' for building shared library
121
- # - 'program' for building the program
115
+ # - 'static_lib' for building source as a static library
116
+ # - 'program' for building source as executable program
122
117
# - 'test_program' for building the test program
123
- # These can typically be used together however *_lib and program should not be used together
118
+ # test_program can be used with program or static_lib, but program and static_lib cannot be used together
124
119
all : static_lib
125
120
126
121
clean : clean_object_files remove_binary_dir
@@ -158,10 +153,6 @@ static_lib: $(SRC_OBJ) create_binary_dir
158
153
@echo LINK $(PROJECT_BIN_PATH ) /$(PROJECT_NAME ) .a
159
154
@ar $(ARFLAGS ) " $( PROJECT_BIN_PATH) /$( PROJECT_NAME) .a" $(SRC_OBJ )
160
155
161
- shared_lib : $(SRC_OBJ ) create_binary_dir
162
- @echo LINK $(PROJECT_BIN_PATH ) /$(PROJECT_SO_FILENAME )
163
- @gcc -shared -Wl,-soname,$(PROJECT_SONAME ) -o " $( PROJECT_BIN_PATH) /$( PROJECT_SO_FILENAME) " $(SRC_OBJ )
164
-
165
156
# Build Program
166
157
program : $(SRC_OBJ ) create_binary_dir
167
158
@echo LINK $(PROJECT_BIN_PATH ) /$(PROJECT_NAME )
0 commit comments