Skip to content

Commit 8ba0477

Browse files
committed
Fix building
Signed-off-by: Karol Szuster <karolsz9898@gmail.com>
1 parent 4309e27 commit 8ba0477

File tree

16 files changed

+154
-77
lines changed

16 files changed

+154
-77
lines changed

.travis.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ branches:
33
only:
44
- master
55
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
6-
sudo: required
76
os: linux
8-
dist: bionic
7+
dist: focal
98

10-
matrix:
9+
jobs:
1110
include:
1211
- addons:
1312
apt:
1413
sources:
15-
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main'
14+
- sourceline: 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main'
1615
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
1716
packages:
1817
- llvm-10
@@ -30,7 +29,7 @@ matrix:
3029
- addons:
3130
apt:
3231
sources:
33-
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main'
32+
- sourceline: 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main'
3433
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
3534
packages:
3635
- llvm-10
@@ -103,7 +102,7 @@ before_deploy:
103102
- travis/package.sh
104103
deploy:
105104
- provider: releases
106-
api_key:
105+
token:
107106
secure: uGexzy3F5r3zVR/8lAOHVnwIhQ2VsV0Dx2sZgztmmK4YGWt1th5FH8iOWRc5LK8liufiz9pmfQov4TsCYTFFsi3j5zBdkWc0J+VoBWmy81Ua/CfKKaDQd/ynzaQ9w1+11/5sBciXEf3mekbTs2PNnoewwBIKLGcHHCrMSy6LexIpKh5IzXarwt1YUpVQsMpoEJ+wi8TNrN7d0hNO0uV/l6yPyEJ5vSmfEiq1mdKr/GlleBwSNncY2bV6hfoSedis+PO39mTDqQF4i3tGXPhtl0Ky6byUTzVXogpvQt05g9DMqM567U+Q1UJJuOdM1EN9cJDgufLifUQojFAdt8OH34thydKL2+WI4DTwpHw3yr4mVzHPyqWX+Pk3u19QTYTOtePKpkDE7OuHIstv9u0IXDKB7aYkuz2sO4ThrKV4TEBEW4GWVs8BuIaW43fh6NROMW1X+6Q8azZG5ab63dN7zvUkbgsuEDlAkIfMtVO0QqdSvEfE9HZSFSJlzenmZ4O/MM48PTbMAJBKdqruRiH5VB8Y5qwri7oUaxZ9cfTIB6rveAFKQcOXfhjTZXxiMOOoTROloZaQQJW7CEb44OurJpdkUr/RO23/+hWNlA3cJ3pyDQLON2JEerFschFxw3X5YLiwBMuNzBYYa5p6zqFdul4jEBRWh4qnFZvf5sU/Rxk=
108107
file: upload/spmod-$TRAVIS_OS_NAME-$TRAVIS_TAG-$CC$CC_VERSION-$LINK_TYPE.tar.xz
109108
skip_cleanup: true
@@ -114,7 +113,7 @@ deploy:
114113
branch: /^v\d+\.\d+(\.\d+)?(-\S*)?$/
115114
condition: $CLANG_VERSION = 10 || $GCC_VERSION = 10
116115
- provider: s3
117-
local-dir: upload/s3
116+
local_dir: upload/s3
118117
access_key_id:
119118
secure: g5eMcCQxblr3kXOtnGeAn/HWVLlRilOjU2+DsO/q0pcnkE6mqRQvXRhWt+fHV1YqBXV1JCdzTlGqv48Mt1X0LQMQYn+Gf1WomutQOcdrT9myWXqLLiXTNqqfoq+yBYLbtHDzwzamYu9iAKD5QY8XwcR2k3r4ThrVq/8wkIkU6HVRwhc4FV/oETtSe0E1SyYsMDmJqLg72TXmZdujmiCp34qjQKxOMFxMykoj9O2FcDmv0CMzOjZap8p9H2ove3U+mI+VUeQ9r1eo72tLtLS6ossH94MI9oBJ8NnONo1nnkskL4/GGqEqGnjcuvH3dSQHhpjqLoDOdJKodWFbPBvsjkpOeSmJmhl3rljMM6Jz0s65gkv8ilNVoGUIahvso+vMV3SMKsqjlCBacIBimar9q6BIouXIioHgnafbKJeqFP/aX7TD1mGJl7j3BFKHKXuBln0etlHfvFy7DR00SRBG8DGjRVKEJTwNc75ma5DQuTbSkf+8Tn12mQA+Ei8GGt68J2/ZERjERlszcphPm+E6X+x8x5wPIwJG58kuxzMGnglaV81LceX8gAkRo4pmM5jkIOjXjPRXw77b0DA9ZSQCzGL2LNi0IDk6kN8Z6VRnaflTFGHcbE0d5vGK0jrFls2IJ/EmCfnt1GRV0+10w9/HP+x642Ud4uXWskzE/QhcuKY=
120119
secret_access_key:

CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ else()
3939
endif()
4040
endif()
4141

42-
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/third_party)
4342
if (UNIX)
4443
if (LLVM_BUILD)
4544
include(cmake/BuildYAMLClang.cmake)

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ environment:
1515
- LINK_TYPE: dynamic
1616
- LINK_TYPE: static
1717
install:
18-
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
18+
- python -m pip install --upgrade pip
1919
- set PATH=C:\Python38-x64;C:\Python38-x64\Scripts;%PATH%
2020
- git submodule update --init --recursive
2121
build_script:

cmake/BuildSPVM.cmake

Lines changed: 64 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,30 @@ else()
1313
set(SPVM_DYNAMIC_LINK "")
1414
endif()
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
)
3047
else()
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()

cmake/BuildYAMLClang.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ FetchContent_Declare(
66
yaml-cpp-project
77
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
88
GIT_TAG yaml-cpp-0.6.3
9+
GIT_SHALLOW ON
910
)
1011

1112
set(YAML_CPP_BUILD_TESTS OFF CACHE INTERNAL "")

cmake/BuildYAMLGCC.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ FetchContent_Declare(
66
yaml-cpp-project
77
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
88
GIT_TAG yaml-cpp-0.6.3
9+
GIT_SHALLOW ON
910
)
1011

1112
set(YAML_CPP_BUILD_TESTS OFF CACHE INTERNAL "")

cmake/BuildYAMLMSVC.cmake

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,20 @@
11
include_guard(GLOBAL)
22

33
# Building YAML
4-
include(ExternalProject)
4+
include(FetchContent)
5+
FetchContent_Declare(
6+
yaml-cpp-project
7+
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
8+
GIT_TAG yaml-cpp-0.6.3
9+
GIT_SHALLOW ON
10+
)
511

6-
ExternalProject_Add(yaml-cpp-project
7-
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
8-
GIT_TAG yaml-cpp-0.6.3
9-
GIT_SHALLOW ON
10-
GIT_PROGRESS ON
11-
SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-cpp-src"
12-
BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-cpp-build"
13-
INSTALL_DIR "${CMAKE_BINARY_DIR}/install"
14-
CMAKE_ARGS
15-
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
16-
-DCMAKE_CXX_EXTENSIONS=OFF
17-
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
18-
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
19-
-DYAML_BUILD_SHARED_LIBS=${BUILD_DYNAMIC}
20-
-DYAML_MSVC_SHARED_RT=${BUILD_DYNAMIC}
21-
-DYAML_CPP_BUILD_CONTRIB=OFF
22-
-DYAML_CPP_BUILD_TESTS=OFF
23-
-DYAML_CPP_BUILD_TOOLS=OFF
24-
)
12+
set(YAML_CPP_BUILD_TESTS OFF CACHE INTERNAL "")
13+
set(YAML_CPP_BUILD_TOOLS OFF CACHE INTERNAL "")
14+
set(YAML_CPP_BUILD_CONTRIB OFF CACHE INTERNAL "")
15+
set(YAML_BUILD_SHARED_LIBS ${BUILD_DYNAMIC} CACHE INTERNAL "")
16+
set(YAML_MSVC_SHARED_RT ${BUILD_DYNAMIC} CACHE INTERNAL "")
17+
FetchContent_MakeAvailable(yaml-cpp-project)
2518

26-
ExternalProject_Get_Property(yaml-cpp-project INSTALL_DIR)
27-
28-
if (BUILD_DYNAMIC)
29-
add_library(yaml-cpp SHARED IMPORTED GLOBAL)
30-
set_target_properties(yaml-cpp
31-
PROPERTIES
32-
IMPORTED_LOCATION ${INSTALL_DIR}/bin/libyaml-cpp.dll
33-
IMPORTED_IMPLIB ${INSTALL_DIR}/lib/yaml-cpp.lib
34-
)
35-
else()
36-
add_library(yaml-cpp STATIC IMPORTED GLOBAL)
37-
set_target_properties(yaml-cpp PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libyaml-cppmt.lib)
38-
endif()
39-
40-
set(YAML_CPP_INCLUDE_DIR "${INSTALL_DIR}/include")
19+
set(YAML_CPP_INCLUDE_DIR "${yaml-cpp-project_SOURCE_DIR}/include")
4120
set(YAML_CPP_LIBRARIES "yaml-cpp")

cmake/InstallAMBuild.cmake

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,29 @@ find_package(Python3 REQUIRED COMPONENTS Interpreter)
1010
message(STATUS "Installing AMBuild")
1111
set(AMBUILD_SOURCE_DIR "${CMAKE_BINARY_DIR}/ambuild-project-src")
1212
include(ExternalProject)
13-
ExternalProject_Add(ambuild-project
14-
GIT_REPOSITORY https://github.com/alliedmodders/ambuild.git
15-
GIT_TAG 2.2
16-
GIT_SHALLOW ON
17-
GIT_PROGRESS ON
18-
SOURCE_DIR ${AMBUILD_SOURCE_DIR}
19-
CONFIGURE_COMMAND ""
20-
PATCH_COMMAND ${BASH_EXEC} ${CMAKE_SOURCE_DIR}/patches/ambuild_patch.sh ${PATCH_EXEC} ${AMBUILD_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
21-
BUILD_COMMAND ${Python3_EXECUTABLE} -m pip install ${AMBUILD_SOURCE_DIR} --user --force-reinstall
22-
INSTALL_COMMAND ""
23-
)
24-
set(AMBUILD_EXEC "$ENV{HOME}/.local/bin/ambuild")
13+
if(UNIX)
14+
ExternalProject_Add(ambuild-project
15+
GIT_REPOSITORY https://github.com/alliedmodders/ambuild.git
16+
GIT_TAG 2.2
17+
GIT_SHALLOW ON
18+
GIT_PROGRESS ON
19+
SOURCE_DIR ${AMBUILD_SOURCE_DIR}
20+
CONFIGURE_COMMAND ""
21+
PATCH_COMMAND ${BASH_EXEC} ${CMAKE_SOURCE_DIR}/patches/ambuild_patch.sh ${PATCH_EXEC} ${AMBUILD_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
22+
BUILD_COMMAND ${Python3_EXECUTABLE} -m pip install ${AMBUILD_SOURCE_DIR} --user --force-reinstall
23+
INSTALL_COMMAND ""
24+
)
25+
set(AMBUILD_EXEC "$ENV{HOME}/.local/bin/ambuild")
26+
else()
27+
ExternalProject_Add(ambuild-project
28+
GIT_REPOSITORY https://github.com/alliedmodders/ambuild.git
29+
GIT_TAG 2.2
30+
GIT_SHALLOW ON
31+
GIT_PROGRESS ON
32+
SOURCE_DIR ${AMBUILD_SOURCE_DIR}
33+
CONFIGURE_COMMAND ""
34+
BUILD_COMMAND ${Python3_EXECUTABLE} -m pip install ${AMBUILD_SOURCE_DIR} --user --force-reinstall
35+
INSTALL_COMMAND ""
36+
)
37+
set(AMBUILD_EXEC "ambuild")
38+
endif()

patches/AMBuildScript.patch

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--- AMBuildScript 2020-09-10 01:36:16.602652000 +0200
2-
+++ AMBuildScript-libc++ 2020-09-10 01:35:20.336178674 +0200
2+
+++ AMBuildScript-custom 2020-10-23 23:44:32.293952775 +0200
33
@@ -97,8 +97,10 @@
44
'-Wno-overloaded-virtual',
55
]
@@ -13,7 +13,26 @@
1313

1414
cxx.postlink += ['-lm']
1515

16-
@@ -183,6 +185,19 @@
16+
@@ -115,10 +117,16 @@
17+
cxx.defines += ['__linux__']
18+
elif cxx.like('msvc'):
19+
if builder.options.debug == '1':
20+
- cxx.cflags += ['/MTd']
21+
+ if getattr(builder.options, 'dynamic', False):
22+
+ cxx.cflags += ['/MDd']
23+
+ else:
24+
+ cxx.cflags += ['/MTd']
25+
cxx.linkflags += ['/NODEFAULTLIB:libcmt']
26+
else:
27+
- cxx.cflags += ['/MT']
28+
+ if getattr(builder.options, 'dynamic', False):
29+
+ cxx.cflags += ['/MD']
30+
+ else:
31+
+ cxx.cflags += ['/MT']
32+
cxx.defines += [
33+
'_CRT_SECURE_NO_DEPRECATE',
34+
'_CRT_SECURE_NO_WARNINGS',
35+
@@ -183,6 +191,19 @@
1736
# Platform-specifics
1837
if not cxx.like('emscripten'):
1938
if cxx.target.platform == 'linux':

patches/spvm_patch.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ PATCH_EXEC=${1}
44
SPVM_SOURCE_DIR=${2}
55
CMAKE_SOURCE_DIR=${3}
66

7-
${PATCH_EXEC} -Ns --verbose -d ${SPVM_SOURCE_DIR} < ${CMAKE_SOURCE_DIR}/patches/AMBuildScript.patch || true
8-
${PATCH_EXEC} -Ns --verbose -d ${SPVM_SOURCE_DIR} < ${CMAKE_SOURCE_DIR}/patches/configurepy.patch || true
9-
${PATCH_EXEC} -Ns --verbose -d ${SPVM_SOURCE_DIR}/vm < ${CMAKE_SOURCE_DIR}/patches/AMBuilder_VM_fPIC.patch || true
10-
${PATCH_EXEC} -Ns --verbose -d ${SPVM_SOURCE_DIR}/third_party/zlib < ${CMAKE_SOURCE_DIR}/patches/AMBuilder_zlib_fPIC.patch || true
7+
${PATCH_EXEC} -N --verbose -d ${SPVM_SOURCE_DIR} < ${CMAKE_SOURCE_DIR}/patches/AMBuildScript.patch || true
8+
${PATCH_EXEC} -N --verbose -d ${SPVM_SOURCE_DIR} < ${CMAKE_SOURCE_DIR}/patches/configurepy.patch || true
9+
${PATCH_EXEC} -N --verbose -d ${SPVM_SOURCE_DIR}/vm < ${CMAKE_SOURCE_DIR}/patches/AMBuilder_VM_fPIC.patch || true
10+
${PATCH_EXEC} -N --verbose -d ${SPVM_SOURCE_DIR}/third_party/zlib < ${CMAKE_SOURCE_DIR}/patches/AMBuilder_zlib_fPIC.patch || true

0 commit comments

Comments
 (0)