summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-12-13 20:35:20 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2018-12-13 22:03:28 +0530
commitf67e933510eec89a30b937b967cdd8965c3658f1 (patch)
tree0c1e313397424c043cef6548a0761cdccda4fa91 /recipes
parent065d92fd6079a08d3a91cefde0a49b1155ea1761 (diff)
bzip2.recipe: Use meson instead of a Makefile
Diffstat (limited to 'recipes')
-rw-r--r--recipes/bzip2.recipe45
-rw-r--r--recipes/bzip2/0001-Fix-Makefiles-and-add-support-for-Windows-and-OS-X.patch366
-rw-r--r--recipes/bzip2/add-meson-build-files.patch427
3 files changed, 430 insertions, 408 deletions
diff --git a/recipes/bzip2.recipe b/recipes/bzip2.recipe
index 1d6c8b06..697336df 100644
--- a/recipes/bzip2.recipe
+++ b/recipes/bzip2.recipe
@@ -1,61 +1,22 @@
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
from cerbero.tools.libtool import LibtoolLibrary
-
class Recipe(recipe.Recipe):
name = 'bzip2'
version = '1.0.6'
licenses = [License.BSD_like]
stype = SourceType.TARBALL
- # This URL doesn't support https, so we don't use it
+ btype = BuildType.MESON
+ # bzip2.org is dead
#url = 'https://bzip.org/%(version)s/bzip2-%(version)s.tar.gz'
url = 'https://gstreamer.freedesktop.org/src/mirror/bzip2-%(version)s.tar.gz'
tarball_checksum = 'a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd'
- patches = ['bzip2/0001-Fix-Makefiles-and-add-support-for-Windows-and-OS-X.patch']
+ patches = ['bzip2/add-meson-build-files.patch']
files_libs = ['libbz2']
files_devel = ['include/bzlib.h']
-
- def prepare (self):
- self._remove_steps([BuildSteps.CONFIGURE])
- extension = ''
- if self.config.target_platform in [Platform.DARWIN, Platform.IOS]:
- shared_makefile = 'Makefile-libbz2_dylib'
- elif self.config.target_platform == Platform.WINDOWS:
- shared_makefile = 'Makefile-libbz2_dll'
- extension = '.exe'
- else:
- shared_makefile = 'Makefile-libbz2_so'
- self.make = 'make -f %s; make EXT=%s' % (shared_makefile, extension)
- self.make_install = 'make -f %s install PREFIX=%s; make install EXT=%s PREFIX=%s' % \
- (shared_makefile, self.config.prefix, extension, self.config.prefix)
-
def post_install(self):
libtool_la = LibtoolLibrary('bz2', 1, 0, 6, self.config.libdir,
self.config.target_platform)
libtool_la.save()
- src = None
- dst = None
- dst2 = None
- libdir = os.path.join(self.config.prefix, 'lib')
- if self.config.target_platform in [Platform.LINUX, Platform.ANDROID]:
- src = 'libbz2.so.1.0.6'
- dst = 'libbz2.so'
- dst2 = 'libbz2.so.1.0'
- elif self.config.target_platform == Platform.DARWIN:
- src = 'libbz2.1.0.6.dylib'
- dst = 'libbz2.dylib'
- elif self.config.target_platform == Platform.IOS:
- src = 'libbz2.dylib'
- dst = 'libbz2.so'
- if src and dst:
- p = os.path.join(libdir, dst)
- if os.path.exists(p) or os.path.islink(p):
- os.remove(p)
- shell.call('ln -s %s %s' % (src, dst), libdir)
- if dst2:
- p = os.path.join(libdir, dst2)
- if os.path.exists(p) or os.path.islink(p):
- os.remove(p)
- shell.call('ln -s %s %s' % (src, dst2), libdir)
diff --git a/recipes/bzip2/0001-Fix-Makefiles-and-add-support-for-Windows-and-OS-X.patch b/recipes/bzip2/0001-Fix-Makefiles-and-add-support-for-Windows-and-OS-X.patch
deleted file mode 100644
index f767660c..00000000
--- a/recipes/bzip2/0001-Fix-Makefiles-and-add-support-for-Windows-and-OS-X.patch
+++ /dev/null
@@ -1,366 +0,0 @@
-From 9c2bf1de021e082c62c781a25a71406404d548c1 Mon Sep 17 00:00:00 2001
-From: Edward Hervey <edward@centricular.com>
-Date: Sat, 10 Mar 2012 19:00:14 +0100
-Subject: [PATCH] Fix Makefiles and add support for Windows and OS X
-
----
- Makefile | 64 +++++++++++++++++++++++++-----------------
- Makefile-libbz2_dll | 68 ++++++++++++++++++++++++++++++++++++++++++++
- Makefile-libbz2_dylib | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++
- Makefile-libbz2_so | 37 +++++++++++++++++-------
- bzip2.c | 2 +-
- 5 files changed, 213 insertions(+), 36 deletions(-)
- create mode 100644 Makefile-libbz2_dll
- create mode 100644 Makefile-libbz2_dylib
-
-diff --git a/Makefile b/Makefile
-index 9754ddf..72dad60 100644
---- a/Makefile
-+++ b/Makefile
-@@ -15,13 +15,27 @@
- SHELL=/bin/sh
-
- # To assist in cross-compiling
--CC=gcc
--AR=ar
--RANLIB=ranlib
--LDFLAGS=
-+ifndef CC
-+ CC=gcc
-+endif
-+ifndef RANLIB
-+ RANLIB=ranlib
-+endif
-+ifndef AR
-+ AR=ar
-+endif
-+BZIP2_LDFLAGS=
-
- BIGFILES=-D_FILE_OFFSET_BITS=64
--CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
-+BZIP2_CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
-+
-+ifdef CFLAGS
-+BZIP2_CFLAGS+=$(CFLAGS)
-+endif
-+
-+ifdef LDFLAGS
-+BZIP2_LDFLAGS+=$(LDFLAGS)
-+endif
-
- # Where you want it installed when you do 'make install'
- PREFIX=/usr/local
-@@ -35,13 +49,13 @@ OBJS= blocksort.o \
- decompress.o \
- bzlib.o
-
--all: libbz2.a bzip2 bzip2recover test
-+all: libbz2.a bzip2 bzip2recover
-
- bzip2: libbz2.a bzip2.o
-- $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
-+ $(CC) $(BZIP2_CFLAGS) $(BZIP2_LDFLAGS) -o bzip2$(EXT) bzip2.o -L. -lbz2
-
- bzip2recover: bzip2recover.o
-- $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2recover bzip2recover.o
-+ $(CC) $(BZIP2_CFLAGS) $(BZIP2_LDFLAGS) -o bzip2recover$(EXT) bzip2recover.o
-
- libbz2.a: $(OBJS)
- rm -f libbz2.a
-@@ -75,14 +89,14 @@ install: bzip2 bzip2recover
- if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi
- if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
- if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
-- cp -f bzip2 $(PREFIX)/bin/bzip2
-- cp -f bzip2 $(PREFIX)/bin/bunzip2
-- cp -f bzip2 $(PREFIX)/bin/bzcat
-- cp -f bzip2recover $(PREFIX)/bin/bzip2recover
-- chmod a+x $(PREFIX)/bin/bzip2
-- chmod a+x $(PREFIX)/bin/bunzip2
-- chmod a+x $(PREFIX)/bin/bzcat
-- chmod a+x $(PREFIX)/bin/bzip2recover
-+ cp -f bzip2$(EXT) $(PREFIX)/bin/bzip2$(EXT)
-+ cp -f bzip2$(EXT) $(PREFIX)/bin/bunzip2$(EXT)
-+ cp -f bzip2$(EXT) $(PREFIX)/bin/bzcat$(EXT)
-+ cp -f bzip2recover$(EXT) $(PREFIX)/bin/bzip2recover$(EXT)
-+ chmod a+x $(PREFIX)/bin/bzip2$(EXT)
-+ chmod a+x $(PREFIX)/bin/bunzip2$(EXT)
-+ chmod a+x $(PREFIX)/bin/bzcat$(EXT)
-+ chmod a+x $(PREFIX)/bin/bzip2recover$(EXT)
- cp -f bzip2.1 $(PREFIX)/man/man1
- chmod a+r $(PREFIX)/man/man1/bzip2.1
- cp -f bzlib.h $(PREFIX)/include
-@@ -115,23 +129,23 @@ clean:
-
- blocksort.o: blocksort.c
- @cat words0
-- $(CC) $(CFLAGS) -c blocksort.c
-+ $(CC) $(BZIP2_CFLAGS) -c blocksort.c
- huffman.o: huffman.c
-- $(CC) $(CFLAGS) -c huffman.c
-+ $(CC) $(BZIP2_CFLAGS) -c huffman.c
- crctable.o: crctable.c
-- $(CC) $(CFLAGS) -c crctable.c
-+ $(CC) $(BZIP2_CFLAGS) -c crctable.c
- randtable.o: randtable.c
-- $(CC) $(CFLAGS) -c randtable.c
-+ $(CC) $(BZIP2_CFLAGS) -c randtable.c
- compress.o: compress.c
-- $(CC) $(CFLAGS) -c compress.c
-+ $(CC) $(BZIP2_CFLAGS) -c compress.c
- decompress.o: decompress.c
-- $(CC) $(CFLAGS) -c decompress.c
-+ $(CC) $(BZIP2_CFLAGS) -c decompress.c
- bzlib.o: bzlib.c
-- $(CC) $(CFLAGS) -c bzlib.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzlib.c
- bzip2.o: bzip2.c
-- $(CC) $(CFLAGS) -c bzip2.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzip2.c
- bzip2recover.o: bzip2recover.c
-- $(CC) $(CFLAGS) -c bzip2recover.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzip2recover.c
-
-
- distclean: clean
-diff --git a/Makefile-libbz2_dll b/Makefile-libbz2_dll
-new file mode 100644
-index 0000000..e021d31
---- /dev/null
-+++ b/Makefile-libbz2_dll
-@@ -0,0 +1,68 @@
-+
-+# This Makefile builds a shared version of the library,
-+# libbz2.so.1.0.6, with soname libbz2.so.1.0,
-+# at least on x86-Linux (RedHat 7.2),
-+# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98).
-+# Please see the README file for some important info
-+# about building the library like this.
-+
-+# ------------------------------------------------------------------
-+# This file is part of bzip2/libbzip2, a program and library for
-+# lossless, block-sorting data compression.
-+#
-+# bzip2/libbzip2 version 1.0.6 of 6 September 2010
-+# Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
-+#
-+# Please read the WARNING, DISCLAIMER and PATENTS sections in the
-+# README file.
-+#
-+# This program is released under the terms of the license contained
-+# in the file LICENSE.
-+# ------------------------------------------------------------------
-+
-+
-+SHELL=/bin/sh
-+BIGFILES=-D_FILE_OFFSET_BITS=64
-+BZIP2_CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
-+BZIP2_LDFLAGS=
-+
-+ifdef CFLAGS
-+BZIP2_CFLAGS+=$(CFLAGS)
-+endif
-+
-+ifdef LDFLAGS
-+BZIP2_LDFLAGS+=$(LDFLAGS)
-+endif
-+
-+OBJS= blocksort.o \
-+ huffman.o \
-+ crctable.o \
-+ randtable.o \
-+ compress.o \
-+ decompress.o \
-+ bzlib.o
-+
-+all: $(OBJS)
-+ $(CC) $(BZIP2_LDFLAGS) -shared -o libbz2.dll -Wl,--out-implib,libbz2.dll.a $(OBJS)
-+
-+clean:
-+ rm -f $(OBJS) libbz2.dll
-+
-+install:
-+ cp -f libbz2.dll $(PREFIX)/bin
-+ cp -f libbz2.dll.a $(PREFIX)/lib
-+
-+blocksort.o: blocksort.c
-+ $(CC) $(BZIP2_CFLAGS) -c blocksort.c
-+huffman.o: huffman.c
-+ $(CC) $(BZIP2_CFLAGS) -c huffman.c
-+crctable.o: crctable.c
-+ $(CC) $(BZIP2_CFLAGS) -c crctable.c
-+randtable.o: randtable.c
-+ $(CC) $(BZIP2_CFLAGS) -c randtable.c
-+compress.o: compress.c
-+ $(CC) $(BZIP2_CFLAGS) -c compress.c
-+decompress.o: decompress.c
-+ $(CC) $(BZIP2_CFLAGS) -c decompress.c
-+bzlib.o: bzlib.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzlib.c
-diff --git a/Makefile-libbz2_dylib b/Makefile-libbz2_dylib
-new file mode 100644
-index 0000000..cd77e3a
---- /dev/null
-+++ b/Makefile-libbz2_dylib
-@@ -0,0 +1,78 @@
-+
-+# This Makefile builds a shared version of the library,
-+# libbz2.so.1.0.6, with soname libbz2.so.1.0,
-+# at least on x86-Linux (RedHat 7.2),
-+# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98).
-+# Please see the README file for some important info
-+# about building the library like this.
-+
-+# ------------------------------------------------------------------
-+# This file is part of bzip2/libbzip2, a program and library for
-+# lossless, block-sorting data compression.
-+#
-+# bzip2/libbzip2 version 1.0.6 of 6 September 2010
-+# Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
-+#
-+# Please read the WARNING, DISCLAIMER and PATENTS sections in the
-+# README file.
-+#
-+# This program is released under the terms of the license contained
-+# in the file LICENSE.
-+# ------------------------------------------------------------------
-+
-+
-+SHELL=/bin/sh
-+ifndef CC
-+CC=gcc
-+endif
-+BIGFILES=-D_FILE_OFFSET_BITS=64
-+BZIP2_CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
-+BZIP2_LDFLAGS=
-+
-+ifdef CFLAGS
-+BZIP2_CFLAGS+=$(CFLAGS)
-+endif
-+
-+ifdef LDFLAGS
-+BZIP2_LDFLAGS+=$(LDFLAGS)
-+endif
-+
-+OBJS= blocksort.o \
-+ huffman.o \
-+ crctable.o \
-+ randtable.o \
-+ compress.o \
-+ decompress.o \
-+ bzlib.o
-+
-+all: $(OBJS)
-+ $(CC) $(BZIP2_LDFLAGS) -shared -Wl,-install_name -Wl,libbz2.1.0.dylib -o libbz2.1.0.6.dylib $(OBJS)
-+ rm -f libbz2.1.0.dylib
-+ rm -f libbz2.dylib
-+ ln -s libbz2.1.0.6.dylib libbz2.1.0.dylib
-+ ln -s libbz2.1.0.6.dylib libbz2.dylib
-+
-+clean:
-+ rm -f $(OBJS) libbz2.1.0.6.dylib libbz2.1.0.dylib libbz2.dylib
-+
-+install:
-+ cp -f libbz2.1.0.6.dylib $(PREFIX)/lib
-+ rm -f $(PREFIX)/lib/libbz2.1.0.dylib
-+ rm -f $(PREFIX)/lib/libbz2.dylib
-+ cp -R libbz2.1.0.dylib $(PREFIX)/lib/
-+ cp -R libbz2.dylib $(PREFIX)/lib/
-+
-+blocksort.o: blocksort.c
-+ $(CC) $(BZIP2_CFLAGS) -c blocksort.c
-+huffman.o: huffman.c
-+ $(CC) $(BZIP2_CFLAGS) -c huffman.c
-+crctable.o: crctable.c
-+ $(CC) $(BZIP2_CFLAGS) -c crctable.c
-+randtable.o: randtable.c
-+ $(CC) $(BZIP2_CFLAGS) -c randtable.c
-+compress.o: compress.c
-+ $(CC) $(BZIP2_CFLAGS) -c compress.c
-+decompress.o: decompress.c
-+ $(CC) $(BZIP2_CFLAGS) -c decompress.c
-+bzlib.o: bzlib.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzlib.c
-diff --git a/Makefile-libbz2_so b/Makefile-libbz2_so
-index e58791b..bb0dca5 100644
---- a/Makefile-libbz2_so
-+++ b/Makefile-libbz2_so
-@@ -22,9 +22,22 @@
-
-
- SHELL=/bin/sh
-+
-+ifndef CC
- CC=gcc
-+endif
-+
- BIGFILES=-D_FILE_OFFSET_BITS=64
--CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
-+BZIP2_CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
-+BZIP2_LDFLAGS=
-+
-+ifdef CFLAGS
-+BZIP2_CFLAGS+=$(CFLAGS)
-+endif
-+
-+ifdef LDFLAGS
-+BZIP2_LDFLAGS+=$(LDFLAGS)
-+endif
-
- OBJS= blocksort.o \
- huffman.o \
-@@ -35,25 +48,29 @@ OBJS= blocksort.o \
- bzlib.o
-
- all: $(OBJS)
-- $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS)
-- $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6
-+ $(CC) $(BZIP2_LDFLAGS) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS)
-+ $(CC) $(BZIP2_CFLAGS) $(BZIP2_LDFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6
- rm -f libbz2.so.1.0
- ln -s libbz2.so.1.0.6 libbz2.so.1.0
-
- clean:
- rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared
-
-+install:
-+ cp -f libbz2.so.1.0.6 $(PREFIX)/lib
-+ ln -s $(PREFIX)/lib/libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0
-+
- blocksort.o: blocksort.c
-- $(CC) $(CFLAGS) -c blocksort.c
-+ $(CC) $(BZIP2_CFLAGS) -c blocksort.c
- huffman.o: huffman.c
-- $(CC) $(CFLAGS) -c huffman.c
-+ $(CC) $(BZIP2_CFLAGS) -c huffman.c
- crctable.o: crctable.c
-- $(CC) $(CFLAGS) -c crctable.c
-+ $(CC) $(BZIP2_CFLAGS) -c crctable.c
- randtable.o: randtable.c
-- $(CC) $(CFLAGS) -c randtable.c
-+ $(CC) $(BZIP2_CFLAGS) -c randtable.c
- compress.o: compress.c
-- $(CC) $(CFLAGS) -c compress.c
-+ $(CC) $(BZIP2_CFLAGS) -c compress.c
- decompress.o: decompress.c
-- $(CC) $(CFLAGS) -c decompress.c
-+ $(CC) $(BZIP2_CFLAGS) -c decompress.c
- bzlib.o: bzlib.c
-- $(CC) $(CFLAGS) -c bzlib.c
-+ $(CC) $(BZIP2_CFLAGS) -c bzlib.c
-diff --git a/bzip2.c b/bzip2.c
-index 6de9d1d..dc626a4 100644
---- a/bzip2.c
-+++ b/bzip2.c
-@@ -128,7 +128,7 @@
- #if BZ_LCCWIN32
- # include <io.h>
- # include <fcntl.h>
--# include <sys\stat.h>
-+# include <sys/stat.h>
-
- # define NORETURN /**/
- # define PATH_SEP '\\'
---
-2.14.3
-
diff --git a/recipes/bzip2/add-meson-build-files.patch b/recipes/bzip2/add-meson-build-files.patch
new file mode 100644
index 00000000..a6d46916
--- /dev/null
+++ b/recipes/bzip2/add-meson-build-files.patch
@@ -0,0 +1,427 @@
+From 42f2a11dbe251cea54844a987ca0e0715b1d8ca9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Fri, 15 Apr 2016 11:24:29 +0100
+Subject: [PATCH 1/9] bzlib.h: don't use WINAPI and add
+ __declspec(dllexport/dllimport)
+
+windows.h does #define WINAPI __stdcall but we want
+the __cdecl ABI. Causes linking problems on 32-bit
+windows otherwise when consumed by MSVC.
+
+Also sprinkle explicit dllexport/dllimport which will be
+needed if compiled with MSVC (mingw exports all symbols
+by default, but MSVC doesn't).
+---
+ bzlib.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/bzlib.h b/bzlib.h
+index 8277123..219a94f 100644
+--- a/bzlib.h
++++ b/bzlib.h
+@@ -82,12 +82,12 @@ typedef
+ # undef small
+ # endif
+ # ifdef BZ_EXPORT
+-# define BZ_API(func) WINAPI func
+-# define BZ_EXTERN extern
++# define BZ_API(func) func
++# define BZ_EXTERN __declspec(dllexport) extern
+ # else
+ /* import windows dll dynamically */
+-# define BZ_API(func) (WINAPI * func)
+-# define BZ_EXTERN
++# define BZ_API(func) ( * func)
++# define BZ_EXTERN __declspec(dllimport) extern
+ # endif
+ #else
+ # define BZ_API(func) func
+--
+2.19.1
+
+
+From 1543a0a9fafc58ea2548cfbbb382f2672703159d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Fri, 15 Apr 2016 11:26:43 +0100
+Subject: [PATCH 2/9] meson: add meson build for bz2
+
+---
+ meson.build | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 77 insertions(+)
+ create mode 100644 meson.build
+
+diff --git a/meson.build b/meson.build
+new file mode 100644
+index 0000000..7f70507
+--- /dev/null
++++ b/meson.build
+@@ -0,0 +1,77 @@
++project('bzip2', 'c', version : '1.0.6')
++
++bzip2_sources = [
++ 'blocksort.c',
++ 'huffman.c',
++ 'crctable.c',
++ 'randtable.c',
++ 'compress.c',
++ 'decompress.c',
++ 'bzlib.c'
++]
++
++libversion = meson.project_version()
++soversion = '1.0'
++
++bz2_c_args = ['-D_FILE_OFFSET_BITS=64']
++
++cc = meson.get_compiler('c')
++if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
++ # bzip2.c:557: warning: variable nread set but not used
++ bz2_c_args += ['-Wno-unused-but-set-variable']
++endif
++
++bz2_incs = include_directories('.')
++
++install_headers(['bzlib.h'])
++
++libtype = 'both' # FIXME: make option
++
++if libtype != 'shared'
++ libbz2_shared = shared_library('bz2', bzip2_sources,
++ version : libversion,
++ soversion : soversion,
++ c_args : bz2_c_args,
++ include_directories : bz2_incs,
++ install : true,
++# dependencies : mathlib,
++# vs_module_defs: vs_module_defs_dir + 'libbz2.def',
++ )
++ libbz2 = libbz2_shared
++endif
++
++if libtype != 'static'
++ libbz2_static = static_library('bz2', bzip2_sources,
++ c_args : bz2_c_args,
++ include_directories : bz2_incs,
++ install : true,
++# dependencies : mathlib,
++ )
++ libbz2 = libbz2_static
++endif
++
++bz2_dep = declare_dependency(link_with : libbz2, include_directories : bz2_incs)
++
++executable('bzip2', 'bzip2.c',
++ install : true,
++ dependencies : bz2_dep,
++ c_args: bz2_c_args)
++
++executable('bunzip2', 'bzip2.c',
++ install : true,
++ dependencies : bz2_dep,
++ c_args: bz2_c_args)
++
++executable('bzcat', 'bzip2.c',
++ install : true,
++ dependencies : bz2_dep,
++ c_args: bz2_c_args)
++
++executable('bzip2recover', 'bzip2recover.c',
++ install : true,
++ c_args: bz2_c_args)
++
++install_man('bzdiff.1', 'bzgrep.1', 'bzip2.1', 'bzmore.1')
++install_data('bzgrep', 'bzmore', 'bzdiff', install_dir : 'bin')
++
++# FIXME: build docs
+--
+2.19.1
+
+
+From 7e5370733be5a318b862a65667cfe63cd9873791 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Fri, 17 Jun 2016 15:55:36 +0530
+Subject: [PATCH 3/9] bzlib.h: Don't need to #include windows.h anymore
+
+We no longer use the WINAPI macro
+---
+ bzlib.h | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/bzlib.h b/bzlib.h
+index 219a94f..955baf4 100644
+--- a/bzlib.h
++++ b/bzlib.h
+@@ -76,11 +76,6 @@ typedef
+ #endif
+
+ #ifdef _WIN32
+-# include <windows.h>
+-# ifdef small
+- /* windows.h define small to char */
+-# undef small
+-# endif
+ # ifdef BZ_EXPORT
+ # define BZ_API(func) func
+ # define BZ_EXTERN __declspec(dllexport) extern
+--
+2.19.1
+
+
+From 07d00c5c16ff44800b8737c7d948d2d9beb057a8 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Fri, 17 Jun 2016 15:57:54 +0530
+Subject: [PATCH 4/9] bzlib.h: Don't use dllimport/dllexport when
+ BZ_STATIC_COMPILATION is defined
+
+This allows code to see the correct prototypes for linking to the static
+library on Windows. Without this, it'll try to link to the static
+library with indirections required for accessing symbols in a DLL and
+fail to find those symbols.
+---
+ bzlib.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/bzlib.h b/bzlib.h
+index 955baf4..acc6bf8 100644
+--- a/bzlib.h
++++ b/bzlib.h
+@@ -75,7 +75,8 @@ typedef
+ #include <stdio.h>
+ #endif
+
+-#ifdef _WIN32
++/* Define BZ_STATIC_COMPILATION if linking to libbz2 statically */
++#if defined(_WIN32) && !defined(BZ_STATIC_COMPILATION)
+ # ifdef BZ_EXPORT
+ # define BZ_API(func) func
+ # define BZ_EXTERN __declspec(dllexport) extern
+--
+2.19.1
+
+
+From bcc6bbdb93c5591945ddd4c499f49c6caf56e474 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Fri, 17 Jun 2016 15:59:11 +0530
+Subject: [PATCH 5/9] meson: soversion should be an unsigned integer
+
+Either as an integer, or as a string containing an integer
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 7f70507..8146535 100644
+--- a/meson.build
++++ b/meson.build
+@@ -11,7 +11,7 @@ bzip2_sources = [
+ ]
+
+ libversion = meson.project_version()
+-soversion = '1.0'
++soversion = '1'
+
+ bz2_c_args = ['-D_FILE_OFFSET_BITS=64']
+
+--
+2.19.1
+
+
+From 14306fd5a9c3f12cb7c36af6c8b4719234586540 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Fri, 17 Jun 2016 16:00:21 +0530
+Subject: [PATCH 6/9] meson: Ignore warnings about 'insecure functions' that
+ are used everywhere by bz2
+
+---
+ meson.build | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 8146535..bc333c5 100644
+--- a/meson.build
++++ b/meson.build
+@@ -19,6 +19,9 @@ cc = meson.get_compiler('c')
+ if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+ # bzip2.c:557: warning: variable nread set but not used
+ bz2_c_args += ['-Wno-unused-but-set-variable']
++elif cc.get_id() == 'msvc'
++ # Ignore C4996 about "insecure functions"
++ bz2_c_args += ['/wd4996']
+ endif
+
+ bz2_incs = include_directories('.')
+--
+2.19.1
+
+
+From 25bbfc99440c0a6183aa8a6f367391716b7b4e50 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Thu, 13 Dec 2018 20:19:18 +0530
+Subject: [PATCH 7/9] Update to latest meson, fix MSVC support, etc.
+
+---
+ meson.build | 61 ++++++++++++++++++++++++-----------------------------
+ 1 file changed, 27 insertions(+), 34 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index bc333c5..c2cb942 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,4 +1,4 @@
+-project('bzip2', 'c', version : '1.0.6')
++project('bzip2', 'c', version : '1.0.6', meson_version : '>=0.49')
+
+ bzip2_sources = [
+ 'blocksort.c',
+@@ -10,50 +10,42 @@ bzip2_sources = [
+ 'bzlib.c'
+ ]
+
+-libversion = meson.project_version()
+-soversion = '1'
+-
+-bz2_c_args = ['-D_FILE_OFFSET_BITS=64']
++bz2_c_args = []
+
+ cc = meson.get_compiler('c')
+-if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+- # bzip2.c:557: warning: variable nread set but not used
+- bz2_c_args += ['-Wno-unused-but-set-variable']
+-elif cc.get_id() == 'msvc'
++if cc.get_id() == 'msvc'
+ # Ignore C4996 about "insecure functions"
+ bz2_c_args += ['/wd4996']
++else
++ # bzip2.c:557: warning: variable nread set but not used
++ bz2_c_args += ['-Wno-unused-but-set-variable']
+ endif
+
+ bz2_incs = include_directories('.')
+
+ install_headers(['bzlib.h'])
+
+-libtype = 'both' # FIXME: make option
+-
+-if libtype != 'shared'
+- libbz2_shared = shared_library('bz2', bzip2_sources,
+- version : libversion,
+- soversion : soversion,
+- c_args : bz2_c_args,
+- include_directories : bz2_incs,
+- install : true,
+-# dependencies : mathlib,
+-# vs_module_defs: vs_module_defs_dir + 'libbz2.def',
+- )
+- libbz2 = libbz2_shared
+-endif
+-
+-if libtype != 'static'
+- libbz2_static = static_library('bz2', bzip2_sources,
+- c_args : bz2_c_args,
+- include_directories : bz2_incs,
+- install : true,
+-# dependencies : mathlib,
+- )
+- libbz2 = libbz2_static
++# libbz2 is unversioned on Windows
++libkwargs = {}
++if host_machine.system() != 'windows'
++ libkwargs = {'version': meson.project_version()}
+ endif
+
+-bz2_dep = declare_dependency(link_with : libbz2, include_directories : bz2_incs)
++libbz2 = library('bz2', bzip2_sources,
++ c_args : bz2_c_args,
++ include_directories : bz2_incs,
++ install : true,
++ vs_module_defs : 'libbz2.def',
++ kwargs : libkwargs,
++)
++
++bz2_dep = declare_dependency(link_with : libbz2,
++ include_directories : bz2_incs)
++pkg = import('pkgconfig')
++pkg.generate(name: 'bzip2',
++ description: 'bzip2 data compression library',
++ version: meson.project_version(),
++ libraries: libbz2)
+
+ executable('bzip2', 'bzip2.c',
+ install : true,
+@@ -75,6 +67,7 @@ executable('bzip2recover', 'bzip2recover.c',
+ c_args: bz2_c_args)
+
+ install_man('bzdiff.1', 'bzgrep.1', 'bzip2.1', 'bzmore.1')
+-install_data('bzgrep', 'bzmore', 'bzdiff', install_dir : 'bin')
++install_data('bzgrep', 'bzmore', 'bzdiff', install_dir : 'bin',
++ install_mode : 'rwxr-xr-x')
+
+ # FIXME: build docs
+--
+2.19.1
+
+
+From 96d60e1713e1ca30d472d043ccb9e1b4e15d2be9 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Thu, 13 Dec 2018 20:22:55 +0530
+Subject: [PATCH 8/9] Don't use __declspec(dllimport/export) for symbol
+ exporting
+
+This partially reverts commit 42f2a11dbe251cea54844a987ca0e0715b1d8ca9.
+
+We can just use the .def file, which also has the advantage of not
+needing to build object files twice: once for shared and once for
+static.
+---
+ bzlib.h | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/bzlib.h b/bzlib.h
+index acc6bf8..8a0363d 100644
+--- a/bzlib.h
++++ b/bzlib.h
+@@ -75,15 +75,14 @@ typedef
+ #include <stdio.h>
+ #endif
+
+-/* Define BZ_STATIC_COMPILATION if linking to libbz2 statically */
+-#if defined(_WIN32) && !defined(BZ_STATIC_COMPILATION)
++#if defined(_WIN32)
+ # ifdef BZ_EXPORT
+ # define BZ_API(func) func
+-# define BZ_EXTERN __declspec(dllexport) extern
++# define BZ_EXTERN extern
+ # else
+ /* import windows dll dynamically */
+ # define BZ_API(func) ( * func)
+-# define BZ_EXTERN __declspec(dllimport) extern
++# define BZ_EXTERN
+ # endif
+ #else
+ # define BZ_API(func) func
+--
+2.19.1
+
+
+From c13f8250377ae78357528770ce87cc35c4a2fae3 Mon Sep 17 00:00:00 2001
+From: Nirbheek Chauhan <nirbheek@centricular.com>
+Date: Thu, 13 Dec 2018 20:26:34 +0530
+Subject: [PATCH 9/9] libbz2.def: Don't encode the library name
+
+With MSVC we output bz2.dll, not libbz2.dll
+---
+ libbz2.def | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/libbz2.def b/libbz2.def
+index 2dc0dd8..6e4ddf6 100644
+--- a/libbz2.def
++++ b/libbz2.def
+@@ -1,4 +1,3 @@
+-LIBRARY LIBBZ2
+ DESCRIPTION "libbzip2: library for data compression"
+ EXPORTS
+ BZ2_bzCompressInit
+--
+2.19.1
+