Pino Toscano
2015-May-13 14:47 UTC
[Libguestfs] [PATCH 1/2] build: factor out the OCaml link.sh scripts
Create a single ocaml-link.sh script, which supports a -cclib parameter so it can be used instead of the per-project link.sh scripts. As result, the libraries for each OCaml application can be moved back to each Makefile.am. --- .gitignore | 7 ------- builder/Makefile.am | 14 ++++++++++++-- builder/link.sh.in | 22 ---------------------- configure.ac | 14 -------------- customize/Makefile.am | 13 +++++++++++-- customize/link.sh.in | 22 ---------------------- mllib/Makefile.am | 13 +++++++++++-- mllib/link.sh.in | 22 ---------------------- ocaml-link.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ resize/Makefile.am | 11 +++++++++-- resize/link.sh.in | 22 ---------------------- sparsify/Makefile.am | 7 +++++-- sparsify/link.sh.in | 22 ---------------------- sysprep/Makefile.am | 12 ++++++++++-- sysprep/link.sh.in | 22 ---------------------- v2v/Makefile.am | 17 +++++++++++++---- v2v/link.sh.in | 22 ---------------------- 17 files changed, 114 insertions(+), 191 deletions(-) delete mode 100644 builder/link.sh.in delete mode 100644 customize/link.sh.in delete mode 100644 mllib/link.sh.in create mode 100755 ocaml-link.sh delete mode 100644 resize/link.sh.in delete mode 100644 sparsify/link.sh.in delete mode 100644 sysprep/link.sh.in delete mode 100644 v2v/link.sh.in diff --git a/.gitignore b/.gitignore index 318cfa0..29f9d6d 100644 --- a/.gitignore +++ b/.gitignore @@ -59,7 +59,6 @@ Makefile.in /builder/index-parse.h /builder/index-scan.c /builder/libguestfs.conf -/builder/link.sh /builder/*.qcow2 /builder/stamp-virt-builder.pod /builder/stamp-virt-index-validate.pod @@ -95,7 +94,6 @@ Makefile.in /customize/customize_cmdline.mli /customize/customize-options.pod /customize/customize-synopsis.pod -/customize/link.sh /customize/stamp-virt-customize.pod /customize/virt-customize /customize/virt-customize.1 @@ -311,7 +309,6 @@ Makefile.in /mllib/dummy /mllib/JSON_tests /mllib/libdir.ml -/mllib/link.sh /mllib/oUnit-* /ocaml/bindtests.bc /ocaml/bindtests.opt @@ -423,7 +420,6 @@ Makefile.in /rescue/virt-rescue /rescue/virt-rescue.1 /resize/.depend -/resize/link.sh /resize/stamp-virt-resize.pod /resize/virt-resize /resize/virt-resize.1 @@ -441,7 +437,6 @@ Makefile.in /ruby/stamp-rdoc /run /sparsify/.depend -/sparsify/link.sh /sparsify/stamp-virt-sparsify.pod /sparsify/virt-sparsify /sparsify/virt-sparsify.1 @@ -476,7 +471,6 @@ Makefile.in /stamp-guestfs-release-notes.pod /stamp-h1 /sysprep/.depend -/sysprep/link.sh /sysprep/stamp-script1.sh /sysprep/stamp-script2.sh /sysprep/stamp-script4.sh @@ -566,7 +560,6 @@ Makefile.in /v2v/centos-6.img /v2v/centos-7.0.img /v2v/fedora-20.img -/v2v/link.sh /v2v/oUnit-* /v2v/rhel-5.10.img /v2v/rhel-6.5.img diff --git a/builder/Makefile.am b/builder/Makefile.am index bfe2f79..182f5a4 100644 --- a/builder/Makefile.am +++ b/builder/Makefile.am @@ -150,6 +150,16 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + -pthread -lpthread \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBCRYPT_LIBS) \ + $(LIBLZMA_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -162,9 +172,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_builder_DEPENDENCIES = $(OBJECTS) +virt_builder_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_builder_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/builder/link.sh.in b/builder/link.sh.in deleted file mode 100644 index 964617f..0000000 --- a/builder/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-pthread -lpthread -lutils @LIBTINFO_LIBS@ @LIBCRYPT_LIBS@ @LIBLZMA_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' diff --git a/configure.ac b/configure.ac index 7a609cb..1807666 100644 --- a/configure.ac +++ b/configure.ac @@ -1708,14 +1708,8 @@ mkdir -p \ dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html AC_CONFIG_FILES([appliance/libguestfs-make-fixed-appliance], [chmod +x,-w appliance/libguestfs-make-fixed-appliance]) -AC_CONFIG_FILES([builder/link.sh], - [chmod +x,-w builder/link.sh]) -AC_CONFIG_FILES([customize/link.sh], - [chmod +x,-w customize/link.sh]) AC_CONFIG_FILES([inspector/test-xmllint.sh], [chmod +x,-w inspector/test-xmllint.sh]) -AC_CONFIG_FILES([mllib/link.sh], - [chmod +x,-w mllib/link.sh]) AC_CONFIG_FILES([p2v/virt-p2v-make-disk], [chmod +x,-w p2v/virt-p2v-make-disk]) AC_CONFIG_FILES([p2v/virt-p2v-make-kickstart], @@ -1726,16 +1720,8 @@ AC_CONFIG_FILES([pick-guests.pl], [chmod +x,-w pick-guests.pl]) AC_CONFIG_FILES([podwrapper.pl], [chmod +x,-w podwrapper.pl]) -AC_CONFIG_FILES([resize/link.sh], - [chmod +x,-w resize/link.sh]) AC_CONFIG_FILES([run], [chmod +x,-w run]) -AC_CONFIG_FILES([sparsify/link.sh], - [chmod +x,-w sparsify/link.sh]) -AC_CONFIG_FILES([sysprep/link.sh], - [chmod +x,-w sysprep/link.sh]) -AC_CONFIG_FILES([v2v/link.sh], - [chmod +x,-w v2v/link.sh]) AC_CONFIG_FILES([Makefile align/Makefile diff --git a/customize/Makefile.am b/customize/Makefile.am index d36721a..8f0a2d8 100644 --- a/customize/Makefile.am +++ b/customize/Makefile.am @@ -109,6 +109,15 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBCRYPT_LIBS) \ + $(LIBVIRT_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -121,9 +130,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_customize_DEPENDENCIES = $(OBJECTS) +virt_customize_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_customize_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/customize/link.sh.in b/customize/link.sh.in deleted file mode 100644 index 15b6e66..0000000 --- a/customize/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-lutils @LIBTINFO_LIBS@ @LIBCRYPT_LIBS@ @LIBVIRT_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' diff --git a/mllib/Makefile.am b/mllib/Makefile.am index 0b43684..c7967b8 100644 --- a/mllib/Makefile.am +++ b/mllib/Makefile.am @@ -95,6 +95,15 @@ if HAVE_OCAML_PKG_OUNIT OCAMLPACKAGES_TESTS += -package oUnit endif +OCAMLCLIBS = \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBCRYPT_LIBS) \ + $(LIBVIRT_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -107,9 +116,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -dummy_DEPENDENCIES = $(OBJECTS) +dummy_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh dummy_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/mllib/link.sh.in b/mllib/link.sh.in deleted file mode 100644 index 15b6e66..0000000 --- a/mllib/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-lutils @LIBTINFO_LIBS@ @LIBCRYPT_LIBS@ @LIBVIRT_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' diff --git a/ocaml-link.sh b/ocaml-link.sh new file mode 100755 index 0000000..bbb9b98 --- /dev/null +++ b/ocaml-link.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# (C) Copyright 2015 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Hack automake to link OCaml-based binaries properly. +# There is no other way to add the -cclib parameter to the end of +# the command line. + +# Usage: +# ./ocaml-link.sh -cclib '...' -- ARGS +# Pass the cclib argument separately, and the rest as separated +# arguments. + +TEMP=`getopt -a -o '' --long 'cclib:' \ + -n "$(basename $0)" -- "$@"` +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi +eval set -- "$TEMP" + +cclib+ +while true ; do + case "$1" in + -cclib|--cclib) cclib="$2" ; shift 2 ;; + --) shift ; break ;; + *) echo "Internal error!" ; exit 1 ;; + esac +done + +exec "$@" -linkpkg -cclib "${cclib}" diff --git a/resize/Makefile.am b/resize/Makefile.am index 12afd09..657b626 100644 --- a/resize/Makefile.am +++ b/resize/Makefile.am @@ -75,6 +75,13 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -87,9 +94,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_resize_DEPENDENCIES = $(OBJECTS) +virt_resize_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_resize_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/resize/link.sh.in b/resize/link.sh.in deleted file mode 100644 index 2835f0e..0000000 --- a/resize/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-lutils @LIBTINFO_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' diff --git a/sparsify/Makefile.am b/sparsify/Makefile.am index 205641d..98ab729 100644 --- a/sparsify/Makefile.am +++ b/sparsify/Makefile.am @@ -71,6 +71,9 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + $(LIBTINFO_LIBS) + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -83,10 +86,10 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_sparsify_DEPENDENCIES = $(OBJECTS) +virt_sparsify_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_sparsify_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/sparsify/link.sh.in b/sparsify/link.sh.in deleted file mode 100644 index 9892b07..0000000 --- a/sparsify/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '@LIBTINFO_LIBS@' diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am index c57060d..c1d1245 100644 --- a/sysprep/Makefile.am +++ b/sysprep/Makefile.am @@ -138,6 +138,14 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBCRYPT_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -150,9 +158,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_sysprep_DEPENDENCIES = $(OBJECTS) +virt_sysprep_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_sysprep_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ diff --git a/sysprep/link.sh.in b/sysprep/link.sh.in deleted file mode 100644 index 7d8ccec..0000000 --- a/sysprep/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-lutils @LIBTINFO_LIBS@ @LIBCRYPT_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' diff --git a/v2v/Makefile.am b/v2v/Makefile.am index 8315eb1..03f818c 100644 --- a/v2v/Makefile.am +++ b/v2v/Makefile.am @@ -160,6 +160,15 @@ if HAVE_OCAML_PKG_GETTEXT OCAMLPACKAGES += -package gettext-stub endif +OCAMLCLIBS = \ + -lutils \ + $(LIBTINFO_LIBS) \ + $(LIBCRYPT_LIBS) \ + $(LIBVIRT_LIBS) \ + $(LIBXML2_LIBS) \ + $(LIBINTL) \ + -lgnu + OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) if !HAVE_OCAMLOPT @@ -172,9 +181,9 @@ BEST = opt OCAMLLINKFLAGS = mlguestfs.cmxa endif -virt_v2v_DEPENDENCIES = $(OBJECTS) +virt_v2v_DEPENDENCIES = $(OBJECTS) $(top_srcdir)/ocaml-link.sh virt_v2v_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLLINKFLAGS) \ $(OBJECTS) -o $@ @@ -319,9 +328,9 @@ v2v_unit_tests_THEOBJECTS = $(v2v_unit_tests_XOBJECTS) v2v_unit_tests.cmx: OCAMLPACKAGES += -package oUnit endif -v2v_unit_tests_DEPENDENCIES = $(v2v_unit_tests_THEOBJECTS) +v2v_unit_tests_DEPENDENCIES = $(v2v_unit_tests_THEOBJECTS) $(top_srcdir)/ocaml-link.sh v2v_unit_tests_LINK = \ - ./link.sh \ + $(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \ $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) \ $(OCAMLPACKAGES) -package oUnit \ $(OCAMLLINKFLAGS) \ diff --git a/v2v/link.sh.in b/v2v/link.sh.in deleted file mode 100644 index 15b6e66..0000000 --- a/v2v/link.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -# libguestfs Makefile.am -# @configure_input@ -# (C) Copyright 2014 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Hack automake to link binary properly. There is no other way to add -# the -cclib parameter to the end of the command line. - -exec "$@" -linkpkg -cclib '-lutils @LIBTINFO_LIBS@ @LIBCRYPT_LIBS@ @LIBVIRT_LIBS@ @LIBXML2_LIBS@ @LIBINTL@ -lgnu' -- 2.1.0
Pino Toscano
2015-May-13 14:47 UTC
[Libguestfs] [PATCH 2/2] mllib: link tests with automake
Add a dummy C source, otherwise automake tries to look for e.g. common_utils_tests.c. Also, set check_PROGRAMS properly with them. --- mllib/Makefile.am | 48 +++++++++++++++++++++++++++++++++--------------- mllib/dummy.c | 2 ++ po/POTFILES | 1 + 3 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 mllib/dummy.c diff --git a/mllib/Makefile.am b/mllib/Makefile.am index c7967b8..272c981 100644 --- a/mllib/Makefile.am +++ b/mllib/Makefile.am @@ -141,36 +141,54 @@ libdir.ml: Makefile # Tests. -check_SCRIPTS = \ - common_utils_tests - +common_utils_tests_SOURCES = dummy.c +common_utils_tests_BOBJECTS = \ + config.cmo \ + common_gettext.cmo \ + common_utils.cmo \ + common_utils_tests.cmo +common_utils_tests_XOBJECTS = $(common_utils_tests_BOBJECTS:.cmo=.cmx) + +JSON_tests_SOURCES = dummy.c +JSON_tests_BOBJECTS = \ + JSON.cmo \ + JSON_tests.cmo +JSON_tests_XOBJECTS = $(JSON_tests_BOBJECTS:.cmo=.cmx) + +# Can't call the following as <test>_OBJECTS because automake gets confused. if HAVE_OCAMLOPT +common_utils_tests_THEOBJECTS = $(common_utils_tests_XOBJECTS) common_utils_tests.cmx: OCAMLPACKAGES += $(OCAMLPACKAGES_TESTS) -common_utils_tests: config.cmx common_gettext.cmx common_utils.cmx common_utils_tests.cmx - $(OCAMLFIND) ocamlopt $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) \ - mlguestfs.cmxa -linkpkg $^ -cclib '$(LIBTINFO_LIBS)' -o $@ +JSON_tests_THEOBJECTS = $(JSON_tests_XOBJECTS) JSON_tests.cmx: OCAMLPACKAGES += $(OCAMLPACKAGES_TESTS) -JSON_tests: JSON.cmx JSON_tests.cmx - $(OCAMLFIND) ocamlopt $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) \ - mlguestfs.cmxa -linkpkg $^ -cclib '$(LIBTINFO_LIBS)' -o $@ else +common_utils_tests_THEOBJECTS = $(common_utils_tests_BOBJECTS) common_utils_tests.cmo: OCAMLPACKAGES += $(OCAMLPACKAGES_TESTS) -common_utils_tests: config.cmo common_gettext.cmo common_utils.cmo common_utils_tests.cmo - $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) \ - mlguestfs.cma -linkpkg $^ -cclib '$(LIBTINFO_LIBS)' -custom -o $@ +JSON_tests_THEOBJECTS = $(JSON_tests_BOBJECTS) JSON_tests.cmo: OCAMLPACKAGES += $(OCAMLPACKAGES_TESTS) -JSON_tests: JSON.cmo JSON_tests.cmo - $(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) \ - mlguestfs.cma -linkpkg $^ -cclib '$(LIBTINFO_LIBS)' -custom -o $@ endif +common_utils_tests_DEPENDENCIES = $(common_utils_tests_THEOBJECTS) $(top_srcdir)/ocaml-link.sh +common_utils_tests_LINK = \ + $(top_srcdir)/ocaml-link.sh -- \ + $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) $(OCAMLLINKFLAGS) \ + $(common_utils_tests_THEOBJECTS) -o $@ + +JSON_tests_DEPENDENCIES = $(JSON_tests_THEOBJECTS) $(top_srcdir)/ocaml-link.sh +JSON_tests_LINK = \ + $(top_srcdir)/ocaml-link.sh -- \ + $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) $(OCAMLLINKFLAGS) \ + $(JSON_tests_THEOBJECTS) -o $@ + TESTS_ENVIRONMENT = $(top_builddir)/run --test TESTS +check_PROGRAMS if HAVE_OCAML_PKG_OUNIT +check_PROGRAMS += common_utils_tests JSON_tests TESTS += common_utils_tests JSON_tests endif diff --git a/mllib/dummy.c b/mllib/dummy.c new file mode 100644 index 0000000..ebab619 --- /dev/null +++ b/mllib/dummy.c @@ -0,0 +1,2 @@ +/* Dummy source, to be used for OCaml-based tools with no C sources. */ +enum { foo = 1 }; diff --git a/po/POTFILES b/po/POTFILES index 8d2daf7..a5e902e 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -258,6 +258,7 @@ inspector/inspector.c java/com_redhat_et_libguestfs_GuestFS.c lua/lua-guestfs.c make-fs/make-fs.c +mllib/dummy.c mllib/fsync-c.c mllib/mkdtemp-c.c mllib/progress-c.c -- 2.1.0
Richard W.M. Jones
2015-May-13 21:40 UTC
Re: [Libguestfs] [PATCH 1/2] build: factor out the OCaml link.sh scripts
On Wed, May 13, 2015 at 04:47:04PM +0200, Pino Toscano wrote:> Create a single ocaml-link.sh script, which supports a -cclib parameter > so it can be used instead of the per-project link.sh scripts. > As result, the libraries for each OCaml application can be moved back to > each Makefile.am. > ---Seems sensible, ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW
Richard W.M. Jones
2015-May-13 21:41 UTC
Re: [Libguestfs] [PATCH 2/2] mllib: link tests with automake
On Wed, May 13, 2015 at 04:47:05PM +0200, Pino Toscano wrote:> Add a dummy C source, otherwise automake tries to look for e.g. > common_utils_tests.c. > > Also, set check_PROGRAMS properly with them.ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
Reasonably Related Threads
- [PATCH 1/2] build: Fix dependencies on mllib and customize.
- [PATCH 2/2] mllib: link tests with automake
- [PATCH 2/2] lib: Check if crypt() comes from a separate library
- [PATCH v6 05/41] utils: Split out cleanups into common/cleanups.
- [PATCH 2/3] build: run ocaml-link.sh from build directory