CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. cmake_minimum_required (VERSION 2.6)
  2. project (OXYGINE)
  3. set(OX_HAVE_LIBJPEG 0)
  4. set(OX_HAVE_LIBPNG 0)
  5. set(OX_HAVE_LIBCURL 0)
  6. set(OX_HAVE_HTTP 0)
  7. set(OX_USE_SDL2 1)
  8. find_package(OpenGL)
  9. if (EMSCRIPTEN)
  10. #don't need SDL2
  11. elseif (WIN32)
  12. #hardcoded path to SDL2 on windows
  13. set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)
  14. else(WIN32)
  15. find_path(SDL2_INCLUDE_DIRS NAMES SDL2/SDL.h)
  16. message(STATUS ${SDL2_INCLUDE_DIRS_FOUND})
  17. if (SDL2_INCLUDE_DIRS)
  18. set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS}/SDL2)
  19. message(STATUS "found")
  20. else()
  21. message(STATUS "SDL not found")
  22. set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)
  23. endif()
  24. find_package(CURL)
  25. endif(EMSCRIPTEN)
  26. set(OXYGINE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/oxygine)
  27. set(OXYGINE_SRC ${OXYGINE_ROOT}/src/oxygine)
  28. set(FOLDERS oxygine oxygine/closure oxygine/minizip oxygine/core
  29. oxygine/core/gl oxygine/dev_tools oxygine/minizip
  30. oxygine/math oxygine/actor oxygine/tween oxygine/pugixml oxygine/json oxygine/res
  31. oxygine/text_utils oxygine/utils oxygine/winnie_alloc)
  32. if (EMSCRIPTEN)
  33. set(PLATFORM emscripten)
  34. elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  35. set(PLATFORM linux)
  36. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  37. set(PLATFORM ios)
  38. elseif(MSVC)
  39. set(PLATFORM win32)
  40. elseif(MINGW)
  41. set(PLATFORM win32_mingw)
  42. endif()
  43. set(THIRD_PARTY ${OXYGINE_ROOT}/third_party/${PLATFORM})
  44. if (EMSCRIPTEN)
  45. set(OX_HAVE_LIBPNG 1)
  46. set(OX_HAVE_LIBJPEG 1)
  47. set(OX_HAVE_HTTP 1)
  48. set(OX_USE_SDL2 1)
  49. set(SOURCES ${OXYGINE_SRC}/core/emscripten/HttpRequestEmscriptenTask.cpp)
  50. file(GLOB OXYGINE_JS_LIBRARIES ${OXYGINE_SRC}/core/emscripten/*.js)
  51. set(OXYGINE_CXX_FLAGS "${OXYGINE_CXX_FLAGS} -s USE_SDL=2 -s USE_LIBPNG=1 -s USE_ZLIB=1 -s FULL_ES2=1 ")
  52. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s USE_ZLIB=1")#for minizip.c
  53. elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  54. set(OX_HAVE_LIBJPEG 1)
  55. set(OX_HAVE_LIBPNG 1)
  56. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  57. elseif(MSVC)
  58. set(OX_HAVE_LIBJPEG 1)
  59. set(OX_HAVE_LIBPNG 1)
  60. set(OX_HAVE_LIBCURL 1)
  61. set(OX_HAVE_HTTP 1)
  62. set(libprefix lib)
  63. set(OX_DEFINITIONS ${OX_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS)
  64. elseif(MINGW)
  65. set(libprefix lib)
  66. set(OX_HAVE_LIBPNG 1)
  67. set(OX_HAVE_LIBCURL 1)
  68. set(OX_HAVE_HTTP 1)
  69. endif()
  70. if (OX_HAVE_LIBCURL)
  71. set(FOLDERS ${FOLDERS} oxygine/core/curl)
  72. include_directories(${THIRD_PARTY}/curl/)
  73. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBCURL)
  74. endif(OX_HAVE_LIBCURL)
  75. if (NOT OX_HAVE_HTTP)
  76. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_NO_HTTP)
  77. endif(NOT OX_HAVE_HTTP)
  78. if (EMSCRIPTEN)
  79. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_NO_MT)
  80. endif(EMSCRIPTEN)
  81. foreach(ITEM ${FOLDERS})
  82. file(GLOB FLS
  83. ${OXYGINE_ROOT}/src/${ITEM}/*.cpp
  84. ${OXYGINE_ROOT}/src/${ITEM}/*.c
  85. ${OXYGINE_ROOT}/src/${ITEM}/*.h)
  86. set(SOURCES ${SOURCES} ${FLS})
  87. string(REPLACE / \\ SGROUP ${ITEM})
  88. source_group(${SGROUP} FILES ${FLS})
  89. endforeach(ITEM)
  90. if (MINGW)
  91. set(OXYGINE_INCLUDE_DIRS
  92. ${THIRD_PARTY}/zlib)
  93. else()
  94. set(OXYGINE_INCLUDE_DIRS
  95. ${THIRD_PARTY}/pthreads/include/
  96. ${THIRD_PARTY}/zlib)
  97. endif()
  98. set(OXYGINE_LIBRARY_DIRS
  99. ${OXYGINE_LIBRARY_DIRS}
  100. ${OXYGINE_SOURCE_DIR}/libs
  101. ${THIRD_PARTY}/libraries)
  102. if (FORCE_GLES)
  103. set(OPENGL_LIBRARIES libGLESv2.lib)
  104. endif(FORCE_GLES)
  105. set(CORE_LIBS
  106. ${CORE_LIBS}
  107. oxygine-framework
  108. ${OPENGL_LIBRARIES}
  109. )
  110. if (OX_USE_SDL2)
  111. set(CORE_LIBS ${CORE_LIBS}
  112. SDL2main SDL2)
  113. set(OXYGINE_INCLUDE_DIRS ${OXYGINE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
  114. endif(OX_USE_SDL2)
  115. if (MINGW)
  116. set(CORE_LIBS mingw32 pthread ${CORE_LIBS} psapi
  117. libcurl_imp
  118. ws2_32)
  119. elseif (WIN32)
  120. set(CORE_LIBS ${CORE_LIBS}
  121. pthreadVCE2
  122. libcurl_imp
  123. ws2_32)
  124. elseif(EMSCRIPTEN)
  125. else()
  126. set(CORE_LIBS ${CORE_LIBS} pthread)
  127. endif()
  128. if (OX_HAVE_LIBPNG)
  129. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBPNG)
  130. if (EMSCRIPTEN)
  131. else(EMSCRIPTEN)
  132. include_directories(${THIRD_PARTY}/libpng)
  133. set(LIBPNG ${libprefix}png)
  134. if (MSVC)
  135. if(NOT (MSVC_VERSION LESS 1900))
  136. set(LIBPNG ${LIBPNG}-2015)
  137. endif()
  138. endif()
  139. set(CORE_LIBS ${CORE_LIBS} ${LIBPNG})
  140. endif(EMSCRIPTEN)
  141. endif(OX_HAVE_LIBPNG)
  142. if (OX_HAVE_LIBJPEG)
  143. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBJPEG)
  144. include_directories(${THIRD_PARTY}/libjpeg)
  145. set(LIBJPEG ${libprefix}jpeg)
  146. if (MSVC)
  147. if(NOT (MSVC_VERSION LESS 1900))
  148. set(LIBJPEG ${LIBJPEG}-2015)
  149. endif()
  150. endif()
  151. set(CORE_LIBS ${CORE_LIBS} ${LIBJPEG})
  152. endif(OX_HAVE_LIBJPEG)
  153. if (NOT EMSCRIPTEN)
  154. set(CORE_LIBS ${CORE_LIBS}
  155. ${libprefix}z${libprefix})
  156. endif(NOT EMSCRIPTEN)
  157. if (NOT MSVC)
  158. set(OXYGINE_CXX_FLAGS "${OXYGINE_CXX_FLAGS} -std=c++11 ")
  159. endif(NOT MSVC)
  160. set(CMAKE_CXX_FLAGS ${OXYGINE_CXX_FLAGS})
  161. add_definitions(${OX_DEFINITIONS})
  162. include_directories(${OXYGINE_SRC})
  163. include_directories(${OXYGINE_INCLUDE_DIRS})
  164. add_library(oxygine-framework STATIC ${SOURCES})
  165. set(OXYGINE_LIBRARY_DIRS
  166. ${OXYGINE_LIBRARY_DIRS}
  167. PARENT_SCOPE)
  168. set(OXYGINE_CORE_LIBS
  169. ${CORE_LIBS}
  170. PARENT_SCOPE)
  171. set(OXYGINE_DEFINITIONS
  172. ${OX_DEFINITIONS}
  173. PARENT_SCOPE)
  174. set(OXYGINE_INCLUDE_DIRS
  175. ${OXYGINE_INCLUDE_DIRS}
  176. ${OXYGINE_ROOT}/src
  177. PARENT_SCOPE)
  178. set(OXYGINE_JS_LIBRARIES
  179. ${OXYGINE_JS_LIBRARIES}
  180. PARENT_SCOPE)
  181. set(OXYGINE_CXX_FLAGS
  182. ${OXYGINE_CXX_FLAGS}
  183. PARENT_SCOPE)
  184. message(STATUS "SDL includes: ${SDL2_INCLUDE_DIRS}")
  185. message(STATUS "Libs: ${CORE_LIBS}")
  186. message(STATUS "Platform: ${PLATFORM}")
  187. set(CMAKE_INSTALL_PREFIX ../libs)
  188. install(TARGETS oxygine-framework CONFIGURATIONS Debug DESTINATION ./debug)
  189. install(TARGETS oxygine-framework CONFIGURATIONS Release DESTINATION ./release)