WIP Try to compile zlib using meson.
This commit is contained in:
parent
781f6740f2
commit
4cb071ada3
|
@ -3,7 +3,7 @@ import shutil
|
|||
from .base import (
|
||||
Dependency,
|
||||
ReleaseDownload,
|
||||
MakeBuilder)
|
||||
MesonBuilder)
|
||||
|
||||
from kiwixbuild.utils import Remotefile, pj, SkipCommand
|
||||
|
||||
|
@ -13,39 +13,10 @@ class zlib(Dependency):
|
|||
name = 'zlib'
|
||||
|
||||
class Source(ReleaseDownload):
|
||||
archive = Remotefile('zlib-1.2.8.tar.gz',
|
||||
'36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d')
|
||||
patches = ['zlib_std_libname.patch']
|
||||
archive = Remotefile('zlib-1.2.11.tar.gz',
|
||||
'c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1',
|
||||
'http://zlib.net/fossils/zlib-1.2.11.tar.gz')
|
||||
patches = ['zlib_meson.patch']
|
||||
|
||||
class Builder(MakeBuilder):
|
||||
dynamic_configure_options = ["--shared"]
|
||||
static_configure_options = ["--static"]
|
||||
|
||||
def _pre_build_script(self, context):
|
||||
context.try_skip(self.build_path)
|
||||
shutil.copytree(self.source_path, self.build_path)
|
||||
|
||||
|
||||
def _configure(self, context):
|
||||
if self.buildEnv.platformInfo.build == 'win32':
|
||||
raise SkipCommand()
|
||||
return super()._configure(context)
|
||||
|
||||
@property
|
||||
def all_configure_options(self):
|
||||
yield from self.configure_options
|
||||
yield from self.static_configure_options if self.buildEnv.platformInfo.static else self.dynamic_configure_options
|
||||
yield from ('--prefix', self.buildEnv.install_dir)
|
||||
yield from ('--libdir', pj(self.buildEnv.install_dir, self.buildEnv.libprefix))
|
||||
|
||||
@property
|
||||
def make_options(self):
|
||||
if self.buildEnv.platformInfo.build == 'win32':
|
||||
return
|
||||
yield "--makefile"
|
||||
yield "{}/Makefile.gcc".format(self.buildEnv.platformInfo.build)
|
||||
yield "PREFIX={}-".format(self.buildEnv.platformInfo.arch_full)
|
||||
yield "SHARED_MODE={}".format("0" if self.buildEnv.platformInfo.static else "1")
|
||||
yield "INCLUDE_PATH={}".format(pj(self.buildEnv.install_dir, 'include'))
|
||||
yield "LIBRARY_PATH={}".format(pj(self.buildEnv.install_dir, self.buildEnv.libprefix))
|
||||
yield "BINARY_PATH={}".format(pj(self.buildEnv.install_dir, 'bin'))
|
||||
class Builder(MesonBuilder):
|
||||
pass
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
diff -uNr zlib-1.2.11/LICENSE.build zlib-1.2.11.meson/LICENSE.build
|
||||
--- zlib-1.2.11/LICENSE.build 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ zlib-1.2.11.meson/LICENSE.build 2018-05-29 15:10:02.000000000 +0200
|
||||
@@ -0,0 +1,19 @@
|
||||
+Copyright (c) 2018 The Meson development team
|
||||
+
|
||||
+Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
+of this software and associated documentation files (the "Software"), to deal
|
||||
+in the Software without restriction, including without limitation the rights
|
||||
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
+copies of the Software, and to permit persons to whom the Software is
|
||||
+furnished to do so, subject to the following conditions:
|
||||
+
|
||||
+The above copyright notice and this permission notice shall be included in all
|
||||
+copies or substantial portions of the Software.
|
||||
+
|
||||
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
+SOFTWARE.
|
||||
diff -uNr zlib-1.2.11/meson.build zlib-1.2.11.meson/meson.build
|
||||
--- zlib-1.2.11/meson.build 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ zlib-1.2.11.meson/meson.build 2018-06-20 18:09:04.498957829 +0200
|
||||
@@ -0,0 +1,71 @@
|
||||
+project('zlib', 'c', version : '1.2.11', license : 'zlib')
|
||||
+
|
||||
+cc = meson.get_compiler('c')
|
||||
+
|
||||
+link_args = []
|
||||
+compile_args = []
|
||||
+if cc.get_id() == 'msvc'
|
||||
+ add_project_arguments('-D_CRT_SECURE_NO_DEPRECATE',
|
||||
+ '-D_CRT_NONSTDC_NO_DEPRECATE', language : 'c')
|
||||
+else
|
||||
+ # Don't spam consumers of this wrap with these warnings
|
||||
+ compile_args += cc.get_supported_arguments(['-Wno-implicit-fallthrough',
|
||||
+ '-Wno-implicit-function-declaration'])
|
||||
+ if cc.get_id() == 'gcc' and host_machine.system() != 'windows'
|
||||
+ vflag = '-Wl,--version-script,@0@/zlib.map'.format(meson.current_source_dir())
|
||||
+ link_args += [vflag]
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+src = files([
|
||||
+ 'adler32.c',
|
||||
+ 'crc32.c',
|
||||
+ 'deflate.c',
|
||||
+ 'infback.c',
|
||||
+ 'inffast.c',
|
||||
+ 'inflate.c',
|
||||
+ 'inftrees.c',
|
||||
+ 'trees.c',
|
||||
+ 'zutil.c',
|
||||
+ 'compress.c',
|
||||
+ 'uncompr.c',
|
||||
+ 'gzclose.c',
|
||||
+ 'gzlib.c',
|
||||
+ 'gzread.c',
|
||||
+ 'gzwrite.c'])
|
||||
+
|
||||
+headers = files(['zconf.h', 'zlib.h'])
|
||||
+
|
||||
+if host_machine.system() == 'windows'
|
||||
+ win = import('windows')
|
||||
+ win_args = []
|
||||
+ if cc.get_id() != 'msvc'
|
||||
+ win_args += '-DGCC_WINDRES'
|
||||
+ endif
|
||||
+ src += win.compile_resources('win32/zlib1.rc', args : win_args)
|
||||
+endif
|
||||
+
|
||||
+if get_option('solo')
|
||||
+ compile_args += ['-DZ_SOLO']
|
||||
+endif
|
||||
+
|
||||
+zlib = library('z', src,
|
||||
+ c_args : compile_args,
|
||||
+ link_args : link_args,
|
||||
+ vs_module_defs : 'win32/zlib.def',
|
||||
+ install : true)
|
||||
+
|
||||
+incdir = include_directories('.')
|
||||
+
|
||||
+zlib_dep = declare_dependency(
|
||||
+ link_with : zlib,
|
||||
+ include_directories : incdir)
|
||||
+
|
||||
+install_headers(headers)
|
||||
+
|
||||
+pkg = import('pkgconfig')
|
||||
+
|
||||
+pkg.generate(name: 'zlib',
|
||||
+ description: 'zlib compression library',
|
||||
+ version: '1.2.11',
|
||||
+ libraries: zlib)
|
||||
diff -uNr zlib-1.2.11/meson_options.txt zlib-1.2.11.meson/meson_options.txt
|
||||
--- zlib-1.2.11/meson_options.txt 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ zlib-1.2.11.meson/meson_options.txt 2018-05-29 15:10:02.000000000 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+option('solo', type: 'boolean', value: false, description: 'Build a minimal zlib without file I/O API')
|
|
@ -10,11 +10,11 @@ main_project_versions = {
|
|||
|
||||
# This is the "version" of the whole base_deps_versions dict.
|
||||
# Change this when you change base_deps_versions.
|
||||
base_deps_meta_version = '8'
|
||||
base_deps_meta_version = '9'
|
||||
|
||||
|
||||
base_deps_versions = {
|
||||
'zlib' : '1.2.8',
|
||||
'zlib' : '1.2.11',
|
||||
'lzma' : '5.2.3',
|
||||
'uuid' : '1.43.4',
|
||||
'xapian-core' : '1.4.5',
|
||||
|
|
Loading…
Reference in New Issue