Skip to content

Commit 3a8fc68

Browse files
rh101minggo
authored andcommitted
Allow overriding the game engine external libraries with ones provided by the game. (#358)
1 parent 49f7dae commit 3a8fc68

File tree

1 file changed

+118
-52
lines changed

1 file changed

+118
-52
lines changed

CMakeLists.txt

Lines changed: 118 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,108 @@
11
cmake_minimum_required(VERSION 3.6)
22
project(external)
33

4-
add_library(external empty.cpp)
4+
option(BUILD_EXT_BOX2D "Build with internal Box2D support" ON)
5+
option(BUILD_EXT_CHIPMUNK "Build with internal chipmunk support" ON)
6+
option(BUILD_EXT_FREETYPE2 "Build with internal freetype2 support" ON)
7+
option(BUILD_EXT_RECAST "Build with internal recast support" ON)
8+
option(BUILD_EXT_BULLET "Build with internal bullet support" ON)
9+
option(BUILD_EXT_JPEG "Build with internal jpeg support" ON)
10+
option(BUILD_EXT_OPENSSL "Build with internal openssl support" ON)
11+
option(BUILD_EXT_TIFF "Build with internal tiff support" ON)
12+
option(BUILD_EXT_UV "Build with internal uv support" ON)
13+
option(BUILD_EXT_WEBP "Build with internal webp support" ON)
14+
option(BUILD_EXT_WEBSOCKETS "Build with internal websockets support" ON)
15+
option(BUILD_EXT_TINYXML2 "Build with internal tinyxml2 support" ON)
16+
option(BUILD_EXT_XXHASH "Build with internal xxhash support" ON)
17+
option(BUILD_EXT_XXTEA "Build with internal xxtea support" ON)
18+
option(BUILD_EXT_CLIPPER "Build with internal clipper support" ON)
19+
option(BUILD_EXT_EDTAA3FUNC "Build with internal edtaa3func support" ON)
20+
option(BUILD_EXT_CONVERTUTF "Build with internal ConvertUTF support" ON)
21+
option(BUILD_EXT_POLY2TRI "Build with internal poly2tri support" ON)
22+
option(BUILD_EXT_MD5 "Build with internal md5 support" ON)
23+
option(BUILD_EXT_SQLITE "Build with internal SQLite support" ON)
24+
option(BUILD_EXT_ZLIB "Build with internal zlib support" ON)
25+
option(BUILD_EXT_CURL "Build with internal curl support" ON)
526

6-
add_subdirectory(Box2D)
7-
add_subdirectory(chipmunk)
8-
add_subdirectory(freetype2)
9-
add_subdirectory(recast)
10-
add_subdirectory(bullet)
11-
add_subdirectory(jpeg)
12-
add_subdirectory(openssl)
13-
add_subdirectory(tiff)
14-
add_subdirectory(uv)
15-
add_subdirectory(webp)
16-
add_subdirectory(websockets)
17-
add_subdirectory(tinyxml2)
18-
add_subdirectory(xxhash)
19-
add_subdirectory(xxtea)
20-
add_subdirectory(clipper)
21-
add_subdirectory(edtaa3func)
22-
add_subdirectory(ConvertUTF)
23-
add_subdirectory(poly2tri)
24-
add_subdirectory(md5)
27+
add_library(external empty.cpp)
2528

26-
target_link_libraries(external
27-
ext_box2d
28-
ext_chipmunk
29-
ext_freetype
30-
ext_recast
31-
ext_jpeg
32-
ext_uv
33-
ext_webp
34-
ext_bullet
35-
ext_ssl
36-
ext_crypto
37-
ext_tiff
38-
ext_websockets
39-
ext_tinyxml2
40-
ext_xxhash
41-
ext_xxtea
42-
ext_clipper
43-
ext_edtaa3func
44-
ext_convertUTF
45-
ext_poly2tri
46-
ext_md5
47-
)
29+
if(BUILD_EXT_BOX2D)
30+
add_subdirectory(Box2D)
31+
target_link_libraries(external ext_box2d)
32+
endif(BUILD_EXT_BOX2D)
33+
if(BUILD_EXT_CHIPMUNK)
34+
add_subdirectory(chipmunk)
35+
target_link_libraries(external ext_chipmunk)
36+
endif(BUILD_EXT_CHIPMUNK)
37+
if(BUILD_EXT_FREETYPE2)
38+
add_subdirectory(freetype2)
39+
target_link_libraries(external ext_freetype)
40+
endif(BUILD_EXT_FREETYPE2)
41+
if(BUILD_EXT_RECAST)
42+
add_subdirectory(recast)
43+
target_link_libraries(external ext_recast)
44+
endif(BUILD_EXT_RECAST)
45+
if(BUILD_EXT_BULLET)
46+
add_subdirectory(bullet)
47+
target_link_libraries(external ext_bullet)
48+
endif(BUILD_EXT_BULLET)
49+
if(BUILD_EXT_JPEG)
50+
add_subdirectory(jpeg)
51+
target_link_libraries(external ext_jpeg)
52+
endif(BUILD_EXT_JPEG)
53+
if(BUILD_EXT_OPENSSL)
54+
add_subdirectory(openssl)
55+
target_link_libraries(external ext_ssl)
56+
target_link_libraries(external ext_crypto)
57+
endif(BUILD_EXT_OPENSSL)
58+
if(BUILD_EXT_TIFF)
59+
add_subdirectory(tiff)
60+
target_link_libraries(external ext_tiff)
61+
endif(BUILD_EXT_TIFF)
62+
if(BUILD_EXT_UV)
63+
add_subdirectory(uv)
64+
target_link_libraries(external ext_uv)
65+
endif(BUILD_EXT_UV)
66+
if(BUILD_EXT_WEBP)
67+
add_subdirectory(webp)
68+
target_link_libraries(external ext_webp)
69+
endif(BUILD_EXT_WEBP)
70+
if(BUILD_EXT_WEBSOCKETS)
71+
add_subdirectory(websockets)
72+
target_link_libraries(external ext_websockets)
73+
endif(BUILD_EXT_WEBSOCKETS)
74+
if(BUILD_EXT_TINYXML2)
75+
add_subdirectory(tinyxml2)
76+
target_link_libraries(external ext_tinyxml2)
77+
endif(BUILD_EXT_TINYXML2)
78+
if(BUILD_EXT_XXHASH)
79+
add_subdirectory(xxhash)
80+
target_link_libraries(external ext_xxhash)
81+
endif(BUILD_EXT_XXHASH)
82+
if(BUILD_EXT_XXTEA)
83+
add_subdirectory(xxtea)
84+
target_link_libraries(external ext_xxtea)
85+
endif(BUILD_EXT_XXTEA)
86+
if(BUILD_EXT_CLIPPER)
87+
add_subdirectory(clipper)
88+
target_link_libraries(external ext_clipper)
89+
endif(BUILD_EXT_CLIPPER)
90+
if(BUILD_EXT_EDTAA3FUNC)
91+
add_subdirectory(edtaa3func)
92+
target_link_libraries(external ext_edtaa3func)
93+
endif(BUILD_EXT_EDTAA3FUNC)
94+
if(BUILD_EXT_CONVERTUTF)
95+
add_subdirectory(ConvertUTF)
96+
target_link_libraries(external ext_convertUTF)
97+
endif(BUILD_EXT_CONVERTUTF)
98+
if(BUILD_EXT_POLY2TRI)
99+
add_subdirectory(poly2tri)
100+
target_link_libraries(external ext_poly2tri)
101+
endif(BUILD_EXT_POLY2TRI)
102+
if(BUILD_EXT_MD5)
103+
add_subdirectory(md5)
104+
target_link_libraries(external ext_md5)
105+
endif(BUILD_EXT_MD5)
48106

49107
# use lua/js specific libs by property to prevent conflict
50108
if(BUILD_JS_LIBS)
@@ -63,10 +121,12 @@ if(BUILD_LUA_LIBS)
63121
endif()
64122

65123
if(NOT LINUX)
66-
add_subdirectory(curl)
124+
if(BUILD_EXT_CURL)
125+
add_subdirectory(curl)
126+
target_link_libraries(external ext_curl)
127+
endif(BUILD_EXT_CURL)
67128
add_subdirectory(png)
68129
target_link_libraries(external
69-
ext_curl
70130
ext_png
71131
)
72132
endif(NOT LINUX)
@@ -91,14 +151,16 @@ endif()
91151

92152
if(WINDOWS)
93153
# sqlite3 prebuilt only existed at windows
94-
add_subdirectory(sqlite3)
154+
if(BUILD_EXT_SQLITE)
155+
add_subdirectory(sqlite3)
156+
target_link_libraries(external ext_sqlite3)
157+
endif(BUILD_EXT_SQLITE)
95158
add_subdirectory(win32-specific/gles)
96159
add_subdirectory(win32-specific/icon)
97160
add_subdirectory(win32-specific/MP3Decoder)
98161
add_subdirectory(win32-specific/OggDecoder)
99162
add_subdirectory(win32-specific/OpenalSoft)
100163
target_link_libraries(external
101-
ext_sqlite3
102164
ext_gles
103165
ext_icon
104166
ext_MP3Decoder
@@ -115,15 +177,19 @@ if(WINDOWS OR MACOSX OR LINUX)
115177
endif()
116178

117179
if(MACOSX OR ANDROID OR WINDOWS)
118-
add_subdirectory(zlib)
119-
target_link_libraries(external
120-
ext_zlib
121-
)
180+
if(BUILD_EXT_ZLIB)
181+
add_subdirectory(zlib)
182+
target_link_libraries(external
183+
ext_zlib
184+
)
185+
endif(BUILD_EXT_ZLIB)
122186
endif()
123187

124188
# unzip depend on zlib
125-
add_subdirectory(unzip)
126-
target_link_libraries(external ext_unzip)
189+
if(BUILD_EXT_UNZIP)
190+
add_subdirectory(unzip)
191+
target_link_libraries(external ext_unzip)
192+
endif(BUILD_EXT_UNZIP)
127193

128194
# put "external" into External folder, too
129195
set_target_properties(external

0 commit comments

Comments
 (0)