deps-windows.cmake 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. if (${DEPS_BITS} EQUAL 32)
  2. set(DEP_MSVC_GEN "Visual Studio 12")
  3. else ()
  4. set(DEP_MSVC_GEN "Visual Studio 12 Win64")
  5. endif ()
  6. if (${DEP_DEBUG})
  7. set(DEP_BOOST_DEBUG "debug")
  8. else ()
  9. set(DEP_BOOST_DEBUG "")
  10. endif ()
  11. ExternalProject_Add(dep_boost
  12. EXCLUDE_FROM_ALL 1
  13. URL "https://dl.bintray.com/boostorg/release/1.63.0/source/boost_1_63_0.tar.gz"
  14. URL_HASH SHA256=fe34a4e119798e10b8cc9e565b3b0284e9fd3977ec8a1b19586ad1dec397088b
  15. BUILD_IN_SOURCE 1
  16. CONFIGURE_COMMAND bootstrap.bat
  17. BUILD_COMMAND b2.exe
  18. -j "${NPROC}"
  19. --with-system
  20. --with-filesystem
  21. --with-thread
  22. --with-log
  23. --with-locale
  24. --with-regex
  25. "--prefix=${DESTDIR}/usr/local"
  26. "address-model=${DEPS_BITS}"
  27. toolset=msvc-12.0
  28. link=static
  29. variant=release
  30. threading=multi
  31. boost.locale.icu=off
  32. "${DEP_BOOST_DEBUG}" release install
  33. INSTALL_COMMAND "" # b2 does that already
  34. )
  35. ExternalProject_Add(dep_tbb
  36. EXCLUDE_FROM_ALL 1
  37. URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz"
  38. URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe
  39. CMAKE_GENERATOR "${DEP_MSVC_GEN}"
  40. CMAKE_ARGS
  41. -DCMAKE_DEBUG_POSTFIX=_debug
  42. -DTBB_BUILD_SHARED=OFF
  43. -DTBB_BUILD_TESTS=OFF
  44. "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
  45. BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
  46. INSTALL_COMMAND ""
  47. )
  48. if (${DEP_DEBUG})
  49. ExternalProject_Get_Property(dep_tbb BINARY_DIR)
  50. ExternalProject_Add_Step(dep_tbb build_debug
  51. DEPENDEES build
  52. DEPENDERS install
  53. COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
  54. WORKING_DIRECTORY "${BINARY_DIR}"
  55. )
  56. endif ()
  57. ExternalProject_Add(dep_gtest
  58. EXCLUDE_FROM_ALL 1
  59. URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz"
  60. URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
  61. CMAKE_GENERATOR "${DEP_MSVC_GEN}"
  62. CMAKE_ARGS
  63. -DBUILD_GMOCK=OFF
  64. -Dgtest_force_shared_crt=ON
  65. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
  66. "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
  67. BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
  68. INSTALL_COMMAND ""
  69. )
  70. if (${DEP_DEBUG})
  71. ExternalProject_Get_Property(dep_gtest BINARY_DIR)
  72. ExternalProject_Add_Step(dep_gtest build_debug
  73. DEPENDEES build
  74. DEPENDERS install
  75. COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
  76. WORKING_DIRECTORY "${BINARY_DIR}"
  77. )
  78. endif ()
  79. ExternalProject_Add(dep_nlopt
  80. EXCLUDE_FROM_ALL 1
  81. URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz"
  82. URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
  83. CMAKE_GENERATOR "${DEP_MSVC_GEN}"
  84. CMAKE_ARGS
  85. -DBUILD_SHARED_LIBS=OFF
  86. -DNLOPT_PYTHON=OFF
  87. -DNLOPT_OCTAVE=OFF
  88. -DNLOPT_MATLAB=OFF
  89. -DNLOPT_GUILE=OFF
  90. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
  91. -DCMAKE_DEBUG_POSTFIX=d
  92. "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
  93. BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
  94. INSTALL_COMMAND ""
  95. )
  96. if (${DEP_DEBUG})
  97. ExternalProject_Get_Property(dep_nlopt BINARY_DIR)
  98. ExternalProject_Add_Step(dep_nlopt build_debug
  99. DEPENDEES build
  100. DEPENDERS install
  101. COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
  102. WORKING_DIRECTORY "${BINARY_DIR}"
  103. )
  104. endif ()
  105. ExternalProject_Add(dep_zlib
  106. EXCLUDE_FROM_ALL 1
  107. URL "https://zlib.net/zlib-1.2.11.tar.xz"
  108. URL_HASH SHA256=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
  109. CMAKE_GENERATOR "${DEP_MSVC_GEN}"
  110. CMAKE_ARGS
  111. "-DINSTALL_BIN_DIR=${CMAKE_CURRENT_BINARY_DIR}\\fallout" # I found no better way of preventing zlib creating & installing DLLs :-/
  112. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
  113. "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
  114. BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
  115. INSTALL_COMMAND ""
  116. )
  117. if (${DEP_DEBUG})
  118. ExternalProject_Get_Property(dep_zlib BINARY_DIR)
  119. ExternalProject_Add_Step(dep_zlib build_debug
  120. DEPENDEES build
  121. DEPENDERS install
  122. COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
  123. WORKING_DIRECTORY "${BINARY_DIR}"
  124. )
  125. endif ()
  126. ExternalProject_Add(dep_libpng
  127. DEPENDS dep_zlib
  128. EXCLUDE_FROM_ALL 1
  129. URL "http://prdownloads.sourceforge.net/libpng/libpng-1.6.35.tar.xz?download"
  130. URL_HASH SHA256=23912ec8c9584917ed9b09c5023465d71709dce089be503c7867fec68a93bcd7
  131. CMAKE_GENERATOR "${DEP_MSVC_GEN}"
  132. CMAKE_ARGS
  133. -DPNG_SHARED=OFF
  134. -DPNG_TESTS=OFF
  135. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
  136. "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
  137. BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
  138. INSTALL_COMMAND ""
  139. )
  140. if (${DEP_DEBUG})
  141. ExternalProject_Get_Property(dep_libpng BINARY_DIR)
  142. ExternalProject_Add_Step(dep_libpng build_debug
  143. DEPENDEES build
  144. DEPENDERS install
  145. COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
  146. WORKING_DIRECTORY "${BINARY_DIR}"
  147. )
  148. endif ()
  149. if (${DEPS_BITS} EQUAL 32)
  150. set(DEP_LIBCURL_TARGET "x86")
  151. else ()
  152. set(DEP_LIBCURL_TARGET "x64")
  153. endif ()
  154. ExternalProject_Add(dep_libcurl
  155. EXCLUDE_FROM_ALL 1
  156. URL "https://curl.haxx.se/download/curl-7.58.0.tar.gz"
  157. URL_HASH SHA256=cc245bf9a1a42a45df491501d97d5593392a03f7b4f07b952793518d97666115
  158. BUILD_IN_SOURCE 1
  159. CONFIGURE_COMMAND ""
  160. BUILD_COMMAND cd winbuild && nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=no "MACHINE=${DEP_LIBCURL_TARGET}"
  161. INSTALL_COMMAND cd builds\\libcurl-*-release-*-winssl
  162. && "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
  163. && "${CMAKE_COMMAND}" -E copy_directory lib "${DESTDIR}\\usr\\local\\lib"
  164. )
  165. if (${DEP_DEBUG})
  166. ExternalProject_Get_Property(dep_libcurl SOURCE_DIR)
  167. ExternalProject_Add_Step(dep_libcurl build_debug
  168. DEPENDEES build
  169. DEPENDERS install
  170. COMMAND cd winbuild && nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=yes "MACHINE=${DEP_LIBCURL_TARGET}"
  171. WORKING_DIRECTORY "${SOURCE_DIR}"
  172. )
  173. ExternalProject_Add_Step(dep_libcurl install_debug
  174. DEPENDEES install
  175. COMMAND cd builds\\libcurl-*-debug-*-winssl
  176. && "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
  177. && "${CMAKE_COMMAND}" -E copy_directory lib "${DESTDIR}\\usr\\local\\lib"
  178. WORKING_DIRECTORY "${SOURCE_DIR}"
  179. )
  180. endif ()
  181. if (${DEPS_BITS} EQUAL 32)
  182. set(DEP_WXWIDGETS_TARGET "")
  183. set(DEP_WXWIDGETS_LIBDIR "vc_lib")
  184. else ()
  185. set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64")
  186. set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
  187. endif ()
  188. ExternalProject_Add(dep_wxwidgets
  189. EXCLUDE_FROM_ALL 1
  190. URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.1/wxWidgets-3.1.1.tar.bz2"
  191. URL_HASH SHA256=c925dfe17e8f8b09eb7ea9bfdcfcc13696a3e14e92750effd839f5e10726159e
  192. BUILD_IN_SOURCE 1
  193. PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}\\wxwidgets-pngprefix.h" src\\png\\pngprefix.h
  194. CONFIGURE_COMMAND ""
  195. BUILD_COMMAND cd build\\msw && nmake /f makefile.vc BUILD=release SHARED=0 UNICODE=1 USE_GUI=1 "${DEP_WXWIDGETS_TARGET}"
  196. INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
  197. && "${CMAKE_COMMAND}" -E copy_directory "lib\\${DEP_WXWIDGETS_LIBDIR}" "${DESTDIR}\\usr\\local\\lib\\${DEP_WXWIDGETS_LIBDIR}"
  198. )
  199. if (${DEP_DEBUG})
  200. ExternalProject_Get_Property(dep_wxwidgets SOURCE_DIR)
  201. ExternalProject_Add_Step(dep_wxwidgets build_debug
  202. DEPENDEES build
  203. DEPENDERS install
  204. COMMAND cd build\\msw && nmake /f makefile.vc BUILD=debug SHARED=0 UNICODE=1 USE_GUI=1 "${DEP_WXWIDGETS_TARGET}"
  205. WORKING_DIRECTORY "${SOURCE_DIR}"
  206. )
  207. endif ()