Skip to content

Commit 685f2de

Browse files
committed
Update recursive makefile to v9
1 parent bb63001 commit 685f2de

File tree

1 file changed

+12
-21
lines changed

1 file changed

+12
-21
lines changed

makefile

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# C++/C Recursive Project Makefile
22
# (c) Jack
3-
# Version 6 (20211110)
3+
# Version 9 (20231231)
44

55
# Project Name
66
PROJECT_NAME = libmbedtls
@@ -23,13 +23,6 @@ ifeq ($(ROOT_PROJECT_NAME),)
2323
export ROOT_PROJECT_DEPENDENCY_PATH = $(ROOT_PROJECT_PATH)/deps
2424
endif
2525

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-
3326
# Project Dependencies
3427
PROJECT_DEPEND =
3528
PROJECT_DEPEND_LOCAL_DIR =
@@ -82,45 +75,47 @@ ifeq ($(PROJECT_PLATFORM), WIN32)
8275
# Windows Flags/Libs
8376
CC = x86_64-w64-mingw32-gcc
8477
CXX = x86_64-w64-mingw32-g++
78+
DEFINEFLAGS =
8579
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
8680
ARCHFLAGS =
8781
INC +=
8882
LIB += -static
89-
ARFLAGS = cr -o
83+
ARFLAGS = cr
9084
else ifeq ($(PROJECT_PLATFORM), GNU)
9185
# GNU/Linux Flags/Libs
9286
#CC =
9387
#CXX =
88+
DEFINEFLAGS =
9489
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
9590
ARCHFLAGS =
9691
INC +=
9792
LIB +=
98-
ARFLAGS = cr -o
93+
ARFLAGS = cr
9994
else ifeq ($(PROJECT_PLATFORM), MACOS)
10095
# MacOS Flags/Libs
10196
#CC =
10297
#CXX =
98+
DEFINEFLAGS =
10399
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-private-field
104100
ARCHFLAGS = -arch $(PROJECT_PLATFORM_ARCH)
105101
INC +=
106102
LIB +=
107-
ARFLAGS = rc
103+
ARFLAGS = rc
108104
endif
109105

110106
# 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
113109

114110
# Object Files
115111
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)))
116112
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)))
117113

118114
# 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
122117
# - '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
124119
all: static_lib
125120

126121
clean: clean_object_files remove_binary_dir
@@ -158,10 +153,6 @@ static_lib: $(SRC_OBJ) create_binary_dir
158153
@echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME).a
159154
@ar $(ARFLAGS) "$(PROJECT_BIN_PATH)/$(PROJECT_NAME).a" $(SRC_OBJ)
160155

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-
165156
# Build Program
166157
program: $(SRC_OBJ) create_binary_dir
167158
@echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)

0 commit comments

Comments
 (0)