glowhollow

CMakeLists.txt

Aug 23rd, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.81 KB | None | 0 0
  1. make_minimum_required(VERSION 2.6)
  2.  
  3. IF(DEFINED CMAKE_BUILD_TYPE)
  4. SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo M$
  5. ELSE(DEFINED CMAKE_BUILD_TYPE)
  6. SET(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel")
  7. ENDIF(DEFINED CMAKE_BUILD_TYPE)
  8.  
  9. PROJECT(all)
  10.  
  11. IF(NOT DEFINED CRTMPSERVER_SOURCES_ROOT)
  12. SET(CRTMPSERVER_SOURCES_ROOT "../../sources")
  13. ENDIF(NOT DEFINED CRTMPSERVER_SOURCES_ROOT)
  14. GET_FILENAME_COMPONENT(CRTMPSERVER_SOURCES_ROOT "${CRTMPSERVER_SOURCES_ROOT}" ABSOLUTE)
  15. #MESSAGE("CRTMPSERVER_SOURCES_ROOT: ${CRTMPSERVER_SOURCES_ROOT}")
  16.  
  17. IF(NOT DEFINED CRTMPSERVER_CONSTANTS_ROOT)
  18. SET(CRTMPSERVER_CONSTANTS_ROOT "../../constants")
  19. ENDIF(NOT DEFINED CRTMPSERVER_CONSTANTS_ROOT)
  20. GET_FILENAME_COMPONENT(CRTMPSERVER_CONSTANTS_ROOT "${CRTMPSERVER_CONSTANTS_ROOT}" ABSOLUTE)
  21. #MESSAGE("CRTMPSERVER_CONSTANTS_ROOT: ${CRTMPSERVER_CONSTANTS_ROOT}")
  22.  
  23. IF(NOT DEFINED CRTMPSERVER_3RDPARTY_ROOT)
  24. SET(CRTMPSERVER_3RDPARTY_ROOT "../../3rdparty")
  25. ENDIF(NOT DEFINED CRTMPSERVER_3RDPARTY_ROOT)
  26. GET_FILENAME_COMPONENT(CRTMPSERVER_3RDPARTY_ROOT "${CRTMPSERVER_3RDPARTY_ROOT}" ABSOLUTE)
  27. #MESSAGE("CRTMPSERVER_3RDPARTY_ROOT: ${CRTMPSERVER_3RDPARTY_ROOT}")
  28.  
  29. SET(CRTMPSERVER_ROOT "lib/crtmpserver")
  30.  
  31. IF(DEFINED CRTMPSERVER_INSTALL_PREFIX)
  32. SET(CMAKE_INSTALL_PREFIX ${CRTMPSERVER_INSTALL_PREFIX})
  33. SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
  34. SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
  35. SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CRTMPSERVER_ROOT}")
  36. SET(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${CRTMPSERVER_ROOT}")
  37. ELSE(DEFINED CRTMPSERVER_INSTALL_PREFIX)
  38. SET(CMAKE_INSTALL_PREFIX /tmp/crtmpserver)
  39. ENDIF(DEFINED CRTMPSERVER_INSTALL_PREFIX)
  40.  
  41. #sample commit to trigger HUDSON
  42.  
  43. PROJECT(applications)
  44.  
  45. IF(NOT DEFINED CRTMPSERVER_SOURCES_ROOT)
  46. SET(CRTMPSERVER_ROOT "${CRTMPSERVER_ROOT}/ applications")
  47. SET(ACTIVE_APPS "")
  48. SET(ACTIVE_APPS_LIBS "")
  49. ADD_SUBDIRECTORY(flvplayback flvplayback)
  50. ADD_SUBDIRECTORY(appselector appselector)
  51. ENDIF (DEFINED CRTMPSERVER_INSTALL_PREFIX)
  52.  
  53. #detect additional libraries
  54. SET(OpenSSL_FIND_REQUIRED true)
  55. SET(CRYPTO_FIND_REQUIRED true)
  56. INCLUDE(cmake_find_modules/Find_openssl.cmake)
  57. INCLUDE(cmake_find_modules/Find_dl.cmake)
  58. INCLUDE(cmake_find_modules/pch_support.cmake)
  59. INCLUDE(CMakeDetermineSystem)
  60. INCLUDE(TestBigEndian)
  61.  
  62.  
  63. #setup the endianess if not already defined in toolchain file
  64. if(NOT DEFINED NO_ENDIANESS)
  65. TEST_BIG_ENDIAN(ENDIANESS)
  66. IF(ENDIANESS)
  67. ADD_DEFINITIONS(-DBIG_ENDIAN_BYTE_ALIGNED)
  68. ELSE(ENDIANESS)
  69. ADD_DEFINITIONS(-DLITTLE_ENDIAN_BYTE_ALIGNED)
  70. ENDIF(ENDIANESS)
  71.  
  72. ENDIF(NOT DEFINED NO_ENDIANESS)
  73.  
  74. #generate version.h
  75. FILE(WRITE ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "//THIS FILE IS GENERATED\n")
  76. EXECUTE_PROCESS(COMMAND date -u +%s OUTPUT_VARIABLE TEMP_VAL_RAW)
  77. STRING(STRIP "${TEMP_VAL_RAW}" TEMP_VAL)
  78. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILD_DATE ${TEMP_VAL}\n")
  79. EXECUTE_PROCESS(COMMAND svnversion -n ${CRTMPSERVER_SOURCES_ROOT} OUTPUT_VARIABLE TEMP_VAL)
  80. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILD_NUMBER \"${TEMP_VAL}\"\n")
  81. FILE(STRINGS "../../RELEASE_NUMBER" RELEASE_NUMBER)
  82. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_RELEASE_NUMBER \"${RELEASE_NUMBER}\"\n")
  83. FILE(STRINGS "../../CODE_NAME" CODE_NAME)
  84. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_CODE_NAME \"${CODE_NAME}\"\n")
  85. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILDER_OS_NAME \"$ENV{OS_NAME}\"\n")
  86. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILDER_OS_VERSION \"$ENV{OS_VERSION}\"\$
  87. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILDER_OS_ARCH \"$ENV{OS_ARCH}\"\n")
  88. EXECUTE_PROCESS(COMMAND uname -a OUTPUT_VARIABLE TEMP_VAL_RAW)
  89. STRING(STRIP "${TEMP_VAL_RAW}" TEMP_VAL)
  90. FILE(APPEND ${CRTMPSERVER_SOURCES_ROOT}/common/include/version.h "#define CRTMPSERVER_VERSION_BUILDER_OS_UNAME \"${TEMP_VAL}\"\n")
  91.  
  92.  
  93. #supported features
  94. ADD_DEFINITIONS(-DHAS_PROTOCOL_HTTP)
  95. ADD_DEFINITIONS(-DHAS_PROTOCOL_RTMP)
  96. ADD_DEFINITIONS(-DHAS_PROTOCOL_LIVEFLV)
  97. ADD_DEFINITIONS(-DHAS_PROTOCOL_RTP)
  98. ADD_DEFINITIONS(-DHAS_PROTOCOL_TS)
  99. ADD_DEFINITIONS(-DHAS_PROTOCOL_VAR)
  100. ADD_DEFINITIONS(-DHAS_PROTOCOL_CLI)
  101. ADD_DEFINITIONS(-DHAS_MEDIA_MP3)
  102. ADD_DEFINITIONS(-DHAS_MEDIA_MP4)
  103. ADD_DEFINITIONS(-DHAS_MEDIA_FLV)
  104. ADD_DEFINITIONS(-DHAS_MEDIA_TS)
  105. #ADD_DEFINITIONS(-DHAS_SYSLOG)
  106. ADD_DEFINITIONS(-DGLOBALLY_ACCOUNT_BYTES)
  107.  
  108. IF($ENV{COMPILE_STATIC} MATCHES "1")
  109. MESSAGE(STATUS "Compile static")
  110. ADD_DEFINITIONS(-DCOMPILE_STATIC)
  111. SET(LIB_TYPE STATIC)
  112. SET(LUA_LIBRARY_PATH "lua")
  113. SET(LUA_INCLUDE_PATH "${CRTMPSERVER_3RDPARTY_ROOT}/lua-dev")
  114. SET(TINYXML_LIBRARY_PATH "tinyxml")
  115. SET(TINYXML_INCLUDE_PATH "${CRTMPSERVER_3RDPARTY_ROOT}/tinyxml")
  116. # SET(TEMP_EXE_LINK_C_FLAGS "${CMAKE_EXE_LINK_STATIC_C_FLAGS}")
  117. # SET(TEMP_EXE_LINK_CXX_FLAGS "${CMAKE_EXE_LINK_STATIC_CXX_FLAGS}")
  118. # SET(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS ${TEMP_EXE_LINK_C_FLAGS})
  119. # SET(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS ${TEMP_EXE_LINK_CXX_FLAGS})
  120. # SET(CMAKE_EXE_LINK_STATIC_C_FLAGS ${TEMP_EXE_LINK_C_FLAGS})
  121. # SET(CMAKE_EXE_LINK_STATIC_CXX_FLAGS ${TEMP_EXE_LINK_CXX_FLAGS})
  122. ELSE($ENV{COMPILE_STATIC} MATCHES "1")
  123. MESSAGE(STATUS "Compile dynamic")
  124. SET(LIB_TYPE SHARED)
  125.  
  126. INCLUDE(cmake_find_modules/Find_lua.cmake)
  127. IF(NOT LUA_FOUND)
  128. ADD_SUBDIRECTORY(lua lua)
  129. ENDIF(NOT LUA_FOUND)
  130.  
  131. INCLUDE(cmake_find_modules/Find_tinyxml.cmake)
  132. IF(NOT TINYXML_FOUND)
  133. ADD_SUBDIRECTORY(tinyxml tinyxml)
  134. ENDIF(NOT TINYXML_FOUND)
  135. ENDIF($ENV{COMPILE_STATIC} MATCHES "1")
  136.  
  137. #disable file/line/function inside logging
  138. #ADD_DEFINITIONS(-DFILE_OVERRIDE)
  139. #ADD_DEFINITIONS(-DLINE_OVERRIDE)
  140. #ADD_DEFINITIONS(-DFUNC_OVERRIDE)
  141. #ADD_DEFINITIONS(-DASSERT_OVERRIDE)
  142.  
  143. ADD_DEFINITIONS(-DHAS_LUA)
  144.  
  145. #INCLUDE(cmake_find_modules/Find_v8.cmake)
  146. #IF(V8_FOUND)
  147. # ADD_DEFINITIONS(-DHAS_V8)
  148. #ENDIF(V8_FOUND)
  149.  
  150. #memory pool
  151. #ADD_DEFINITIONS(-DUSE_MEM_POOL)
  152. #ADD_DEFINITIONS(-DDEBUG_MEM_POOL)
  153.  
  154. SET(GENERIC_FLAGS "-Wall -Werror")
  155.  
  156. #add 64 bit support for 32 but platforms
  157. ADD_DEFINITIONS(-D__USE_FILE_OFFSET64)
  158. ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
  159. MESSAGE(STATUS "We have a ${CMAKE_SYSTEM} system")
  160. IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
  161. SET(GENERIC_FLAGS "${GENERIC_FLAGS} -fPIC -fdata-sections -ffunction-sections")
  162. IF(DEFINED SOCKREACTOR)
  163. ADD_DEFINITIONS(-D${SOCKREACTOR})
  164. ELSE(DEFINED SOCKREACTOR)
  165. ADD_DEFINITIONS(-DNET_KQUEUE)
  166. ENDIF(DEFINED SOCKREACTOR)
  167. STRING(TOLOWER ${CMAKE_SYSTEM} TEMP_CMAKE_SYSTEM)
  168. STRING(REGEX MATCH "kfreebsd*" TEMP_CMAKE_SYSTEM_MATCH ${TEMP_CMAKE_SYSTEM})
  169. IF(TEMP_CMAKE_SYSTEM_MATCH MATCHES "kfreebsd")
  170. ADD_DEFINITIONS(-DDFREEBSD)
  171. ELSE(TEMP_CMAKE_SYSTEM_MATCH MATCHES "kfreebsd")
  172. ADD_DEFINITIONS(-DFREEBSD)
  173. INCLUDE(cmake_find_modules/Find_execinfo.cmake)
  174. ENDIF(TEMP_CMAKE_SYSTEM_MATCH MATCHES "kfreebsd")
  175. SET(CMAKE_EXE_LINK_STATIC_C_FLAGS "${CMAKE_EXE_LINK_STATIC_C_FLAGS} -Wl,--gc-sections")
  176. SET(CMAKE_EXE_LINK_STATIC_CXX_FLAGS "${CMAKE_EXE_LINK_STATIC_CXX_FLAGS} -Wl,--gc-sections")
  177. ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  178. SET(GENERIC_FLAGS "${GENERIC_FLAGS} -mmacosx-version-min=10.5")
  179. ADD_DEFINITIONS(-DOSX)
  180. IF(DEFINED SOCKREACTOR)
  181. ADD_DEFINITIONS(-D${SOCKREACTOR})
  182. ELSE(DEFINED SOCKREACTOR)
  183. ADD_DEFINITIONS(-DNET_KQUEUE)
  184. ENDIF(DEFINED SOCKREACTOR)
  185. ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
  186. SET(GENERIC_FLAGS "${GENERIC_FLAGS} -fPIC -fdata-sections -ffunction-sections")
  187. ADD_DEFINITIONS(-DLINUX)
  188. IF(DEFINED SOCKREACTOR)
  189. ADD_DEFINITIONS(-D${SOCKREACTOR})
  190. ELSE(DEFINED SOCKREACTOR)
  191. ADD_DEFINITIONS(-DNET_EPOLL)
  192. ENDIF(DEFINED SOCKREACTOR)
  193. SET(SOCKET_LIB "-lrt")
  194. SET(CMAKE_EXE_LINK_STATIC_C_FLAGS "${CMAKE_EXE_LINK_STATIC_C_FLAGS} -Wl,--gc-sections")
  195. SET(CMAKE_EXE_LINK_STATIC_CXX_FLAGS "${CMAKE_EXE_LINK_STATIC_CXX_FLAGS} -Wl,--gc-sections")
  196. ELSEIF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
  197. SET(GENERIC_FLAGS "${GENERIC_FLAGS} -fPIC -fdata-sections -ffunction-sections")
  198. ADD_DEFINITIONS(-DSOLARIS)
  199. ADD_DEFINITIONS(-DDONT_DEFINE_HTONLL)
  200. ADD_DEFINITIONS(-DNET_SELECT)
  201. SET(SOCKET_LIB "-lsocket -lnsl")
  202. SET(CMAKE_EXE_LINK_STATIC_C_FLAGS "${CMAKE_EXE_LINK_STATIC_C_FLAGS} -Wl,--gc-sections")
  203. SET(CMAKE_EXE_LINK_STATIC_CXX_FLAGS "${CMAKE_EXE_LINK_STATIC_CXX_FLAGS} -Wl,--gc-sections")
  204. ELSE(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
  205. MESSAGE(FATAL_ERROR "Platform ${CMAKE_SYSTEM_NAME} not supported yet")
  206. ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
  207.  
  208. #debug/release
  209. IF($ENV{COMPILE_STATIC} MATCHES "1")
  210. SET(FVISIBILITY "-fvisibility=hidden")
  211. ELSE($ENV{COMPILE_STATIC} MATCHES "1")
  212. SET(FVISIBILITY "")
  213. ENDIF($ENV{COMPILE_STATIC} MATCHES "1")
  214.  
  215. GET_FILENAME_COMPONENT(ABSOLUTE_ROOT_PATH ${CRTMPSERVER_SOURCES_ROOT} ABSOLUTE)
  216. STRING(LENGTH ${ABSOLUTE_ROOT_PATH} ABSOLUTE_ROOT_PATH_LENGTH)
  217. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERIC_FLAGS} -fno-rtti")
  218. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERIC_FLAGS}")
  219. SET(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DWITH_SANITY_INPUT_BUFFER -DVALIDATE_FROMAT_SPECIFIERS -Wformat=2")
  220. SET(CMAKE_CXX_FLAGS_RELEASE "-g -O3 ${FVISIBILITY} -fno-strict-aliasing -DSHORT_PATH_IN_LOGGER=${ABSOLUTE_ROOT_PATH_LENG$
  221. #SET(CMAKE_VERBOSE_MAKEFILE TRUE)
  222.  
  223. #generate defines.h
  224. IF (EXISTS ${CRTMPSERVER_SOURCES_ROOT}/common/include/defines.h)
  225. MESSAGE(STATUS "Defines are in place")
  226. ELSE (EXISTS ${CRTMPSERVER_SOURCES_ROOT}/common/include/defines.h)
  227. MESSAGE(STATUS "We need to rebuild the defines")
  228. EXECUTE_PROCESS(COMMAND lua constants.lua cpp ${CRTMPSERVER_SOURCES_ROOT}/common/include/defines.h WORKING_DIREC$
  229. ENDIF(EXISTS ${CRTMPSERVER_SOURCES_ROOT}/common/include/defines.h)
  230.  
  231.  
  232. IF($ENV{COMPILE_STATIC} MATCHES "1")
  233. ADD_SUBDIRECTORY(lua lua)
  234. ADD_SUBDIRECTORY(tinyxml tinyxml)
  235. ENDIF($ENV{COMPILE_STATIC} MATCHES "1")
  236. ADD_SUBDIRECTORY(common common)
  237. ADD_SUBDIRECTORY(thelib thelib)
  238. ADD_SUBDIRECTORY(applications applications)
  239. ADD_SUBDIRECTORY(crtmpserver crtmpserver)
  240. ADD_SUBDIRECTORY(tests)
Advertisement
Add Comment
Please, Sign In to add comment