mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
configure: Move ocaml-gettext writing boilerplate to separate m4 module.
This is just code motion. NOTE that after this commit you have to do: aclocal -I m4 autoconf as 'make' may not do this automatically.
This commit is contained in:
77
configure.ac
77
configure.ac
@@ -1076,84 +1076,13 @@ AS_IF([test "x$OCAMLC" != "xno"],[
|
||||
|
||||
OCAML_PKG_gettext=no
|
||||
AS_IF([test "x$OCAMLC" != "xno"],[
|
||||
dnl Check for ocaml-gettext package to translate OCaml tools.
|
||||
AC_CHECK_OCAML_PKG(gettext)
|
||||
# Create mllib/common_gettext.ml, gettext functions or stubs.
|
||||
|
||||
dnl Write a common gettext module used by each OCaml tool.
|
||||
dnl If OCaml gettext is not available then we write dummy functions.
|
||||
AC_MSG_NOTICE([creating mllib/common_gettext.ml])
|
||||
rm -f mllib/common_gettext.ml
|
||||
# If we're building in a different directory, then 'mllib/' might
|
||||
# If we're building in a different directory, then mllib/ might
|
||||
# not exist yet, so create it:
|
||||
mkdir -p mllib
|
||||
|
||||
cat <<EOF > mllib/common_gettext.ml
|
||||
(* This file is generated automatically by ./configure. *)
|
||||
|
||||
(** Gettext functions for OCaml virt tools.
|
||||
|
||||
The Common_gettext module provides gettext functions, or dummy
|
||||
functions if ocaml-gettext was not available at configure time.
|
||||
|
||||
{b Note}: Don't translate debug strings, or strings which are
|
||||
meant to be read/written only by machine.
|
||||
|
||||
There are two ways to translate constant strings in OCaml programs.
|
||||
|
||||
For ordinary strings, replace [["string"]] with [[s_"string"]]. Since
|
||||
this is a function call to a function called [[s_]], you may have
|
||||
to put parentheses around the expression.
|
||||
|
||||
For format strings, use:
|
||||
|
||||
{v
|
||||
printf (f_"zeroing filesystem %s") filename;
|
||||
v}
|
||||
|
||||
Note for format strings, the parentheses are almost always required,
|
||||
and they just go around the [[(f_"string")]], {i not} around the other
|
||||
arguments of the printf function.
|
||||
|
||||
At build time, a program parses the OCaml code into an abstract
|
||||
syntax tree and statically determines all calls to the special
|
||||
[[s_]] and [[f_]] functions, which means: (a) You can be very loose
|
||||
with syntax, unlike ordinary xgettext, but (b) you cannot rename
|
||||
these functions.
|
||||
*)
|
||||
|
||||
EOF
|
||||
|
||||
if test "x$OCAML_PKG_gettext" != "xno"; then
|
||||
# ocaml-gettext available: real module.
|
||||
cat <<EOF >>mllib/common_gettext.ml
|
||||
module Gettext = Gettext.Program (
|
||||
struct
|
||||
let textdomain = "$PACKAGE_NAME"
|
||||
let codeset = None
|
||||
let dir = None
|
||||
let dependencies = [[]]
|
||||
end
|
||||
) (GettextStub.Native)
|
||||
EOF
|
||||
else
|
||||
# No gettext: module containing dummy gettext functions.
|
||||
cat <<EOF >>mllib/common_gettext.ml
|
||||
module Gettext = struct
|
||||
external s_ : string -> string = "%identity"
|
||||
external f_ : ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
= "%identity"
|
||||
let sn_ : string -> string -> int -> string
|
||||
= fun s p n -> if n = 1 then s else p
|
||||
let fn_ : ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> int -> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
= fun s p n -> if n = 1 then s else p
|
||||
end
|
||||
EOF
|
||||
fi
|
||||
|
||||
chmod -w mllib/common_gettext.ml
|
||||
GUESTFS_CREATE_COMMON_GETTEXT_ML([mllib/common_gettext.ml])
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_OCAML_PKG_GETTEXT],
|
||||
[test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && test "x$OCAML_PKG_gettext" != "xno"])
|
||||
|
||||
95
m4/guestfs-ocaml-gettext.m4
Normal file
95
m4/guestfs-ocaml-gettext.m4
Normal file
@@ -0,0 +1,95 @@
|
||||
# libguestfs
|
||||
# Copyright (C) 2009-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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
dnl Write a common gettext module used by each OCaml tool.
|
||||
dnl If OCaml gettext is not available then we write dummy functions.
|
||||
|
||||
AC_DEFUN([GUESTFS_CREATE_COMMON_GETTEXT_ML],[
|
||||
dnl Check for ocaml-gettext package to translate OCaml tools.
|
||||
AC_CHECK_OCAML_PKG(gettext)
|
||||
|
||||
AC_MSG_NOTICE([creating $1])
|
||||
rm -f $1
|
||||
|
||||
cat <<EOF > $1
|
||||
(* This file is generated automatically by ./configure. *)
|
||||
|
||||
(** Gettext functions for OCaml virt tools.
|
||||
|
||||
The Common_gettext module provides gettext functions, or dummy
|
||||
functions if ocaml-gettext was not available at configure time.
|
||||
|
||||
{b Note}: Don't translate debug strings, or strings which are
|
||||
meant to be read/written only by machine.
|
||||
|
||||
There are two ways to translate constant strings in OCaml programs.
|
||||
|
||||
For ordinary strings, replace [["string"]] with [[s_"string"]]. Since
|
||||
this is a function call to a function called [[s_]], you may have
|
||||
to put parentheses around the expression.
|
||||
|
||||
For format strings, use:
|
||||
|
||||
{v
|
||||
printf (f_"zeroing filesystem %s") filename;
|
||||
v}
|
||||
|
||||
Note for format strings, the parentheses are almost always required,
|
||||
and they just go around the [[(f_"string")]], {i not} around the other
|
||||
arguments of the printf function.
|
||||
|
||||
At build time, a program parses the OCaml code into an abstract
|
||||
syntax tree and statically determines all calls to the special
|
||||
[[s_]] and [[f_]] functions, which means: (a) You can be very loose
|
||||
with syntax, unlike ordinary xgettext, but (b) you cannot rename
|
||||
these functions.
|
||||
*)
|
||||
|
||||
EOF
|
||||
|
||||
if test "x$OCAML_PKG_gettext" != "xno"; then
|
||||
# ocaml-gettext available: real module.
|
||||
cat <<EOF >>$1
|
||||
module Gettext = Gettext.Program (
|
||||
struct
|
||||
let textdomain = "$PACKAGE_NAME"
|
||||
let codeset = None
|
||||
let dir = None
|
||||
let dependencies = [[]]
|
||||
end
|
||||
) (GettextStub.Native)
|
||||
EOF
|
||||
else
|
||||
# No gettext: module containing dummy gettext functions.
|
||||
cat <<EOF >>$1
|
||||
module Gettext = struct
|
||||
external s_ : string -> string = "%identity"
|
||||
external f_ : ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
= "%identity"
|
||||
let sn_ : string -> string -> int -> string
|
||||
= fun s p n -> if n = 1 then s else p
|
||||
let fn_ : ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
-> int -> ('a, 'b, 'c, 'd, 'e, 'f) format6
|
||||
= fun s p n -> if n = 1 then s else p
|
||||
end
|
||||
EOF
|
||||
fi
|
||||
|
||||
chmod -w $1
|
||||
])
|
||||
Reference in New Issue
Block a user