tars-tools.cmake 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
  2. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
  3. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  4. if(WIN32)
  5. set(TARS2CPP "c:/tars/cpp/tools/tars2cpp.exe")
  6. set(TARSMERGE "c:/tars/cpp/tools/tarsmerge")
  7. set(TARS_PATH "c:/tars/cpp")
  8. else()
  9. set(TARS2CPP "/usr/local/tars/cpp/tools/tars2cpp")
  10. set(TARSMERGE "/usr/local/tars/cpp/tools/tarsmerge")
  11. set(TARS_PATH "/usr/local/tars/cpp")
  12. endif()
  13. set(TARS_INC "${TARS_PATH}/include")
  14. set(TARS_LIB_DIR "${TARS_PATH}/lib" )
  15. if(WIN32)
  16. set (LIB_TARS_SERVANT "${TARS_LIB_DIR}/tarsservant.lib")
  17. set (LIB_TARS_UTIL "${TARS_LIB_DIR}/tarsutil.lib")
  18. else()
  19. set (LIB_TARS_SERVANT "${TARS_LIB_DIR}/libtarsservant.a")
  20. set (LIB_TARS_UTIL "${TARS_LIB_DIR}/libtarsutil.a")
  21. endif()
  22. include_directories(${TARS_INC})
  23. link_directories(${TARS_LIB_DIR})
  24. include_directories(${TARS_PATH}/thirdparty/include/mysql)
  25. if(WIN32)
  26. set(LIB_SSL "libssl")
  27. set(LIB_CRYPTO "libcrypto")
  28. set(LIB_MYSQL "libmysql")
  29. set(LIB_HTTP2 "nghttp2_static")
  30. else()
  31. set(LIB_SSL "ssl")
  32. set(LIB_CRYPTO "crypto")
  33. set(LIB_MYSQL "mysqlclient")
  34. set(LIB_HTTP2 "nghttp2_static")
  35. endif ()
  36. set(CMAKE_BUILD_TYPE "Release" CACHE STRING "set build type to release default")
  37. IF (CMAKE_BUILD_TYPE STREQUAL "")
  38. set(CMAKE_BUILD_TYPE "Release")
  39. ENDIF ()
  40. set(TARS_WEB_HOST "" CACHE STRING "set web host")
  41. IF (TARS_WEB_HOST STREQUAL "")
  42. set(TARS_WEB_HOST "http://web.tars.com")
  43. ENDIF ()
  44. set(TARS_TOKEN "" CACHE STRING "set web token")
  45. set(PLATFORM)
  46. IF (UNIX)
  47. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
  48. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++11 -Wno-deprecated -fno-strict-aliasing -Wno-overloaded-virtual")
  49. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-builtin-macro-redefined -D__FILE__='\"$(notdir $(abspath $<))\"'")
  50. set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -Wall -g")
  51. set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O2 -Wall -fno-strict-aliasing")
  52. set(PLATFORM "linux")
  53. IF (APPLE)
  54. set(PLATFORM "mac")
  55. SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
  56. SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
  57. SET(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
  58. SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
  59. ENDIF (APPLE)
  60. ELSEIF (WIN32)
  61. set(PLATFORM "window")
  62. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4101 /wd4244 /wd4996 /wd4091 /wd4503 /wd4819 /wd4200 /wd4800 /wd4267")
  63. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj ")
  64. ELSE ()
  65. MESSAGE(STATUS "================ ERROR: This platform is unsupported!!! ================")
  66. ENDIF (UNIX)
  67. set(TARS_RELEASE "${PROJECT_BINARY_DIR}/run-release.cmake")
  68. FILE(WRITE ${TARS_RELEASE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo release all)\n")
  69. set(TARS_TAR "${PROJECT_BINARY_DIR}/run-tar.cmake")
  70. FILE(WRITE ${TARS_TAR} "")
  71. ####################################################################
  72. set(TARS_UPLOAD "${PROJECT_BINARY_DIR}/run-upload.cmake")
  73. set(TARS_UPLOAD_TARS "${PROJECT_BINARY_DIR}/run-upload-tars.cmake")
  74. FILE(WRITE ${TARS_UPLOAD} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo upload all)\n")
  75. FILE(WRITE ${TARS_UPLOAD_TARS} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo upload tars all)\n")
  76. ####################################################################
  77. # k8s
  78. set(TARS_K8S_WEB_HOST "" CACHE STRING "set k8s web host")
  79. IF (TARS_K8S_WEB_HOST STREQUAL "")
  80. set(TARS_K8S_WEB_HOST "http://tars-tarsweb:3000")
  81. ENDIF ()
  82. set(TARS_K8S_TOKEN "" CACHE STRING "set k8s web token")
  83. set(TARS_K8S_BASE_IMAGE "" CACHE STRING "set tars k8s base image")
  84. IF (TARS_K8S_BASE_IMAGE STREQUAL "")
  85. set(TARS_K8S_BASE_IMAGE "tarscloud/tars.cppbase")
  86. ENDIF ()
  87. set(TARS_K8S_UPLOAD "${CMAKE_BINARY_DIR}/run-k8s-upload.cmake")
  88. set(TARS_K8S_UPLOAD_TARS "${CMAKE_BINARY_DIR}/run-k8s-upload-tars.cmake")
  89. FILE(WRITE ${TARS_K8S_UPLOAD} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo upload k8s all)\n")
  90. FILE(WRITE ${TARS_K8S_UPLOAD_TARS} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo upload k8s tars all)\n")
  91. ##########################################################################
  92. function(gen_tars TARGET)
  93. file(GLOB_RECURSE TARS_INPUT *.tars)
  94. set(OUT_TARS_H_LIST)
  95. if (TARS_INPUT)
  96. foreach(TARS_FILE ${TARS_INPUT})
  97. get_filename_component(TARS_NAME ${TARS_FILE} NAME_WE)
  98. get_filename_component(TARS_PATH ${TARS_FILE} PATH)
  99. set(CUR_TARS_GEN ${TARS_PATH}/${TARS_NAME}.h)
  100. add_custom_command(
  101. OUTPUT ${CUR_TARS_GEN}
  102. WORKING_DIRECTORY ${TARS_PATH}
  103. COMMAND ${TARS2CPP} ${TARS_TOOL_FLAG} ${TARS_FILE}
  104. COMMENT "${TARS2CPP} ${TARS_TOOL_FLAG} ${TARS_FILE}"
  105. DEPENDS ${TARS2CPP} ${TARS_FILE}
  106. )
  107. list(APPEND OUT_TARS_H_LIST ${CUR_TARS_GEN})
  108. endforeach()
  109. add_custom_target(${TARGET} ALL DEPENDS ${OUT_TARS_H_LIST})
  110. set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${OUT_TARS_H_LIST}")
  111. endif()
  112. endfunction()
  113. #生成带tars文件的可执行程序
  114. macro(gen_lib APP TARGET)
  115. include_directories(${PROJECT_SOURCE_DIR})
  116. FILE(GLOB_RECURSE SRC_FILES "*.cc" "*.cpp" "*.c")
  117. add_library(${TARGET} ${SRC_FILES})
  118. file(GLOB_RECURSE TARS_INPUT *.tars)
  119. if(TARS_INPUT)
  120. gen_tars(tars-${TARGET})
  121. add_dependencies(${TARGET} tars-${TARGET})
  122. endif()
  123. #make release #########################################################################
  124. SET(RUN_RELEASE_COMMAND_FILE "${PROJECT_BINARY_DIR}/run-release-${TARGET}.cmake")
  125. if (TARS_INPUT)
  126. if(WIN32)
  127. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory c:/tarsproto/protocol/${APP}/${TARGET})\n")
  128. elseif(APPLE)
  129. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  130. elseif(UNIX)
  131. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory /home/tarsproto/${APP}/${TARGET})\n")
  132. endif()
  133. foreach(TARS_FILE ${TARS_INPUT})
  134. get_filename_component(TARS_NAME ${TARS_FILE} NAME_WE)
  135. get_filename_component(TARS_PATH ${TARS_FILE} PATH)
  136. set(CUR_TARS_GEN ${TARS_PATH}/${TARS_NAME}.h)
  137. if(WIN32)
  138. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  139. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  140. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  141. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  142. elseif(APPLE)
  143. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  144. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  145. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  146. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  147. elseif(UNIX)
  148. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} /home/tarsproto/${APP}/${TARGET})\n")
  149. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} /home/tarsproto/${APP}/${TARGET})\n")
  150. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} /home/tarsproto/${APP}/${TARGET})\n")
  151. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} /home/tarsproto/${APP}/${TARGET})\n")
  152. endif()
  153. endforeach(TARS_FILE ${TARS_INPUT})
  154. add_custom_target(${TARGET}-release
  155. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  156. DEPENDS ${TARGET}
  157. COMMAND ${CMAKE_COMMAND} -P ${RUN_RELEASE_COMMAND_FILE}
  158. COMMENT "call ${RUN_RELEASE_COMMAND_FILE}")
  159. FILE(APPEND ${TARS_RELEASE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -P ${RUN_RELEASE_COMMAND_FILE})\n")
  160. endif ()
  161. endmacro()
  162. #生成带tars文件的可执行程序
  163. macro(gen_server APP TARGET)
  164. set(UPLOAD_FILES ${ARGN})
  165. include_directories(${PROJECT_SOURCE_DIR})
  166. FILE(GLOB_RECURSE SRC_FILES "*.cc" "*.cpp" "*.c")
  167. add_executable(${TARGET} ${SRC_FILES})
  168. file(GLOB_RECURSE TARS_INPUT *.tars)
  169. if(TARS_INPUT)
  170. gen_tars(tars-${TARGET})
  171. add_dependencies(${TARGET} tars-${TARGET})
  172. endif()
  173. target_link_libraries(${TARGET} ${LIB_TARS_SERVANT} ${LIB_TARS_UTIL})
  174. if(TARS_MYSQL)
  175. target_link_libraries(${TARGET} ${LIB_MYSQL})
  176. endif()
  177. if(TARS_SSL)
  178. target_link_libraries(${TARGET} ${LIB_SSL} ${LIB_CRYPTO})
  179. if(WIN32)
  180. target_link_libraries(${TARGET} Crypt32)
  181. endif()
  182. endif()
  183. if(TARS_HTTP2)
  184. target_link_libraries(${TARGET} ${LIB_HTTP2})
  185. endif()
  186. if(APPLE)
  187. target_link_libraries(${TARGET} iconv)
  188. endif()
  189. IF (UNIX)
  190. target_link_libraries(${TARGET} pthread dl)
  191. ENDIF ()
  192. #make tar #########################################################################
  193. #must create tmp directory, avoid linux cmake conflict!
  194. SET(RUN_TAR_COMMAND_FILE "${CMAKE_BINARY_DIR}/run-tar-${TARGET}.cmake")
  195. FILE(WRITE ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo mkdir -p ${CMAKE_BINARY_DIR}/tmp/${TARGET})\n")
  196. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo rm -rf ${CMAKE_BINARY_DIR}/tmp/${TARGET})\n")
  197. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/tmp/${TARGET})\n")
  198. SET(TARGET_EXE_NAME ${TARGET})
  199. IF(WIN32)
  200. SET(TARGET_EXE_NAME "${TARGET_EXE_NAME}.exe")
  201. ENDIF()
  202. IF(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
  203. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo copy bin/${CMAKE_BUILD_TYPE}/${TARGET_EXE_NAME} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  204. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy bin/${CMAKE_BUILD_TYPE}/${TARGET_EXE_NAME} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  205. ELSE()
  206. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo copy bin/${TARGET_EXE_NAME} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  207. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy bin/${TARGET_EXE_NAME} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  208. ENDIF()
  209. foreach(UPLOAD ${UPLOAD_FILES})
  210. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo copy ${UPLOAD} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  211. IF(WIN32)
  212. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${UPLOAD} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  213. ELSE()
  214. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${UPLOAD} ${CMAKE_BINARY_DIR}/tmp/${TARGET}/)\n")
  215. ENDIF()
  216. endforeach(UPLOAD ${UPLOAD_FILES})
  217. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/tmp/ tar czfv ${TARGET}.tgz ${TARGET})\n")
  218. FILE(APPEND ${RUN_TAR_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/tmp/${TARGET}.tgz ${CMAKE_BINARY_DIR}/${TARGET}.tgz)\n")
  219. add_custom_command(OUTPUT ${TARGET}.tgz
  220. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  221. COMMAND ${CMAKE_COMMAND} -P ${RUN_TAR_COMMAND_FILE}
  222. COMMENT "call ${RUN_TAR_COMMAND_FILE}")
  223. add_custom_target(${TARGET}-tar DEPENDS ${TARGET}.tgz ${TARGET})
  224. FILE(APPEND ${TARS_TAR} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -P ${RUN_TAR_COMMAND_FILE})\n")
  225. #make upload #########################################################################
  226. SET(RUN_UPLOAD_COMMAND_FILE "${PROJECT_BINARY_DIR}/run-upload-${TARGET}.cmake")
  227. IF(WIN32)
  228. FILE(WRITE ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_WEB_HOST}/api/upload_and_publish -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fcomment=developer-auto-upload)\n")
  229. FILE(APPEND ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${TARS_PATH}/thirdparty/bin/curl.exe ${TARS_WEB_HOST}/api/upload_and_publish?ticket=${TARS_TOKEN} -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fcomment=developer-auto-upload)\n")
  230. FILE(APPEND ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND -E echo \n---------------------------------------------------------------------------)\n")
  231. ELSE()
  232. FILE(WRITE ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_WEB_HOST}/api/upload_and_publish -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fcomment=developer-auto-upload)\n")
  233. FILE(APPEND ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND curl ${TARS_WEB_HOST}/api/upload_and_publish?ticket=${TARS_TOKEN} -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fcomment=developer-auto-upload)\n")
  234. FILE(APPEND ${RUN_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo \n---------------------------------------------------------------------------)\n")
  235. ENDIF()
  236. #执行命令
  237. add_custom_target(${TARGET}-upload
  238. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  239. DEPENDS ${TARGET}-tar
  240. COMMAND ${CMAKE_COMMAND} -P ${RUN_UPLOAD_COMMAND_FILE}
  241. COMMENT "upload ${APP}.${TARGET}.tgz and publish...")
  242. FILE(APPEND ${TARS_UPLOAD} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -P ${RUN_UPLOAD_COMMAND_FILE})\n")
  243. #make upload-tars #########################################################################
  244. if (TARS_INPUT)
  245. SET(RUN_UPLOAD_TARS_COMMAND_FILE "${PROJECT_BINARY_DIR}/run-upload-tars-${TARGET}.cmake")
  246. IF(WIN32)
  247. FILE(WRITE ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_WEB_HOST}/api/upload_tars_file -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  248. FILE(APPEND ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${TARS_PATH}/thirdparty/bin/curl.exe ${TARS_WEB_HOST}/api/upload_tars_file?ticket=${TARS_TOKEN} -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  249. FILE(APPEND ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND -E echo \n---------------------------------------------------------------------------)\n")
  250. ELSE()
  251. FILE(WRITE ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_WEB_HOST}/api/upload_tars_file -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  252. FILE(APPEND ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND curl ${TARS_WEB_HOST}/api/upload_tars_file?ticket=${TARS_TOKEN} -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  253. FILE(APPEND ${RUN_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo \n---------------------------------------------------------------------------)\n")
  254. ENDIF()
  255. add_custom_target(${TARGET}-tars-merge
  256. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  257. DEPENDS ${TARGET}-tar
  258. COMMAND ${TARSMERGE} ${TARS_INPUT} --out=${CMAKE_BINARY_DIR}/${TARGET}-merge.tars
  259. COMMENT "merge tars")
  260. #执行命令
  261. add_custom_target(${TARGET}-upload-tars
  262. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  263. DEPENDS ${TARGET}-tars-merge
  264. COMMAND ${CMAKE_COMMAND} -P ${RUN_UPLOAD_TARS_COMMAND_FILE}
  265. COMMENT "call ${RUN_UPLOAD_TARS_COMMAND_FILE}")
  266. FILE(APPEND ${TARS_UPLOAD_TARS} "EXECUTE_PROCESS(COMMAND cmake -P ${RUN_UPLOAD_TARS_COMMAND_FILE})\n")
  267. endif ()
  268. #make k8s upload #########################################################################
  269. SET(RUN_K8S_UPLOAD_COMMAND_FILE "${CMAKE_BINARY_DIR}/run-k8s-upload-${TARGET}.cmake")
  270. FILE(WRITE ${RUN_K8S_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_K8S_WEB_HOST}/pages/k8s/api/upload_and_publish -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fserver_type=cpp -Fbase_image=${TARS_K8S_BASE_IMAGE} -Fcomment=developer-auto-upload)\n")
  271. FILE(APPEND ${RUN_K8S_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND curl ${TARS_K8S_WEB_HOST}/pages/k8s/api/upload_and_publish?ticket=${TARS_K8S_TOKEN} -Fsuse=@${TARGET}.tgz -Fapplication=${APP} -Fmodule_name=${TARGET} -Fserver_type=cpp -Fbase_image=${TARS_K8S_BASE_IMAGE} -Fcomment=developer-auto-upload)\n")
  272. FILE(APPEND ${RUN_K8S_UPLOAD_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo \n---------------------------------------------------------------------------)\n")
  273. #执行命令
  274. add_custom_target(${TARGET}-k8s-upload
  275. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  276. DEPENDS ${TARGET}-tar
  277. COMMAND cmake -P ${RUN_K8S_UPLOAD_COMMAND_FILE}
  278. COMMENT "call ${RUN_K8S_UPLOAD_COMMAND_FILE}")
  279. FILE(APPEND ${TARS_K8S_UPLOAD} "EXECUTE_PROCESS(COMMAND cmake -P ${RUN_K8S_UPLOAD_COMMAND_FILE})\n")
  280. #make upload-k8s-tars #########################################################################
  281. if (TARS_INPUT)
  282. SET(RUN_K8S_UPLOAD_TARS_COMMAND_FILE "${CMAKE_BINARY_DIR}/run-k8s-upload-tars-${TARGET}.cmake")
  283. FILE(WRITE ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo ${TARS_K8S_WEB_HOST}/k8s/api/upload_tars_file -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  284. FILE(APPEND ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND curl ${TARS_K8S_WEB_HOST}/k8s/api/upload_tars_file?ticket=${TARS_K8S_TOKEN} -Fsuse=@${TARGET}-merge.tars -Fapplication=${APP} -Fserver_name=${TARGET})\n")
  285. FILE(APPEND ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo \n---------------------------------------------------------------------------)\n")
  286. #执行命令
  287. add_custom_target(${TARGET}-k8s-upload-tars
  288. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  289. DEPENDS ${TARGET}-tars-merge
  290. COMMAND cmake -P ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE}
  291. COMMENT "call ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE}")
  292. FILE(APPEND ${TARS_K8S_UPLOAD_TARS} "EXECUTE_PROCESS(COMMAND cmake -P ${RUN_K8S_UPLOAD_TARS_COMMAND_FILE})\n")
  293. endif ()
  294. #make release #########################################################################
  295. SET(RUN_RELEASE_COMMAND_FILE "${PROJECT_BINARY_DIR}/run-release-${TARGET}.cmake")
  296. if (TARS_INPUT)
  297. if(WIN32)
  298. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory c:/tarsproto/protocol/${APP}/${TARGET})\n")
  299. elseif(APPLE)
  300. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  301. elseif(UNIX)
  302. FILE(WRITE ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory /home/tarsproto/${APP}/${TARGET})\n")
  303. endif()
  304. foreach(TARS_FILE ${TARS_INPUT})
  305. get_filename_component(TARS_NAME ${TARS_FILE} NAME_WE)
  306. get_filename_component(TARS_PATH ${TARS_FILE} PATH)
  307. set(CUR_TARS_GEN ${TARS_PATH}/${TARS_NAME}.h)
  308. if(WIN32)
  309. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  310. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  311. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  312. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} c:/tarsproto/protocol/${APP}/${TARGET})\n")
  313. elseif(APPLE)
  314. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  315. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  316. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  317. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} $ENV{HOME}/tarsproto/protocol/${APP}/${TARGET})\n")
  318. elseif(UNIX)
  319. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${CUR_TARS_GEN} /home/tarsproto/${APP}/${TARGET})\n")
  320. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${CUR_TARS_GEN} /home/tarsproto/${APP}/${TARGET})\n")
  321. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo cp -rf ${TARS_FILE} /home/tarsproto/${APP}/${TARGET})\n")
  322. FILE(APPEND ${RUN_RELEASE_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy ${TARS_FILE} /home/tarsproto/${APP}/${TARGET})\n")
  323. endif()
  324. endforeach(TARS_FILE ${TARS_INPUT})
  325. add_custom_target(${TARGET}-release
  326. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  327. DEPENDS ${TARGET}
  328. COMMAND ${CMAKE_COMMAND} -P ${RUN_RELEASE_COMMAND_FILE}
  329. COMMENT "call ${RUN_RELEASE_COMMAND_FILE}")
  330. FILE(APPEND ${TARS_RELEASE} "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -P ${RUN_RELEASE_COMMAND_FILE})\n")
  331. endif ()
  332. endmacro()
  333. if(NOT TARGET upload)
  334. add_custom_target(upload
  335. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  336. COMMAND ${CMAKE_COMMAND} -P ${TARS_UPLOAD})
  337. endif()
  338. if(NOT TARGET release)
  339. add_custom_target(release
  340. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  341. COMMAND ${CMAKE_COMMAND} -P ${TARS_RELEASE})
  342. endif()
  343. if(NOT TARGET upload-tars)
  344. add_custom_target(upload-tars
  345. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  346. COMMAND ${CMAKE_COMMAND} -P ${TARS_UPLOAD_TARS})
  347. endif()
  348. if(NOT TARGET tar)
  349. add_custom_target(tar
  350. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  351. COMMAND ${CMAKE_COMMAND} -P ${TARS_TAR})
  352. endif()
  353. if(NOT TARGET k8s-upload)
  354. add_custom_target(k8s-upload
  355. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  356. COMMAND cmake -P ${TARS_K8S_UPLOAD})
  357. endif()
  358. if(NOT TARGET k8s-upload-tars)
  359. add_custom_target(k8s-upload-tars
  360. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
  361. COMMAND cmake -P ${TARS_K8S_UPLOAD_TARS})
  362. endif()
  363. message("-------------------------------------------------------------------------------------")
  364. message("CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}")
  365. message("CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
  366. message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
  367. message("CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
  368. message("PLATFORM: ${PLATFORM}")
  369. message("TARS2CPP: ${TARS2CPP}")
  370. message("TARSMERGE: ${TARSMERGE}")
  371. message("TARS_MYSQL: ${TARS_MYSQL}")
  372. message("TARS_HTTP2: ${TARS_HTTP2}")
  373. message("TARS_SSL: ${TARS_SSL}")
  374. message("TARS_WEB_HOST: ${TARS_WEB_HOST}")
  375. message("TARS_TOKEN: ${TARS_TOKEN}")
  376. message("TARS_K8S_WEB_HOST: ${TARS_K8S_WEB_HOST}")
  377. message("TARS_K8S_BASE_IMAGE: ${TARS_K8S_BASE_IMAGE}")
  378. message("TARS_K8S_TOKEN: ${TARS_K8S_TOKEN}")
  379. message("-------------------------------------------------------------------------------------")