Skip to content

Commit c2e02ef

Browse files
drelaptopminggo
authored andcommitted
use modern cmake on all external prebuilt libs (#326)
* add part cmake files * correct header include error * add bullet cmake script * add others micro ext libs * fix can't found libs * lua/js tests project works on mac * ios use external * git mv include/freetype to include/freetype2 linux * try to works on android * correct most win32 libs * fix android cpp external link error * export lua.h header * fix zlib error on ios * unzip depend on zlib * can't set properties as cmake doc said * cpp tests works on win32 * tests project works on win32 * fix use external error on linux * cpp-tests works on linux * change 4 vs2017 buildtype to 2 build type folder
1 parent 972cfcf commit c2e02ef

File tree

101 files changed

+1241
-190
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1241
-190
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.vscode
2+
build

Box2D/CMakeLists.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
cmake_minimum_required(VERSION 3.6)
2+
3+
set(lib_name box2d)
4+
set(target_name ext_${lib_name})
5+
6+
project(${lib_name})
7+
8+
include(../cmake/CocosExternalConfig.cmake)
9+
10+
add_library(${target_name} STATIC IMPORTED GLOBAL)
11+
12+
set_target_properties(${target_name} PROPERTIES
13+
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include"
14+
)
15+
16+
if(WINDOWS)
17+
set_target_properties(${target_name} PROPERTIES
18+
# need use absolutely path
19+
IMPORTED_LOCATION "${platform_spec_path}/lib${lib_name}.lib"
20+
)
21+
else()
22+
set_target_properties(${target_name} PROPERTIES
23+
IMPORTED_LOCATION "${platform_spec_path}/lib${lib_name}.a"
24+
)
25+
endif()

CMakeLists.txt

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
cmake_minimum_required(VERSION 3.6)
2+
project(external)
3+
4+
add_library(external empty.cpp)
5+
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)
25+
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+
)
48+
49+
# use lua/js specific libs by property to prevent conflict
50+
if(BUILD_JS_LIBS)
51+
add_subdirectory(spidermonkey)
52+
set_property(TARGET external APPEND PROPERTY
53+
CC_JS_DEPEND ext_spidermonkey
54+
)
55+
endif()
56+
if(BUILD_LUA_LIBS)
57+
add_subdirectory(lua/lua)
58+
add_subdirectory(lua/luajit)
59+
add_subdirectory(lua/tolua)
60+
add_subdirectory(lua/luasocket)
61+
set_property(TARGET external APPEND PROPERTY
62+
CC_LUA_DEPEND ext_lua ext_luajit ext_tolua ext_luasocket
63+
)
64+
endif()
65+
66+
if(NOT LINUX)
67+
add_subdirectory(curl)
68+
add_subdirectory(png)
69+
target_link_libraries(external
70+
ext_curl
71+
ext_png
72+
)
73+
endif(NOT LINUX)
74+
75+
if(LINUX)
76+
add_subdirectory(linux-specific/fmod)
77+
target_link_libraries(external
78+
ext_fmod
79+
)
80+
endif()
81+
82+
if(ANDROID)
83+
add_subdirectory(android-specific/cpufeatures)
84+
add_subdirectory(android-specific/pvmp3dec)
85+
add_subdirectory(android-specific/tremolo)
86+
target_link_libraries(external
87+
ext_cpufeatures
88+
ext_pvmp3dec
89+
ext_tremolo
90+
)
91+
endif()
92+
93+
if(WINDOWS)
94+
# sqlite3 prebuilt only existed at windows
95+
add_subdirectory(sqlite3)
96+
add_subdirectory(win32-specific/gles)
97+
add_subdirectory(win32-specific/icon)
98+
add_subdirectory(win32-specific/MP3Decoder)
99+
add_subdirectory(win32-specific/OggDecoder)
100+
add_subdirectory(win32-specific/OpenalSoft)
101+
target_link_libraries(external
102+
ext_sqlite3
103+
ext_gles
104+
ext_icon
105+
ext_MP3Decoder
106+
ext_OggDecoder
107+
ext_OpenalSoft
108+
)
109+
endif()
110+
111+
if(WINDOWS OR MACOSX OR LINUX)
112+
add_subdirectory(glfw3)
113+
target_link_libraries(external
114+
ext_glfw3
115+
)
116+
endif()
117+
118+
if(MACOSX OR ANDROID OR WINDOWS)
119+
add_subdirectory(zlib)
120+
target_link_libraries(external
121+
ext_zlib
122+
)
123+
endif()
124+
125+
# unzip depend on zlib
126+
add_subdirectory(unzip)
127+
target_link_libraries(external ext_unzip)
128+
129+
# put "external" into External folder, too
130+
set_target_properties(external
131+
PROPERTIES
132+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
133+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
134+
FOLDER "External"
135+
)
136+

ConvertUTF/CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.6)
2+
3+
set(lib_name convertUTF)
4+
set(target_name ext_${lib_name})
5+
6+
project(${lib_name})
7+
8+
add_library(${target_name} STATIC
9+
ConvertUTF.c
10+
ConvertUTFWrapper.cpp
11+
)
12+
13+
target_include_directories(${target_name} PUBLIC .)
14+
15+
set_target_properties(${target_name}
16+
PROPERTIES
17+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
18+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
19+
FOLDER "External"
20+
)
21+

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## cocos2d-x externl
2+
3+
add CMake Script for all platforms
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
cmake_minimum_required(VERSION 3.6)
2+
3+
set(lib_name cpufeatures)
4+
set(target_name ext_${lib_name})
5+
6+
project(lib_name)
7+
8+
# CMake from android SDK set ANDROID_NDK instead of CMAKE_ANDROID_NDK
9+
if(ANDROID_NDK)
10+
add_library(${target_name} ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c)
11+
target_include_directories(${target_name} PUBLIC ${ANDROID_NDK}/sources/android/cpufeatures)
12+
else()
13+
add_library(${target_name} ${CMAKE_ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c)
14+
target_include_directories(${target_name} PUBLIC ${CMAKE_ANDROID_NDK}/sources/android/cpufeatures)
15+
endif()
16+
17+
target_link_libraries(${target_name} dl)

android-specific/pvmp3dec/CMakeLists.txt

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,52 @@
1-
set(PVMP3DEC_SRC
2-
./src/pvmp3_normalize.cpp
3-
./src/pvmp3_alias_reduction.cpp
4-
./src/pvmp3_crc.cpp
5-
./src/pvmp3_decode_header.cpp
6-
./src/pvmp3_decode_huff_cw.cpp
7-
./src/pvmp3_getbits.cpp
8-
./src/pvmp3_dequantize_sample.cpp
9-
./src/pvmp3_framedecoder.cpp
10-
./src/pvmp3_get_main_data_size.cpp
11-
./src/pvmp3_get_side_info.cpp
12-
./src/pvmp3_get_scale_factors.cpp
13-
./src/pvmp3_mpeg2_get_scale_data.cpp
14-
./src/pvmp3_mpeg2_get_scale_factors.cpp
15-
./src/pvmp3_mpeg2_stereo_proc.cpp
16-
./src/pvmp3_huffman_decoding.cpp
17-
./src/pvmp3_huffman_parsing.cpp
18-
./src/pvmp3_tables.cpp
19-
./src/pvmp3_imdct_synth.cpp
20-
./src/pvmp3_mdct_6.cpp
21-
./src/pvmp3_dct_6.cpp
22-
./src/pvmp3_poly_phase_synthesis.cpp
23-
./src/pvmp3_equalizer.cpp
24-
./src/pvmp3_seek_synch.cpp
25-
./src/pvmp3_stereo_proc.cpp
26-
./src/pvmp3_reorder.cpp
27-
./src/pvmp3_polyphase_filter_window.cpp
28-
./src/pvmp3_mdct_18.cpp
29-
./src/pvmp3_dct_9.cpp
30-
./src/pvmp3_dct_16.cpp
31-
)
1+
cmake_minimum_required(VERSION 3.6)
2+
3+
set(lib_name pvmp3dec)
4+
set(target_name ext_${lib_name})
5+
6+
project(${lib_name})
327

33-
add_library(pvmp3dec STATIC
34-
${PVMP3DEC_SRC}
8+
set(${target_name}_src
9+
./src/pvmp3_normalize.cpp
10+
./src/pvmp3_alias_reduction.cpp
11+
./src/pvmp3_crc.cpp
12+
./src/pvmp3_decode_header.cpp
13+
./src/pvmp3_decode_huff_cw.cpp
14+
./src/pvmp3_getbits.cpp
15+
./src/pvmp3_dequantize_sample.cpp
16+
./src/pvmp3_framedecoder.cpp
17+
./src/pvmp3_get_main_data_size.cpp
18+
./src/pvmp3_get_side_info.cpp
19+
./src/pvmp3_get_scale_factors.cpp
20+
./src/pvmp3_mpeg2_get_scale_data.cpp
21+
./src/pvmp3_mpeg2_get_scale_factors.cpp
22+
./src/pvmp3_mpeg2_stereo_proc.cpp
23+
./src/pvmp3_huffman_decoding.cpp
24+
./src/pvmp3_huffman_parsing.cpp
25+
./src/pvmp3_tables.cpp
26+
./src/pvmp3_imdct_synth.cpp
27+
./src/pvmp3_mdct_6.cpp
28+
./src/pvmp3_dct_6.cpp
29+
./src/pvmp3_poly_phase_synthesis.cpp
30+
./src/pvmp3_equalizer.cpp
31+
./src/pvmp3_seek_synch.cpp
32+
./src/pvmp3_stereo_proc.cpp
33+
./src/pvmp3_reorder.cpp
34+
./src/pvmp3_polyphase_filter_window.cpp
35+
./src/pvmp3_mdct_18.cpp
36+
./src/pvmp3_dct_9.cpp
37+
./src/pvmp3_dct_16.cpp
3538
)
3639

37-
include_directories(include)
38-
include_directories(src)
40+
add_library(${target_name} STATIC
41+
${${target_name}_src}
42+
)
3943

40-
set_target_properties(pvmp3dec
44+
target_include_directories(${target_name} PUBLIC include)
45+
target_include_directories(${target_name} PUBLIC src)
46+
set_target_properties(${target_name}
4147
PROPERTIES
4248
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
4349
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
4450
FOLDER "External"
4551
)
4652

47-
48-

android-specific/tremolo/CMakeLists.txt

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
1-
set(TREMOLO_SRC
1+
cmake_minimum_required(VERSION 3.6)
2+
3+
set(lib_name tremolo)
4+
set(target_name ext_${lib_name})
5+
6+
project(${lib_name})
7+
8+
set(${target_name}_src
29
./Tremolo/bitwise.c
3-
./Tremolo/codebook.c
4-
./Tremolo/dsp.c
5-
./Tremolo/floor0.c
6-
./Tremolo/floor1.c
7-
./Tremolo/floor_lookup.c
8-
./Tremolo/framing.c
9-
./Tremolo/mapping0.c
10-
./Tremolo/mdct.c
11-
./Tremolo/misc.c
12-
./Tremolo/res012.c
13-
./Tremolo/treminfo.c
14-
./Tremolo/vorbisfile.c
10+
./Tremolo/codebook.c
11+
./Tremolo/dsp.c
12+
./Tremolo/floor0.c
13+
./Tremolo/floor1.c
14+
./Tremolo/floor_lookup.c
15+
./Tremolo/framing.c
16+
./Tremolo/mapping0.c
17+
./Tremolo/mdct.c
18+
./Tremolo/misc.c
19+
./Tremolo/res012.c
20+
./Tremolo/treminfo.c
21+
./Tremolo/vorbisfile.c
1522
)
1623

17-
add_library(tremolo STATIC
18-
${TREMOLO_SRC}
24+
add_library(${target_name} STATIC
25+
${${target_name}_src}
1926
)
2027

21-
target_compile_definitions(tremolo PRIVATE ONLY_C)
28+
target_compile_definitions(${target_name} PRIVATE ONLY_C)
2229

23-
set_target_properties(tremolo
30+
target_include_directories(${target_name} PUBLIC .)
31+
set_target_properties(${target_name}
2432
PROPERTIES
2533
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
2634
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"

0 commit comments

Comments
 (0)