Skip to content

Commit 58925dc

Browse files
authored
Merge pull request #5 from jakcron/mbedtls-2.16.5r3
Integrate more build system improvements
2 parents e3fb43f + e9e56bb commit 58925dc

File tree

2 files changed

+46
-22
lines changed

2 files changed

+46
-22
lines changed

build/visualstudio/libmbedtls/libmbedtls.vcxproj

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,32 @@
2222
<VCProjectVersion>15.0</VCProjectVersion>
2323
<ProjectGuid>{7A7C66F3-2B5B-4E23-85D8-2A74FEDAD92C}</ProjectGuid>
2424
<RootNamespace>libmbedtls</RootNamespace>
25-
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
25+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
2626
</PropertyGroup>
2727
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
2828
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
2929
<ConfigurationType>StaticLibrary</ConfigurationType>
3030
<UseDebugLibraries>true</UseDebugLibraries>
31-
<PlatformToolset>v141</PlatformToolset>
31+
<PlatformToolset>v142</PlatformToolset>
3232
<CharacterSet>MultiByte</CharacterSet>
3333
</PropertyGroup>
3434
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
3535
<ConfigurationType>StaticLibrary</ConfigurationType>
3636
<UseDebugLibraries>false</UseDebugLibraries>
37-
<PlatformToolset>v141</PlatformToolset>
37+
<PlatformToolset>v142</PlatformToolset>
3838
<WholeProgramOptimization>true</WholeProgramOptimization>
3939
<CharacterSet>MultiByte</CharacterSet>
4040
</PropertyGroup>
4141
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
4242
<ConfigurationType>StaticLibrary</ConfigurationType>
4343
<UseDebugLibraries>true</UseDebugLibraries>
44-
<PlatformToolset>v141</PlatformToolset>
44+
<PlatformToolset>v142</PlatformToolset>
4545
<CharacterSet>MultiByte</CharacterSet>
4646
</PropertyGroup>
4747
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
4848
<ConfigurationType>StaticLibrary</ConfigurationType>
4949
<UseDebugLibraries>false</UseDebugLibraries>
50-
<PlatformToolset>v141</PlatformToolset>
50+
<PlatformToolset>v142</PlatformToolset>
5151
<WholeProgramOptimization>true</WholeProgramOptimization>
5252
<CharacterSet>MultiByte</CharacterSet>
5353
</PropertyGroup>
@@ -77,6 +77,7 @@
7777
<SDLCheck>true</SDLCheck>
7878
<ConformanceMode>true</ConformanceMode>
7979
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\include;</AdditionalIncludeDirectories>
80+
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
8081
</ClCompile>
8182
</ItemDefinitionGroup>
8283
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -86,6 +87,7 @@
8687
<SDLCheck>true</SDLCheck>
8788
<ConformanceMode>true</ConformanceMode>
8889
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\include;</AdditionalIncludeDirectories>
90+
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
8991
</ClCompile>
9092
</ItemDefinitionGroup>
9193
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -97,6 +99,7 @@
9799
<SDLCheck>true</SDLCheck>
98100
<ConformanceMode>true</ConformanceMode>
99101
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\include;</AdditionalIncludeDirectories>
102+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
100103
</ClCompile>
101104
<Link>
102105
<EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -112,6 +115,7 @@
112115
<SDLCheck>true</SDLCheck>
113116
<ConformanceMode>true</ConformanceMode>
114117
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\include;</AdditionalIncludeDirectories>
118+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
115119
</ClCompile>
116120
<Link>
117121
<EnableCOMDATFolding>true</EnableCOMDATFolding>

makefile

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

55
# Project Name
66
PROJECT_NAME = libmbedtls
@@ -13,7 +13,7 @@ PROJECT_INCLUDE_PATH = include
1313
#PROJECT_TESTSRC_PATH = test
1414
#PROJECT_TESTSRC_SUBDIRS = $(PROJECT_TESTSRC_PATH)
1515
PROJECT_BIN_PATH = bin
16-
#PROJECT_DOCS_PATH = docs
16+
#PROJECT_DOCS_PATH = docs
1717
#PROJECT_DOXYFILE_PATH = Doxyfile
1818

1919
# Determine if the root makefile has been established, and if not establish this makefile as the root makefile
@@ -31,23 +31,23 @@ PROJECT_SONAME = $(PROJECT_NAME).so.$(PROJECT_SO_VER_MAJOR)
3131
PROJECT_SO_FILENAME = $(PROJECT_SONAME).$(PROJECT_SO_VER_MINOR).$(PROJECT_SO_VER_PATCH)
3232

3333
# Project Dependencies
34-
PROJECT_DEPEND_LOCAL =
35-
PROJECT_DEPEND_EXTERNAL =
34+
PROJECT_DEPEND =
35+
PROJECT_DEPEND_LOCAL_DIR =
3636

3737
# Generate compiler flags for including project include path
3838
ifneq ($(PROJECT_INCLUDE_PATH),)
3939
INC += -I"$(PROJECT_INCLUDE_PATH)"
4040
endif
4141

4242
# Generate compiler flags for local included dependencies
43-
ifneq ($(PROJECT_DEPEND_LOCAL),)
44-
LIB += $(foreach dep,$(PROJECT_DEPEND_LOCAL), -L"$(ROOT_PROJECT_DEPENDENCY_PATH)/lib$(dep)/bin" -l$(dep))
45-
INC += $(foreach dep,$(PROJECT_DEPEND_LOCAL), -I"$(ROOT_PROJECT_DEPENDENCY_PATH)/lib$(dep)/include")
43+
ifneq ($(PROJECT_DEPEND_LOCAL_DIR),)
44+
LIB += $(foreach dep,$(PROJECT_DEPEND_LOCAL_DIR), -L"$(ROOT_PROJECT_DEPENDENCY_PATH)/$(dep)/bin")
45+
INC += $(foreach dep,$(PROJECT_DEPEND_LOCAL_DIR), -I"$(ROOT_PROJECT_DEPENDENCY_PATH)/$(dep)/include")
4646
endif
4747

4848
# Generate compiler flags for external dependencies
49-
ifneq ($(PROJECT_DEPEND_EXTERNAL),)
50-
LIB += $(foreach dep,$(PROJECT_DEPEND_EXTERNAL), -l$(dep))
49+
ifneq ($(PROJECT_DEPEND),)
50+
LIB += $(foreach dep,$(PROJECT_DEPEND), -l$(dep))
5151
endif
5252

5353
# Detect Platform
@@ -64,12 +64,26 @@ ifeq ($(PROJECT_PLATFORM),)
6464
endif
6565
endif
6666

67+
# Detect Architecture
68+
ifeq ($(PROJECT_PLATFORM_ARCH),)
69+
ifeq ($(PROJECT_PLATFORM), WIN32)
70+
export PROJECT_PLATFORM_ARCH = x86_64
71+
else ifeq ($(PROJECT_PLATFORM), GNU)
72+
export PROJECT_PLATFORM_ARCH = $(shell uname -m)
73+
else ifeq ($(PROJECT_PLATFORM), MACOS)
74+
export PROJECT_PLATFORM_ARCH = $(shell uname -m)
75+
else
76+
export PROJECT_PLATFORM_ARCH = x86_64
77+
endif
78+
endif
79+
6780
# Generate platform specific compiler flags
6881
ifeq ($(PROJECT_PLATFORM), WIN32)
6982
# Windows Flags/Libs
7083
CC = x86_64-w64-mingw32-gcc
7184
CXX = x86_64-w64-mingw32-g++
7285
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
86+
ARCHFLAGS =
7387
INC +=
7488
LIB += -static
7589
ARFLAGS = cr -o
@@ -78,6 +92,7 @@ else ifeq ($(PROJECT_PLATFORM), GNU)
7892
#CC =
7993
#CXX =
8094
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable
95+
ARCHFLAGS =
8196
INC +=
8297
LIB +=
8398
ARFLAGS = cr -o
@@ -86,18 +101,19 @@ else ifeq ($(PROJECT_PLATFORM), MACOS)
86101
#CC =
87102
#CXX =
88103
WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-private-field
104+
ARCHFLAGS = -arch $(PROJECT_PLATFORM_ARCH)
89105
INC +=
90106
LIB +=
91107
ARFLAGS = rc
92108
endif
93109

94110
# Compiler Flags
95-
CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) -fPIC
96-
CFLAGS = -std=c11 $(INC) $(WARNFLAGS) -fPIC
111+
CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC
112+
CFLAGS = -std=c11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC
97113

98114
# Object Files
99-
SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c)))
100-
TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c)))
115+
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+
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)))
101117

102118
# all is the default, user should specify what the default should do
103119
# - 'static_lib' for building static library
@@ -118,6 +134,10 @@ clean: clean_object_files remove_binary_dir
118134
@echo CXX $<
119135
@$(CXX) $(CXXFLAGS) -c $< -o $@
120136

137+
%.o: %.cc
138+
@echo CXX $<
139+
@$(CXX) $(CXXFLAGS) -c $< -o $@
140+
121141
# Binary Directory
122142
.PHONY: create_binary_dir
123143
create_binary_dir:
@@ -145,13 +165,13 @@ shared_lib: $(SRC_OBJ) create_binary_dir
145165
# Build Program
146166
program: $(SRC_OBJ) create_binary_dir
147167
@echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)
148-
@$(CXX) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)"
168+
@$(CXX) $(ARCHFLAGS) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)"
149169

150170
# Build Test Program
151171
test_program: $(TESTSRC_OBJ) $(SRC_OBJ) create_binary_dir
152172
ifneq ($(PROJECT_TESTSRC_PATH),)
153173
@echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test
154-
@$(CXX) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test"
174+
@$(CXX) $(ARCHFLAGS) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test"
155175
endif
156176

157177
# Documentation
@@ -170,8 +190,8 @@ endif
170190
# Dependencies
171191
.PHONY: deps
172192
deps:
173-
@$(foreach lib,$(PROJECT_DEPEND_LOCAL), cd "$(ROOT_PROJECT_DEPENDENCY_PATH)/lib$(lib)" && $(MAKE) static_lib && cd "$(PROJECT_PATH)";)
193+
@$(foreach lib,$(PROJECT_DEPEND_LOCAL_DIR), cd "$(ROOT_PROJECT_DEPENDENCY_PATH)/$(lib)" && $(MAKE) static_lib && cd "$(PROJECT_PATH)";)
174194

175195
.PHONY: clean_deps
176196
clean_deps:
177-
@$(foreach lib,$(PROJECT_DEPEND_LOCAL), cd "$(ROOT_PROJECT_DEPENDENCY_PATH)/lib$(lib)" && $(MAKE) clean && cd "$(PROJECT_PATH)";)
197+
@$(foreach lib,$(PROJECT_DEPEND_LOCAL_DIR), cd "$(ROOT_PROJECT_DEPENDENCY_PATH)/$(lib)" && $(MAKE) clean && cd "$(PROJECT_PATH)";)

0 commit comments

Comments
 (0)