CMakeLists.txt 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #/****************************************************************************
  2. # Copyright (c) 2013 cocos2d-x.org
  3. # Copyright (c) 2014 martell malone
  4. # Copyright (c) 2015-2017 Chukong Technologies Inc.
  5. #
  6. # http://www.cocos2d-x.org
  7. #
  8. # Permission is hereby granted, free of charge, to any person obtaining a copy
  9. # of this software and associated documentation files (the "Software"), to deal
  10. # in the Software without restriction, including without limitation the rights
  11. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12. # copies of the Software, and to permit persons to whom the Software is
  13. # furnished to do so, subject to the following conditions:
  14. # The above copyright notice and this permission notice shall be included in
  15. # all copies or substantial portions of the Software.
  16. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22. # THE SOFTWARE.
  23. # ****************************************************************************/
  24. # this CMakeLists is to generate libcocos2d.a
  25. cmake_minimum_required(VERSION 3.1)
  26. if(WINDOWS)
  27. ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
  28. endif()
  29. include(2d/CMakeLists.txt)
  30. include(3d/CMakeLists.txt)
  31. include(platform/CMakeLists.txt)
  32. include(physics/CMakeLists.txt)
  33. include(physics3d/CMakeLists.txt)
  34. include(math/CMakeLists.txt)
  35. include(navmesh/CMakeLists.txt)
  36. include(renderer/CMakeLists.txt)
  37. include(vr/CMakeLists.txt)
  38. include(base/CMakeLists.txt)
  39. include(deprecated/CMakeLists.txt)
  40. include(ui/CMakeLists.txt)
  41. include(network/CMakeLists.txt)
  42. include(audio/CMakeLists.txt)
  43. include(storage/CMakeLists.txt)
  44. if(BUILD_EDITOR_COCOSBUILDER)
  45. include(editor-support/cocosbuilder/CMakeLists.txt)
  46. set(COCOS_EDITOR_SUPPORT_SRC ${COCOS_EDITOR_SUPPORT_SRC} ${COCOS_CCB_SRC})
  47. endif(BUILD_EDITOR_COCOSBUILDER)
  48. if(BUILD_EDITOR_COCOSTUDIO)
  49. include(editor-support/cocostudio/CMakeLists.txt)
  50. set(COCOS_EDITOR_SUPPORT_SRC ${COCOS_EDITOR_SUPPORT_SRC} ${COCOS_CS_SRC})
  51. endif(BUILD_EDITOR_COCOSTUDIO)
  52. if(BUILD_EDITOR_SPINE)
  53. include(editor-support/spine/CMakeLists.txt)
  54. set(COCOS_EDITOR_SUPPORT_SRC ${COCOS_EDITOR_SUPPORT_SRC} ${COCOS_SPINE_SRC})
  55. endif(BUILD_EDITOR_SPINE)
  56. include(../extensions/CMakeLists.txt)
  57. set(COCOS_SRC cocos2d.cpp
  58. ${COCOS_2D_SRC}
  59. ${COCOS_3D_SRC}
  60. ${COCOS_PLATFORM_SRC}
  61. ${COCOS_PHYSICS_SRC}
  62. ${COCOS_PHYSICS3D_SRC}
  63. ${COCOS_MATH_SRC}
  64. ${COCOS_NAVMESH_SRC}
  65. ${COCOS_RENDERER_SRC}
  66. ${COCOS_VR_SRC}
  67. ${COCOS_BASE_SRC}
  68. ${COCOS_AUDIO_SRC}
  69. ${COCOS_UI_SRC}
  70. ${COCOS_DEPRECATED_SRC}
  71. ${COCOS_NETWORK_SRC}
  72. ${COCOS_EDITOR_SUPPORT_SRC}
  73. ${COCOS_EXTENSIONS_SRC}
  74. )
  75. #todo: provide prebuild versions of the xx libs for all platforms
  76. include_directories(../external/xxtea)
  77. include_directories(../external/clipper)
  78. add_library(cocos2dInternal ${COCOS_SRC})
  79. set_target_properties(cocos2dInternal
  80. PROPERTIES
  81. ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
  82. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
  83. VERSION "${COCOS2D_X_VERSION}"
  84. )
  85. set(PLATFORM_SPECIFIC_LIBS)
  86. if(WINDOWS)
  87. foreach(_pkg OPENGL GLEW GLFW3 VORBIS MPG123 OPENAL)
  88. cocos_use_pkg(cocos2dInternal ${_pkg})
  89. endforeach()
  90. list(APPEND PLATFORM_SPECIFIC_LIBS ws2_32 winmm version)
  91. if(MINGW)
  92. list(APPEND PLATFORM_SPECIFIC_LIBS shlwapi version)
  93. endif()
  94. elseif(LINUX)
  95. foreach(_pkg OPENGL GLEW GLFW3 FMOD FONTCONFIG THREADS GTK3)
  96. cocos_use_pkg(cocos2dInternal ${_pkg})
  97. endforeach()
  98. elseif(MACOSX OR APPLE)
  99. cocos_use_pkg(cocos2dInternal GLFW3)
  100. INCLUDE_DIRECTORIES ( /System/Library/Frameworks )
  101. FIND_LIBRARY(COCOA_LIBRARY Cocoa)
  102. FIND_LIBRARY(OPENGL_LIBRARY OpenGL )
  103. FIND_LIBRARY(AUDIOTOOLBOX_LIBRARY AudioToolbox)
  104. FIND_LIBRARY(OPENAL_LIBRARY OpenAL )
  105. FIND_LIBRARY(QUARTZCORE_LIBRARY QuartzCore )
  106. FIND_LIBRARY(APPLICATIONSERVICES_LIBRARY ApplicationServices)
  107. FIND_LIBRARY(IOKIT_LIBRARY IOKit)
  108. FIND_LIBRARY(FOUNDATION_LIBRARY Foundation)
  109. FIND_LIBRARY(ICONV_LIBRARY iconv)
  110. set(PLATFORM_SPECIFIC_LIBS
  111. ${COCOA_LIBRARY}
  112. ${OPENGL_LIBRARY}
  113. ${OPENAL_LIBRARY}
  114. ${AUDIOTOOLBOX_LIBRARY}
  115. ${QUARTZCORE_LIBRARY}
  116. ${APPLICATIONSERVICES_LIBRARY}
  117. ${IOKIT_LIBRARY}
  118. ${FOUNDATION_LIBRARY}
  119. ${ICONV_LIBRARY}
  120. )
  121. elseif(ANDROID)
  122. set(PLATFORM_SPECIFIC_LIBS GLESv1_CM GLESv2 EGL log android OpenSLES)
  123. get_filename_component(__module_path "${CMAKE_TOOLCHAIN_FILE}" DIRECTORY)
  124. include(${__module_path}/AndroidNdkModules.cmake)
  125. android_ndk_import_module_cpufeatures()
  126. else()
  127. message( FATAL_ERROR "Unsupported platform, CMake will exit" )
  128. endif()
  129. foreach(pkg ZLIB MINIZIP JPEG PNG TIFF TinyXML2 FREETYPE WEBSOCKETS CURL OPENSSL FLATBUFFERS XXHASH)
  130. cocos_use_pkg(cocos2dInternal ${pkg})
  131. endforeach()
  132. if(LINUX)
  133. set(glfw_other_linker_flags X11)
  134. endif(LINUX)
  135. target_link_libraries(cocos2dInternal ${PLATFORM_SPECIFIC_LIBS} ${glfw_other_linker_flags})
  136. if(USE_WEBP)
  137. add_definitions(-DCC_USE_WEBP=1)
  138. cocos_use_pkg(cocos2dInternal WEBP)
  139. else()
  140. add_definitions(-DCC_USE_WEBP=0)
  141. endif()
  142. if(USE_CHIPMUNK)
  143. cocos_use_pkg(cocos2dInternal CHIPMUNK)
  144. endif()
  145. if(USE_BOX2D)
  146. cocos_use_pkg(cocos2dInternal Box2D)
  147. endif()
  148. if(USE_BULLET)
  149. cocos_use_pkg(cocos2dInternal BULLET)
  150. endif()
  151. if(USE_RECAST)
  152. cocos_use_pkg(cocos2dInternal RECAST)
  153. endif()
  154. ADD_LIBRARY(cocos2d cc_dummy.c)
  155. if(ANDROID)
  156. target_link_libraries(cocos2d -Wl,-whole-archive cocos2dxandroid_static -Wl,-no-whole-archive)
  157. target_link_libraries(cocos2d cocos2dInternal cpufeatures)
  158. elseif(LINUX)
  159. target_link_libraries(cocos2d cocos2dInternal dl)
  160. else()
  161. target_link_libraries(cocos2d cocos2dInternal)
  162. endif()
  163. set_target_properties(cocos2d
  164. PROPERTIES
  165. ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
  166. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
  167. VERSION "${COCOS2D_X_VERSION}"
  168. )