forked from Astrabit-ST/ModShot-Core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
conanfile.py
142 lines (126 loc) · 4.71 KB
/
conanfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import os.path
import datetime
from conans import CMake, ConanFile, tools
from conans.errors import ConanException
MODSHOT_VERSION_H='''#ifndef MODSHOT_VERSION
#define MODSHOT_VERSION "%s"
#endif
'''
class MkxpConan(ConanFile):
name = "oneshot"
version = "0.0.0"
license = "GPLv2"
url = "https://github.com/elizagamedev/mkxp-oneshot"
description = "OneShot game runtime"
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"
exports_sources = "*"
requires = (
"boost/1.73.0",
"openal/1.18.2@bincrafters/stable",
"physfs/3.0.1@bincrafters/stable",
"pixman/0.34.0@bincrafters/stable",
"ruby/2.5.3@eliza/testing",
"sdl2/2.0.9@bincrafters/stable",
"sdl2_image/2.0.5@bincrafters/stable",
"sdl2_ttf/2.0.15@bincrafters/stable",
"sdl_sound-mkxp/1.0.1@eliza/stable",
"sigc++/2.10.0@bincrafters/stable",
# Overrides
"libpng/1.6.37",
"zlib/1.2.11",
"bzip2/1.0.8",
)
build_requires = ("ruby_installer/2.5.5@bincrafters/stable", )
options = {
"platform": ["standalone", "steam"],
}
default_options = (
"platform=standalone",
"boost:without_test=True",
"cygwin_installer:packages=xxd",
# Avoid dead url bitrot in cygwin_installer
"cygwin_installer:with_pear=False",
"ruby:with_openssl=True",
)
#def build_requirements(self):
# if tools.os_info.is_windows:
# self.build_requires("cygwin_installer/2.9.0@bincrafters/stable")
def requirements(self):
if tools.os_info.is_linux:
# Overrides
self.requires("sqlite3/3.29.0")
self.requires("flac/1.3.3")
self.requires("ogg/1.3.4")
self.requires("vorbis/1.3.6")
self.requires("libalsa/1.1.9")
def configure(self):
if tools.os_info.is_windows:
# ???
self.options["openal"].shared = True
# Fix linker error in SDL_sound fork with SDL2
self.options["sdl2"].shared = True
def generate_version_number(self):
try:
git = tools.Git(self.source_folder)
revision = git.get_commit()[0:7]
if not git.is_pristine():
revision += "-dirty"
except ConanException:
# this is either not a git repo, or we don't have git on the system
revision = "nongit"
revision += datetime.datetime.now().strftime("-%y%m%d-%H%M%S")
tools.save(os.path.join(self.source_folder, 'src/version.h'), MODSHOT_VERSION_H%revision)
def build_configure(self):
self.generate_version_number()
cmake = CMake(self, msbuild_verbosity='minimal')
if self.options.platform == "steam":
cmake.definitions["STEAM"] = "ON"
cmake.configure()
cmake.build()
def build(self):
#if tools.os_info.is_windows:
# cygwin_bin = self.deps_env_info["cygwin_installer"].CYGWIN_BIN
# with tools.environment_append({
# "PATH": [cygwin_bin],
# "CONAN_BASH_PATH":
# os.path.join(cygwin_bin, "bash.exe")
# }):
# self.build_configure()
#else:
# self.build_configure()
self.build_configure()
# ship certificates into the ssl folder in the game directory
# openssl will use this folder since we hardcoded it in binding-mri.cpp
tools.download("https://curl.haxx.se/ca/cacert.pem", "bin/lib/cacert.pem", overwrite=True)
def package(self):
self.copy("*", dst="bin", src="bin")
def imports(self):
self.do_copy_deps(self.copy)
def deploy(self):
self.copy("*")
self.do_copy_deps(self.copy_deps)
def do_copy_deps(self, copy):
deps = set(self.deps_cpp_info.deps) - set(
("cygwin_installer", "msys2_installer", "ruby_installer"))
for dep in deps:
copy("*.dll",
dst="bin",
src="bin",
root_package=dep,
keep_path=False)
copy("*.so*",
dst="lib",
src="lib",
root_package=dep,
keep_path=True)
if self.settings.build_type == "Debug":
copy("*.pdb", dst="bin", root_package=dep, keep_path=False)
# copy the ruby standard library
# this is a very ugly way of doing this (putting it in bin instead of lib)
# but this makes distributing mods easier, and also makes sure windows and linux are mostly the same
copy("*",
dst="bin/lib/ruby/",
src="lib/ruby/2.5.0/",
root_package="ruby",
keep_path=True)