@@ -13,13 +13,30 @@ else()
1313 set (SPVM_DYNAMIC_LINK "" )
1414endif ()
1515
16- if (UNIX )
16+ if (UNIX AND LLVM_BUILD)
17+ ExternalProject_Add(spvm-project
18+ GIT_REPOSITORY https://github.com/alliedmodders/sourcepawn.git
19+ GIT_TAG d7d94319a58e7d800a5e095000efe8ba64bd6c86
20+ GIT_PROGRESS ON
21+ SOURCE_DIR ${SPVM_SOURCE_DIR}
22+ BINARY_DIR ${SPVM_BINARY_DIR}
23+ DEPENDS ambuild-project
24+ DEPENDS ${LLVM_LIBS}
25+ PATCH_COMMAND ${BASH_EXEC} ${CMAKE_SOURCE_DIR} /patches/spvm_patch.sh ${PATCH_EXEC} ${SPVM_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
26+ COMMAND sed -i "s|<LLD>|${LLD} |g" ${SPVM_SOURCE_DIR} /AMBuildScript
27+ COMMAND sed -i "s|<LLVM_LIBS_DIR>|${LLVM_LIBS_DIR} |g" ${SPVM_SOURCE_DIR} /AMBuildScript
28+ CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${Python3_EXECUTABLE} ${SPVM_SOURCE_DIR} /configure.py --enable-optimize --build =core --targets=x86 ${SPVM_DYNAMIC_LINK}
29+ BUILD_COMMAND ${AMBUILD_EXEC}
30+ INSTALL_COMMAND ""
31+ )
32+ elseif (UNIX )
1733 ExternalProject_Add(spvm-project
1834 GIT_REPOSITORY https://github.com/alliedmodders/sourcepawn.git
1935 GIT_TAG d7d94319a58e7d800a5e095000efe8ba64bd6c86
2036 GIT_PROGRESS ON
2137 SOURCE_DIR ${SPVM_SOURCE_DIR}
2238 BINARY_DIR ${SPVM_BINARY_DIR}
39+ DEPENDS ambuild-project
2340 PATCH_COMMAND ${BASH_EXEC} ${CMAKE_SOURCE_DIR} /patches/spvm_patch.sh ${PATCH_EXEC} ${SPVM_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
2441 COMMAND sed -i "s|<LLD>|${LLD} |g" ${SPVM_SOURCE_DIR} /AMBuildScript
2542 COMMAND sed -i "s|<LLVM_LIBS_DIR>|${LLVM_LIBS_DIR} |g" ${SPVM_SOURCE_DIR} /AMBuildScript
@@ -28,10 +45,50 @@ if (UNIX)
2845 INSTALL_COMMAND ""
2946 )
3047else ()
31- endif ()
32-
33- if (LLVM_BUILD)
34- add_dependencies (spvm-project ${LLVM_LIBS} )
35- endif ()
48+ set (WIN_THIRD_PARTY ${CMAKE_BINARY_DIR} /third_party_win_deps)
49+ set (SHA256_ZIP b9e07417ca08becada20f08e923021a80a9fb09f86d2f4ae48a4f8d275d578d3)
50+ if (NOT EXISTS ${WIN_THIRD_PARTY} )
51+ file (MAKE_DIRECTORY ${WIN_THIRD_PARTY} )
52+ endif ()
53+ find_program (PWSH_EXEC
54+ pwsh
55+ REQUIRED)
56+ function (downloadPatchZip)
57+ execute_process (COMMAND
58+ ${PWSH_EXEC} -command "Invoke-WebRequest -Method Get -Uri 'https://spmod.eu/build-deps/patch-2.7.6.zip' -OutFile 'patch.zip'"
59+ WORKING_DIRECTORY ${WIN_THIRD_PARTY} )
60+ file (SHA256 ${WIN_THIRD_PARTY} /patch.zip SHA256_ZIP_DOWNLOADED)
61+ if (NOT ${SHA256_ZIP} EQUAL ${SHA256_ZIP_DOWNLOADED} AND DEFINED ALREADY_CONFIGURED_SPVM)
62+ message (FATAL_ERROR "Checksums are not equal (patch utility for windows)" )
63+ endif ()
64+ endfunction ()
3665
37- add_dependencies (spvm-project ambuild-project)
66+ if (NOT EXISTS ${WIN_THIRD_PARTY} /patch)
67+ if (NOT EXISTS ${WIN_THIRD_PARTY} /patch.zip)
68+ message (VERBOSE "Patch archive not found. Downloading..." )
69+ downloadPatchZip()
70+ endif ()
71+ execute_process (COMMAND
72+ ${PWSH_EXEC} -command "Expand-Archive -Force 'patch.zip' '.'"
73+ WORKING_DIRECTORY ${WIN_THIRD_PARTY} )
74+ endif ()
75+ find_program (PATCH_EXEC
76+ patch
77+ PATHS ${WIN_THIRD_PARTY}
78+ REQUIRED
79+ )
80+ ExternalProject_Add(spvm-project
81+ GIT_REPOSITORY https://github.com/alliedmodders/sourcepawn.git
82+ GIT_TAG d7d94319a58e7d800a5e095000efe8ba64bd6c86
83+ GIT_PROGRESS ON
84+ SOURCE_DIR ${SPVM_SOURCE_DIR}
85+ BINARY_DIR ${SPVM_BINARY_DIR}
86+ DEPENDS ambuild-project
87+ PATCH_COMMAND ${PATCH_EXEC} --verbose ${SPVM_SOURCE_DIR} /AMBuildScript ${CMAKE_SOURCE_DIR} /patches/AMBuildScript.patch
88+ COMMAND ${PATCH_EXEC} --verbose ${SPVM_SOURCE_DIR} /configure.py ${CMAKE_SOURCE_DIR} /patches/configurepy.patch
89+ CONFIGURE_COMMAND ${Python3_EXECUTABLE} ${SPVM_SOURCE_DIR} /configure.py --enable-optimize --build =core --targets=x86 ${SPVM_DYNAMIC_LINK}
90+ BUILD_COMMAND ${AMBUILD_EXEC}
91+ INSTALL_COMMAND ""
92+ )
93+ set (ALREADY_CONFIGURED_SPVM ON )
94+ endif ()
0 commit comments