Make docoptcpp use boost.regex on Windows
std::regex is kind of broken on Windows[1]. [1] https://github.com/docopt/docopt.cpp/issues/49
This commit is contained in:
parent
3eefbf7312
commit
7009841bcc
|
@ -1,6 +1,7 @@
|
||||||
from .base import *
|
from .base import *
|
||||||
from . import (
|
from . import (
|
||||||
all_dependencies,
|
all_dependencies,
|
||||||
|
boostregex,
|
||||||
tc_android_ndk,
|
tc_android_ndk,
|
||||||
aria2,
|
aria2,
|
||||||
tc_armhf,
|
tc_armhf,
|
||||||
|
|
|
@ -23,6 +23,8 @@ class AllBaseDependencies(Dependency):
|
||||||
"xapian-core",
|
"xapian-core",
|
||||||
"zim-testing-suite",
|
"zim-testing-suite",
|
||||||
"icu4c",
|
"icu4c",
|
||||||
|
"boostregex",
|
||||||
|
"docoptcpp"
|
||||||
]
|
]
|
||||||
|
|
||||||
if not configInfo.name.endswith("_dyn"):
|
if not configInfo.name.endswith("_dyn"):
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
from .base import Dependency, ReleaseDownload, Builder as BaseBuilder
|
||||||
|
|
||||||
|
from kiwixbuild.utils import Remotefile, pj
|
||||||
|
from shutil import copytree
|
||||||
|
|
||||||
|
|
||||||
|
class BoostRegex(Dependency):
|
||||||
|
name = "boostregex"
|
||||||
|
|
||||||
|
class Source(ReleaseDownload):
|
||||||
|
archive = Remotefile(
|
||||||
|
"regex-boost-1.86.0.zip",
|
||||||
|
"",
|
||||||
|
"https://codeload.github.com/boostorg/regex/zip/refs/tags/boost-1.86.0",
|
||||||
|
)
|
||||||
|
|
||||||
|
class Builder(BaseBuilder):
|
||||||
|
def build(self):
|
||||||
|
self.command("copy_headers", self._copy_headers)
|
||||||
|
|
||||||
|
def _copy_headers(self, context):
|
||||||
|
context.try_skip(self.build_path)
|
||||||
|
copytree(
|
||||||
|
pj(self.source_path, "include", "boost"),
|
||||||
|
pj(self.buildEnv.install_dir, "include", "boost"),
|
||||||
|
dirs_exist_ok=True,
|
||||||
|
)
|
|
@ -1,7 +1,7 @@
|
||||||
from .base import Dependency, ReleaseDownload, MesonBuilder
|
from .base import Dependency, ReleaseDownload, MesonBuilder
|
||||||
|
|
||||||
from kiwixbuild.utils import Remotefile
|
from kiwixbuild.utils import Remotefile
|
||||||
|
from kiwixbuild._global import neutralEnv
|
||||||
|
|
||||||
class docoptcpp(Dependency):
|
class docoptcpp(Dependency):
|
||||||
name = "docoptcpp"
|
name = "docoptcpp"
|
||||||
|
@ -21,6 +21,14 @@ class docoptcpp(Dependency):
|
||||||
)
|
)
|
||||||
|
|
||||||
archives = [src_archive, meson_archive]
|
archives = [src_archive, meson_archive]
|
||||||
patches = ["docopt_meson_install_pkgconfig.patch"]
|
patches = [
|
||||||
|
"docopt_meson_install_pkgconfig.patch",
|
||||||
|
"docopt_meson_use_boostregex.patch",
|
||||||
|
]
|
||||||
|
|
||||||
Builder = MesonBuilder
|
class Builder(MesonBuilder):
|
||||||
|
@classmethod
|
||||||
|
def get_dependencies(cls, configInfo, allDeps):
|
||||||
|
if neutralEnv("distname") == "Windows":
|
||||||
|
return ["boostregex"]
|
||||||
|
return []
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff -ur docoptcpp-0.6.2/meson.build docoptcpp-0.6.2_boostregex/meson.build
|
||||||
|
--- docoptcpp-0.6.2/meson.build 2024-08-28 17:22:46.256716100 +0200
|
||||||
|
+++ docoptcpp-0.6.2_boostregex/meson.build 2024-08-28 17:02:47.932681000 +0200
|
||||||
|
@@ -8,6 +8,10 @@
|
||||||
|
add_project_arguments('-DDOCOPT_DLL', '-DDOCOPT_EXPORTS', language: 'cpp')
|
||||||
|
endif
|
||||||
|
|
||||||
|
+if cpp.get_id() =='msvc'
|
||||||
|
+ add_project_arguments('-DDOCTOPT_USE_BOOST_REGEX', '-DBOOST_REGEX_STANDALONE', language: 'cpp')
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
# bug with missing dllexport. fixed in next version.
|
||||||
|
if cpp.get_argument_syntax() == 'msvc'
|
||||||
|
doclib = static_library('docopt', 'docopt.cpp', install: true)
|
Loading…
Reference in New Issue