X-Git-Url: http://git.annexia.org/?p=virt-top.git;a=blobdiff_plain;f=configure.ac;h=b3f7addf24bcf71903bcda09cbb9d4bbfe8cfd59;hp=4899523c95fa49bef6dd3834e6b23035e982e04d;hb=HEAD;hpb=bbbb071cc29af9bb70a7e5657c96ff4eb55662dd diff --git a/configure.ac b/configure.ac index 4899523..840eba2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -# ocaml-libvirt -# Copyright (C) 2007 Red Hat Inc., Richard W.M. Jones +# virt-top +# Copyright (C) 2007-2021 Red Hat Inc., Richard W.M. Jones # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -17,114 +17,158 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(ocaml-libvirt,0.3.3.1) +AC_INIT([virt-top],[1.1.1]) +AM_INIT_AUTOMAKE([foreign]) +AC_CONFIG_MACRO_DIR([m4]) -dnl Check for basic C environment. -AC_PROG_CC AC_PROG_INSTALL -AC_PROG_CPP +dnl Enable GNU stuff. +AC_USE_SYSTEM_EXTENSIONS + +dnl Check for basic C environment. +AC_PROG_CC_STDC +AC_PROG_CPP AC_C_PROTOTYPES -test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant) +test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant]) +AM_PROG_CC_C_O -AC_PROG_CC_C_O +dnl Check support for 64 bit file offsets. +AC_SYS_LARGEFILE -dnl Check for libvirt development environment. -AC_ARG_WITH(libvirt, - AC_HELP_STRING([--with-libvirt=PATH],[Set path to installed libvirt]), - [if test "x$withval" != "x"; then - CFLAGS="$CFLAGS -I$withval/include" - LDFLAGS="$LDFLAGS -L$withval/lib" - fi - ]) -AC_CHECK_LIB(virt,virConnectOpen, - [], - AC_MSG_ERROR([You must install libvirt library])) -AC_CHECK_HEADER([libvirt/libvirt.h], - [], - AC_MSG_ERROR([You must install libvirt development package])) - -dnl Check for libvirt >= 0.2.1 (our minimum supported version). -dnl See: http://libvirt.org/hvsupport.html -AC_CHECK_FUNC(virConnectGetCapabilities, - [], - AC_MSG_ERROR([You must have libvirt >= 0.2.1])) - -dnl Check for optional libvirt functions added since 0.2.1. -dnl See: http://libvirt.org/hvsupport.html -AC_CHECK_FUNCS([virConnectGetHostname virConnectGetURI virDomainBlockStats virDomainGetSchedulerParameters virDomainGetSchedulerType virDomainInterfaceStats virDomainMigrate virDomainSetSchedulerParameters]) - -dnl Check for optional ncurses. -AC_CHECK_LIB(ncurses,initscr) +dnl Check for libxml2 (required). +PKG_CHECK_MODULES([LIBXML2], [libxml-2.0]) dnl Check for basic OCaml environment & findlib. AC_PROG_OCAML +if test "$OCAMLC" = "no"; then + AC_MSG_ERROR([You must install the OCaml compiler]) +fi + +AM_CONDITIONAL([HAVE_OCAMLOPT],[test "$OCAMLBEST" = "opt"]) + AC_PROG_FINDLIB +if test "x$OCAMLFIND" = "xno"; then + AC_MSG_ERROR([OCaml findlib is required]) +fi + +dnl Use ocamlfind to find the required packages ... dnl Check for required OCaml packages. AC_CHECK_OCAML_PKG(unix) -if test "x$pkg_unix" != "xyes"; then - AC_MSG_ERROR([Cannot find required OCaml package 'unix']) +if test "x$OCAML_PKG_unix" = "xno"; then + AC_MSG_ERROR([Cannot find required OCaml package 'unix']) fi -AC_CHECK_OCAML_PKG(extlib) -if test "x$pkg_extlib" != "xyes"; then - AC_MSG_ERROR([Cannot find required OCaml package 'extlib']) + +AC_CHECK_OCAML_PKG(libvirt) +if test "x$OCAML_PKG_libvirt" = "xno"; then + AC_MSG_ERROR([Cannot find required OCaml package 'libvirt']) fi -dnl Check for optional OCaml packages. -AC_CHECK_OCAML_PKG(lablgtk2) AC_CHECK_OCAML_PKG(curses) -AC_CHECK_OCAML_PKG(gettext) -AC_CHECK_OCAML_PKG(xml-light) -AC_CHECK_OCAML_PKG(csv) +if test "x$OCAML_PKG_curses" = "xno"; then + AC_MSG_ERROR([Cannot find required OCaml package 'curses']) +fi + +dnl Check for optional OCaml packages. AC_CHECK_OCAML_PKG(calendar) +AC_CHECK_OCAML_PKG(gettext) -AC_SUBST(pkg_lablgtk2) -AC_SUBST(pkg_curses) -AC_SUBST(pkg_gettext) -AC_SUBST(pkg_xml_light) -AC_SUBST(pkg_csv) -AC_SUBST(pkg_calendar) +AM_CONDITIONAL([HAVE_PKG_CALENDAR], [test "x$OCAML_PKG_calendar" != "xno"]) +AM_CONDITIONAL([HAVE_PKG_GETTEXT], [test "x$OCAML_PKG_gettext" != "xno"]) + +dnl Check if ocamlc/ocamlopt -runtime-variant _pic works. It was +dnl added in OCaml >= 4.03, but in theory might be disabled by +dnl downstream distros. +OCAML_RUNTIME_VARIANT_PIC_OPTION="" +if test "x$OCAMLC" != "xno"; then + AC_MSG_CHECKING([if OCaml ‘-runtime-variant _pic’ works]) + rm -f conftest.ml contest + echo 'print_endline "hello world"' > conftest.ml + if $OCAMLOPT conftest.ml -runtime-variant _pic -o conftest >&5 2>&5 ; then + AC_MSG_RESULT([yes]) + OCAML_RUNTIME_VARIANT_PIC_OPTION="-runtime-variant _pic" + else + AC_MSG_RESULT([no]) + fi + rm -f conftest.ml contest +fi +AC_SUBST([OCAML_RUNTIME_VARIANT_PIC_OPTION]) dnl Check for optional perldoc (for building manual pages). -AC_CHECK_PROG(HAVE_PERLDOC,perldoc,perldoc) - -dnl Summary. -echo "------------------------------------------------------------" -echo "Thanks for downloading" $PACKAGE_STRING -echo " OCaml libvirt bindings . yes" -echo " example programs . . . . yes" -echo " mlvirsh . . . . . . . . yes" -echo -n " mlvirtmanager . . . . . " -if test "x$pkg_lablgtk2" = "xyes"; then - echo "yes" -else - echo "no (needs optional lablgtk2)" -fi -echo -n " virt-top . . . . . . . " -if test "x$pkg_curses" = "xyes"; then - echo "yes" +AC_CHECK_PROG([HAVE_PERLDOC], perldoc, perldoc) +AM_CONDITIONAL([HAVE_PERLDOC], [test "x$HAVE_PERLDOC" = "xperldoc"]) + +dnl Check for recommended ocaml-gettext tool. +AC_CHECK_PROG([OCAML_GETTEXT], ocaml-gettext, ocaml-gettext) +AM_CONDITIONAL([HAVE_OCAML_GETTEXT],[test "x$OCAML_GETTEXT" = "xocaml-gettext"]) + +dnl Check for GNU gettext tools (optional). +AC_CHECK_PROG([XGETTEXT],[xgettext],[xgettext],[no]) +AC_CHECK_PROG([MSGCAT],[msgcat],[msgcat],[no]) +AC_CHECK_PROG([MSGFMT],[msgfmt],[msgfmt],[no]) +AC_CHECK_PROG([MSGMERGE],[msgmerge],[msgmerge],[no]) + +dnl Check they are the GNU gettext tools. +AC_MSG_CHECKING([msgfmt is GNU tool]) +if $MSGFMT --version >/dev/null 2>&1 && $MSGFMT --version | grep -q 'GNU gettext +'; then + msgfmt_is_gnu=yes else - echo "no (needs optional ocaml-curses)" + msgfmt_is_gnu=no fi -echo -n " virt-df . . . . . . . " -if test "x$pkg_xml_light" = "xyes"; then - echo "yes" +AC_MSG_RESULT([$msgfmt_is_gnu]) +AM_CONDITIONAL([HAVE_GNU_GETTEXT], + [test "x$XGETTEXT" != "xno" && test "x$MSGCAT" != "xno" && test "x$MSGFMT" != "xno" && test "x$MSGMERGE" != "xno" && test "x$msgfmt_is_gnu" != "xno"]) + +dnl Check for gettext. +AM_GNU_GETTEXT([external]) + +dnl Write gettext modules for the programs. +dnl http://www.le-gall.net/sylvain+violaine/documentation/ocaml-gettext/html/reference-manual/ch03s04.html +AC_MSG_NOTICE([creating src/opt_gettext.ml]) +rm -f src/opt_gettext.ml +echo "(* This file is generated automatically by ./configure. *)" > src/opt_gettext.ml +if test "x$OCAML_PKG_gettext" != "xno"; then + # Gettext module is available, so use it. + cat <>src/opt_gettext.ml +module Gettext = Gettext.Program ( + struct + let textdomain = "virt-top" + let codeset = None + let dir = None + let dependencies = [[]] + end +) (GettextStub.Native) +EOT else - echo "no (needs optional xml-light)" + # No gettext module is available, so fake the translation functions. + cat <>src/opt_gettext.ml +module Gettext = struct + external s_ : string -> string = "%identity" + external f_ : ('a -> 'b, 'c, 'd) format -> ('a -> 'b, 'c, 'd) format + = "%identity" + let sn_ : string -> string -> int -> string + = fun s p n -> if n = 1 then s else p + let fn_ : ('a -> 'b, 'c, 'd) format -> ('a -> 'b, 'c, 'd) format -> int + -> ('a -> 'b, 'c, 'd) format + = fun s p n -> if n = 1 then s else p +end +EOT fi + +dnl Summary. +echo "------------------------------------------------------------" +echo "Thanks for downloading" $PACKAGE_STRING echo "------------------------------------------------------------" dnl Produce output files. AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_FILES([META - libvirt/libvirt_version.ml - Makefile - libvirt/Makefile - examples/Makefile - mlvirsh/Makefile - mlvirtmanager/Makefile - virt-top/Makefile - virt-df/Makefile +AC_CONFIG_FILES([ocaml-dep.sh], [chmod +x,-w ocaml-dep.sh]) +AC_CONFIG_FILES([ocaml-link.sh], [chmod +x,-w ocaml-link.sh]) +AC_CONFIG_FILES([Makefile + po/Makefile + src/Makefile + src/version.ml ]) AC_OUTPUT