CMakeLists.txt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  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)
  28. set(FOLDERS src src/closure src/minizip src/core
  29. src/core/gl src/dev_tools src/minizip
  30. src/math src/pugixml src/json src/res
  31. src/text_utils src/utils src/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_HTTP 1)
  47. set(OX_USE_SDL2 1)
  48. set(SOURCES ${OXYGINE_SRC}/core/emscripten/HttpRequestEmscriptenTask.cpp)
  49. file(GLOB OXYGINE_JS_LIBRARIES ${OXYGINE_SRC}/core/emscripten/*.js)
  50. set(OXYGINE_CXX_FLAGS "${OXYGINE_CXX_FLAGS} -s USE_SDL=2 -s USE_LIBPNG=1 -s USE_ZLIB=1 -s FULL_ES2=1 ")
  51. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s USE_ZLIB=1")#for minizip.c
  52. elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  53. set(OX_HAVE_LIBJPEG 1)
  54. set(OX_HAVE_LIBPNG 1)
  55. elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  56. elseif(MSVC)
  57. set(OX_HAVE_LIBJPEG 1)
  58. set(OX_HAVE_LIBPNG 1)
  59. set(OX_HAVE_LIBCURL 1)
  60. set(OX_HAVE_HTTP 1)
  61. set(libprefix lib)
  62. set(OX_DEFINITIONS ${OX_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS)
  63. elseif(MINGW)
  64. set(libprefix lib)
  65. set(OX_HAVE_LIBPNG 1)
  66. set(OX_HAVE_LIBCURL 1)
  67. set(OX_HAVE_HTTP 1)
  68. endif()
  69. if (OX_HAVE_LIBCURL)
  70. set(FOLDERS ${FOLDERS} src/core/curl)
  71. include_directories(${THIRD_PARTY}/curl/)
  72. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBCURL)
  73. endif(OX_HAVE_LIBCURL)
  74. if (NOT OX_HAVE_HTTP)
  75. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_NO_HTTP)
  76. endif(NOT OX_HAVE_HTTP)
  77. if (EMSCRIPTEN)
  78. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_NO_MT)
  79. endif(EMSCRIPTEN)
  80. foreach(ITEM ${FOLDERS})
  81. file(GLOB FLS
  82. ${OXYGINE_ROOT}/${ITEM}/*.cpp
  83. ${OXYGINE_ROOT}/${ITEM}/*.c
  84. ${OXYGINE_ROOT}/${ITEM}/*.h)
  85. set(SOURCES ${SOURCES} ${FLS})
  86. string(REPLACE / \\ SGROUP ${ITEM})
  87. source_group(${SGROUP} FILES ${FLS})
  88. endforeach(ITEM)
  89. set(OXYGINE_INCLUDE_DIRS
  90. ${OXYGINE_SRC}
  91. ${THIRD_PARTY}/pthreads/include/
  92. ${THIRD_PARTY}/zlib)
  93. set(OXYGINE_LIBRARY_DIRS
  94. ${OXYGINE_LIBRARY_DIRS}
  95. ${OXYGINE_SOURCE_DIR}/libs
  96. ${THIRD_PARTY}/libraries)
  97. if (FORCE_GLES)
  98. set(OPENGL_LIBRARIES libGLESv2.lib)
  99. endif(FORCE_GLES)
  100. if (MINGW)
  101. set(CORE_LIBS ${CORE_LIBS} mingw32)
  102. endif(MINGW)
  103. set(CORE_LIBS
  104. ${CORE_LIBS}
  105. oxygine-framework
  106. ${OPENGL_LIBRARIES}
  107. )
  108. if (OX_USE_SDL2)
  109. set(CORE_LIBS ${CORE_LIBS}
  110. SDL2main SDL2)
  111. set(OXYGINE_INCLUDE_DIRS ${OXYGINE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
  112. endif(OX_USE_SDL2)
  113. if (WIN32)
  114. set(CORE_LIBS ${CORE_LIBS}
  115. pthreadVCE2
  116. libcurl_imp
  117. ws2_32)
  118. elseif(EMSCRIPTEN)
  119. else(WIN32)
  120. set(CORE_LIBS ${CORE_LIBS} pthread)
  121. endif(WIN32)
  122. if (OX_HAVE_LIBPNG)
  123. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBPNG)
  124. if (EMSCRIPTEN)
  125. else(EMSCRIPTEN)
  126. include_directories(${THIRD_PARTY}/libpng)
  127. set(LIBPNG ${libprefix}png)
  128. if (MSVC)
  129. if (MSVC_VERSION EQUAL "1900")
  130. set(LIBPNG ${LIBPNG}-2015)
  131. endif()
  132. endif()
  133. set(CORE_LIBS ${CORE_LIBS} ${LIBPNG})
  134. endif(EMSCRIPTEN)
  135. endif(OX_HAVE_LIBPNG)
  136. if (OX_HAVE_LIBJPEG)
  137. set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_HAVE_LIBJPEG)
  138. include_directories(${THIRD_PARTY}/libjpeg)
  139. set(LIBJPEG ${libprefix}jpeg)
  140. if (MSVC)
  141. if (MSVC_VERSION EQUAL "1900")
  142. set(LIBJPEG ${LIBJPEG}-2015)
  143. endif()
  144. endif()
  145. set(CORE_LIBS ${CORE_LIBS} ${LIBJPEG})
  146. endif(OX_HAVE_LIBJPEG)
  147. if (NOT EMSCRIPTEN)
  148. set(CORE_LIBS ${CORE_LIBS}
  149. ${libprefix}z${libprefix})
  150. endif(NOT EMSCRIPTEN)
  151. if (NOT MSVC)
  152. set(OXYGINE_CXX_FLAGS "${OXYGINE_CXX_FLAGS} -std=c++11 ")
  153. endif(NOT MSVC)
  154. set(CMAKE_CXX_FLAGS ${OXYGINE_CXX_FLAGS})
  155. add_definitions(${OX_DEFINITIONS})
  156. include_directories(${OXYGINE_INCLUDE_DIRS})
  157. add_library(oxygine-framework STATIC ${SOURCES})
  158. set(OXYGINE_LIBRARY_DIRS
  159. ${OXYGINE_LIBRARY_DIRS}
  160. PARENT_SCOPE)
  161. set(OXYGINE_CORE_LIBS
  162. ${CORE_LIBS}
  163. PARENT_SCOPE)
  164. set(OXYGINE_DEFINITIONS
  165. ${OX_DEFINITIONS}
  166. PARENT_SCOPE)
  167. set(OXYGINE_INCLUDE_DIRS
  168. ${OXYGINE_INCLUDE_DIRS}
  169. PARENT_SCOPE)
  170. set(OXYGINE_JS_LIBRARIES
  171. ${OXYGINE_JS_LIBRARIES}
  172. PARENT_SCOPE)
  173. set(OXYGINE_CXX_FLAGS
  174. ${OXYGINE_CXX_FLAGS}
  175. PARENT_SCOPE)
  176. message(STATUS "SDL includes: ${SDL2_INCLUDE_DIRS}")
  177. message(STATUS "Libs: ${CORE_LIBS}")
  178. message(STATUS "Platform: ${PLATFORM}")
  179. set(CMAKE_INSTALL_PREFIX ../libs)
  180. install(TARGETS oxygine-framework CONFIGURATIONS Debug DESTINATION ./debug)
  181. install(TARGETS oxygine-framework CONFIGURATIONS Release DESTINATION ./release)