diff options
author | Marty E. Plummer <hanetzer@protonmail.com> | 2018-01-05 00:15:44 -0600 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2018-01-08 17:35:20 +0100 |
commit | 11f6c152a7176c8a835f4d781b50539c69a9ccbb (patch) | |
tree | 685b5943f005055b448c8d2407368b294035ac6f /dev-libs/libyaml | |
parent | x11-libs/vte: add PREFIX variable. (diff) | |
download | gentoo-11f6c152a7176c8a835f4d781b50539c69a9ccbb.tar.gz gentoo-11f6c152a7176c8a835f4d781b50539c69a9ccbb.tar.bz2 gentoo-11f6c152a7176c8a835f4d781b50539c69a9ccbb.zip |
dev-libs/libyaml: fix dll build on mingw-w64.
includes the following patches:
https://github.com/yaml/libyaml/commit/119b7b6adfa72552d6dc7eb03f402ff5cf8f9fa6
https://github.com/yaml/libyaml/pull/85
Former is upstreamed, the latter is a pending PR. Without these changes a
shared library/dll cannot be created on mingw-w64. Latter patch is applied also
to the generated Makefile.in in order to prevent the need for eautoreconf.
Package-Manager: Portage-2.3.19, Repoman-2.3.6
Closes: https://github.com/gentoo/gentoo/pull/6752
Diffstat (limited to 'dev-libs/libyaml')
-rw-r--r-- | dev-libs/libyaml/files/libyaml-0.1.7-mingw-no-undefined.patch | 32 | ||||
-rw-r--r-- | dev-libs/libyaml/libyaml-0.1.7-r1.ebuild | 48 |
2 files changed, 80 insertions, 0 deletions
diff --git a/dev-libs/libyaml/files/libyaml-0.1.7-mingw-no-undefined.patch b/dev-libs/libyaml/files/libyaml-0.1.7-mingw-no-undefined.patch new file mode 100644 index 000000000000..5e0ef5249413 --- /dev/null +++ b/dev-libs/libyaml/files/libyaml-0.1.7-mingw-no-undefined.patch @@ -0,0 +1,32 @@ +--- a/include/yaml.h ++++ b/include/yaml.h +@@ -26,7 +26,9 @@ extern "C" { + + /** The public API declaration. */ + +-#ifdef _WIN32 ++#if defined(__MINGW32__) ++# define YAML_DECLARE(type) type ++#elif defined(WIN32) + # if defined(YAML_DECLARE_STATIC) + # define YAML_DECLARE(type) type + # elif defined(YAML_DECLARE_EXPORT) +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -1,4 +1,4 @@ + AM_CPPFLAGS = -I$(top_srcdir)/include + lib_LTLIBRARIES = libyaml.la + libyaml_la_SOURCES = yaml_private.h api.c reader.c scanner.c parser.c loader.c writer.c emitter.c dumper.c +-libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE) ++libyaml_la_LDFLAGS = -no-undefined -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE) +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -312,7 +312,7 @@ top_srcdir = @top_srcdir@ + AM_CPPFLAGS = -I$(top_srcdir)/include + lib_LTLIBRARIES = libyaml.la + libyaml_la_SOURCES = yaml_private.h api.c reader.c scanner.c parser.c loader.c writer.c emitter.c dumper.c +-libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE) ++libyaml_la_LDFLAGS = -no-undefined -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE) + all: all-am + + .SUFFIXES: diff --git a/dev-libs/libyaml/libyaml-0.1.7-r1.ebuild b/dev-libs/libyaml/libyaml-0.1.7-r1.ebuild new file mode 100644 index 000000000000..8e168bc585df --- /dev/null +++ b/dev-libs/libyaml/libyaml-0.1.7-r1.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit libtool + +MY_P="${P/lib}" + +DESCRIPTION="YAML 1.1 parser and emitter written in C" +HOMEPAGE="http://pyyaml.org/wiki/LibYAML" +SRC_URI="http://pyyaml.org/download/${PN}/${MY_P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="doc static-libs test" + +S="${WORKDIR}/${MY_P}" +PATCHES=( + "${FILESDIR}/${PN}-0.1.7-mingw-no-undefined.patch" +) + +src_prepare() { + default + + # conditionally remove tests + if ! use test; then + sed -i -e 's: tests::g' Makefile* || die + fi + + elibtoolize # for FreeMiNT +} + +src_configure() { + econf $(use_enable static-libs static) +} + +src_install() { + use doc && HTML_DOCS=( doc/html/. ) + default + + find "${D}" -name '*.la' -delete || die + + docinto examples + dodoc tests/example-*.c + docompress -x /usr/share/doc/${PF}/examples +} |