mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-08 15:07:33 +00:00
refactor(linux): Remove obsolete SCIM kmfl imengine
We didn't distribute the SCIM kmfl package for the last several versions, and SCIM got replaced by ibus in the major desktop environments.
This commit is contained in:
parent
2c4ce9c687
commit
358a4529da
66 changed files with 0 additions and 18101 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -1 +0,0 @@
|
|||
Doug Rintoul (doug_rintoul@sil.org)
|
||||
|
|
@ -1,340 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
scim-kmfl-imengine (0.9.8)
|
||||
|
||||
* remove debugging output
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Wed, 04 Feb 2009 10:35:59 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.7)
|
||||
|
||||
* sync version number with libkmfl
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Thu, 16 Oct 2008 17:01:12 -0700
|
||||
|
||||
scim-kmfl-imengine (0.9.6)
|
||||
|
||||
* add support for get_surrounding_text to provide context sensitive input
|
||||
methods
|
||||
* add the ability to reload keyboards on the fly
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Tue, 7 Nov 2006 15:09:53 -0800
|
||||
|
||||
0.9.5
|
||||
|
||||
* Make loading of keyboards more efficient
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Wed, 6 Sep 2006 13:11:25 -0700
|
||||
|
||||
0.9.4
|
||||
|
||||
* Use UTF conversion routines in kmflcomp rather than a local copy
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Fri, 16 Jun 2006 11:10:00 -0700
|
||||
|
||||
0.9.2
|
||||
|
||||
* disable scim restart when installing keyboards with scim_kmfl_setup
|
||||
causes apps to crash
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Thu, 02 Mar 2006 11:10:00 -0800
|
||||
|
||||
0.9.1
|
||||
|
||||
* fix enumeration of uncompiled keyboards in scim kmfl setup
|
||||
* AMD64 fixes
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Wed, 12 Oct 2005 09:45:00 -0800
|
||||
|
||||
0.9 30-Aug-2005
|
||||
Fix shift key problem
|
||||
0.8 4-Jul-2005
|
||||
Add full support for virtual keys.
|
||||
0.7 2-Jun-2005
|
||||
Fix bug when keyboard name was greater than 31 characters.
|
||||
Increase maximum size of names to 64 characters and add warnings when names exceed this amount
|
||||
Allow stores to be used before they are defined
|
||||
0.6 31-May-2005
|
||||
Add the ability to load uncompiled keyboards on the fly
|
||||
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
SUBDIRS = po src scim_kmfl_imengine_setup data
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# Copy all the spec files. Of cource, only one is actually used.
|
||||
dist-hook:
|
||||
for specfile in *.spec; do \
|
||||
if test -f $$specfile; then \
|
||||
cp -p $$specfile $(distdir); \
|
||||
fi \
|
||||
done
|
||||
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
This package provides the KMFL IM engine for SCIM (Smart Common Input Method).
|
||||
With this module, you can use keyboards designed for Tavultesoft Keyman for Windows
|
||||
under the SCIM platform.
|
||||
|
||||
See kmfl.sourceforge.net for more information.
|
||||
|
|
@ -1 +0,0 @@
|
|||
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
#! /bin/sh
|
||||
# bootstrap -- Use this script to create generated files from the CVS dist
|
||||
# Copyright (C) 2000 Gary V. Vaughan
|
||||
#
|
||||
# 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, 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.
|
||||
|
||||
## @start 1
|
||||
#! /bin/sh
|
||||
|
||||
set -x
|
||||
aclocal -I m4
|
||||
autoheader
|
||||
libtoolize -c --automake
|
||||
intltoolize -c --automake
|
||||
automake --add-missing --copy --include-deps
|
||||
autoconf
|
||||
## @end 1
|
||||
|
|
@ -1,666 +0,0 @@
|
|||
#! /bin/sh
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2007 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# The first argument passed to this file is the canonical host specification,
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||
# should be set by the caller.
|
||||
#
|
||||
# The set of defined variables is at the end of this script.
|
||||
|
||||
# Known limitations:
|
||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
|
||||
host="$1"
|
||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
||||
|
||||
for cc_temp in $CC""; do
|
||||
case $cc_temp in
|
||||
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||
\-*) ;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
||||
|
||||
wl=
|
||||
if test "$GCC" = yes; then
|
||||
wl='-Wl,'
|
||||
else
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
darwin*)
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mingw* | cygwin* | pw32* | os2*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
case $cc_basename in
|
||||
icc* | ecc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
pgcc | pgf77 | pgf90)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
ccc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
como)
|
||||
wl='-lopt='
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ C*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
rdos*)
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
unicos*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
||||
|
||||
hardcode_libdir_flag_spec=
|
||||
hardcode_libdir_separator=
|
||||
hardcode_direct=no
|
||||
hardcode_minus_L=no
|
||||
|
||||
case "$host_os" in
|
||||
cygwin* | mingw* | pw32*)
|
||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
if test "$GCC" != yes; then
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
interix*)
|
||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||
with_gnu_ld=yes
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
# Set some defaults for GNU ld with shared library support. These
|
||||
# are reset later if shared libraries are not supported. Putting them
|
||||
# here allows them to be overridden if necessary.
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX/PPC, the GNU linker is very broken
|
||||
if test "$host_cpu" != ia64; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we cannot use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
interix[3-9]*)
|
||||
hardcode_direct=no
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
gnu* | linux* | k*bsd*-gnu)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
solaris*)
|
||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
||||
case `$LD -v 2>&1` in
|
||||
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = no; then
|
||||
hardcode_libdir_flag_spec=
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||
# are no directories specified by -L.
|
||||
hardcode_minus_L=yes
|
||||
if test "$GCC" = yes; then
|
||||
# Neither direct hardcoding nor static linking is supported with a
|
||||
# broken collect2.
|
||||
hardcode_direct=unsupported
|
||||
fi
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
else
|
||||
aix_use_runtimelinking=no
|
||||
# Test if we are trying to use run time linking or normal
|
||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||
# need to do runtime linking.
|
||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
case $host_os in aix4.[012]|aix4.[012].*)
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
if test -f "$collect2name" && \
|
||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||
then
|
||||
# We have reworked collect2
|
||||
:
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||
echo 'int main () { return 0; }' > conftest.c
|
||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
fi
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath="/usr/lib:/lib"
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
;;
|
||||
bsdi[45]*)
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec=' '
|
||||
libext=lib
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
hardcode_direct=no
|
||||
if test "$GCC" = yes ; then
|
||||
:
|
||||
else
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
hpux9*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
hpux10*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
fi
|
||||
;;
|
||||
hpux11*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
case $host_cpu in
|
||||
hppa*64*|ia64*)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
*)
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
netbsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
newsos6)
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
openbsd*)
|
||||
if test -f /usr/libexec/ld.so; then
|
||||
hardcode_direct=yes
|
||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
else
|
||||
case "$host_os" in
|
||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
os2*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
osf3*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
osf4* | osf5*)
|
||||
if test "$GCC" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
else
|
||||
# Both cc and cxx compiler support -rpath directly
|
||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
sysv4)
|
||||
case $host_vendor in
|
||||
sni)
|
||||
hardcode_direct=yes # is this really true???
|
||||
;;
|
||||
siemens)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
motorola)
|
||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sysv4.3*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6*)
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||||
hardcode_libdir_separator=':'
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check dynamic linker characteristics
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
||||
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||||
# only about the one the linker finds when passed -lNAME. This is the last
|
||||
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||||
# linker has special search rules.
|
||||
library_names_spec= # the last element of library_names_spec in libtool.m4
|
||||
libname_spec='lib$name'
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
amigaos*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
beos*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
bsdi[45]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.dll.a $libname.lib'
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
shrext=.dylib
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
dgux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
freebsd1*)
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_os" in
|
||||
freebsd[123]*)
|
||||
library_names_spec='$libname$shrext$versuffix' ;;
|
||||
*)
|
||||
library_names_spec='$libname$shrext' ;;
|
||||
esac
|
||||
;;
|
||||
gnu*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case $host_cpu in
|
||||
ia64*)
|
||||
shrext=.so
|
||||
;;
|
||||
hppa*64*)
|
||||
shrext=.sl
|
||||
;;
|
||||
*)
|
||||
shrext=.sl
|
||||
;;
|
||||
esac
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
interix[3-9]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
case "$host_os" in
|
||||
irix5* | nonstopux*)
|
||||
libsuff= shlibsuff=
|
||||
;;
|
||||
*)
|
||||
case $LD in
|
||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
||||
*) libsuff= shlibsuff= ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*oldld* | linux*aout* | linux*coff*)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
knetbsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
netbsd*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
newsos6)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
nto-qnx*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
openbsd*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
os2*)
|
||||
libname_spec='$name'
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
rdos*)
|
||||
;;
|
||||
solaris*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sunos4*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
sysv4 | sysv4.3*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
uts4*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
esac
|
||||
|
||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||||
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
|
||||
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||
|
||||
# How to pass a linker flag through the compiler.
|
||||
wl="$escaped_wl"
|
||||
|
||||
# Static library suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
# Shared library suffix (normally "so").
|
||||
shlibext="$shlibext"
|
||||
|
||||
# Format of library name prefix.
|
||||
libname_spec="$escaped_libname_spec"
|
||||
|
||||
# Library names that the linker finds when passed -lNAME.
|
||||
library_names_spec="$escaped_library_names_spec"
|
||||
|
||||
# Flag to hardcode \$libdir into a binary during linking.
|
||||
# This must work even if \$libdir does not exist.
|
||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||
|
||||
# Whether we need a single -rpath flag with a separated argument.
|
||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct="$hardcode_direct"
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L="$hardcode_minus_L"
|
||||
|
||||
EOF
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl Created by Anjuta - will be overwritten
|
||||
dnl If you don't want it to overwrite it,
|
||||
dnl Please disable it in the Anjuta project configuration
|
||||
|
||||
AC_INIT(scim-kmfl-imengine, 0.9.9)
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_ISC_POSIX
|
||||
AC_SUBST(CFLAGS,$CFLAGS)
|
||||
AC_SUBST(CXXFLAGS,$CXXFLAGS)
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AM_PROG_CC_STDC
|
||||
AC_HEADER_STDC
|
||||
AM_PROG_LIBTOOL
|
||||
# AC_PROG_INTLTOOL([0.22])
|
||||
|
||||
PKG_CHECK_MODULES(GTK, gtk+-2.0 gdk-2.0,,exit)
|
||||
GTK_LIBDIR=`$PKG_CONFIG --variable=libdir gtk+-2.0`
|
||||
if test -z "$GTK_LIBDIR"; then
|
||||
GTK_LIBDIR="$libdir"
|
||||
fi
|
||||
AC_SUBST(GTK_LIBDIR)
|
||||
|
||||
|
||||
AC_SUBST(GTK_LIBS)
|
||||
AC_SUBST(GTK_CFLAGS)
|
||||
|
||||
dnl Checks for programs.
|
||||
dnl Checks for libraries.
|
||||
dnl Checks for header files.
|
||||
AC_CHECK_HEADERS([langinfo.h libintl.h string.h dirent.h])
|
||||
|
||||
PKG_CHECK_MODULES(SCIM, scim,,exit)
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
dnl Checks for library functions.
|
||||
dnl Checks for Additional stuffs.
|
||||
dnl Subst SCIM VERSION INFO
|
||||
SCIM_MAJOR=`pkg-config --modversion scim | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
AC_SUBST(SCIM_MAJOR)
|
||||
|
||||
SCIM_MINOR=`pkg-config --modversion scim | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
AC_SUBST(SCIM_MINOR)
|
||||
|
||||
SCIM_BINARY_VERSION=`pkg-config --variable=scim_binary_version scim`
|
||||
AC_SUBST(SCIM_BINARY_VERSION)
|
||||
|
||||
AC_SUBST(SCIM_LIBS)
|
||||
AC_SUBST(SCIM_CFLAGS)
|
||||
|
||||
SCIM_DATADIR="$datadir/scim"
|
||||
AC_SUBST(SCIM_DATADIR)
|
||||
|
||||
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
|
||||
|
||||
GETTEXT_PACKAGE=scim_kmfl_imengine
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
|
||||
|
||||
|
||||
dnl Languages which your application supports
|
||||
ALL_LINGUAS=""
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION(0.17)
|
||||
|
||||
#AM_GNU_GETTEXT_VERSION
|
||||
#AM_GNU_GETTEXT
|
||||
|
||||
dnl Set PACKAGE_LOCALE_DIR in config.h.
|
||||
if test "x${prefix}" = "xNONE"; then
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale")
|
||||
else
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale")
|
||||
fi
|
||||
|
||||
|
||||
dnl Set PACKAGE SOURCE DIR in config.h.
|
||||
packagesrcdir=`cd $srcdir && pwd`
|
||||
|
||||
dnl Set PACKAGE PREFIX
|
||||
if test "x${prefix}" = "xNONE"; then
|
||||
packageprefix=${ac_default_prefix}
|
||||
else
|
||||
packageprefix=${prefix}
|
||||
fi
|
||||
|
||||
dnl Set PACKAGE DATA & DOC DIR
|
||||
packagedatadir=share/${PACKAGE}
|
||||
packagedocdir=doc/${PACKAGE}
|
||||
|
||||
dnl Set PACKAGE DIRS in config.h.
|
||||
packagepixmapsdir=${packagedatadir}/pixmaps
|
||||
packagehelpdir=${packagedatadir}/help
|
||||
packagemenudir=${packagedatadir}
|
||||
|
||||
dnl Subst PACKAGE_DATA_DIR.
|
||||
NO_PREFIX_PACKAGE_DATA_DIR="${packagedatadir}"
|
||||
AC_SUBST(NO_PREFIX_PACKAGE_DATA_DIR)
|
||||
PACKAGE_DATA_DIR="${packageprefix}/${packagedatadir}"
|
||||
AC_SUBST(PACKAGE_DATA_DIR)
|
||||
|
||||
dnl Subst PACKAGE_DOC_DIR.
|
||||
NO_PREFIX_PACKAGE_DOC_DIR="${packagedocdir}"
|
||||
AC_SUBST(NO_PREFIX_PACKAGE_DOC_DIR)
|
||||
PACKAGE_DOC_DIR="${packageprefix}/${packagedocdir}"
|
||||
AC_SUBST(PACKAGE_DOC_DIR)
|
||||
|
||||
dnl Subst PACKAGE_PIXMAPS_DIR.
|
||||
NO_PREFIX_PACKAGE_PIXMAPS_DIR="${packagepixmapsdir}"
|
||||
AC_SUBST(NO_PREFIX_PACKAGE_PIXMAPS_DIR)
|
||||
PACKAGE_PIXMAPS_DIR="${packageprefix}/${packagepixmapsdir}"
|
||||
AC_SUBST(PACKAGE_PIXMAPS_DIR)
|
||||
|
||||
dnl Subst PACKAGE_HELP_DIR.
|
||||
NO_PREFIX_PACKAGE_HELP_DIR="${packagehelpdir}"
|
||||
AC_SUBST(NO_PREFIX_PACKAGE_HELP_DIR)
|
||||
PACKAGE_HELP_DIR="${packageprefix}/${packagehelpdir}"
|
||||
AC_SUBST(PACKAGE_HELP_DIR)
|
||||
|
||||
dnl Subst PACKAGE_MENU_DIR.
|
||||
NO_PREFIX_PACKAGE_MENU_DIR="${packagemenudir}"
|
||||
AC_SUBST(NO_PREFIX_PACKAGE_MENU_DIR)
|
||||
PACKAGE_MENU_DIR="${packageprefix}/${packagemenudir}"
|
||||
AC_SUBST(PACKAGE_MENU_DIR)
|
||||
|
||||
AH_TEMPLATE([ENABLE_NLS])
|
||||
AH_TEMPLATE([HAVE_CATGETS])
|
||||
AH_TEMPLATE([HAVE_GETTEXT])
|
||||
AH_TEMPLATE([HAVE_LC_MESSAGES])
|
||||
AH_TEMPLATE([HAVE_STPCPY])
|
||||
AH_TEMPLATE([HAVE_LIBSM])
|
||||
AH_TEMPLATE([PACKAGE_LOCALE_DIR])
|
||||
AH_TEMPLATE([PACKAGE_DOC_DIR])
|
||||
AH_TEMPLATE([PACKAGE_DATA_DIR])
|
||||
AH_TEMPLATE([PACKAGE_PIXMAPS_DIR])
|
||||
AH_TEMPLATE([PACKAGE_HELP_DIR])
|
||||
AH_TEMPLATE([PACKAGE_MENU_DIR])
|
||||
AH_TEMPLATE([PACKAGE_SOURCE_DIR])
|
||||
AH_TEMPLATE([GETTEXT_PACKAGE])
|
||||
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${packageprefix}/${packagedatadir}")
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_DOC_DIR, "${packageprefix}/${packagedocdir}")
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_PIXMAPS_DIR, "${packageprefix}/${packagepixmapsdir}")
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_HELP_DIR, "${packageprefix}/${packagehelpdir}")
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_MENU_DIR, "${packageprefix}/${packagemenudir}")
|
||||
AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}")
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
po/Makefile.in
|
||||
src/Makefile
|
||||
scim_kmfl_imengine_setup/Makefile
|
||||
data/Makefile
|
||||
data/icons/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
## Makefile.am -- Process this file with automake to produce Makefile.in
|
||||
##
|
||||
## 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, 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.
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
CLEANFILES = *.bak
|
||||
|
||||
SUBDIRS = icons
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
## Makefile.am -- Process this file with automake to produce Makefile.in
|
||||
##
|
||||
## 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, 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.
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
INST_ICONS = default.png
|
||||
|
||||
EXTRA_DIST = $(INST_ICONS)
|
||||
|
||||
icondir = @SCIM_DATADIR@/kmfl/icons
|
||||
icon_DATA = $(INST_ICONS)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 499 B |
|
|
@ -1,113 +0,0 @@
|
|||
scim-kmfl-imengine (0.9.9-1) unstable; urgency=low
|
||||
|
||||
* new upstream version
|
||||
* d/rules: remove unnecessary static libraries to bring standards-version
|
||||
to 3.9.1.0 (closes: #633275)
|
||||
* change d/copyright to machine-readable copyright-format to bring
|
||||
standards-version to 3.9.3.0
|
||||
* bump standards-version to 3.9.8.0 (no other changes required)
|
||||
* update d/compat to level 10 (closes: #817661)
|
||||
- d/control: B-D on debhelper > 10
|
||||
* switch to dpkg-source 3.0 (quilt) format
|
||||
* switch from cdbs to debhelper
|
||||
- remove B-D on cdbs
|
||||
- update d/rules to dh sequencer
|
||||
- remove unnecessary static libraries for modules in
|
||||
install override
|
||||
- scim-kmfl-imengine.(docs|install) no longer required
|
||||
* add watch file to check for newer upstream version
|
||||
* Update d/control
|
||||
- Remove redundant Section: from d/control
|
||||
- Move homepage field to source section
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Mon, 23 Jan 2017 10:25:01 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.8-1.1) unstable; urgency=low
|
||||
|
||||
* Non-maintainer upload.
|
||||
* Fix "FTBFS with GCC 4.4: missing #include" by applying Martin Michlmayr's
|
||||
patch (closes: #526210).
|
||||
|
||||
-- gregor herrmann <gregoa@debian.org> Fri, 25 Dec 2009 22:34:16 +0100
|
||||
|
||||
scim-kmfl-imengine (0.9.8-1) unstable; urgency=low
|
||||
|
||||
* remove debugging output
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Wed, 04 Feb 2009 10:35:59 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.7-1) unstable; urgency=low
|
||||
|
||||
* sync version number with libkmfl
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Thu, 16 Oct 2008 17:01:12 -0700
|
||||
|
||||
scim-kmfl-imengine (0.9.6-4) unstable; urgency=low
|
||||
|
||||
* use /etc/X11/xinit/xinput.d/scim-kmfl to start scim rather than
|
||||
/etc/X11/xinit/xinput.d/scim
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Wed, 28 Nov 2007 11:59:49 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.6-3) unstable; urgency=low
|
||||
|
||||
* remove dependency on pstreams
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Wed, 21 Feb 2007 13:43:30 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.6-2) unstable; urgency=low
|
||||
|
||||
* fix up postins to survive a reinstall of scim
|
||||
* add prerm
|
||||
* add properties dialog to kmfl section in scim-setup
|
||||
* add a default icon for keyboards with no icon specified
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Tue, 14 Nov 2006 11:17:14 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.6-1) unstable; urgency=low
|
||||
|
||||
* add support for get_surrounding_text to provide context sensitive input
|
||||
methods
|
||||
* add the ability to reload keyboards on the fly
|
||||
* restart scim when a keyboard is installed or removed
|
||||
|
||||
-- Doug Rintoul <doug_rintoul@sil.org> Tue, 7 Nov 2006 15:09:53 -0800
|
||||
|
||||
scim-kmfl-imengine (0.9.3-1) unstable; urgency=low
|
||||
|
||||
* Use UTF conversion routines in kmflcomp rather than a local copy
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Wed, 08 Mar 2006 16:33:00 +0800
|
||||
|
||||
scim-kmfl-imengine (0.9.2-1) unstable; urgency=low
|
||||
|
||||
* disable scim restart when installing keyboards with scim_kmfl_setup
|
||||
causes apps to crash
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Mon, 02 Mar 2006 16:33:00 +0800
|
||||
|
||||
scim-kmfl-imengine (0.9.1-1) unstable; urgency=low
|
||||
|
||||
* fix enumeration of uncompiled keyboards in scim kmfl setup
|
||||
* AMD64 fixes
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Mon, 02 Feb 2006 11:00:00 +0800
|
||||
|
||||
scim-kmfl-imengine (0.9-1) unstable; urgency=low
|
||||
|
||||
* fix shift key problem
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Mon, 04 Jul 2005 11:20:00 +0800
|
||||
|
||||
scim-kmfl-imengine (0.8-1) unstable; urgency=low
|
||||
|
||||
* Add full virtual key support
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Mon, 04 Jul 2005 11:20:00 +0800
|
||||
|
||||
|
||||
scim-kmfl-imengine (0.7-1) unstable; urgency=low
|
||||
|
||||
* first debian release
|
||||
|
||||
-- Doug Rintoul <doug_rintoulsil.org> Mon, 21 Jun 2005 19:57:17 +0800
|
||||
|
|
@ -1 +0,0 @@
|
|||
10
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
Source: scim-kmfl-imengine
|
||||
Priority: optional
|
||||
Section: utils
|
||||
Maintainer: Doug Rintoul <doug_rintoul@sil.org>
|
||||
Uploaders: Torsten Werner <twerner@debian.org>
|
||||
Homepage: http://kmfl.sourceforge.net
|
||||
Build-Depends: debhelper (>= 10), autotools-dev, pkg-config, libkmflcomp-dev, libkmfl-dev, libscim-dev (>=1.4.4), libxkbfile-dev
|
||||
Standards-Version: 3.9.8.0
|
||||
|
||||
Package: scim-kmfl-imengine
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libkmflcomp0, libkmfl0, scim (>=1.4.4)
|
||||
Description: KMFL (Keyboard Mapping for Linux) IM engine for the SCIM platform
|
||||
SCIM (Smart Common Input Method) is an input method (IM) platform for Linux.
|
||||
.
|
||||
This package provides the KMFL (Keyboard Mapping for Linux) IM engine for
|
||||
SCIM. With this module, you can use keyboards designed for Tavultesoft Keyman
|
||||
for Windows under the SCIM platform.
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?view=markup&pathrev=174
|
||||
Upstream-Name: scim-kmfl-engine
|
||||
Upstream-Contact: Doug Rintoul <doug_rintoul@sil.org>
|
||||
|
||||
Files: *
|
||||
Copyright: Copyright (C) 2005 SIL International
|
||||
License: GPL-2+
|
||||
|
||||
Files: src/scim_kmfl_imengine.cpp
|
||||
src/scim_kmfl_imengine.h
|
||||
src/scim_kmfl_imengine_private.h
|
||||
Copyright: Copyright (C) 2005 SIL International
|
||||
Copyright (C) 2004 James Su <suzhe@tsinghua.org.cn>
|
||||
License: GPL-2+
|
||||
|
||||
License: GPL-2+
|
||||
This library 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 library 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 library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
.
|
||||
On Debian systems, the full text of the GNU General Public
|
||||
License version 2 can be found in the file
|
||||
`/usr/share/common-licenses/GPL-2'.
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/bin/make -f
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install
|
||||
# Clean up unnecessary static libraries for modules
|
||||
rm debian/scim-kmfl-imengine/usr/lib/*/scim-1.0/*/*/*.a
|
||||
rm debian/scim-kmfl-imengine/usr/lib/*/scim-1.0/*/*/*.la
|
||||
|
||||
override_dh_auto_test:
|
||||
# Disabled: Incompelete in po/
|
||||
|
|
@ -1 +0,0 @@
|
|||
3.0 (quilt)
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
version=3
|
||||
http://sf.net/kmfl/scim-kmfl-imengine-(.+)\.tar\.gz debian uupdate
|
||||
|
|
@ -1,180 +0,0 @@
|
|||
# iconv.m4 serial AM6 (gettext-0.17)
|
||||
dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
|
||||
[
|
||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_LIB_LINKFLAGS_BODY([iconv])
|
||||
])
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINK],
|
||||
[
|
||||
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||
dnl those with the standalone portable GNU libiconv installed).
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||
|
||||
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed libiconv and not disabled its use
|
||||
dnl via --without-libiconv-prefix, he wants to use it. The first
|
||||
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
||||
am_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||
|
||||
AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
|
||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||
am_cv_lib_iconv=no
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
am_cv_func_iconv=yes)
|
||||
if test "$am_cv_func_iconv" != yes; then
|
||||
am_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
am_cv_lib_iconv=yes
|
||||
am_cv_func_iconv=yes)
|
||||
LIBS="$am_save_LIBS"
|
||||
fi
|
||||
])
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
|
||||
dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
|
||||
am_save_LIBS="$LIBS"
|
||||
if test $am_cv_lib_iconv = yes; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
fi
|
||||
AC_TRY_RUN([
|
||||
#include <iconv.h>
|
||||
#include <string.h>
|
||||
int main ()
|
||||
{
|
||||
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||||
returns. */
|
||||
{
|
||||
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
|
||||
if (cd_utf8_to_88591 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\342\202\254"; /* EURO SIGN */
|
||||
char buf[10];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_utf8_to_88591,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#if 0 /* This bug could be worked around by the caller. */
|
||||
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
||||
{
|
||||
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
|
||||
if (cd_88591_to_utf8 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
|
||||
char buf[50];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_88591_to_utf8,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if ((int)res > 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
|
||||
provided. */
|
||||
if (/* Try standardized names. */
|
||||
iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
|
||||
/* Try IRIX, OSF/1 names. */
|
||||
&& iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
|
||||
/* Try AIX names. */
|
||||
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||||
/* Try HP-UX names. */
|
||||
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||||
return 1;
|
||||
return 0;
|
||||
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
|
||||
[case "$host_os" in
|
||||
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
|
||||
*) am_cv_func_iconv_works="guessing yes" ;;
|
||||
esac])
|
||||
LIBS="$am_save_LIBS"
|
||||
])
|
||||
case "$am_cv_func_iconv_works" in
|
||||
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
|
||||
*) am_func_iconv=yes ;;
|
||||
esac
|
||||
else
|
||||
am_func_iconv=no am_cv_lib_iconv=no
|
||||
fi
|
||||
if test "$am_func_iconv" = yes; then
|
||||
AC_DEFINE(HAVE_ICONV, 1,
|
||||
[Define if you have the iconv() function and it works.])
|
||||
fi
|
||||
if test "$am_cv_lib_iconv" = yes; then
|
||||
AC_MSG_CHECKING([how to link with libiconv])
|
||||
AC_MSG_RESULT([$LIBICONV])
|
||||
else
|
||||
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
|
||||
dnl either.
|
||||
CPPFLAGS="$am_save_CPPFLAGS"
|
||||
LIBICONV=
|
||||
LTLIBICONV=
|
||||
fi
|
||||
AC_SUBST(LIBICONV)
|
||||
AC_SUBST(LTLIBICONV)
|
||||
])
|
||||
|
||||
AC_DEFUN([AM_ICONV],
|
||||
[
|
||||
AM_ICONV_LINK
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_MSG_CHECKING([for iconv declaration])
|
||||
AC_CACHE_VAL(am_cv_proto_iconv, [
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
#else
|
||||
size_t iconv();
|
||||
#endif
|
||||
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
|
||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||
AC_MSG_RESULT([$]{ac_t:-
|
||||
}[$]am_cv_proto_iconv)
|
||||
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
||||
[Define as const if the declaration of iconv() needs const.])
|
||||
fi
|
||||
])
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# intlmacosx.m4 serial 1 (gettext-0.17)
|
||||
dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Checks for special options needed on MacOS X.
|
||||
dnl Defines INTL_MACOSX_LIBS.
|
||||
AC_DEFUN([gt_INTL_MACOSX],
|
||||
[
|
||||
dnl Check for API introduced in MacOS X 10.2.
|
||||
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
||||
gt_cv_func_CFPreferencesCopyAppValue,
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
|
||||
[CFPreferencesCopyAppValue(NULL, NULL)],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=yes],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
||||
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
|
||||
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||||
fi
|
||||
dnl Check for API introduced in MacOS X 10.3.
|
||||
AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=yes],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
|
||||
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||||
fi
|
||||
INTL_MACOSX_LIBS=
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
|
||||
fi
|
||||
AC_SUBST([INTL_MACOSX_LIBS])
|
||||
])
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# isc-posix.m4 serial 2 (gettext-0.11.2)
|
||||
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
dnl that contains a configuration script generated by Autoconf, under
|
||||
dnl the same distribution terms as the rest of that program.
|
||||
|
||||
# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
|
||||
|
||||
# This test replaces the one in autoconf.
|
||||
# Currently this macro should have the same name as the autoconf macro
|
||||
# because gettext's gettext.m4 (distributed in the automake package)
|
||||
# still uses it. Otherwise, the use in gettext.m4 makes autoheader
|
||||
# give these diagnostics:
|
||||
# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
|
||||
# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
|
||||
|
||||
undefine([AC_ISC_POSIX])
|
||||
|
||||
AC_DEFUN([AC_ISC_POSIX],
|
||||
[
|
||||
dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
|
||||
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
|
||||
]
|
||||
)
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
# lib-ld.m4 serial 3 (gettext-0.13)
|
||||
dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
dnl that contains a configuration script generated by Autoconf, under
|
||||
dnl the same distribution terms as the rest of that program.
|
||||
|
||||
dnl Subroutines of libtool.m4,
|
||||
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
||||
dnl with libtool.m4.
|
||||
|
||||
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
|
||||
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||
case `$LD -v 2>&1 </dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
acl_cv_prog_gnu_ld=yes ;;
|
||||
*)
|
||||
acl_cv_prog_gnu_ld=no ;;
|
||||
esac])
|
||||
with_gnu_ld=$acl_cv_prog_gnu_ld
|
||||
])
|
||||
|
||||
dnl From libtool-1.4. Sets the variable LD.
|
||||
AC_DEFUN([AC_LIB_PROG_LD],
|
||||
[AC_ARG_WITH(gnu-ld,
|
||||
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
ac_prog=ld
|
||||
if test "$GCC" = yes; then
|
||||
# Check if gcc -print-prog-name=ld gives a path.
|
||||
AC_MSG_CHECKING([for ld used by GCC])
|
||||
case $host in
|
||||
*-*-mingw*)
|
||||
# gcc leaves a trailing carriage return which upsets mingw
|
||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||
*)
|
||||
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
|
||||
esac
|
||||
case $ac_prog in
|
||||
# Accept absolute paths.
|
||||
[[\\/]* | [A-Za-z]:[\\/]*)]
|
||||
[re_direlt='/[^/][^/]*/\.\./']
|
||||
# Canonicalize the path of ld
|
||||
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||
done
|
||||
test -z "$LD" && LD="$ac_prog"
|
||||
;;
|
||||
"")
|
||||
# If it fails, then pretend we aren't using GCC.
|
||||
ac_prog=ld
|
||||
;;
|
||||
*)
|
||||
# If it is relative, then search for the first ld in PATH.
|
||||
with_gnu_ld=unknown
|
||||
;;
|
||||
esac
|
||||
elif test "$with_gnu_ld" = yes; then
|
||||
AC_MSG_CHECKING([for GNU ld])
|
||||
else
|
||||
AC_MSG_CHECKING([for non-GNU ld])
|
||||
fi
|
||||
AC_CACHE_VAL(acl_cv_path_LD,
|
||||
[if test -z "$LD"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||
for ac_dir in $PATH; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||
acl_cv_path_LD="$ac_dir/$ac_prog"
|
||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||
# but apparently some GNU ld's only accept -v.
|
||||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||||
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
test "$with_gnu_ld" != no && break ;;
|
||||
*)
|
||||
test "$with_gnu_ld" != yes && break ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
else
|
||||
acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
||||
fi])
|
||||
LD="$acl_cv_path_LD"
|
||||
if test -n "$LD"; then
|
||||
AC_MSG_RESULT($LD)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
||||
AC_LIB_PROG_LD_GNU
|
||||
])
|
||||
|
|
@ -1,709 +0,0 @@
|
|||
# lib-link.m4 serial 13 (gettext-0.17)
|
||||
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ(2.54)
|
||||
|
||||
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
||||
dnl augments the CPPFLAGS variable.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
define([Name],[translit([$1],[./-], [___])])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
||||
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
||||
ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
|
||||
])
|
||||
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
||||
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
||||
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
||||
LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||
AC_SUBST([LIB]NAME)
|
||||
AC_SUBST([LTLIB]NAME)
|
||||
AC_SUBST([LIB]NAME[_PREFIX])
|
||||
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
||||
dnl results of this search when this library appears as a dependency.
|
||||
HAVE_LIB[]NAME=yes
|
||||
undefine([Name])
|
||||
undefine([NAME])
|
||||
])
|
||||
|
||||
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
|
||||
dnl searches for libname and the libraries corresponding to explicit and
|
||||
dnl implicit dependencies, together with the specified include files and
|
||||
dnl the ability to compile and link the specified testcode. If found, it
|
||||
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
|
||||
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
||||
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
||||
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
define([Name],[translit([$1],[./-], [___])])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
|
||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||
dnl accordingly.
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
|
||||
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed lib[]Name and not disabled its use
|
||||
dnl via --without-lib[]Name-prefix, he wants to use it.
|
||||
ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||
|
||||
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIB[]NAME"
|
||||
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
|
||||
LIBS="$ac_save_LIBS"
|
||||
])
|
||||
if test "$ac_cv_lib[]Name" = yes; then
|
||||
HAVE_LIB[]NAME=yes
|
||||
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
|
||||
AC_MSG_CHECKING([how to link with lib[]$1])
|
||||
AC_MSG_RESULT([$LIB[]NAME])
|
||||
else
|
||||
HAVE_LIB[]NAME=no
|
||||
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
||||
dnl $INC[]NAME either.
|
||||
CPPFLAGS="$ac_save_CPPFLAGS"
|
||||
LIB[]NAME=
|
||||
LTLIB[]NAME=
|
||||
LIB[]NAME[]_PREFIX=
|
||||
fi
|
||||
AC_SUBST([HAVE_LIB]NAME)
|
||||
AC_SUBST([LIB]NAME)
|
||||
AC_SUBST([LTLIB]NAME)
|
||||
AC_SUBST([LIB]NAME[_PREFIX])
|
||||
undefine([Name])
|
||||
undefine([NAME])
|
||||
])
|
||||
|
||||
dnl Determine the platform dependent parameters needed to use rpath:
|
||||
dnl acl_libext,
|
||||
dnl acl_shlibext,
|
||||
dnl acl_hardcode_libdir_flag_spec,
|
||||
dnl acl_hardcode_libdir_separator,
|
||||
dnl acl_hardcode_direct,
|
||||
dnl acl_hardcode_minus_L.
|
||||
AC_DEFUN([AC_LIB_RPATH],
|
||||
[
|
||||
dnl Tell automake >= 1.10 to complain if config.rpath is missing.
|
||||
m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
|
||||
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
||||
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
||||
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
||||
AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
|
||||
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
||||
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
||||
. ./conftest.sh
|
||||
rm -f ./conftest.sh
|
||||
acl_cv_rpath=done
|
||||
])
|
||||
wl="$acl_cv_wl"
|
||||
acl_libext="$acl_cv_libext"
|
||||
acl_shlibext="$acl_cv_shlibext"
|
||||
acl_libname_spec="$acl_cv_libname_spec"
|
||||
acl_library_names_spec="$acl_cv_library_names_spec"
|
||||
acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
||||
acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
||||
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
||||
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
||||
dnl Determine whether the user wants rpath handling at all.
|
||||
AC_ARG_ENABLE(rpath,
|
||||
[ --disable-rpath do not hardcode runtime library paths],
|
||||
:, enable_rpath=yes)
|
||||
])
|
||||
|
||||
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
||||
dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
|
||||
dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||
define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
|
||||
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
|
||||
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
|
||||
[
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
else
|
||||
if test "X$withval" = "X"; then
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
else
|
||||
additional_includedir="$withval/include"
|
||||
additional_libdir="$withval/$acl_libdirstem"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
dnl Search the library and its dependencies in $additional_libdir and
|
||||
dnl $LDFLAGS. Using breadth-first-seach.
|
||||
LIB[]NAME=
|
||||
LTLIB[]NAME=
|
||||
INC[]NAME=
|
||||
LIB[]NAME[]_PREFIX=
|
||||
rpathdirs=
|
||||
ltrpathdirs=
|
||||
names_already_handled=
|
||||
names_next_round='$1 $2'
|
||||
while test -n "$names_next_round"; do
|
||||
names_this_round="$names_next_round"
|
||||
names_next_round=
|
||||
for name in $names_this_round; do
|
||||
already_handled=
|
||||
for n in $names_already_handled; do
|
||||
if test "$n" = "$name"; then
|
||||
already_handled=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$already_handled"; then
|
||||
names_already_handled="$names_already_handled $name"
|
||||
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
||||
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
||||
eval value=\"\$HAVE_LIB$uppername\"
|
||||
if test -n "$value"; then
|
||||
if test "$value" = yes; then
|
||||
eval value=\"\$LIB$uppername\"
|
||||
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
||||
eval value=\"\$LTLIB$uppername\"
|
||||
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
||||
else
|
||||
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
||||
dnl that this library doesn't exist. So just drop it.
|
||||
:
|
||||
fi
|
||||
else
|
||||
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
||||
dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
||||
found_dir=
|
||||
found_la=
|
||||
found_so=
|
||||
found_a=
|
||||
eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
|
||||
if test -n "$acl_shlibext"; then
|
||||
shrext=".$acl_shlibext" # typically: shrext=.so
|
||||
else
|
||||
shrext=
|
||||
fi
|
||||
if test $use_additional = yes; then
|
||||
dir="$additional_libdir"
|
||||
dnl The same code as in the loop below:
|
||||
dnl First look for a shared library.
|
||||
if test -n "$acl_shlibext"; then
|
||||
if test -f "$dir/$libname$shrext"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext"
|
||||
else
|
||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||
ver=`(cd "$dir" && \
|
||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||
| sed 1q ) 2>/dev/null`
|
||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext.$ver"
|
||||
fi
|
||||
else
|
||||
eval library_names=\"$acl_library_names_spec\"
|
||||
for f in $library_names; do
|
||||
if test -f "$dir/$f"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$f"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Then look for a static library.
|
||||
if test "X$found_dir" = "X"; then
|
||||
if test -f "$dir/$libname.$acl_libext"; then
|
||||
found_dir="$dir"
|
||||
found_a="$dir/$libname.$acl_libext"
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
if test -f "$dir/$libname.la"; then
|
||||
found_la="$dir/$libname.la"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" = "X"; then
|
||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
case "$x" in
|
||||
-L*)
|
||||
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
||||
dnl First look for a shared library.
|
||||
if test -n "$acl_shlibext"; then
|
||||
if test -f "$dir/$libname$shrext"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext"
|
||||
else
|
||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||
ver=`(cd "$dir" && \
|
||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||
| sed 1q ) 2>/dev/null`
|
||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext.$ver"
|
||||
fi
|
||||
else
|
||||
eval library_names=\"$acl_library_names_spec\"
|
||||
for f in $library_names; do
|
||||
if test -f "$dir/$f"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$f"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Then look for a static library.
|
||||
if test "X$found_dir" = "X"; then
|
||||
if test -f "$dir/$libname.$acl_libext"; then
|
||||
found_dir="$dir"
|
||||
found_a="$dir/$libname.$acl_libext"
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
if test -f "$dir/$libname.la"; then
|
||||
found_la="$dir/$libname.la"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "X$found_dir" != "X"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
dnl Found the library.
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
||||
if test "X$found_so" != "X"; then
|
||||
dnl Linking with a shared library. We attempt to hardcode its
|
||||
dnl directory into the executable's runpath, unless it's the
|
||||
dnl standard /usr/lib.
|
||||
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
|
||||
dnl No hardcoding is needed.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
dnl Use an explicit option to hardcode DIR into the resulting
|
||||
dnl binary.
|
||||
dnl Potentially add DIR to ltrpathdirs.
|
||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $found_dir"
|
||||
fi
|
||||
dnl The hardcoding into $LIBNAME is system dependent.
|
||||
if test "$acl_hardcode_direct" = yes; then
|
||||
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
dnl resulting binary.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||
dnl Use an explicit option to hardcode DIR into the resulting
|
||||
dnl binary.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
dnl Potentially add DIR to rpathdirs.
|
||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $found_dir"
|
||||
fi
|
||||
else
|
||||
dnl Rely on "-L$found_dir".
|
||||
dnl But don't add it if it's already contained in the LDFLAGS
|
||||
dnl or the already constructed $LIBNAME
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
||||
fi
|
||||
if test "$acl_hardcode_minus_L" != no; then
|
||||
dnl FIXME: Not sure whether we should use
|
||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||
dnl here.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
|
||||
dnl here, because this doesn't fit in flags passed to the
|
||||
dnl compiler. So give up. No hardcoding. This affects only
|
||||
dnl very old systems.
|
||||
dnl FIXME: Not sure whether we should use
|
||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||
dnl here.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "X$found_a" != "X"; then
|
||||
dnl Linking with a static library.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
||||
else
|
||||
dnl We shouldn't come here, but anyway it's good to have a
|
||||
dnl fallback.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
||||
fi
|
||||
fi
|
||||
dnl Assume the include files are nearby.
|
||||
additional_includedir=
|
||||
case "$found_dir" in
|
||||
*/$acl_libdirstem | */$acl_libdirstem/)
|
||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
||||
LIB[]NAME[]_PREFIX="$basedir"
|
||||
additional_includedir="$basedir/include"
|
||||
;;
|
||||
esac
|
||||
if test "X$additional_includedir" != "X"; then
|
||||
dnl Potentially add $additional_includedir to $INCNAME.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/include,
|
||||
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
||||
dnl 3. if it's already present in $CPPFLAGS or the already
|
||||
dnl constructed $INCNAME,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_includedir" != "X/usr/include"; then
|
||||
haveit=
|
||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
for x in $CPPFLAGS $INC[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-I$additional_includedir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_includedir"; then
|
||||
dnl Really add $additional_includedir to $INCNAME.
|
||||
INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Look for dependencies.
|
||||
if test -n "$found_la"; then
|
||||
dnl Read the .la file. It defines the variables
|
||||
dnl dlname, library_names, old_library, dependency_libs, current,
|
||||
dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
||||
save_libdir="$libdir"
|
||||
case "$found_la" in
|
||||
*/* | *\\*) . "$found_la" ;;
|
||||
*) . "./$found_la" ;;
|
||||
esac
|
||||
libdir="$save_libdir"
|
||||
dnl We use only dependency_libs.
|
||||
for dep in $dependency_libs; do
|
||||
case "$dep" in
|
||||
-L*)
|
||||
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
||||
dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/lib,
|
||||
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
||||
dnl 3. if it's already present in $LDFLAGS or the already
|
||||
dnl constructed $LIBNAME,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
||||
haveit=
|
||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LIBNAME.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
haveit=
|
||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LTLIBNAME.
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-R*)
|
||||
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
||||
if test "$enable_rpath" != no; then
|
||||
dnl Potentially add DIR to rpathdirs.
|
||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
dnl Potentially add DIR to ltrpathdirs.
|
||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $dir"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-l*)
|
||||
dnl Handle this in the next round.
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
||||
;;
|
||||
*.la)
|
||||
dnl Handle this in the next round. Throw away the .la's
|
||||
dnl directory; it is already contained in a preceding -L
|
||||
dnl option.
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
||||
;;
|
||||
*)
|
||||
dnl Most likely an immediate library name.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
else
|
||||
dnl Didn't find the library; assume it is in the system directories
|
||||
dnl known to the linker and runtime loader. (All the system
|
||||
dnl directories known to the linker should also be known to the
|
||||
dnl runtime loader, otherwise the system is severely misconfigured.)
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
if test "X$rpathdirs" != "X"; then
|
||||
if test -n "$acl_hardcode_libdir_separator"; then
|
||||
dnl Weird platform: only the last -rpath option counts, the user must
|
||||
dnl pass all path elements in one option. We can arrange that for a
|
||||
dnl single library, but not when more than one $LIBNAMEs are used.
|
||||
alldirs=
|
||||
for found_dir in $rpathdirs; do
|
||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
|
||||
done
|
||||
dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$alldirs"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||
else
|
||||
dnl The -rpath options are cumulative.
|
||||
for found_dir in $rpathdirs; do
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$found_dir"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if test "X$ltrpathdirs" != "X"; then
|
||||
dnl When using libtool, the option that works for both libraries and
|
||||
dnl executables is -R. The -R options are cumulative.
|
||||
for found_dir in $ltrpathdirs; do
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
||||
dnl unless already present in VAR.
|
||||
dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
||||
dnl contains two or three consecutive elements that belong together.
|
||||
AC_DEFUN([AC_LIB_APPENDTOVAR],
|
||||
[
|
||||
for element in [$2]; do
|
||||
haveit=
|
||||
for x in $[$1]; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X$element"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
[$1]="${[$1]}${[$1]:+ }$element"
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
dnl For those cases where a variable contains several -L and -l options
|
||||
dnl referring to unknown libraries and directories, this macro determines the
|
||||
dnl necessary additional linker options for the runtime path.
|
||||
dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
|
||||
dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
|
||||
dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
|
||||
dnl otherwise linking without libtool is assumed.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
$1=
|
||||
if test "$enable_rpath" != no; then
|
||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||
dnl Use an explicit option to hardcode directories into the resulting
|
||||
dnl binary.
|
||||
rpathdirs=
|
||||
next=
|
||||
for opt in $2; do
|
||||
if test -n "$next"; then
|
||||
dir="$next"
|
||||
dnl No need to hardcode the standard /usr/lib.
|
||||
if test "X$dir" != "X/usr/$acl_libdirstem"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
next=
|
||||
else
|
||||
case $opt in
|
||||
-L) next=yes ;;
|
||||
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
||||
dnl No need to hardcode the standard /usr/lib.
|
||||
if test "X$dir" != "X/usr/$acl_libdirstem"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
next= ;;
|
||||
*) next= ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
if test "X$rpathdirs" != "X"; then
|
||||
if test -n ""$3""; then
|
||||
dnl libtool is used for linking. Use -R options.
|
||||
for dir in $rpathdirs; do
|
||||
$1="${$1}${$1:+ }-R$dir"
|
||||
done
|
||||
else
|
||||
dnl The linker is used for linking directly.
|
||||
if test -n "$acl_hardcode_libdir_separator"; then
|
||||
dnl Weird platform: only the last -rpath option counts, the user
|
||||
dnl must pass all path elements in one option.
|
||||
alldirs=
|
||||
for dir in $rpathdirs; do
|
||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
|
||||
done
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$alldirs"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
$1="$flag"
|
||||
else
|
||||
dnl The -rpath options are cumulative.
|
||||
for dir in $rpathdirs; do
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$dir"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
$1="${$1}${$1:+ }$flag"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([$1])
|
||||
])
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
# lib-prefix.m4 serial 5 (gettext-0.15)
|
||||
dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
|
||||
dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
|
||||
dnl require excessive bracketing.
|
||||
ifdef([AC_HELP_STRING],
|
||||
[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
|
||||
[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
|
||||
|
||||
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
|
||||
dnl to access previously installed libraries. The basic assumption is that
|
||||
dnl a user will want packages to use other packages he previously installed
|
||||
dnl with the same --prefix option.
|
||||
dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
|
||||
dnl libraries, but is otherwise very convenient.
|
||||
AC_DEFUN([AC_LIB_PREFIX],
|
||||
[
|
||||
AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
AC_LIB_ARG_WITH([lib-prefix],
|
||||
[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
|
||||
--without-lib-prefix don't search for libraries in includedir and libdir],
|
||||
[
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
else
|
||||
if test "X$withval" = "X"; then
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
else
|
||||
additional_includedir="$withval/include"
|
||||
additional_libdir="$withval/$acl_libdirstem"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
if test $use_additional = yes; then
|
||||
dnl Potentially add $additional_includedir to $CPPFLAGS.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/include,
|
||||
dnl 2. if it's already present in $CPPFLAGS,
|
||||
dnl 3. if it's /usr/local/include and we are using GCC on Linux,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_includedir" != "X/usr/include"; then
|
||||
haveit=
|
||||
for x in $CPPFLAGS; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-I$additional_includedir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_includedir"; then
|
||||
dnl Really add $additional_includedir to $CPPFLAGS.
|
||||
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Potentially add $additional_libdir to $LDFLAGS.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/lib,
|
||||
dnl 2. if it's already present in $LDFLAGS,
|
||||
dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
||||
haveit=
|
||||
for x in $LDFLAGS; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux*) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LDFLAGS.
|
||||
LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
|
||||
dnl acl_final_exec_prefix, containing the values to which $prefix and
|
||||
dnl $exec_prefix will expand at the end of the configure script.
|
||||
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
|
||||
[
|
||||
dnl Unfortunately, prefix and exec_prefix get only finally determined
|
||||
dnl at the end of configure.
|
||||
if test "X$prefix" = "XNONE"; then
|
||||
acl_final_prefix="$ac_default_prefix"
|
||||
else
|
||||
acl_final_prefix="$prefix"
|
||||
fi
|
||||
if test "X$exec_prefix" = "XNONE"; then
|
||||
acl_final_exec_prefix='${prefix}'
|
||||
else
|
||||
acl_final_exec_prefix="$exec_prefix"
|
||||
fi
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
|
||||
prefix="$acl_save_prefix"
|
||||
])
|
||||
|
||||
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
|
||||
dnl variables prefix and exec_prefix bound to the values they will have
|
||||
dnl at the end of the configure script.
|
||||
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
||||
[
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
$1
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
])
|
||||
|
||||
dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
|
||||
dnl the basename of the libdir, either "lib" or "lib64".
|
||||
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
||||
[
|
||||
dnl There is no formal standard regarding lib and lib64. The current
|
||||
dnl practice is that on a system supporting 32-bit and 64-bit instruction
|
||||
dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
|
||||
dnl libraries go under $prefix/lib. We determine the compiler's default
|
||||
dnl mode by looking at the compiler's library search path. If at least
|
||||
dnl of its elements ends in /lib64 or points to a directory whose absolute
|
||||
dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
|
||||
dnl default, namely "lib".
|
||||
acl_libdirstem=lib
|
||||
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
||||
if test -n "$searchpath"; then
|
||||
acl_save_IFS="${IFS= }"; IFS=":"
|
||||
for searchdir in $searchpath; do
|
||||
if test -d "$searchdir"; then
|
||||
case "$searchdir" in
|
||||
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
||||
*) searchdir=`cd "$searchdir" && pwd`
|
||||
case "$searchdir" in
|
||||
*/lib64 ) acl_libdirstem=lib64 ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
IFS="$acl_save_IFS"
|
||||
fi
|
||||
])
|
||||
7997
linux/scim_kmfl_imengine/m4/libtool.m4
vendored
7997
linux/scim_kmfl_imengine/m4/libtool.m4
vendored
File diff suppressed because it is too large
Load diff
384
linux/scim_kmfl_imengine/m4/ltoptions.m4
vendored
384
linux/scim_kmfl_imengine/m4/ltoptions.m4
vendored
|
|
@ -1,384 +0,0 @@
|
|||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 7 ltoptions.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||
|
||||
|
||||
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ------------------------------------------
|
||||
m4_define([_LT_MANGLE_OPTION],
|
||||
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ---------------------------------------
|
||||
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
||||
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
||||
# saved as a flag.
|
||||
m4_define([_LT_SET_OPTION],
|
||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
[m4_warning([Unknown $1 option `$2'])])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
||||
# ------------------------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
m4_define([_LT_IF_OPTION],
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
||||
|
||||
|
||||
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
||||
# -------------------------------------------------------
|
||||
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
||||
# are set.
|
||||
m4_define([_LT_UNLESS_OPTIONS],
|
||||
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
||||
[m4_define([$0_found])])])[]dnl
|
||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
||||
])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
||||
# ----------------------------------------
|
||||
# OPTION-LIST is a space-separated list of Libtool options associated
|
||||
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
||||
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
||||
# the unknown option and exit.
|
||||
m4_defun([_LT_SET_OPTIONS],
|
||||
[# Set options
|
||||
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[_LT_SET_OPTION([$1], _LT_Option)])
|
||||
|
||||
m4_if([$1],[LT_INIT],[
|
||||
dnl
|
||||
dnl Simply set some default values (i.e off) if boolean options were not
|
||||
dnl specified:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
||||
])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
||||
])
|
||||
dnl
|
||||
dnl If no reference was made to various pairs of opposing options, then
|
||||
dnl we run the default mode handler for the pair. For example, if neither
|
||||
dnl `shared' nor `disable-shared' was passed, we enable building of shared
|
||||
dnl archives by default:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||
[_LT_ENABLE_FAST_INSTALL])
|
||||
])
|
||||
])# _LT_SET_OPTIONS
|
||||
|
||||
|
||||
## --------------------------------- ##
|
||||
## Macros to handle LT_INIT options. ##
|
||||
## --------------------------------- ##
|
||||
|
||||
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
||||
# -----------------------------------------
|
||||
m4_define([_LT_MANGLE_DEFUN],
|
||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
||||
# -----------------------------------------------
|
||||
m4_define([LT_OPTION_DEFINE],
|
||||
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
||||
])# LT_OPTION_DEFINE
|
||||
|
||||
|
||||
# dlopen
|
||||
# ------
|
||||
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `dlopen' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
||||
|
||||
|
||||
# win32-dll
|
||||
# ---------
|
||||
# Declare package support for building win32 dll's.
|
||||
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
||||
[enable_win32_dll=yes
|
||||
|
||||
case $host in
|
||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$AS" && AS=as
|
||||
_LT_DECL([], [AS], [1], [Assembler program])dnl
|
||||
|
||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
||||
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
|
||||
|
||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
|
||||
])# win32-dll
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `win32-dll' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||
|
||||
|
||||
# _LT_ENABLE_SHARED([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-shared flag, and supports the `shared' and
|
||||
# `disable-shared' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_SHARED],
|
||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([shared],
|
||||
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_shared=yes ;;
|
||||
no) enable_shared=no ;;
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_shared=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||
|
||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
||||
[Whether or not to build shared libraries])
|
||||
])# _LT_ENABLE_SHARED
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
||||
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_STATIC([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-static flag, and support the `static' and
|
||||
# `disable-static' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_STATIC],
|
||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([static],
|
||||
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_static=yes ;;
|
||||
no) enable_static=no ;;
|
||||
*)
|
||||
enable_static=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_static=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||
|
||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
||||
[Whether or not to build static libraries])
|
||||
])# _LT_ENABLE_STATIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
||||
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --enable-fast-install flag, and support the `fast-install'
|
||||
# and `disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([fast-install],
|
||||
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_fast_install=yes ;;
|
||||
no) enable_fast_install=no ;;
|
||||
*)
|
||||
enable_fast_install=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_fast_install=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||
|
||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
||||
[Whether or not to optimize for fast installation])dnl
|
||||
])# _LT_ENABLE_FAST_INSTALL
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
||||
|
||||
# Old names:
|
||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `disable-fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||
|
||||
|
||||
# _LT_WITH_PIC([MODE])
|
||||
# --------------------
|
||||
# implement the --with-pic flag, and support the `pic-only' and `no-pic'
|
||||
# LT_INIT options.
|
||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
||||
m4_define([_LT_WITH_PIC],
|
||||
[AC_ARG_WITH([pic],
|
||||
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||
[lt_p=${PACKAGE-default}
|
||||
case $withval in
|
||||
yes|no) pic_mode=$withval ;;
|
||||
*)
|
||||
pic_mode=default
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for lt_pkg in $withval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$lt_pkg" = "X$lt_p"; then
|
||||
pic_mode=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[pic_mode=default])
|
||||
|
||||
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
||||
|
||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||
])# _LT_WITH_PIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||
|
||||
# Old name:
|
||||
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `pic-only' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||
|
||||
## ----------------- ##
|
||||
## LTDL_INIT Options ##
|
||||
## ----------------- ##
|
||||
|
||||
m4_define([_LTDL_MODE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||
[m4_define([_LTDL_MODE], [recursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||
[m4_define([_LTDL_MODE], [subproject])])
|
||||
|
||||
m4_define([_LTDL_TYPE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||
[m4_define([_LTDL_TYPE], [installable])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||
[m4_define([_LTDL_TYPE], [convenience])])
|
||||
123
linux/scim_kmfl_imengine/m4/ltsugar.m4
vendored
123
linux/scim_kmfl_imengine/m4/ltsugar.m4
vendored
|
|
@ -1,123 +0,0 @@
|
|||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 6 ltsugar.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||
|
||||
|
||||
# lt_join(SEP, ARG1, [ARG2...])
|
||||
# -----------------------------
|
||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||
# associated separator.
|
||||
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||
# versions in m4sugar had bugs.
|
||||
m4_define([lt_join],
|
||||
[m4_if([$#], [1], [],
|
||||
[$#], [2], [[$2]],
|
||||
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
m4_define([_lt_join],
|
||||
[m4_if([$#$2], [2], [],
|
||||
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
|
||||
|
||||
# lt_car(LIST)
|
||||
# lt_cdr(LIST)
|
||||
# ------------
|
||||
# Manipulate m4 lists.
|
||||
# These macros are necessary as long as will still need to support
|
||||
# Autoconf-2.59 which quotes differently.
|
||||
m4_define([lt_car], [[$1]])
|
||||
m4_define([lt_cdr],
|
||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||
[$#], 1, [],
|
||||
[m4_dquote(m4_shift($@))])])
|
||||
m4_define([lt_unquote], $1)
|
||||
|
||||
|
||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||
# ------------------------------------------
|
||||
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
|
||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||
# than defined and empty).
|
||||
#
|
||||
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||
m4_define([lt_append],
|
||||
[m4_define([$1],
|
||||
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||
|
||||
|
||||
|
||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||
# ----------------------------------------------------------
|
||||
# Produce a SEP delimited list of all paired combinations of elements of
|
||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||
# has the form PREFIXmINFIXSUFFIXn.
|
||||
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||
m4_define([lt_combine],
|
||||
[m4_if(m4_eval([$# > 3]), [1],
|
||||
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||
[[m4_foreach([_Lt_prefix], [$2],
|
||||
[m4_foreach([_Lt_suffix],
|
||||
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||
|
||||
|
||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||
# -----------------------------------------------------------------------
|
||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||
m4_define([lt_if_append_uniq],
|
||||
[m4_ifdef([$1],
|
||||
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||
[lt_append([$1], [$2], [$3])$4],
|
||||
[$5])],
|
||||
[lt_append([$1], [$2], [$3])$4])])
|
||||
|
||||
|
||||
# lt_dict_add(DICT, KEY, VALUE)
|
||||
# -----------------------------
|
||||
m4_define([lt_dict_add],
|
||||
[m4_define([$1($2)], [$3])])
|
||||
|
||||
|
||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||
# --------------------------------------------
|
||||
m4_define([lt_dict_add_subkey],
|
||||
[m4_define([$1($2:$3)], [$4])])
|
||||
|
||||
|
||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||
# ----------------------------------
|
||||
m4_define([lt_dict_fetch],
|
||||
[m4_ifval([$3],
|
||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||
|
||||
|
||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||
# -----------------------------------------------------------------
|
||||
m4_define([lt_if_dict_fetch],
|
||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||
[$5],
|
||||
[$6])])
|
||||
|
||||
|
||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||
# --------------------------------------------------------------
|
||||
m4_define([lt_dict_filter],
|
||||
[m4_if([$5], [], [],
|
||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||
])
|
||||
23
linux/scim_kmfl_imengine/m4/ltversion.m4
vendored
23
linux/scim_kmfl_imengine/m4/ltversion.m4
vendored
|
|
@ -1,23 +0,0 @@
|
|||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# @configure_input@
|
||||
|
||||
# serial 3337 ltversion.m4
|
||||
# This file is part of GNU Libtool
|
||||
|
||||
m4_define([LT_PACKAGE_VERSION], [2.4.2])
|
||||
m4_define([LT_PACKAGE_REVISION], [1.3337])
|
||||
|
||||
AC_DEFUN([LTVERSION_VERSION],
|
||||
[macro_version='2.4.2'
|
||||
macro_revision='1.3337'
|
||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||
_LT_DECL(, macro_revision, 0)
|
||||
])
|
||||
98
linux/scim_kmfl_imengine/m4/lt~obsolete.m4
vendored
98
linux/scim_kmfl_imengine/m4/lt~obsolete.m4
vendored
|
|
@ -1,98 +0,0 @@
|
|||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5 lt~obsolete.m4
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
|
||||
# which have later been changed to m4_define as they aren't part of the
|
||||
# exported API, or moved to Autoconf or Automake where they belong.
|
||||
#
|
||||
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||
# and doesn't know about Autoconf macros at all.)
|
||||
#
|
||||
# So we provide this file, which has a silly filename so it's always
|
||||
# included after everything else. This provides aclocal with the
|
||||
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||
# because those macros already exist, or will be overwritten later.
|
||||
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||
#
|
||||
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||
# Yes, that means every name once taken will need to remain here until
|
||||
# we give up compatibility with versions before 1.7, at which point
|
||||
# we need to keep only those names which we still refer to.
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||
|
||||
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
# nls.m4 serial 3 (gettext-0.15)
|
||||
dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
AC_DEFUN([AM_NLS],
|
||||
[
|
||||
AC_MSG_CHECKING([whether NLS is requested])
|
||||
dnl Default is enabled NLS
|
||||
AC_ARG_ENABLE(nls,
|
||||
[ --disable-nls do not use Native Language Support],
|
||||
USE_NLS=$enableval, USE_NLS=yes)
|
||||
AC_MSG_RESULT($USE_NLS)
|
||||
AC_SUBST(USE_NLS)
|
||||
])
|
||||
|
|
@ -1,214 +0,0 @@
|
|||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
# serial 1 (pkg-config-0.24)
|
||||
#
|
||||
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
#
|
||||
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||
# ----------------------------------
|
||||
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||
fi
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
fi[]dnl
|
||||
])# PKG_PROG_PKG_CONFIG
|
||||
|
||||
# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
#
|
||||
# Check to see whether a particular set of modules exists. Similar
|
||||
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||
#
|
||||
# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
# only at the first occurence in configure.ac, so if the first place
|
||||
# it's called might be skipped (such as if it is within an "if", you
|
||||
# have to call PKG_CHECK_EXISTS manually
|
||||
# --------------------------------------------------------------
|
||||
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||
m4_default([$2], [:])
|
||||
m4_ifvaln([$3], [else
|
||||
$3])dnl
|
||||
fi])
|
||||
|
||||
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||
# ---------------------------------------------
|
||||
m4_define([_PKG_CONFIG],
|
||||
[if test -n "$$1"; then
|
||||
pkg_cv_[]$1="$$1"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
PKG_CHECK_EXISTS([$3],
|
||||
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes ],
|
||||
[pkg_failed=yes])
|
||||
else
|
||||
pkg_failed=untried
|
||||
fi[]dnl
|
||||
])# _PKG_CONFIG
|
||||
|
||||
# _PKG_SHORT_ERRORS_SUPPORTED
|
||||
# -----------------------------
|
||||
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||
_pkg_short_errors_supported=yes
|
||||
else
|
||||
_pkg_short_errors_supported=no
|
||||
fi[]dnl
|
||||
])# _PKG_SHORT_ERRORS_SUPPORTED
|
||||
|
||||
|
||||
# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
# [ACTION-IF-NOT-FOUND])
|
||||
#
|
||||
#
|
||||
# Note that if there is a possibility the first call to
|
||||
# PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||
# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||
#
|
||||
#
|
||||
# --------------------------------------------------------------
|
||||
AC_DEFUN([PKG_CHECK_MODULES],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||
|
||||
pkg_failed=no
|
||||
AC_MSG_CHECKING([for $1])
|
||||
|
||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||
|
||||
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
|
||||
and $1[]_LIBS to avoid the need to call pkg-config.
|
||||
See the pkg-config man page for more details.])
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
AC_MSG_RESULT([no])
|
||||
_PKG_SHORT_ERRORS_SUPPORTED
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||
|
||||
m4_default([$4], [AC_MSG_ERROR(
|
||||
[Package requirements ($2) were not met:
|
||||
|
||||
$$1_PKG_ERRORS
|
||||
|
||||
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||
installed software in a non-standard prefix.
|
||||
|
||||
_PKG_TEXT])[]dnl
|
||||
])
|
||||
elif test $pkg_failed = untried; then
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
[The pkg-config script could not be found or is too old. Make sure it
|
||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||
path to pkg-config.
|
||||
|
||||
_PKG_TEXT
|
||||
|
||||
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||
])
|
||||
else
|
||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||
AC_MSG_RESULT([yes])
|
||||
$3
|
||||
fi[]dnl
|
||||
])# PKG_CHECK_MODULES
|
||||
|
||||
|
||||
# PKG_INSTALLDIR(DIRECTORY)
|
||||
# -------------------------
|
||||
# Substitutes the variable pkgconfigdir as the location where a module
|
||||
# should install pkg-config .pc files. By default the directory is
|
||||
# $libdir/pkgconfig, but the default can be changed by passing
|
||||
# DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||
# parameter.
|
||||
AC_DEFUN([PKG_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
[pkg-config installation directory @<:@]pkg_default[@:>@])
|
||||
AC_ARG_WITH([pkgconfigdir],
|
||||
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
|
||||
[with_pkgconfigdir=]pkg_default)
|
||||
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
|
||||
m4_popdef([pkg_default])
|
||||
m4_popdef([pkg_description])
|
||||
]) dnl PKG_INSTALLDIR
|
||||
|
||||
|
||||
# PKG_NOARCH_INSTALLDIR(DIRECTORY)
|
||||
# -------------------------
|
||||
# Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||
# module should install arch-independent pkg-config .pc files. By
|
||||
# default the directory is $datadir/pkgconfig, but the default can be
|
||||
# changed by passing DIRECTORY. The user can override through the
|
||||
# --with-noarch-pkgconfigdir parameter.
|
||||
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
|
||||
AC_ARG_WITH([noarch-pkgconfigdir],
|
||||
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
|
||||
[with_noarch_pkgconfigdir=]pkg_default)
|
||||
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
|
||||
m4_popdef([pkg_default])
|
||||
m4_popdef([pkg_description])
|
||||
]) dnl PKG_NOARCH_INSTALLDIR
|
||||
|
||||
|
||||
# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||
# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# -------------------------------------------
|
||||
# Retrieves the value of the pkg-config variable for the given module.
|
||||
AC_DEFUN([PKG_CHECK_VAR],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||
|
||||
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||
|
||||
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])# PKG_CHECK_VAR
|
||||
|
|
@ -1,449 +0,0 @@
|
|||
# po.m4 serial 15 (gettext-0.17)
|
||||
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
dnl Checks for all prerequisites of the po subdirectory.
|
||||
AC_DEFUN([AM_PO_SUBDIRS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||||
AC_REQUIRE([AM_NLS])dnl
|
||||
|
||||
dnl Release version of the gettext macros. This is used to ensure that
|
||||
dnl the gettext macros and po/Makefile.in.in are in sync.
|
||||
AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
|
||||
|
||||
dnl Perform the following tests also if --disable-nls has been given,
|
||||
dnl because they are needed for "make dist" to work.
|
||||
|
||||
dnl Search for GNU msgfmt in the PATH.
|
||||
dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
|
||||
dnl The second test excludes FreeBSD msgfmt.
|
||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||
:)
|
||||
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||
|
||||
dnl Test whether it is GNU msgfmt >= 0.15.
|
||||
changequote(,)dnl
|
||||
case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
|
||||
*) MSGFMT_015=$MSGFMT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([MSGFMT_015])
|
||||
changequote(,)dnl
|
||||
case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
|
||||
*) GMSGFMT_015=$GMSGFMT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([GMSGFMT_015])
|
||||
|
||||
dnl Search for GNU xgettext 0.12 or newer in the PATH.
|
||||
dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
|
||||
dnl The second test excludes FreeBSD xgettext.
|
||||
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||
[$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||
(if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||
:)
|
||||
dnl Remove leftover from FreeBSD xgettext call.
|
||||
rm -f messages.po
|
||||
|
||||
dnl Test whether it is GNU xgettext >= 0.15.
|
||||
changequote(,)dnl
|
||||
case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
|
||||
*) XGETTEXT_015=$XGETTEXT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([XGETTEXT_015])
|
||||
|
||||
dnl Search for GNU msgmerge 0.11 or newer in the PATH.
|
||||
AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
|
||||
[$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
|
||||
|
||||
dnl Installation directories.
|
||||
dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
|
||||
dnl have to define it here, so that it can be used in po/Makefile.
|
||||
test -n "$localedir" || localedir='${datadir}/locale'
|
||||
AC_SUBST([localedir])
|
||||
|
||||
dnl Support for AM_XGETTEXT_OPTION.
|
||||
test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
|
||||
AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
|
||||
|
||||
AC_CONFIG_COMMANDS([po-directories], [[
|
||||
for ac_file in $CONFIG_FILES; do
|
||||
# Support "outfile[:infile[:infile...]]"
|
||||
case "$ac_file" in
|
||||
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||
esac
|
||||
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||
case "$ac_file" in */Makefile.in)
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||
case "$ac_given_srcdir" in
|
||||
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
# Treat a directory as a PO directory if and only if it has a
|
||||
# POTFILES.in file. This allows packages to have multiple PO
|
||||
# directories under different names or in different locations.
|
||||
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||
rm -f "$ac_dir/POTFILES"
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||||
POMAKEFILEDEPS="POTFILES.in"
|
||||
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
|
||||
# on $ac_dir but don't depend on user-specified configuration
|
||||
# parameters.
|
||||
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||
# The LINGUAS file contains the set of available languages.
|
||||
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||
fi
|
||||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||
else
|
||||
# The set of available languages was given in configure.in.
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
|
||||
fi
|
||||
# Compute POFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||
# Compute UPDATEPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||
# Compute DUMMYPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||
# Compute GMOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||
case "$ac_given_srcdir" in
|
||||
.) srcdirpre= ;;
|
||||
*) srcdirpre='$(srcdir)/' ;;
|
||||
esac
|
||||
POFILES=
|
||||
UPDATEPOFILES=
|
||||
DUMMYPOFILES=
|
||||
GMOFILES=
|
||||
for lang in $ALL_LINGUAS; do
|
||||
POFILES="$POFILES $srcdirpre$lang.po"
|
||||
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||
done
|
||||
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||
# environment variable.
|
||||
INST_LINGUAS=
|
||||
if test -n "$ALL_LINGUAS"; then
|
||||
for presentlang in $ALL_LINGUAS; do
|
||||
useit=no
|
||||
if test "%UNSET%" != "$LINGUAS"; then
|
||||
desiredlanguages="$LINGUAS"
|
||||
else
|
||||
desiredlanguages="$ALL_LINGUAS"
|
||||
fi
|
||||
for desiredlang in $desiredlanguages; do
|
||||
# Use the presentlang catalog if desiredlang is
|
||||
# a. equal to presentlang, or
|
||||
# b. a variant of presentlang (because in this case,
|
||||
# presentlang can be used as a fallback for messages
|
||||
# which are not translated in the desiredlang catalog).
|
||||
case "$desiredlang" in
|
||||
"$presentlang"*) useit=yes;;
|
||||
esac
|
||||
done
|
||||
if test $useit = yes; then
|
||||
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
CATALOGS=
|
||||
if test -n "$INST_LINGUAS"; then
|
||||
for lang in $INST_LINGUAS; do
|
||||
CATALOGS="$CATALOGS $lang.gmo"
|
||||
done
|
||||
fi
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
||||
sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
||||
for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
|
||||
if test -f "$f"; then
|
||||
case "$f" in
|
||||
*.orig | *.bak | *~) ;;
|
||||
*) cat "$f" >> "$ac_dir/Makefile" ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done]],
|
||||
[# Capture the value of obsolete ALL_LINGUAS because we need it to compute
|
||||
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
|
||||
# from automake < 1.5.
|
||||
eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
|
||||
# Capture the value of LINGUAS because we need it to compute CATALOGS.
|
||||
LINGUAS="${LINGUAS-%UNSET%}"
|
||||
])
|
||||
])
|
||||
|
||||
dnl Postprocesses a Makefile in a directory containing PO files.
|
||||
AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
|
||||
[
|
||||
# When this code is run, in config.status, two variables have already been
|
||||
# set:
|
||||
# - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
|
||||
# - LINGUAS is the value of the environment variable LINGUAS at configure
|
||||
# time.
|
||||
|
||||
changequote(,)dnl
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||
case "$ac_given_srcdir" in
|
||||
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
|
||||
# Find a way to echo strings without interpreting backslash.
|
||||
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
gt_echo='echo'
|
||||
else
|
||||
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
|
||||
gt_echo='printf %s\n'
|
||||
else
|
||||
echo_func () {
|
||||
cat <<EOT
|
||||
$*
|
||||
EOT
|
||||
}
|
||||
gt_echo='echo_func'
|
||||
fi
|
||||
fi
|
||||
|
||||
# A sed script that extracts the value of VARIABLE from a Makefile.
|
||||
sed_x_variable='
|
||||
# Test if the hold space is empty.
|
||||
x
|
||||
s/P/P/
|
||||
x
|
||||
ta
|
||||
# Yes it was empty. Look if we have the expected variable definition.
|
||||
/^[ ]*VARIABLE[ ]*=/{
|
||||
# Seen the first line of the variable definition.
|
||||
s/^[ ]*VARIABLE[ ]*=//
|
||||
ba
|
||||
}
|
||||
bd
|
||||
:a
|
||||
# Here we are processing a line from the variable definition.
|
||||
# Remove comment, more precisely replace it with a space.
|
||||
s/#.*$/ /
|
||||
# See if the line ends in a backslash.
|
||||
tb
|
||||
:b
|
||||
s/\\$//
|
||||
# Print the line, without the trailing backslash.
|
||||
p
|
||||
tc
|
||||
# There was no trailing backslash. The end of the variable definition is
|
||||
# reached. Clear the hold space.
|
||||
s/^.*$//
|
||||
x
|
||||
bd
|
||||
:c
|
||||
# A trailing backslash means that the variable definition continues in the
|
||||
# next line. Put a nonempty string into the hold space to indicate this.
|
||||
s/^.*$/P/
|
||||
x
|
||||
:d
|
||||
'
|
||||
changequote([,])dnl
|
||||
|
||||
# Set POTFILES to the value of the Makefile variable POTFILES.
|
||||
sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
|
||||
POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
|
||||
# Compute POTFILES_DEPS as
|
||||
# $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
|
||||
POTFILES_DEPS=
|
||||
for file in $POTFILES; do
|
||||
POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
|
||||
done
|
||||
POMAKEFILEDEPS=""
|
||||
|
||||
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||
fi
|
||||
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||
# The LINGUAS file contains the set of available languages.
|
||||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||
else
|
||||
# Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
|
||||
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
|
||||
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
|
||||
fi
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
# Compute POFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||
# Compute UPDATEPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||
# Compute DUMMYPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||
# Compute GMOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||
# Compute PROPERTIESFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
|
||||
# Compute CLASSFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
|
||||
# Compute QMFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
|
||||
# Compute MSGFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
|
||||
# Compute RESOURCESDLLFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
|
||||
case "$ac_given_srcdir" in
|
||||
.) srcdirpre= ;;
|
||||
*) srcdirpre='$(srcdir)/' ;;
|
||||
esac
|
||||
POFILES=
|
||||
UPDATEPOFILES=
|
||||
DUMMYPOFILES=
|
||||
GMOFILES=
|
||||
PROPERTIESFILES=
|
||||
CLASSFILES=
|
||||
QMFILES=
|
||||
MSGFILES=
|
||||
RESOURCESDLLFILES=
|
||||
for lang in $ALL_LINGUAS; do
|
||||
POFILES="$POFILES $srcdirpre$lang.po"
|
||||
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||
PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
|
||||
CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
|
||||
QMFILES="$QMFILES $srcdirpre$lang.qm"
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
|
||||
done
|
||||
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||
# environment variable.
|
||||
INST_LINGUAS=
|
||||
if test -n "$ALL_LINGUAS"; then
|
||||
for presentlang in $ALL_LINGUAS; do
|
||||
useit=no
|
||||
if test "%UNSET%" != "$LINGUAS"; then
|
||||
desiredlanguages="$LINGUAS"
|
||||
else
|
||||
desiredlanguages="$ALL_LINGUAS"
|
||||
fi
|
||||
for desiredlang in $desiredlanguages; do
|
||||
# Use the presentlang catalog if desiredlang is
|
||||
# a. equal to presentlang, or
|
||||
# b. a variant of presentlang (because in this case,
|
||||
# presentlang can be used as a fallback for messages
|
||||
# which are not translated in the desiredlang catalog).
|
||||
case "$desiredlang" in
|
||||
"$presentlang"*) useit=yes;;
|
||||
esac
|
||||
done
|
||||
if test $useit = yes; then
|
||||
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
CATALOGS=
|
||||
JAVACATALOGS=
|
||||
QTCATALOGS=
|
||||
TCLCATALOGS=
|
||||
CSHARPCATALOGS=
|
||||
if test -n "$INST_LINGUAS"; then
|
||||
for lang in $INST_LINGUAS; do
|
||||
CATALOGS="$CATALOGS $lang.gmo"
|
||||
JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
|
||||
QTCATALOGS="$QTCATALOGS $lang.qm"
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
|
||||
done
|
||||
fi
|
||||
|
||||
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
|
||||
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
|
||||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang.msg: $lang.po
|
||||
@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||||
\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
|
||||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
|
||||
@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||||
\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
if test -n "$POMAKEFILEDEPS"; then
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
Makefile: $POMAKEFILEDEPS
|
||||
EOF
|
||||
fi
|
||||
mv "$ac_file.tmp" "$ac_file"
|
||||
])
|
||||
|
||||
dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
|
||||
AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
|
||||
[
|
||||
XGETTEXT_EXTRA_OPTIONS=
|
||||
])
|
||||
|
||||
dnl Registers an option to be passed to xgettext in the po subdirectory.
|
||||
AC_DEFUN([AM_XGETTEXT_OPTION],
|
||||
[
|
||||
AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
|
||||
XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
|
||||
])
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
# progtest.m4 serial 4 (gettext-0.14.2)
|
||||
dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
# Search path for a program which passes the given test.
|
||||
|
||||
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||
[
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
|
||||
# Find out how to test for executable files. Don't use a zero-byte file,
|
||||
# as systems may use methods other than mode bits to determine executability.
|
||||
cat >conf$$.file <<_ASEOF
|
||||
#! /bin/sh
|
||||
exit 0
|
||||
_ASEOF
|
||||
chmod +x conf$$.file
|
||||
if test -x conf$$.file >/dev/null 2>&1; then
|
||||
ac_executable_p="test -x"
|
||||
else
|
||||
ac_executable_p="test -f"
|
||||
fi
|
||||
rm -f conf$$.file
|
||||
|
||||
# Extract the first word of "$2", so it can be a program name with args.
|
||||
set dummy $2; ac_word=[$]2
|
||||
AC_MSG_CHECKING([for $ac_word])
|
||||
AC_CACHE_VAL(ac_cv_path_$1,
|
||||
[case "[$]$1" in
|
||||
[[\\/]]* | ?:[[\\/]]*)
|
||||
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
|
||||
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||
IFS="$ac_save_IFS"
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
|
||||
echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
|
||||
if [$3]; then
|
||||
ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS="$ac_save_IFS"
|
||||
dnl If no 4th arg is given, leave the cache variable unset,
|
||||
dnl so AC_PATH_PROGS will keep looking.
|
||||
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||
])dnl
|
||||
;;
|
||||
esac])dnl
|
||||
$1="$ac_cv_path_$1"
|
||||
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||
AC_MSG_RESULT([$]$1)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_SUBST($1)dnl
|
||||
])
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
zh_CN
|
||||
|
||||
|
|
@ -1,429 +0,0 @@
|
|||
# Makefile for PO directory in any package using GNU gettext.
|
||||
# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||
#
|
||||
# This file can be copied and used freely without restrictions. It can
|
||||
# be used in projects which are not available under the GNU General Public
|
||||
# License but which still want to provide support for the GNU gettext
|
||||
# functionality.
|
||||
# Please note that the actual code of GNU gettext is covered by the GNU
|
||||
# General Public License and is *not* in the public domain.
|
||||
#
|
||||
# Origin: gettext-0.17
|
||||
GETTEXT_MACRO_VERSION = 0.17
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
|
||||
SHELL = /bin/sh
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
datarootdir = @datarootdir@
|
||||
datadir = @datadir@
|
||||
localedir = @localedir@
|
||||
gettextsrcdir = $(datadir)/gettext/po
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
# We use $(mkdir_p).
|
||||
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
|
||||
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
|
||||
# @install_sh@ does not start with $(SHELL), so we add it.
|
||||
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
|
||||
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
|
||||
# versions, $(mkinstalldirs) and $(install_sh) are unused.
|
||||
mkinstalldirs = $(SHELL) @install_sh@ -d
|
||||
install_sh = $(SHELL) @install_sh@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
mkdir_p = @mkdir_p@
|
||||
|
||||
GMSGFMT_ = @GMSGFMT@
|
||||
GMSGFMT_no = @GMSGFMT@
|
||||
GMSGFMT_yes = @GMSGFMT_015@
|
||||
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
|
||||
MSGFMT_ = @MSGFMT@
|
||||
MSGFMT_no = @MSGFMT@
|
||||
MSGFMT_yes = @MSGFMT_015@
|
||||
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
|
||||
XGETTEXT_ = @XGETTEXT@
|
||||
XGETTEXT_no = @XGETTEXT@
|
||||
XGETTEXT_yes = @XGETTEXT_015@
|
||||
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
|
||||
MSGMERGE = msgmerge
|
||||
MSGMERGE_UPDATE = @MSGMERGE@ --update
|
||||
MSGINIT = msginit
|
||||
MSGCONV = msgconv
|
||||
MSGFILTER = msgfilter
|
||||
|
||||
POFILES = @POFILES@
|
||||
GMOFILES = @GMOFILES@
|
||||
UPDATEPOFILES = @UPDATEPOFILES@
|
||||
DUMMYPOFILES = @DUMMYPOFILES@
|
||||
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
|
||||
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
|
||||
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
|
||||
$(POFILES) $(GMOFILES) \
|
||||
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
|
||||
|
||||
POTFILES = \
|
||||
|
||||
CATALOGS = @CATALOGS@
|
||||
|
||||
# Makevars gets inserted here. (Don't remove this line!)
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
|
||||
|
||||
.po.mo:
|
||||
@echo "$(MSGFMT) -c -o $@ $<"; \
|
||||
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
|
||||
|
||||
.po.gmo:
|
||||
@lang=`echo $* | sed -e 's,.*/,,'`; \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
|
||||
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
|
||||
|
||||
.sin.sed:
|
||||
sed -e '/^#/d' $< > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
|
||||
all: check-macro-version all-@USE_NLS@
|
||||
|
||||
all-yes: stamp-po
|
||||
all-no:
|
||||
|
||||
# Ensure that the gettext macros and this Makefile.in.in are in sync.
|
||||
check-macro-version:
|
||||
@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|
||||
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
|
||||
exit 1; \
|
||||
}
|
||||
|
||||
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
|
||||
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
|
||||
# we don't want to bother translators with empty POT files). We assume that
|
||||
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
|
||||
# In this case, stamp-po is a nop (i.e. a phony target).
|
||||
|
||||
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
|
||||
# been loosely updated. Its purpose is that when a developer or translator
|
||||
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
|
||||
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
|
||||
# invocations of "make" will do nothing. This timestamp would not be necessary
|
||||
# if updating the $(CATALOGS) would always touch them; however, the rule for
|
||||
# $(POFILES) has been designed to not touch files that don't need to be
|
||||
# changed.
|
||||
stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||
test ! -f $(srcdir)/$(DOMAIN).pot || \
|
||||
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
|
||||
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
|
||||
echo "touch stamp-po" && \
|
||||
echo timestamp > stamp-poT && \
|
||||
mv stamp-poT stamp-po; \
|
||||
}
|
||||
|
||||
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
|
||||
# otherwise packages like GCC can not be built if only parts of the source
|
||||
# have been downloaded.
|
||||
|
||||
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
|
||||
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
|
||||
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||
if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
|
||||
package_gnu='GNU '; \
|
||||
else \
|
||||
package_gnu=''; \
|
||||
fi; \
|
||||
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
|
||||
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
|
||||
else \
|
||||
msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
|
||||
fi; \
|
||||
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
|
||||
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
|
||||
--files-from=$(srcdir)/POTFILES.in \
|
||||
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||
;; \
|
||||
*) \
|
||||
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
|
||||
--files-from=$(srcdir)/POTFILES.in \
|
||||
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||
--package-name="$${package_gnu}@PACKAGE@" \
|
||||
--package-version='@VERSION@' \
|
||||
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||
;; \
|
||||
esac
|
||||
test ! -f $(DOMAIN).po || { \
|
||||
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
|
||||
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
|
||||
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
|
||||
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
|
||||
else \
|
||||
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
|
||||
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||
fi; \
|
||||
else \
|
||||
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||
fi; \
|
||||
}
|
||||
|
||||
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
|
||||
# every "make" invocation, only create it when it is missing.
|
||||
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
|
||||
$(srcdir)/$(DOMAIN).pot:
|
||||
$(MAKE) $(DOMAIN).pot-update
|
||||
|
||||
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
|
||||
# Note that a PO file is not touched if it doesn't need to be changed.
|
||||
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
||||
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
||||
if test -f "$(srcdir)/$${lang}.po"; then \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
|
||||
cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
|
||||
else \
|
||||
$(MAKE) $${lang}.po-create; \
|
||||
fi
|
||||
|
||||
|
||||
install: install-exec install-data
|
||||
install-exec:
|
||||
install-data: install-data-@USE_NLS@
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||
for file in $(DISTFILES.common) Makevars.template; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
for file in Makevars; do \
|
||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
install-data-no: all
|
||||
install-data-yes: all
|
||||
$(mkdir_p) $(DESTDIR)$(datadir)
|
||||
@catalogs='$(CATALOGS)'; \
|
||||
for cat in $$catalogs; do \
|
||||
cat=`basename $$cat`; \
|
||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
|
||||
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
|
||||
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
|
||||
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||
if test -n "$$lc"; then \
|
||||
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||
for file in *; do \
|
||||
if test -f $$file; then \
|
||||
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||
fi; \
|
||||
done); \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||
else \
|
||||
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||
:; \
|
||||
else \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
fi; \
|
||||
fi; \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
|
||||
fi; \
|
||||
done; \
|
||||
done
|
||||
|
||||
install-strip: install
|
||||
|
||||
installdirs: installdirs-exec installdirs-data
|
||||
installdirs-exec:
|
||||
installdirs-data: installdirs-data-@USE_NLS@
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
installdirs-data-no:
|
||||
installdirs-data-yes:
|
||||
$(mkdir_p) $(DESTDIR)$(datadir)
|
||||
@catalogs='$(CATALOGS)'; \
|
||||
for cat in $$catalogs; do \
|
||||
cat=`basename $$cat`; \
|
||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||
if test -n "$$lc"; then \
|
||||
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||
for file in *; do \
|
||||
if test -f $$file; then \
|
||||
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||
fi; \
|
||||
done); \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||
else \
|
||||
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||
:; \
|
||||
else \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi; \
|
||||
done; \
|
||||
done
|
||||
|
||||
# Define this as empty until I found a useful application.
|
||||
installcheck:
|
||||
|
||||
uninstall: uninstall-exec uninstall-data
|
||||
uninstall-exec:
|
||||
uninstall-data: uninstall-data-@USE_NLS@
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
for file in $(DISTFILES.common) Makevars.template; do \
|
||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
uninstall-data-no:
|
||||
uninstall-data-yes:
|
||||
catalogs='$(CATALOGS)'; \
|
||||
for cat in $$catalogs; do \
|
||||
cat=`basename $$cat`; \
|
||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
|
||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||
done; \
|
||||
done
|
||||
|
||||
check: all
|
||||
|
||||
info dvi ps pdf html tags TAGS ctags CTAGS ID:
|
||||
|
||||
mostlyclean:
|
||||
rm -f remove-potcdate.sed
|
||||
rm -f stamp-poT
|
||||
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
|
||||
rm -fr *.o
|
||||
|
||||
clean: mostlyclean
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile Makefile.in POTFILES *.mo
|
||||
|
||||
maintainer-clean: distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
rm -f stamp-po $(GMOFILES)
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
dist distdir:
|
||||
$(MAKE) update-po
|
||||
@$(MAKE) dist2
|
||||
# This is a separate target because 'update-po' must be executed before.
|
||||
dist2: stamp-po $(DISTFILES)
|
||||
dists="$(DISTFILES)"; \
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
dists="$$dists Makevars.template"; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||
dists="$$dists $(DOMAIN).pot stamp-po"; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/ChangeLog; then \
|
||||
dists="$$dists ChangeLog"; \
|
||||
fi; \
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do \
|
||||
if test -f $(srcdir)/ChangeLog.$$i; then \
|
||||
dists="$$dists ChangeLog.$$i"; \
|
||||
fi; \
|
||||
done; \
|
||||
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
|
||||
for file in $$dists; do \
|
||||
if test -f $$file; then \
|
||||
cp -p $$file $(distdir) || exit 1; \
|
||||
else \
|
||||
cp -p $(srcdir)/$$file $(distdir) || exit 1; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
update-po: Makefile
|
||||
$(MAKE) $(DOMAIN).pot-update
|
||||
test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
|
||||
$(MAKE) update-gmo
|
||||
|
||||
# General rule for creating PO files.
|
||||
|
||||
.nop.po-create:
|
||||
@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
|
||||
echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
|
||||
exit 1
|
||||
|
||||
# General rule for updating PO files.
|
||||
|
||||
.nop.po-update:
|
||||
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||
tmpdir=`pwd`; \
|
||||
echo "$$lang:"; \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
|
||||
cd $(srcdir); \
|
||||
if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
|
||||
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
else \
|
||||
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||
:; \
|
||||
else \
|
||||
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
else \
|
||||
echo "msgmerge for $$lang.po failed!" 1>&2; \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
fi
|
||||
|
||||
$(DUMMYPOFILES):
|
||||
|
||||
update-gmo: Makefile $(GMOFILES)
|
||||
@:
|
||||
|
||||
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
|
||||
cd $(top_builddir) \
|
||||
&& $(SHELL) ./config.status $(subdir)/$@.in po-directories
|
||||
|
||||
force:
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
# Makefile variables for PO directory in any package using GNU gettext.
|
||||
|
||||
# Usually the message domain is the same as the package name.
|
||||
DOMAIN = $(PACKAGE)
|
||||
|
||||
# These two variables depend on the location of this directory.
|
||||
subdir = po
|
||||
top_builddir = ..
|
||||
|
||||
# These options get passed to xgettext.
|
||||
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||
|
||||
# This is the copyright holder that gets inserted into the header of the
|
||||
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||
# package. (Note that the msgstr strings, extracted from the package's
|
||||
# sources, belong to the copyright holder of the package.) Translators are
|
||||
# expected to transfer the copyright for their translations to this person
|
||||
# or entity, or to disclaim their copyright. The empty string stands for
|
||||
# the public domain; in this case the translators are expected to disclaim
|
||||
# their copyright.
|
||||
COPYRIGHT_HOLDER = Huang Peng <shawn.p.huang@gmail.com>
|
||||
|
||||
# This is the email address or URL to which the translators shall report
|
||||
# bugs in the untranslated strings:
|
||||
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||
# - Strings which use unclear terms or require additional context to be
|
||||
# understood.
|
||||
# - Strings which make invalid assumptions about notation of date, time or
|
||||
# money.
|
||||
# - Pluralisation problems.
|
||||
# - Incorrect English spelling.
|
||||
# - Incorrect formatting.
|
||||
# It can be your email address, or a mailing list address where translators
|
||||
# can write to without being subscribed, or the URL of a web page through
|
||||
# which the translators can contact you.
|
||||
MSGID_BUGS_ADDRESS = $(PACKAGE_BUGREPORT)
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
src/scim_kmfl_imengine.cpp
|
||||
src/scim_kmfl_imengine.h
|
||||
src/xkbmap.h
|
||||
src/xkbmap.cpp
|
||||
src/stringtok.h
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
# Special Makefile rules for English message catalogs with quotation marks.
|
||||
|
||||
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
|
||||
|
||||
.SUFFIXES: .insert-header .po-update-en
|
||||
|
||||
en@quot.po-create:
|
||||
$(MAKE) en@quot.po-update
|
||||
en@boldquot.po-create:
|
||||
$(MAKE) en@boldquot.po-update
|
||||
|
||||
en@quot.po-update: en@quot.po-update-en
|
||||
en@boldquot.po-update: en@boldquot.po-update-en
|
||||
|
||||
.insert-header.po-update-en:
|
||||
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
|
||||
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
|
||||
tmpdir=`pwd`; \
|
||||
echo "$$lang:"; \
|
||||
ll=`echo $$lang | sed -e 's/@.*//'`; \
|
||||
LC_ALL=C; export LC_ALL; \
|
||||
cd $(srcdir); \
|
||||
if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
|
||||
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
else \
|
||||
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||
:; \
|
||||
else \
|
||||
echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
else \
|
||||
echo "creation of $$lang.po failed!" 1>&2; \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
fi
|
||||
|
||||
en@quot.insert-header: insert-header.sin
|
||||
sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
|
||||
|
||||
en@boldquot.insert-header: insert-header.sin
|
||||
sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
|
||||
|
||||
mostlyclean: mostlyclean-quot
|
||||
mostlyclean-quot:
|
||||
rm -f *.insert-header
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
s/“/“[1m/g
|
||||
s/”/[0m”/g
|
||||
s/‘/‘[1m/g
|
||||
s/’/[0m’/g
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
# All this catalog "translates" are quotation characters.
|
||||
# The msgids must be ASCII and therefore cannot contain real quotation
|
||||
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
|
||||
# and double quote (0x22). These substitutes look strange; see
|
||||
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
|
||||
#
|
||||
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
|
||||
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
|
||||
# It also translates pairs of apostrophe (0x27) to
|
||||
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
|
||||
# and pairs of quotation mark (0x22) to
|
||||
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
|
||||
#
|
||||
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
|
||||
# When output to an ISO-8859-1 terminal, the single quotation marks are
|
||||
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
|
||||
# grave/acute accent (by libiconv), and the double quotation marks are
|
||||
# transliterated to 0x22.
|
||||
# When output to an ASCII terminal, the single quotation marks are
|
||||
# transliterated to apostrophes, and the double quotation marks are
|
||||
# transliterated to 0x22.
|
||||
#
|
||||
# This catalog furthermore displays the text between the quotation marks in
|
||||
# bold face, assuming the VT100/XTerm escape sequences.
|
||||
#
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# All this catalog "translates" are quotation characters.
|
||||
# The msgids must be ASCII and therefore cannot contain real quotation
|
||||
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
|
||||
# and double quote (0x22). These substitutes look strange; see
|
||||
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
|
||||
#
|
||||
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
|
||||
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
|
||||
# It also translates pairs of apostrophe (0x27) to
|
||||
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
|
||||
# and pairs of quotation mark (0x22) to
|
||||
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
|
||||
#
|
||||
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
|
||||
# When output to an ISO-8859-1 terminal, the single quotation marks are
|
||||
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
|
||||
# grave/acute accent (by libiconv), and the double quotation marks are
|
||||
# transliterated to 0x22.
|
||||
# When output to an ASCII terminal, the single quotation marks are
|
||||
# transliterated to apostrophes, and the double quotation marks are
|
||||
# transliterated to 0x22.
|
||||
#
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
# Sed script that inserts the file called HEADER before the header entry.
|
||||
#
|
||||
# At each occurrence of a line starting with "msgid ", we execute the following
|
||||
# commands. At the first occurrence, insert the file. At the following
|
||||
# occurrences, do nothing. The distinction between the first and the following
|
||||
# occurrences is achieved by looking at the hold space.
|
||||
/^msgid /{
|
||||
x
|
||||
# Test if the hold space is empty.
|
||||
s/m/m/
|
||||
ta
|
||||
# Yes it was empty. First occurrence. Read the file.
|
||||
r HEADER
|
||||
# Output the file's contents by reading the next line. But don't lose the
|
||||
# current line while doing this.
|
||||
g
|
||||
N
|
||||
bb
|
||||
:a
|
||||
# The hold space was nonempty. Following occurrences. Do nothing.
|
||||
x
|
||||
:b
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# Sed script that remove the POT-Creation-Date line in the header entry
|
||||
# from a POT file.
|
||||
#
|
||||
# The distinction between the first and the following occurrences of the
|
||||
# pattern is achieved by looking at the hold space.
|
||||
/^"POT-Creation-Date: .*"$/{
|
||||
x
|
||||
# Test if the hold space is empty.
|
||||
s/P/P/
|
||||
ta
|
||||
# Yes it was empty. First occurrence. Remove the line.
|
||||
g
|
||||
d
|
||||
bb
|
||||
:a
|
||||
# The hold space was nonempty. Following occurrences. Do nothing.
|
||||
x
|
||||
:b
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Huang Peng <shawn.p.huang@gmail.com>
|
||||
# This file is distributed under the same license as the scim-kmfl-imengine- package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: scim-kmfl-imengine- 0.9.9\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-12-07 15:29-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/scim_kmfl_imengine.cpp:78
|
||||
msgid ""
|
||||
"en_US.UTF-8,en_AU.UTF-8,en_CA.UTF-8,en_GB.UTF-8,my_MM.UTF-8,zh_CN.UTF-8,"
|
||||
"zh_CN.GB18030,zh_CN.GBK,zh_CN.GB2312,zh_CN,zh_TW.UTF-8,zh_TW.Big5,zh_TW,"
|
||||
"zh_HK.UTF-8,zh_HK,ja_JP.UTF-8,ja_JP.eucJP,ja_JP.ujis,ja_JP,ja,ko_KR.UTF-8,"
|
||||
"ko_KR.eucKR,ko_KR"
|
||||
msgstr ""
|
||||
|
||||
#: src/scim_kmfl_imengine.cpp:311
|
||||
msgid ""
|
||||
"Hot Keys:\n"
|
||||
"\n"
|
||||
" Esc:\n"
|
||||
" reset the input method.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scim_kmfl_imengine.cpp:580
|
||||
msgid "En"
|
||||
msgstr ""
|
||||
|
||||
#: src/scim_kmfl_imengine.cpp:582
|
||||
msgid "Unicode"
|
||||
msgstr ""
|
||||
|
|
@ -1 +0,0 @@
|
|||
timestamp
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
# Anjuta Version 1.2.1
|
||||
Compatibility Level: 1
|
||||
|
||||
<PROJECT_DESCRIPTION_START>
|
||||
Anjuta is a versatile Integrated Development Environment
|
||||
(IDE) for C and C++. It has been written for GTK+/GNOME, and features
|
||||
a number of advanced programming facilities.<PROJECT_DESCRIPTION_END>
|
||||
<CONFIG_PROGS_START>
|
||||
<CONFIG_PROGS_END>
|
||||
<CONFIG_LIBS_START>
|
||||
<CONFIG_LIBS_END>
|
||||
<CONFIG_HEADERS_START>
|
||||
<CONFIG_HEADERS_END>
|
||||
<CONFIG_CHARACTERISTICS_START>
|
||||
<CONFIG_CHARACTERISTICS_END>
|
||||
<CONFIG_LIB_FUNCS_START>
|
||||
<CONFIG_LIB_FUNCS_END>
|
||||
<CONFIG_ADDITIONAL_START>
|
||||
dnl Subst SCIM VERSION INFO
|
||||
SCIM_MAJOR=`pkg-config --modversion scim | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
AC_SUBST(SCIM_MAJOR)
|
||||
|
||||
SCIM_MINOR=`pkg-config --modversion scim | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
AC_SUBST(SCIM_MINOR)
|
||||
|
||||
SCIM_BINARY_VERSION=${SCIM_MAJOR}.${SCIM_MINOR}.0
|
||||
AC_SUBST(SCIM_BINARY_VERSION)
|
||||
<CONFIG_ADDITIONAL_END>
|
||||
<CONFIG_FILES_START>
|
||||
<CONFIG_FILES_END>
|
||||
<MAKEFILE_AM_START>
|
||||
<MAKEFILE_AM_END>
|
||||
|
||||
props.file.type=project
|
||||
|
||||
anjuta.version=1.2.1
|
||||
anjuta.compatibility.level=1
|
||||
|
||||
project.name=scim_kmfl_imengine
|
||||
project.type=GENERIC
|
||||
project.target.type=DYNAMIC_LIB
|
||||
project.version=0.6
|
||||
project.author=User
|
||||
project.source.target=libkmfl
|
||||
project.has.gettext=1
|
||||
project.gui.command=
|
||||
project.programming.language=C_C++
|
||||
project.excluded.modules=intl
|
||||
|
||||
project.config.extra.modules.before=
|
||||
project.config.extra.modules.after=scim_kmfl_imengine_setup im-xim-kmfl
|
||||
project.config.blocked=0
|
||||
project.config.disable.overwriting=0 0 1 0 0 0 0 0 0
|
||||
|
||||
project.menu.entry=scim_kmfl_imengine Version CVS
|
||||
project.menu.group=Applications
|
||||
project.menu.comment=scim_kmfl_imengine Version 0.6
|
||||
project.menu.icon=
|
||||
project.menu.need.terminal=0
|
||||
|
||||
project.configure.options=--prefix=/usr --sysconfdir=/etc
|
||||
anjuta.program.arguments=
|
||||
preferences.build.option.jobs=0
|
||||
preferences.build.option.silent=0
|
||||
preferences.build.option.autosave=1
|
||||
preferences.anjuta.make.options=-k
|
||||
preferences.make=make
|
||||
preferences.build.option.keep.going=1
|
||||
preferences.build.option.warn.undef=0
|
||||
preferences.autoformat.custom.style= -i4 -sc -bli0 -bl0 -cbi0 -ss
|
||||
preferences.indent.opening=0
|
||||
preferences.autoformat.disable=0
|
||||
preferences.indent.automatic=1
|
||||
preferences.use.tabs=0
|
||||
preferences.indent.size=4
|
||||
preferences.tabsize=8
|
||||
preferences.indent.closing=0
|
||||
|
||||
module.include.name=include
|
||||
module.include.type=
|
||||
module.include.files=
|
||||
|
||||
module.source.name=src
|
||||
module.source.type=
|
||||
module.source.files=\
|
||||
scim_kmfl_imengine.cpp\
|
||||
scim_kmfl_imengine.h\
|
||||
xkbmap.h\
|
||||
xkbmap.cpp\
|
||||
stringtok.h
|
||||
|
||||
module.pixmap.name=pixmaps
|
||||
module.pixmap.type=
|
||||
module.pixmap.files=
|
||||
|
||||
module.data.name=data
|
||||
module.data.type=
|
||||
module.data.files=
|
||||
|
||||
module.help.name=help
|
||||
module.help.type=
|
||||
module.help.files=
|
||||
|
||||
module.doc.name=doc
|
||||
module.doc.type=
|
||||
module.doc.files=
|
||||
|
||||
module.po.files=
|
||||
|
||||
compiler.options.supports=
|
||||
compiler.options.include.paths=\
|
||||
/usr/include/scim-1.0\
|
||||
/usr/local/include/libkmfl\
|
||||
/usr/lib/glib-2.0
|
||||
compiler.options.library.paths=
|
||||
compiler.options.libraries=\
|
||||
kmfl
|
||||
compiler.options.libraries.selected=1
|
||||
compiler.options.defines=
|
||||
compiler.options.defines.selected=1
|
||||
compiler.options.warning.buttons=0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
compiler.options.optimize.buttons=0 1 0 0
|
||||
compiler.options.other.buttons=1 0
|
||||
compiler.options.other.c.flags=-DSCIM_ICONDIR=\"$(datadir)/scim/icons\"
|
||||
compiler.options.other.l.flags=-avoid-version -rpath $(libdir)/scim-1.0/0.8.0/IMEngine -module
|
||||
compiler.options.other.l.libs=
|
||||
|
||||
project.src.paths=
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
|
||||
[filenumbers]
|
||||
0=541
|
||||
1=441
|
||||
2=133
|
||||
3=617
|
||||
4=12
|
||||
5=49
|
||||
6=517
|
||||
7=358
|
||||
8=35
|
||||
9=33
|
||||
|
||||
[filemarkers]
|
||||
0=
|
||||
1=
|
||||
2=
|
||||
3=
|
||||
4=
|
||||
5=
|
||||
6=
|
||||
7=
|
||||
8=
|
||||
9=
|
||||
|
||||
[File View]
|
||||
filter.file.unmatch=*.so *.o *.a *.la
|
||||
filter.file.ignore.hidden=0
|
||||
filter.dir.ignore.hidden=0
|
||||
|
||||
[executer]
|
||||
RunInTerminal=true
|
||||
|
||||
[Project State]
|
||||
clean before build=false
|
||||
|
||||
[replace_text]
|
||||
0=m_chars_to_delete
|
||||
1=m_string_to_commit
|
||||
2=kmfl
|
||||
3=Kmfl
|
||||
4=KMFL
|
||||
|
||||
[find_text]
|
||||
0=valid
|
||||
1=SCIM_KMFL_IMENGINE_MODULE_DATADIR
|
||||
2=ICONDIR
|
||||
3=mbs
|
||||
4=0_8_0
|
||||
|
||||
[filelist]
|
||||
0=/home/doug/Projects/kmflcvs/scim_kmfl_imengine-working/src/scim_kmfl_imengine.cpp
|
||||
|
||||
[Project Tree]
|
||||
0=0
|
||||
1=0:0
|
||||
|
||||
[Symbol Tree]
|
||||
0=1
|
||||
1=1:2
|
||||
2=4
|
||||
3=5
|
||||
|
||||
[File Tree]
|
||||
0=0
|
||||
1=0:5
|
||||
2=0:6
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<anjuta_rpm_builder>
|
||||
<head>
|
||||
<property name="rbc-version">1.0</property>
|
||||
<property name="projectname">scim_kmfl_imengine</property>
|
||||
<property name="projectversion">0.1</property>
|
||||
</head>
|
||||
<global>
|
||||
<property name="Name">scim_kmfl_imengine</property>
|
||||
<property name="Version">0.1</property>
|
||||
<property name="Release">1</property>
|
||||
<property name="Vendor">SILl <doug_rintoul@sil.orgl></property>
|
||||
<property name="Packager">User <Email></property>
|
||||
<property name="License">GPL</property>
|
||||
<property name="BuildArch">i586</property>
|
||||
<property name="BuildRoot">/var/tmp/scim_kmfl_imengine</property>
|
||||
<property name="Prefix">/usr</property>
|
||||
<Source>%{name}-%{version}.tar.gz</Source>
|
||||
<Docs>AUTHORS
|
||||
COPYING
|
||||
ChangeLog
|
||||
README
|
||||
INSTALL
|
||||
NEWS
|
||||
TODO
|
||||
</Docs>
|
||||
<script name="build">
|
||||
<property name="by_user">False</property>
|
||||
</script>
|
||||
<script name="install">
|
||||
<property name="by_user">False</property>
|
||||
</script>
|
||||
<script name="configure">
|
||||
<property name="by_user">False</property>
|
||||
</script>
|
||||
<script name="setup">
|
||||
<property name="by_user">False</property>
|
||||
</script>
|
||||
<changelog/>
|
||||
</global>
|
||||
<subpackage>
|
||||
<property name="disabled">False</property>
|
||||
<property name="conditional_building">False</property>
|
||||
<property name="Name">%base%</property>
|
||||
<property name="Group">Applications/System</property>
|
||||
<property name="Summary">%{name}</property>
|
||||
<property name="Requires">libkmfl</property>
|
||||
<property name="Provides">scim_kmfl_imengine</property>
|
||||
<Description>%anjuta%</Description>
|
||||
<Files>%{_libdir}/scim-1.0/0.8.0/IMEngine/kmfl.so
|
||||
</Files>
|
||||
</subpackage>
|
||||
<subpackage>
|
||||
<property name="disabled">False</property>
|
||||
<property name="conditional_building">False</property>
|
||||
<property name="Name">libs</property>
|
||||
<property name="Group">System Environment/Libraries</property>
|
||||
<property name="Summary">Dynamic libraries for %{name}</property>
|
||||
<Description>%anjuta%</Description>
|
||||
<Files>%{_libdir}/scim-1.0/0.8.0/IMEngine/kmfl.la
|
||||
%{_libdir}/scim-1.0/0.8.0/IMEngine/kmfl.a
|
||||
</Files>
|
||||
</subpackage>
|
||||
</anjuta_rpm_builder>
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
# created by RPM Builder for Anjuta, v0.1.2
|
||||
# http://arpmbuilder.sourceforge.net
|
||||
# Wed Feb 25 12:58:05 2004
|
||||
|
||||
%define _prefix /usr
|
||||
%define _unpackaged_files_terminate_build 0
|
||||
|
||||
%define is_mandrake %(test -e /etc/mandrake-release && echo 1 || echo 0)
|
||||
%define is_mandriva %(test -e /etc/mandriva-release && echo 1 || echo 0)
|
||||
%define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0)
|
||||
%define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0)
|
||||
|
||||
%if %is_mandrake
|
||||
%define dist mandrake
|
||||
%define disttag mdk
|
||||
%endif
|
||||
%if %is_mandriva
|
||||
%define dist mandriva
|
||||
%define disttag mdk
|
||||
%endif
|
||||
%if %is_suse
|
||||
%define dist suse
|
||||
%define disttag suse
|
||||
%define kde_path /opt/kde3
|
||||
%endif
|
||||
%if %is_fedora
|
||||
%define dist fedora
|
||||
%define disttag fc
|
||||
%endif
|
||||
|
||||
%define distver %(release="`rpm -q --queryformat='%{VERSION}' %{dist}-release 2> /dev/null | tr . : | sed s/://g`" ; if test $? != 0 ; then release="" ; fi ; echo "$release")
|
||||
|
||||
%if %is_fedora && %{distver} == 5
|
||||
%define with_libstdc_preview 1
|
||||
%else
|
||||
%define with_libstdc_preview 0
|
||||
%endif
|
||||
|
||||
Summary: %{name}
|
||||
Name: scim-kmfl-imengine
|
||||
Version: 0.9.6
|
||||
Release: 1%{disttag}%{distver}
|
||||
Vendor: SIL <doug_rintoul@sil.org>
|
||||
Packager: Doug Rintoul <doug_rintoul@sil.org>
|
||||
Group: Applications/System
|
||||
License: GPL
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
# Url: (none)
|
||||
BuildRoot: /var/tmp/scim_kmfl_imengine
|
||||
BuildArch: i586
|
||||
Requires: libkmfl scim >= 1.2.2
|
||||
Buildrequires: libkmfl-devel scim-devel
|
||||
%if %{with_libstdc_preview}
|
||||
Buildrequires: libstdc++so7-devel
|
||||
%endif
|
||||
# Conflicts: (none)
|
||||
# Provides: (none)
|
||||
# Obsoletes: (none)
|
||||
|
||||
%description
|
||||
KMFL imengine for SCIM
|
||||
|
||||
%package devel
|
||||
Summary: Static libraries and headers for %{name}
|
||||
Group: Development/Libraries
|
||||
# Requires: (none)
|
||||
# Buildrequires: (none)
|
||||
# Conflicts: (none)
|
||||
# Provides: (none)
|
||||
# Obsoletes: (none)
|
||||
|
||||
%description devel
|
||||
KMFL imengine for SCIM
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
[ ! -f Makefile ] || make distclean
|
||||
%if %{with_libstdc_preview}
|
||||
export CXX=%{_bindir}/g++-libstdc++-so_7
|
||||
%endif
|
||||
%configure \
|
||||
%if !%{with_libstdc_preview}
|
||||
--enable-ld-version-script
|
||||
%else
|
||||
%{nil}
|
||||
%endif
|
||||
%if %{with_libstdc_preview}
|
||||
# tweak libtool for libstdc++-so7
|
||||
sed -i -e "s/4.1.0 /4.2.0-`grep datestamp= %{_bindir}/g++-libstdc++-so_7 | sed -e "s/datestamp=//"` /" libtool
|
||||
%endif
|
||||
make
|
||||
|
||||
%install
|
||||
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%if %{with_libstdc_preview}
|
||||
export CXX=%{_bindir}/g++-libstdc++-so_7
|
||||
%endif
|
||||
|
||||
for doc in ABOUT-NLS AUTHORS README COPYING INSTALL NEWS TODO ChangeLog; do
|
||||
rm -f $RPM_BUILD_ROOT%{_prefix}/doc/scim_kmfl_imengine/$doc;
|
||||
done;
|
||||
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install-strip
|
||||
|
||||
%clean
|
||||
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
|
||||
%postun
|
||||
/sbin/ldconfig
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/scim-1.0/*/IMEngine/kmfl.so
|
||||
%{_libdir}/scim-1.0/*/SetupUI/kmfl_imengine_setup.so
|
||||
|
||||
%doc AUTHORS COPYING ChangeLog README INSTALL NEWS TODO
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/scim-1.0/*/IMEngine/kmfl.la
|
||||
%{_libdir}/scim-1.0/*/IMEngine/kmfl.a
|
||||
%{_libdir}/scim-1.0/*/SetupUI/kmfl_imengine_setup.a
|
||||
%{_libdir}/scim-1.0/*/SetupUI/kmfl_imengine_setup.la
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
## Created by Anjuta - will be overwritten
|
||||
## If you don't want it to overwrite it,
|
||||
## Please disable it in the Anjuta project configuration
|
||||
SCIM_MAJOR=@SCIM_MAJOR@
|
||||
|
||||
SCIM_MINOR=@SCIM_MINOR@
|
||||
|
||||
SCIM_BINARY_VERSION=@SCIM_BINARY_VERSION@
|
||||
|
||||
AM_CPPFLAGS =\
|
||||
$(SCIM_CFLAGS)\
|
||||
$(GTK_CFLAGS)
|
||||
|
||||
kmfl_imengine_setup_la_CFLAGS =\
|
||||
-DSCIM_ICONDIR=\"$(datadir)/scim/icons\"\
|
||||
-DSCIM_$(SCIM_MAJOR)_$(SCIM_MINOR)_0\
|
||||
-DSCIM_KMFL_SYSTEM_KEYBOARDS_DIR=\"$(datadir)/scim/kmfl\" \
|
||||
-Wall\
|
||||
-g
|
||||
|
||||
kmfl_imengine_setup_la_CXXFLAGS =\
|
||||
-DSCIM_ICONDIR=\"$(datadir)/scim/icons\"\
|
||||
-DSCIM_$(SCIM_MAJOR)_$(SCIM_MINOR)_0\
|
||||
-DSCIM_KMFL_SYSTEM_KEYBOARDS_DIR=\"$(datadir)/scim/kmfl\" \
|
||||
-Wall\
|
||||
-g
|
||||
|
||||
moduledir = $(libdir)/scim-1.0/$(SCIM_BINARY_VERSION)/SetupUI
|
||||
module_LTLIBRARIES = kmfl_imengine_setup.la
|
||||
|
||||
kmfl_imengine_setup_la_SOURCES = \
|
||||
scim_kmfl_imengine_setup.cpp
|
||||
|
||||
kmfl_imengine_setup_la_LDFLAGS = \
|
||||
-avoid-version -module
|
||||
|
||||
kmfl_imengine_setup_la_LIBADD = \
|
||||
$(GTK_LIBS) \
|
||||
-lkmfl
|
||||
|
||||
EXTRA_DIST = kmfl_private.h
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
/** @file kmfl_private.h
|
||||
* private used headers are included in this header.
|
||||
*/
|
||||
|
||||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
*
|
||||
* This library 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.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __KMFL_PRIVATE_H
|
||||
#define __KMFL_PRIVATE_H
|
||||
|
||||
// Include kmfl configuration header
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBINTL_H) && defined(ENABLE_NLS)
|
||||
#include <libintl.h>
|
||||
#define _(String) dgettext(GETTEXT_PACKAGE,String)
|
||||
#define N_(String) (String)
|
||||
#else
|
||||
#define _(String) (String)
|
||||
#define N_(String) (String)
|
||||
#define bindtextdomain(Package,Directory)
|
||||
#define textdomain(domain)
|
||||
#define bind_textdomain_codeset(domain,codeset)
|
||||
#endif
|
||||
|
||||
#endif //__KMFL_PRIVATE_H
|
||||
|
||||
/*
|
||||
* vi:ts=4:nowrap:expandtab
|
||||
*/
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,44 +0,0 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
## Created by Anjuta - will be overwritten
|
||||
## If you don't want it to overwrite it,
|
||||
## Please disable it in the Anjuta project configuration
|
||||
|
||||
SCIM_MAJOR=@SCIM_MAJOR@
|
||||
|
||||
SCIM_MINOR=@SCIM_MINOR@
|
||||
|
||||
SCIM_BINARY_VERSION=@SCIM_BINARY_VERSION@
|
||||
|
||||
kmfl_la_CFLAGS =\
|
||||
$(SCIM_CFLAGS)\
|
||||
-DSCIM_ICONDIR=\"$(datadir)/scim/icons\"\
|
||||
-DSCIM_$(SCIM_MAJOR)_$(SCIM_MINOR)_0\
|
||||
-DSCIM_KMFL_IMENGINE_MODULE_DATADIR=\"$(datadir)/scim/kmfl\" \
|
||||
-Wall\
|
||||
-O1\
|
||||
-g
|
||||
|
||||
kmfl_la_CXXFLAGS =\
|
||||
$(SCIM_CFLAGS)\
|
||||
-DSCIM_ICONDIR=\"$(datadir)/scim/icons\"\
|
||||
-DSCIM_$(SCIM_MAJOR)_$(SCIM_MINOR)_0\
|
||||
-DSCIM_KMFL_IMENGINE_MODULE_DATADIR=\"$(datadir)/scim/kmfl\" \
|
||||
-Wall\
|
||||
-O1\
|
||||
-g
|
||||
|
||||
EXTRA_DIST = xkbmap.h scim_kmfl_imengine.h stringtok.h scim_kmfl_imengine_private.h
|
||||
|
||||
moduledir = $(libdir)/scim-1.0/$(SCIM_BINARY_VERSION)/IMEngine
|
||||
module_LTLIBRARIES = kmfl.la
|
||||
|
||||
kmfl_la_SOURCES = \
|
||||
scim_kmfl_imengine.cpp \
|
||||
xkbmap.cpp
|
||||
|
||||
kmfl_la_LDFLAGS = \
|
||||
-L/usr/X11R6/lib -avoid-version -rpath $(libdir)/scim-1.0/$(SCIM_BINARY_VERSION)/IMEngine -module
|
||||
|
||||
kmfl_la_LIBADD = \
|
||||
-lkmfl -lxkbfile -lX11
|
||||
|
|
@ -1,674 +0,0 @@
|
|||
/** @file scim_kmfl_imengine.cpp
|
||||
* implementation of class KmflInstance.
|
||||
*/
|
||||
|
||||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
* based on source from SCIM Copyright (c) 2004 James Su <suzhe@tsinghua.org.cn>
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <kmfl/kmfl.h>
|
||||
#include <kmfl/libkmfl.h>
|
||||
#include "xkbmap.h"
|
||||
|
||||
#define Uses_SCIM_IMENGINE
|
||||
#define Uses_SCIM_ICONV
|
||||
#define Uses_SCIM_CONFIG_BASE
|
||||
#define Uses_SCIM_CONFIG_PATH
|
||||
#include "scim_kmfl_imengine_private.h"
|
||||
|
||||
#include <scim.h>
|
||||
#include <queue>
|
||||
#include "scim_kmfl_imengine.h"
|
||||
|
||||
#define scim_module_init kmfl_LTX_scim_module_init
|
||||
#define scim_module_exit kmfl_LTX_scim_module_exit
|
||||
#define scim_imengine_module_init kmfl_LTX_scim_imengine_module_init
|
||||
#define scim_imengine_module_create_factory kmfl_LTX_scim_imengine_module_create_factory
|
||||
|
||||
#ifndef SCIM_KMFL_IMENGINE_MODULE_DATADIR
|
||||
#define SCIM_KMFL_IMENGINE_MODULE_DATADIR "/usr/share/scim/kmfl"
|
||||
#endif
|
||||
#define SCIM_KMFL_MAX_KEYBOARD_NUMBER 64
|
||||
|
||||
#define KEY_AltRMask 0x10;
|
||||
|
||||
#define COMMIT_KEYCODE 0xFFFE
|
||||
#define COMMIT_KEYMASK 0x0F
|
||||
|
||||
using namespace scim;
|
||||
static unsigned int _scim_number_of_keyboards = 0;
|
||||
|
||||
static Pointer < KmflFactory >
|
||||
_scim_kmfl_imengine_factories[SCIM_KMFL_MAX_KEYBOARD_NUMBER];
|
||||
|
||||
static std::vector < String > _scim_system_keyboard_list;
|
||||
|
||||
static std::vector < String > _scim_user_keyboard_list;
|
||||
|
||||
static ConfigPointer _scim_config;
|
||||
|
||||
static Xkbmap xkbmap;
|
||||
|
||||
static const char *_DEFAULT_LOCALES = N_("en_US.UTF-8,"
|
||||
"en_AU.UTF-8,"
|
||||
"en_CA.UTF-8,"
|
||||
"en_GB.UTF-8,"
|
||||
"my_MM.UTF-8,"
|
||||
"zh_CN.UTF-8,zh_CN.GB18030,zh_CN.GBK,zh_CN.GB2312,zh_CN,"
|
||||
"zh_TW.UTF-8,zh_TW.Big5,zh_TW,"
|
||||
"zh_HK.UTF-8,zh_HK,"
|
||||
"ja_JP.UTF-8,ja_JP.eucJP,ja_JP.ujis,ja_JP,ja,"
|
||||
"ko_KR.UTF-8,ko_KR.eucKR,ko_KR");
|
||||
|
||||
static String get_dirname(const String & path)
|
||||
{
|
||||
size_t dirend = path.find_last_of(SCIM_PATH_DELIM_STRING);
|
||||
|
||||
if (dirend > 0) {
|
||||
return path.substr(0, dirend);
|
||||
} else {
|
||||
return String("");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_get_keyboard_list(std::vector < String > &keyboard_list,
|
||||
const String & path)
|
||||
{
|
||||
keyboard_list.clear();
|
||||
DIR *dir = opendir(path.c_str());
|
||||
|
||||
if (dir != NULL) {
|
||||
struct dirent *file = readdir(dir);
|
||||
while (file != NULL) {
|
||||
struct stat filestat;
|
||||
String absfn = path + SCIM_PATH_DELIM_STRING + file->d_name;
|
||||
stat(absfn.c_str(), &filestat);
|
||||
|
||||
|
||||
// Only .kmfl and .kmn extensions are valid keyboard files
|
||||
if (S_ISREG(filestat.st_mode)
|
||||
&& ((absfn.substr(absfn.length() - 5, 5) == ".kmfl"
|
||||
&& kmfl_check_keyboard(absfn.c_str()) == 0)
|
||||
|| absfn.substr(absfn.length() - 4, 4) == ".kmn")) {
|
||||
DBGMSG(1, "DAR: kmfl - found keyboard: %s\n",
|
||||
absfn.c_str());
|
||||
|
||||
keyboard_list.push_back(absfn);
|
||||
}
|
||||
|
||||
file = readdir(dir);
|
||||
}
|
||||
closedir(dir);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
void scim_module_init(void)
|
||||
{
|
||||
#ifdef DEBUGGING
|
||||
kmfl_debug = 1;
|
||||
#endif
|
||||
DBGMSG(1, "DAR/JD: kmfl - Kmfl Module init!!!\n");
|
||||
}
|
||||
|
||||
void scim_module_exit(void)
|
||||
{
|
||||
DBGMSG(1, "DAR: kmfl - Kmfl Module exit\n");
|
||||
for (UINT i = 0; i < _scim_number_of_keyboards; ++i) {
|
||||
_scim_kmfl_imengine_factories[i].reset();
|
||||
}
|
||||
|
||||
_scim_config.reset();
|
||||
}
|
||||
|
||||
unsigned int scim_imengine_module_init(const ConfigPointer & config)
|
||||
{
|
||||
DBGMSG(1, "DAR: kmfl - Kmfl IMEngine Module init\n");
|
||||
|
||||
_scim_config = config;
|
||||
_get_keyboard_list(_scim_system_keyboard_list,
|
||||
SCIM_KMFL_IMENGINE_MODULE_DATADIR);
|
||||
_get_keyboard_list(_scim_user_keyboard_list,
|
||||
scim_get_home_dir() + SCIM_PATH_DELIM_STRING +
|
||||
".scim" + SCIM_PATH_DELIM_STRING + "kmfl");
|
||||
|
||||
_scim_number_of_keyboards =
|
||||
_scim_system_keyboard_list.size() +
|
||||
_scim_user_keyboard_list.size();
|
||||
if (_scim_number_of_keyboards == 0) {
|
||||
DBGMSG(1, "DAR: kmfl - No valid keyboards found\n");
|
||||
}
|
||||
|
||||
return _scim_number_of_keyboards; // actually the number of files, may not all be valid
|
||||
}
|
||||
|
||||
IMEngineFactoryPointer scim_imengine_module_create_factory(unsigned int imengine)
|
||||
{
|
||||
DBGMSG(1, "DAR: kmfl - Kmfl IMEngine Module Create Factory %d\n",
|
||||
imengine);
|
||||
|
||||
if (imengine >= _scim_number_of_keyboards) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (_scim_kmfl_imengine_factories[imengine].null()) {
|
||||
_scim_kmfl_imengine_factories[imengine] = new KmflFactory();
|
||||
|
||||
if (imengine < _scim_system_keyboard_list.size()) {
|
||||
if (!_scim_kmfl_imengine_factories[imengine]->
|
||||
load_keyboard(_scim_system_keyboard_list[imengine],
|
||||
false))
|
||||
return 0;
|
||||
} else {
|
||||
if (!_scim_kmfl_imengine_factories[imengine]->
|
||||
load_keyboard(_scim_user_keyboard_list
|
||||
[imengine -
|
||||
_scim_system_keyboard_list.size()],
|
||||
true))
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!_scim_kmfl_imengine_factories[imengine]->valid()) {
|
||||
_scim_kmfl_imengine_factories[imengine].reset();
|
||||
}
|
||||
|
||||
char buf[2];
|
||||
sprintf(buf, "%c", 21 + imengine);
|
||||
_scim_kmfl_imengine_factories[imengine]->
|
||||
set_uuid(String("d1534208-27e5-8ec4-b2cd-df0fb0d2275") +
|
||||
String(buf));
|
||||
}
|
||||
return _scim_kmfl_imengine_factories[imengine];
|
||||
}
|
||||
}
|
||||
|
||||
// Implementation of Kmfl
|
||||
KmflFactory::KmflFactory()
|
||||
{
|
||||
String current_locale = String (setlocale (LC_CTYPE, 0));
|
||||
|
||||
if (current_locale.length() > 0) {
|
||||
set_locales(String(_(_DEFAULT_LOCALES)) + String(",") +
|
||||
current_locale);
|
||||
} else {
|
||||
set_locales(String(_(_DEFAULT_LOCALES)));
|
||||
}
|
||||
}
|
||||
|
||||
KmflFactory::KmflFactory(const WideString & name,
|
||||
const String & locales)
|
||||
{
|
||||
if (locales == String("default")) {
|
||||
String current_locale = String (setlocale (LC_CTYPE, 0));
|
||||
|
||||
if (current_locale.length() > 0) {
|
||||
set_locales(String(_(_DEFAULT_LOCALES)) + String(",") +
|
||||
current_locale);
|
||||
} else {
|
||||
set_locales(String(_(_DEFAULT_LOCALES)));
|
||||
}
|
||||
} else {
|
||||
set_locales(locales);
|
||||
}
|
||||
}
|
||||
|
||||
KmflFactory::~KmflFactory()
|
||||
{
|
||||
kmfl_unload_keyboard(m_keyboard_number);
|
||||
}
|
||||
|
||||
|
||||
bool KmflFactory::load_keyboard(const String & keyboard_file,
|
||||
bool user_keyboard)
|
||||
{
|
||||
char buf[256];
|
||||
KMSI * p_kmsi;
|
||||
m_keyboard_file = keyboard_file;
|
||||
DBGMSG(1, "DAR/jd: kmfl loading %s\n", keyboard_file.c_str());
|
||||
if (keyboard_file.length()) {
|
||||
m_keyboard_number =
|
||||
kmfl_load_keyboard((char *) keyboard_file.c_str());
|
||||
if (m_keyboard_number >= 0) {
|
||||
m_name = WideString(utf8_mbstowcs(kmfl_keyboard_name(m_keyboard_number)));
|
||||
DBGMSG(1, "DAR/jd: kmfl - Keyboard %s loaded\n",
|
||||
kmfl_keyboard_name(m_keyboard_number));
|
||||
|
||||
p_kmsi = kmfl_make_keyboard_instance(NULL);
|
||||
|
||||
if (p_kmsi) {
|
||||
kmfl_attach_keyboard(p_kmsi, m_keyboard_number);
|
||||
*buf='\0';
|
||||
kmfl_get_header(p_kmsi,SS_AUTHOR,buf,sizeof(buf) - 1);
|
||||
m_Author=String(buf);
|
||||
*buf='\0';
|
||||
kmfl_get_header(p_kmsi,SS_COPYRIGHT,buf,sizeof(buf) - 1);
|
||||
m_Copyright=String(buf);
|
||||
*buf='\0';
|
||||
kmfl_get_header(p_kmsi,SS_LANGUAGE,buf,sizeof(buf) - 1);
|
||||
m_Language=String(buf);
|
||||
kmfl_detach_keyboard(p_kmsi);
|
||||
kmfl_delete_keyboard_instance(p_kmsi);
|
||||
|
||||
}
|
||||
if (m_Language.length() != 0)
|
||||
set_languages(m_Language);
|
||||
return valid();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
WideString KmflFactory::get_name() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
||||
WideString KmflFactory::get_authors() const
|
||||
{
|
||||
return utf8_mbstowcs(m_Author);
|
||||
}
|
||||
|
||||
WideString KmflFactory::get_credits() const
|
||||
{
|
||||
return utf8_mbstowcs(m_Copyright);
|
||||
}
|
||||
|
||||
String KmflFactory::get_language () const
|
||||
{
|
||||
return scim_validate_language(m_Language);
|
||||
}
|
||||
|
||||
WideString KmflFactory::get_help() const
|
||||
{
|
||||
return utf8_mbstowcs(String(_("Hot Keys:\n\n"
|
||||
" Esc:\n"
|
||||
" reset the input method.\n")));
|
||||
}
|
||||
|
||||
void KmflFactory::set_uuid(const String & suuid)
|
||||
{
|
||||
uuid = suuid;
|
||||
}
|
||||
|
||||
String KmflFactory::get_uuid() const
|
||||
{
|
||||
return uuid;
|
||||
}
|
||||
|
||||
String KmflFactory::get_icon_file() const
|
||||
{
|
||||
String icon_file = kmfl_icon_file(m_keyboard_number);
|
||||
|
||||
if (icon_file.length() == 0) {
|
||||
return String(SCIM_KMFL_IMENGINE_MODULE_DATADIR
|
||||
SCIM_PATH_DELIM_STRING "icons" SCIM_PATH_DELIM_STRING
|
||||
"default.png");
|
||||
} else {
|
||||
String full_path_to_icon_file =
|
||||
get_dirname(m_keyboard_file) +
|
||||
SCIM_PATH_DELIM_STRING "icons" SCIM_PATH_DELIM_STRING +
|
||||
icon_file;
|
||||
struct stat filestat;
|
||||
|
||||
stat(full_path_to_icon_file.c_str(), &filestat);
|
||||
|
||||
if (S_ISREG(filestat.st_mode)) {
|
||||
return full_path_to_icon_file;
|
||||
} else {
|
||||
return String("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IMEngineInstancePointer
|
||||
KmflFactory::create_instance(const String & encoding,
|
||||
int id)
|
||||
{
|
||||
return new KmflInstance(this, encoding, id);
|
||||
}
|
||||
|
||||
// Implementation of KmflInstance
|
||||
KmflInstance::KmflInstance(KmflFactory * factory,
|
||||
const String & encoding, int id)
|
||||
: IMEngineInstanceBase(factory, encoding, id), m_factory(factory),
|
||||
m_forward(false), m_focused(false), m_unicode(false),
|
||||
m_changelayout(false), m_iconv(encoding), p_kmsi(NULL), m_currentsymbols(""), m_keyboardlayout(""), m_keyboardlayoutactive(false)
|
||||
{
|
||||
m_display = XOpenDisplay(NULL);
|
||||
|
||||
if (factory) {
|
||||
p_kmsi = kmfl_make_keyboard_instance(this);
|
||||
|
||||
if (p_kmsi) {
|
||||
char buf[256];
|
||||
int keyboard_number = factory->get_keyboard_number();
|
||||
DBGMSG(1, "DAR: Loading keyboard %d\n", keyboard_number);
|
||||
|
||||
kmfl_attach_keyboard(p_kmsi, keyboard_number);
|
||||
*buf='\0';
|
||||
if (kmfl_get_header(p_kmsi, SS_LAYOUT, buf, sizeof(buf) - 1)== 0) {
|
||||
m_keyboardlayout= buf;
|
||||
if (m_keyboardlayout.length() > 0) {
|
||||
*buf='\0';
|
||||
if (kmfl_get_header(p_kmsi,SS_MNEMONIC,buf,sizeof(buf) - 1) == 0) {
|
||||
if (*buf != '1' && *buf != '2') {
|
||||
m_changelayout= true;
|
||||
}
|
||||
} else {
|
||||
m_changelayout= true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_changelayout) {
|
||||
DBGMSG(1, "DAR: change layout is set, layout is %s\n", m_keyboardlayout.c_str());
|
||||
} else {
|
||||
DBGMSG(1, "DAR: change layout is not set\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
KmflInstance::~KmflInstance()
|
||||
{
|
||||
restore_system_layout();
|
||||
if (p_kmsi) {
|
||||
kmfl_detach_keyboard(p_kmsi);
|
||||
kmfl_delete_keyboard_instance(p_kmsi);
|
||||
}
|
||||
p_kmsi = NULL;
|
||||
XCloseDisplay(m_display);
|
||||
}
|
||||
void KmflInstance::activate_keyboard_layout(void)
|
||||
{
|
||||
if (!m_keyboardlayoutactive) {
|
||||
m_currentsymbols=xkbmap.getCurrentSymbols();
|
||||
DBGMSG(1, "DAR: changing layout from %s to %s\n", m_currentsymbols.c_str(), m_keyboardlayout.c_str());
|
||||
xkbmap.setLayout(m_keyboardlayout);
|
||||
m_keyboardlayoutactive= true;
|
||||
}
|
||||
}
|
||||
|
||||
void KmflInstance::restore_system_layout(void)
|
||||
{
|
||||
if (m_keyboardlayoutactive) {
|
||||
DBGMSG(1, "DAR: changing layout from %s to %s\n", m_keyboardlayout.c_str(), m_currentsymbols.c_str());
|
||||
xkbmap.setSymbols(m_currentsymbols);
|
||||
m_keyboardlayoutactive=false;
|
||||
}
|
||||
}
|
||||
|
||||
int KmflInstance::is_key_pressed(char *key_vec, KeySym keysym)
|
||||
{
|
||||
unsigned char keycode;
|
||||
keycode = XKeysymToKeycode(m_display, keysym);
|
||||
return key_vec[keycode >> 3] & (1 << (keycode & 7));
|
||||
}
|
||||
|
||||
bool KmflInstance::process_key_event(const KeyEvent & key)
|
||||
{
|
||||
int mask;
|
||||
WideString context;
|
||||
int cursor;
|
||||
|
||||
if (!m_focused) {
|
||||
return false;
|
||||
}
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - Keyevent, code: %x, mask: %x\n", key.code,
|
||||
key.mask);
|
||||
|
||||
// Ignore key releases
|
||||
if (key.is_key_release()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (key.code == SCIM_KEY_Sys_Req && (key.mask & SCIM_KEY_ControlMask) && (key.mask & SCIM_KEY_AltMask)){
|
||||
DBGMSG(1, "DAR: kmfl -Reloading all keyboards\n");
|
||||
kmfl_reload_all_keyboards();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (key.code == SCIM_KEY_Print && (key.mask & SCIM_KEY_ControlMask)) {
|
||||
DBGMSG(1, "DAR: kmfl -Reloading keyboard %s\n", p_kmsi->kbd_name);
|
||||
kmfl_reload_keyboard(p_kmsi->keyboard_number);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!m_forward) {
|
||||
// If a modifier key is pressed, check to see if it is a right modifier key
|
||||
// This is rather expensive so only do it if a shift state is active
|
||||
int right_modifier_mask = 0;
|
||||
if (key.mask & (SCIM_KEY_ShiftMask | SCIM_KEY_ControlMask | SCIM_KEY_Mod1Mask)) {
|
||||
char key_vec[32];
|
||||
XQueryKeymap(m_display, key_vec);
|
||||
|
||||
if ((key.mask & SCIM_KEY_Mod1Mask) && is_key_pressed(key_vec, SCIM_KEY_Alt_R)) {
|
||||
right_modifier_mask |= (SCIM_KEY_Mod1Mask << 8);
|
||||
}
|
||||
|
||||
if ((key.mask & SCIM_KEY_ControlMask) && is_key_pressed(key_vec, SCIM_KEY_Control_R)) {
|
||||
right_modifier_mask |= (SCIM_KEY_ControlMask << 8);
|
||||
}
|
||||
|
||||
if ((key.mask & SCIM_KEY_ShiftMask) && is_key_pressed(key_vec, SCIM_KEY_Shift_R)) {
|
||||
right_modifier_mask |= (SCIM_KEY_ShiftMask << 8);
|
||||
}
|
||||
}
|
||||
|
||||
mask = key.mask | right_modifier_mask;
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - keymask %x\n", mask);
|
||||
|
||||
// Reset key
|
||||
if (key.code == SCIM_KEY_Pause) {
|
||||
reset();
|
||||
return true;
|
||||
}
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - Checking sequences for %d\n", key.code);
|
||||
|
||||
if (!deadkey_in_history(p_kmsi)) {
|
||||
if (get_surrounding_text (context, cursor, MAX_HISTORY, 0)) {
|
||||
UINT nItems= context.size ();
|
||||
ITEM items[MAX_HISTORY];
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - get_surround_text: cursor at %d, length = %d, string %s\n", cursor, nItems, utf8_wcstombs(context).c_str());
|
||||
for (unsigned int i=0; i< nItems; ++i) {
|
||||
items[nItems - i - 1] = MAKE_ITEM(ITEM_CHAR,context [i]);
|
||||
}
|
||||
set_history(p_kmsi, items, nItems);
|
||||
}
|
||||
}
|
||||
|
||||
if (kmfl_interpret(p_kmsi, key.code, mask) == 1) {
|
||||
return true;
|
||||
// Not a modifier key, ie shift, ctrl, alt, etc
|
||||
} else if (!(key.code >= XK_Shift_L && key.code <= XK_Hyper_R)) {
|
||||
DBGMSG(1, "DAR: kmfl - key.code causing reset %x\n", key.code);
|
||||
reset();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void KmflInstance::reset()
|
||||
{
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - Reset called\n");
|
||||
|
||||
// Clear the history for this instance (reset the context)
|
||||
clear_history(p_kmsi);
|
||||
|
||||
m_iconv.set_encoding(get_encoding());
|
||||
}
|
||||
|
||||
void KmflInstance::focus_in()
|
||||
{
|
||||
if (m_changelayout && !m_forward) {
|
||||
activate_keyboard_layout();
|
||||
}
|
||||
m_focused = true;
|
||||
refresh_status_property();
|
||||
|
||||
initialize_properties ();
|
||||
}
|
||||
|
||||
void KmflInstance::focus_out()
|
||||
{
|
||||
if (m_changelayout) {
|
||||
restore_system_layout();
|
||||
}
|
||||
|
||||
m_focused = false;
|
||||
}
|
||||
|
||||
void KmflInstance::toggle_input_status()
|
||||
{
|
||||
DBGMSG(1, "DAR: kmfl - toggle_input_status\n");
|
||||
}
|
||||
|
||||
void KmflInstance::trigger_property(const String &property)
|
||||
{
|
||||
DBGMSG(1, "DAR: kmfl - trigger_property\n");
|
||||
}
|
||||
|
||||
void KmflInstance::initialize_properties ()
|
||||
{
|
||||
PropertyList proplist;
|
||||
|
||||
proplist.push_back (m_factory->m_status_property);
|
||||
|
||||
register_properties (proplist);
|
||||
|
||||
refresh_status_property ();
|
||||
}
|
||||
|
||||
void KmflInstance::refresh_status_property()
|
||||
{
|
||||
if (m_focused) {
|
||||
if (m_forward) {
|
||||
m_factory->m_status_property.set_label(_("En"));
|
||||
} else if (m_unicode) {
|
||||
m_factory->m_status_property.set_label(_("Unicode"));
|
||||
} else {
|
||||
m_factory->m_status_property.set_label(get_encoding());
|
||||
}
|
||||
update_property (m_factory->m_status_property);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void KmflInstance::forward_keyevent(unsigned int key, unsigned int state)
|
||||
{
|
||||
KeyEvent fkey(key, state);
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - forward key event key=%x, state=%x\n", key,state);
|
||||
|
||||
forward_key_event(fkey);
|
||||
}
|
||||
|
||||
void KmflInstance::erase_char()
|
||||
{
|
||||
KeyEvent backspacekey(SCIM_KEY_BackSpace, 0);
|
||||
|
||||
WideString text;
|
||||
int cursor;
|
||||
bool result;
|
||||
|
||||
DBGMSG(1, "DAR: kmfl - backspace\n");
|
||||
|
||||
if (get_surrounding_text (text, cursor, 1, 0)) {
|
||||
if (!delete_surrounding_text(-1, 1)) {
|
||||
DBGMSG(1, "DAR: delete_surrounding_text failed...forwarding key event\n");
|
||||
|
||||
forward_key_event(backspacekey);
|
||||
DBGMSG(1, "DAR: kmfl - key event forwarded\n");
|
||||
}
|
||||
} else {
|
||||
forward_key_event(backspacekey);
|
||||
DBGMSG(1, "DAR: kmfl - key event forwarded\n");
|
||||
}
|
||||
}
|
||||
|
||||
void KmflInstance::output_string(const String & str)
|
||||
{
|
||||
if (str.length() > 0) {
|
||||
DBGMSG(1, "DAR: kmfl - committing string %s\n", str.c_str());
|
||||
|
||||
commit_string(utf8_mbstowcs(str));
|
||||
}
|
||||
}
|
||||
|
||||
void KmflInstance::output_beep()
|
||||
{
|
||||
beep();
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
void output_string(void *contrack, char *ptr) {
|
||||
if (ptr) {
|
||||
((KmflInstance *) contrack)->output_string(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
void erase_char(void *contrack) {
|
||||
((KmflInstance *) contrack)->erase_char();
|
||||
}
|
||||
|
||||
void output_char(void *contrack, unsigned char byte) {
|
||||
if (byte == 8) {
|
||||
erase_char(contrack);
|
||||
} else {
|
||||
char s[2];
|
||||
s[0] = byte;
|
||||
s[1] = '\0';
|
||||
output_string(contrack, s);
|
||||
}
|
||||
}
|
||||
|
||||
void forward_keyevent(void *contrack, unsigned int key, unsigned int state)
|
||||
{
|
||||
((KmflInstance *) contrack)->forward_keyevent(key, state);
|
||||
}
|
||||
|
||||
void output_beep(void *contrack) {
|
||||
DBGMSG(1, "DAR: kmfl - beep\n");
|
||||
((KmflInstance *) contrack)->output_beep();
|
||||
|
||||
}
|
||||
} /* extern "c" */
|
||||
|
||||
/*
|
||||
vi:ts=4:nowrap:ai:expandtab
|
||||
*/
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
/** @file scim_kmfl_imengine.h
|
||||
* definition of Kmfl related classes.
|
||||
*/
|
||||
|
||||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
* based on source from SCIM Copyright (c) 2004 James Su <suzhe@tsinghua.org.cn>
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined (__SCIM_KMFL_IMENGINE_H)
|
||||
#define __SCIM_KMFL_IMENGINE_H
|
||||
|
||||
using namespace scim;
|
||||
|
||||
class KmflFactory : public IMEngineFactoryBase
|
||||
{
|
||||
WideString m_name;
|
||||
|
||||
friend class KmflInstance;
|
||||
Property m_status_property;
|
||||
|
||||
public:
|
||||
KmflFactory ();
|
||||
KmflFactory (const WideString & name, const String & locales);
|
||||
virtual ~KmflFactory ();
|
||||
|
||||
virtual WideString get_name () const;
|
||||
virtual WideString get_authors () const;
|
||||
virtual WideString get_credits () const;
|
||||
virtual WideString get_help () const;
|
||||
virtual String get_uuid () const;
|
||||
virtual String get_icon_file () const;
|
||||
virtual String get_language () const;
|
||||
|
||||
virtual IMEngineInstancePointer create_instance (const String& encoding, int id = -1);
|
||||
int get_keyboard_number()
|
||||
{
|
||||
return m_keyboard_number;
|
||||
}
|
||||
bool load_keyboard (const String &keyboard_file, bool user_keyboard);
|
||||
bool valid () const {
|
||||
return true;
|
||||
}
|
||||
void set_uuid(const String & suuid);
|
||||
|
||||
private:
|
||||
int m_keyboard_number;
|
||||
String m_keyboard_file;
|
||||
String uuid;
|
||||
String m_Language;
|
||||
String m_Author;
|
||||
String m_Copyright;
|
||||
|
||||
};
|
||||
|
||||
class KmflInstance : public IMEngineInstanceBase
|
||||
{
|
||||
Pointer <KmflFactory> m_factory;
|
||||
|
||||
bool m_forward;
|
||||
bool m_focused;
|
||||
bool m_unicode;
|
||||
bool m_changelayout;
|
||||
|
||||
IConvert m_iconv;
|
||||
KMSI *p_kmsi; // Pointer to the current imengine instance
|
||||
|
||||
Display * m_display;
|
||||
String m_currentsymbols;
|
||||
String m_keyboardlayout;
|
||||
bool m_keyboardlayoutactive;
|
||||
|
||||
public:
|
||||
KmflInstance (KmflFactory *factory,
|
||||
const String& encoding,
|
||||
int id = -1);
|
||||
virtual ~KmflInstance ();
|
||||
|
||||
virtual bool process_key_event (const KeyEvent& key);
|
||||
|
||||
virtual void reset ();
|
||||
virtual void focus_in ();
|
||||
virtual void focus_out ();
|
||||
|
||||
// These functions are not used for scim_kmfl_imengine
|
||||
virtual void move_preedit_caret (unsigned int pos){};
|
||||
virtual void select_lookup_table (unsigned int item){};
|
||||
virtual void lookup_table_page_up(){};
|
||||
virtual void lookup_table_page_down(){};
|
||||
virtual void select_candidate(unsigned int candidate){};
|
||||
virtual void update_lookup_table_page_size (unsigned int page_size){};
|
||||
virtual void toggle_full_width_punctuation (){};
|
||||
virtual void toggle_full_width_letter (){};
|
||||
virtual void trigger_property(const String &property);
|
||||
virtual void toggle_input_status ();
|
||||
void output_string(const String&str);
|
||||
void erase_char ();
|
||||
void forward_keyevent(unsigned int key, unsigned int state);
|
||||
void output_beep ();
|
||||
|
||||
private:
|
||||
int create_lookup_table (int start = 0);
|
||||
void refresh_status_property ();
|
||||
void initialize_properties ();
|
||||
int is_key_pressed(char * key_vec, KeySym keysym);
|
||||
|
||||
String get_multibyte_string (const WideString& preedit);
|
||||
ucs4_t get_unicode_value (const WideString& preedit);
|
||||
void activate_keyboard_layout(void);
|
||||
void restore_system_layout(void);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
/*
|
||||
vi:ts=4:nowrap:ai:expandtab
|
||||
*/
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/** @file scim_kmfl_imengine_private.h
|
||||
* private used headers are included in this header.
|
||||
*/
|
||||
|
||||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
* based on source from SCIM Copyright (c) 2004 James Su <suzhe@tsinghua.org.cn>
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SCIM_KMFL_IMENGINE_PRIVATE_H
|
||||
#define __SCIM_KMFL_IMENGINE_PRIVATE_H
|
||||
|
||||
// Include kmfl configuration header
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBINTL_H) && defined(ENABLE_NLS)
|
||||
#include <libintl.h>
|
||||
#define _(String) dgettext(GETTEXT_PACKAGE,String)
|
||||
#define N_(String) (String)
|
||||
#else
|
||||
#define _(String) (String)
|
||||
#define N_(String) (String)
|
||||
#define bindtextdomain(Package,Directory)
|
||||
#define textdomain(domain)
|
||||
#define bind_textdomain_codeset(domain,codeset)
|
||||
#endif
|
||||
|
||||
#endif //__SCIM_KMFL_IMENGINE_PRIVATE_H
|
||||
|
||||
/*
|
||||
vi:ts=4:nowrap:ai:expandtab
|
||||
*/
|
||||
|
|
@ -1,498 +0,0 @@
|
|||
/************************************************************
|
||||
Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
|
||||
|
||||
Permission to use, copy, modify, and distribute this
|
||||
software and its documentation for any purpose and without
|
||||
fee is hereby granted, provided that the above copyright
|
||||
notice appear in all copies and that both that copyright
|
||||
notice and this permission notice appear in supporting
|
||||
documentation, and that the name of Silicon Graphics not be
|
||||
used in advertising or publicity pertaining to distribution
|
||||
of the software without specific prior written permission.
|
||||
Silicon Graphics makes no representation about the suitability
|
||||
of this software for any purpose. It is provided "as is"
|
||||
without any express or implied warranty.
|
||||
|
||||
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
|
||||
GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
||||
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
||||
THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
********************************************************/
|
||||
/* $XFree86: xc/programs/setxkbmap/setxkbmap.c,v 3.7 2003/01/20 04:15:08 dawes Exp $ */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <locale.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xos.h>
|
||||
#include <X11/XKBlib.h>
|
||||
#include <X11/extensions/XKBfile.h>
|
||||
#include <X11/extensions/XKBconfig.h>
|
||||
#include <X11/extensions/XKBrules.h>
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#ifdef MAXPATHLEN
|
||||
#define PATH_MAX MAXPATHLEN
|
||||
#else
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef DFLT_XKB_CONFIG_ROOT
|
||||
#define DFLT_XKB_CONFIG_ROOT "/usr/X11R6/lib/X11/xkb"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_RULES_FILE
|
||||
#define DFLT_XKB_RULES_FILE "xfree86"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_LAYOUT
|
||||
#define DFLT_XKB_LAYOUT "us"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_MODEL
|
||||
#define DFLT_XKB_MODEL "pc101"
|
||||
#endif
|
||||
|
||||
#define FROM_IMENGINE 0
|
||||
#define FROM_RULES 1
|
||||
#define FROM_CMD_LINE 2
|
||||
|
||||
|
||||
#define RULES_NDX 0
|
||||
#define DISPLAY_NDX 1
|
||||
#define LOCALE_NDX 2
|
||||
#define MODEL_NDX 3
|
||||
#define LAYOUT_NDX 4
|
||||
#define VARIANT_NDX 5
|
||||
#define KEYCODES_NDX 6
|
||||
#define TYPES_NDX 7
|
||||
#define COMPAT_NDX 8
|
||||
#define SYMBOLS_NDX 9
|
||||
#define GEOMETRY_NDX 10
|
||||
#define KEYMAP_NDX 11
|
||||
#define NUM_STRING_VALS 12
|
||||
|
||||
Display * dpy;
|
||||
|
||||
int svSrc[NUM_STRING_VALS];
|
||||
char * svValue[NUM_STRING_VALS];
|
||||
|
||||
XkbConfigFieldsRec cfgDflts;
|
||||
XkbConfigRtrnRec cfgResult;
|
||||
|
||||
XkbRF_RulesPtr rules= NULL;
|
||||
XkbRF_VarDefsRec rdefs;
|
||||
|
||||
Bool clearOptions= False;
|
||||
int szOptions= 0;
|
||||
int numOptions= 0;
|
||||
char ** options= NULL;
|
||||
|
||||
int szInclPath= 0;
|
||||
int numInclPath= 0;
|
||||
char ** inclPath= NULL;
|
||||
|
||||
XkbDescPtr xkb= NULL;
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
#define streq(s1,s2) (strcmp(s1,s2)==0)
|
||||
#define strpfx(s1,s2) (strncmp(s1,s2,strlen(s2))==0)
|
||||
|
||||
#define MSG(s) printf(s)
|
||||
#define MSG1(s,a) printf(s,a)
|
||||
#define MSG2(s,a,b) printf(s,a,b)
|
||||
#define MSG3(s,a,b,c) printf(s,a,b,c)
|
||||
|
||||
#define ERR(s) fprintf(stderr,s)
|
||||
#define ERR1(s,a) fprintf(stderr,s,a)
|
||||
#define ERR2(s,a,b) fprintf(stderr,s,a,b)
|
||||
#define ERR3(s,a,b,c) fprintf(stderr,s,a,b,c)
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
Bool addToList ( int *sz, int *num, char ***listIn, char *newVal );
|
||||
void trySetString ( int which, char * newVal, int src );
|
||||
Bool getDisplay ( void );
|
||||
Bool getIMEngineValues ( void );
|
||||
Bool addStringToOptions ( char * opt_str, int * sz_opts, int * num_opts, char *** opts );
|
||||
char * stringFromOptions ( char * orig, int numNew, char ** newOpts );
|
||||
Bool applyConfig ( char * name );
|
||||
Bool applyRules ( void );
|
||||
Bool applyComponentNames ( void );
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
Bool
|
||||
addToList(int *sz,int *num,char ***listIn,char *newVal)
|
||||
{
|
||||
register int i;
|
||||
char **list;
|
||||
|
||||
if ((!newVal)||(!newVal[0])) {
|
||||
*num= 0;
|
||||
return True;
|
||||
}
|
||||
list= *listIn;
|
||||
for (i=0;i<*num;i++) {
|
||||
if (streq(list[i],newVal))
|
||||
return True;
|
||||
}
|
||||
if ((list==NULL)||(*sz<1)) {
|
||||
*num= 0;
|
||||
*sz= 4;
|
||||
list= (char **)calloc(*sz,sizeof(char *));
|
||||
*listIn= list;
|
||||
}
|
||||
else if (*num>=*sz) {
|
||||
*sz*= 2;
|
||||
list= (char **)realloc(list,(*sz)*sizeof(char *));
|
||||
*listIn= list;
|
||||
}
|
||||
if (!list) {
|
||||
ERR("Internal Error! Allocation failure in add to list!\n");
|
||||
ERR(" Exiting.\n");
|
||||
exit(-1);
|
||||
}
|
||||
list[*num]= strdup(newVal);
|
||||
(*num)= (*num)+1;
|
||||
return True;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
void
|
||||
trySetString(int which,char *newVal,int src)
|
||||
{
|
||||
if (svValue[which]!=NULL) {
|
||||
if (svSrc[which]==src) {
|
||||
return;
|
||||
}
|
||||
else if (svSrc[which]>src) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
svSrc[which]= src;
|
||||
svValue[which]= newVal;
|
||||
return;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
void initializePath()
|
||||
{
|
||||
addToList(&szInclPath,&numInclPath,&inclPath,".");
|
||||
addToList(&szInclPath,&numInclPath,&inclPath,DFLT_XKB_CONFIG_ROOT);
|
||||
}
|
||||
|
||||
Bool
|
||||
getDisplay()
|
||||
{
|
||||
int major,minor,why;
|
||||
|
||||
major= XkbMajorVersion;
|
||||
minor= XkbMinorVersion;
|
||||
dpy= XkbOpenDisplay(svValue[DISPLAY_NDX],NULL,NULL,&major,&minor,&why);
|
||||
if (!dpy) {
|
||||
if (svValue[DISPLAY_NDX]==NULL)
|
||||
svValue[DISPLAY_NDX]= getenv("DISPLAY");
|
||||
if (svValue[DISPLAY_NDX]==NULL)
|
||||
svValue[DISPLAY_NDX]= "default display";
|
||||
switch (why) {
|
||||
case XkbOD_BadLibraryVersion:
|
||||
ERR2("scim_kmfl_imengine was compiled with XKB version %d.%02d\n",
|
||||
XkbMajorVersion,XkbMinorVersion);
|
||||
ERR2("Xlib supports incompatible version %d.%02d\n",
|
||||
major,minor);
|
||||
break;
|
||||
case XkbOD_ConnectionRefused:
|
||||
ERR1("Cannot open display \"%s\"\n",svValue[DISPLAY_NDX]);
|
||||
break;
|
||||
case XkbOD_NonXkbIMEngine:
|
||||
ERR1("XKB extension not present on %s\n",svValue[DISPLAY_NDX]);
|
||||
break;
|
||||
case XkbOD_BadIMEngineVersion:
|
||||
ERR2("scim_kmfl_imengine was compiled with XKB version %d.%02d\n",
|
||||
XkbMajorVersion,XkbMinorVersion);
|
||||
ERR3("IMEngine %s uses incompatible version %d.%02d\n",
|
||||
svValue[DISPLAY_NDX],major,minor);
|
||||
break;
|
||||
default:
|
||||
ERR1("Unknown error %d from XkbOpenDisplay\n",why);
|
||||
break;
|
||||
}
|
||||
return False;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
Bool
|
||||
getIMEngineValues(void)
|
||||
{
|
||||
XkbRF_VarDefsRec vd;
|
||||
char * tmp= NULL;
|
||||
|
||||
if (!XkbRF_GetNamesProp(dpy,&tmp,&vd) || !tmp) {
|
||||
tmp = DFLT_XKB_RULES_FILE;
|
||||
vd.model = DFLT_XKB_MODEL;
|
||||
vd.layout = DFLT_XKB_LAYOUT;
|
||||
}
|
||||
if (tmp)
|
||||
trySetString(RULES_NDX,tmp,FROM_IMENGINE);
|
||||
if (vd.model)
|
||||
trySetString(MODEL_NDX,vd.model,FROM_IMENGINE);
|
||||
if (vd.layout)
|
||||
trySetString(LAYOUT_NDX,vd.layout,FROM_IMENGINE);
|
||||
if (vd.variant)
|
||||
trySetString(VARIANT_NDX,vd.variant,FROM_IMENGINE);
|
||||
if ((vd.options)&&(!clearOptions)) {
|
||||
addStringToOptions(vd.options,&szOptions,&numOptions,&options);
|
||||
XFree(vd.options);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
Bool
|
||||
addStringToOptions(char *opt_str,int *sz_opts,int *num_opts,char ***opts)
|
||||
{
|
||||
char *tmp,*str,*next;
|
||||
Bool ok= True;
|
||||
|
||||
if ((str= malloc(strlen(opt_str)+1))!=NULL)
|
||||
strcpy(str,opt_str);
|
||||
else return False;
|
||||
for (tmp= str,next=NULL;(tmp && *tmp!='\0')&&ok;tmp=next) {
|
||||
next= strchr(str,',');
|
||||
if (next) {
|
||||
*next= '\0';
|
||||
next++;
|
||||
}
|
||||
ok= addToList(sz_opts,num_opts,opts,tmp)&&ok;
|
||||
}
|
||||
free(str);
|
||||
return ok;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
char *
|
||||
stringFromOptions(char *orig,int numNew,char **newOpts)
|
||||
{
|
||||
int len,i,nOut;
|
||||
|
||||
if (orig) len= strlen(orig)+1;
|
||||
else len= 0;
|
||||
for (i=0;i<numNew;i++) {
|
||||
if (newOpts[i])
|
||||
len+= strlen(newOpts[i])+1;
|
||||
}
|
||||
if (len<1)
|
||||
return NULL;
|
||||
if (orig) {
|
||||
orig= (char *)realloc(orig,len);
|
||||
nOut= 1;
|
||||
}
|
||||
else {
|
||||
orig= (char *)calloc(len,1);
|
||||
nOut= 0;
|
||||
}
|
||||
for (i=0;i<numNew;i++) {
|
||||
if (!newOpts[i])
|
||||
continue;
|
||||
if (nOut>0) {
|
||||
strcat(orig,",");
|
||||
strcat(orig,newOpts[i]);
|
||||
}
|
||||
else strcpy(orig,newOpts[i]);
|
||||
nOut++;
|
||||
}
|
||||
return orig;
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
|
||||
|
||||
|
||||
Bool
|
||||
applyRules(void)
|
||||
{
|
||||
int i;
|
||||
char * rfName;
|
||||
|
||||
if (svSrc[MODEL_NDX]||svSrc[LAYOUT_NDX]||svSrc[VARIANT_NDX]||options) {
|
||||
char buf[PATH_MAX];
|
||||
XkbComponentNamesRec rnames;
|
||||
|
||||
if(svSrc[VARIANT_NDX] < svSrc[LAYOUT_NDX])
|
||||
svValue[VARIANT_NDX] = NULL;
|
||||
|
||||
rdefs.model= svValue[MODEL_NDX];
|
||||
rdefs.layout= svValue[LAYOUT_NDX];
|
||||
rdefs.variant= svValue[VARIANT_NDX];
|
||||
if (options)
|
||||
rdefs.options=stringFromOptions(rdefs.options,numOptions,options);
|
||||
|
||||
if (svSrc[RULES_NDX])
|
||||
rfName= svValue[RULES_NDX];
|
||||
else rfName= DFLT_XKB_RULES_FILE;
|
||||
|
||||
if (rfName[0]=='/') {
|
||||
rules= XkbRF_Load(rfName,svValue[LOCALE_NDX],True,True);
|
||||
}
|
||||
else {
|
||||
for (i=0;(i<numInclPath)&&(!rules);i++) {
|
||||
if ((strlen(inclPath[i])+strlen(rfName)+8)>PATH_MAX) {
|
||||
continue;
|
||||
}
|
||||
sprintf(buf,"%s/rules/%s",inclPath[i],svValue[RULES_NDX]);
|
||||
rules= XkbRF_Load(buf,svValue[LOCALE_NDX],True,True);
|
||||
}
|
||||
}
|
||||
if (!rules) {
|
||||
ERR1("Couldn't find rules file (%s) \n",svValue[RULES_NDX]);
|
||||
return False;
|
||||
}
|
||||
XkbRF_GetComponents(rules,&rdefs,&rnames);
|
||||
if (rnames.keycodes) {
|
||||
trySetString(KEYCODES_NDX,rnames.keycodes,FROM_RULES);
|
||||
rnames.keycodes= NULL;
|
||||
}
|
||||
if (rnames.symbols) {
|
||||
trySetString(SYMBOLS_NDX,rnames.symbols,FROM_RULES);
|
||||
rnames.symbols= NULL;
|
||||
}
|
||||
if (rnames.types) {
|
||||
trySetString(TYPES_NDX,rnames.types,FROM_RULES);
|
||||
rnames.types= NULL;
|
||||
}
|
||||
if (rnames.compat) {
|
||||
trySetString(COMPAT_NDX,rnames.compat,FROM_RULES);
|
||||
rnames.compat= NULL;
|
||||
}
|
||||
if (rnames.geometry) {
|
||||
trySetString(GEOMETRY_NDX,rnames.geometry,FROM_RULES);
|
||||
rnames.geometry= NULL;
|
||||
}
|
||||
if (rnames.keymap) {
|
||||
trySetString(KEYMAP_NDX,rnames.keymap,FROM_RULES);
|
||||
rnames.keymap= NULL;
|
||||
}
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Primitive sanity check - filter out 'map names' (inside parenthesis) */
|
||||
/* that can confuse xkbcomp parser */
|
||||
Bool
|
||||
checkName(char *name, char* string)
|
||||
{
|
||||
char *i = name, *opar = NULL;
|
||||
Bool ret = True;
|
||||
|
||||
if(!name)
|
||||
return True;
|
||||
|
||||
while (*i){
|
||||
if (opar == NULL) {
|
||||
if (*i == '(')
|
||||
opar = i;
|
||||
} else {
|
||||
if ((*i == '(') || (*i == '|') || (*i == '+')) {
|
||||
ret = False;
|
||||
break;
|
||||
}
|
||||
if (*i == ')')
|
||||
opar = NULL;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (opar)
|
||||
ret = False;
|
||||
if (!ret) {
|
||||
char c;
|
||||
int n = 1;
|
||||
for(i = opar+1; *i && n; i++) {
|
||||
if (*i == '(') n++;
|
||||
if (*i == ')') n--;
|
||||
}
|
||||
if (*i) i++;
|
||||
c = *i;
|
||||
*i = '\0';
|
||||
ERR1("Illegal map name '%s' ", opar);
|
||||
*i = c;
|
||||
ERR2("in %s name '%s'\n", string, name);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Bool
|
||||
applyComponentNames(void)
|
||||
{
|
||||
if(!checkName(svValue[TYPES_NDX], "types"))
|
||||
return False;
|
||||
if(!checkName(svValue[COMPAT_NDX], "compat"))
|
||||
return False;
|
||||
if(!checkName(svValue[SYMBOLS_NDX], "symbols"))
|
||||
return False;
|
||||
if(!checkName(svValue[KEYCODES_NDX], "keycodes"))
|
||||
return False;
|
||||
if(!checkName(svValue[GEOMETRY_NDX], "geometry"))
|
||||
return False;
|
||||
if(!checkName(svValue[KEYMAP_NDX], "keymap"))
|
||||
return False;
|
||||
|
||||
if (dpy) {
|
||||
XkbComponentNamesRec cmdNames;
|
||||
cmdNames.types= svValue[TYPES_NDX];
|
||||
cmdNames.compat= svValue[COMPAT_NDX];
|
||||
cmdNames.symbols= svValue[SYMBOLS_NDX];
|
||||
cmdNames.keycodes= svValue[KEYCODES_NDX];
|
||||
cmdNames.geometry= svValue[GEOMETRY_NDX];
|
||||
cmdNames.keymap= svValue[KEYMAP_NDX];
|
||||
xkb= XkbGetKeyboardByName(dpy,XkbUseCoreKbd,&cmdNames,
|
||||
XkbGBN_AllComponentsMask,
|
||||
XkbGBN_AllComponentsMask&(~XkbGBN_GeometryMask),
|
||||
True);
|
||||
if (!xkb) {
|
||||
ERR("Error loading new keyboard description\n");
|
||||
return False;
|
||||
}
|
||||
if (svValue[RULES_NDX] && (rdefs.model || rdefs.layout)) {
|
||||
if (!XkbRF_SetNamesProp(dpy,svValue[RULES_NDX],&rdefs)) {
|
||||
MSG("Error updating the XKB names property\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc,char **argv)
|
||||
{
|
||||
initializePath();
|
||||
if (!getDisplay())
|
||||
exit(-1);
|
||||
trySetString(LAYOUT_NDX,argv[1],FROM_CMD_LINE);
|
||||
svValue[LOCALE_NDX]= setlocale(LC_ALL,svValue[LOCALE_NDX]);
|
||||
svSrc[LOCALE_NDX]= FROM_IMENGINE;
|
||||
|
||||
if (dpy)
|
||||
getIMEngineValues();
|
||||
if (!applyRules())
|
||||
exit(-4);
|
||||
if (!applyComponentNames())
|
||||
exit(-5);
|
||||
if (dpy)
|
||||
XCloseDisplay(dpy);
|
||||
exit(0);
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __STRINGTOK_H__
|
||||
#define __STRINGTOK_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
template <typename Container>
|
||||
void
|
||||
stringtok (Container &container, std::string const &in,
|
||||
const char * const delimiters = " \t\n")
|
||||
{
|
||||
const std::string::size_type len = in.length();
|
||||
std::string::size_type i = 0;
|
||||
|
||||
while ( i < len )
|
||||
{
|
||||
// eat leading whitespace
|
||||
i = in.find_first_not_of (delimiters, i);
|
||||
if (i == std::string::npos)
|
||||
return; // nothing left but white space
|
||||
|
||||
// find the end of the token
|
||||
std::string::size_type j = in.find_first_of (delimiters, i);
|
||||
|
||||
// push token
|
||||
if (j == std::string::npos) {
|
||||
container.push_back (in.substr(i));
|
||||
return;
|
||||
} else
|
||||
container.push_back (in.substr(i, j-i));
|
||||
|
||||
// set up for next loop
|
||||
i = j + 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1,577 +0,0 @@
|
|||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <list>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/XKBlib.h>
|
||||
#include <X11/extensions/XKM.h>
|
||||
#include <X11/extensions/XKBfile.h>
|
||||
#include "xkbmap.h"
|
||||
#include "stringtok.h"
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#ifdef MAXPATHLEN
|
||||
#define PATH_MAX MAXPATHLEN
|
||||
#else
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef DFLT_XKB_CONFIG_ROOT
|
||||
#define DFLT_XKB_CONFIG_ROOT "/usr/X11R6/lib/X11/xkb"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_RULES_FILE
|
||||
#define DFLT_XKB_RULES_FILE "xfree86"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_LAYOUT
|
||||
#define DFLT_XKB_LAYOUT "us"
|
||||
#endif
|
||||
#ifndef DFLT_XKB_MODEL
|
||||
#define DFLT_XKB_MODEL "pc101"
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
Xkbmap::Xkbmap(void) : defaultlayout("us"), unknownsymbols("(unknown")
|
||||
{
|
||||
memset( &rdefs, 0 , sizeof(XkbRF_VarDefsRec));
|
||||
for (int i=0; i < NUM_STRING_VALS; i++) {
|
||||
svSrc[i] = FROM_SERVER;
|
||||
svValue[i] = NULL;
|
||||
}
|
||||
inclPath.push_back(string("."));
|
||||
inclPath.push_back(string(DFLT_XKB_CONFIG_ROOT));
|
||||
}
|
||||
|
||||
Xkbmap::~Xkbmap(void)
|
||||
{
|
||||
clearValues();
|
||||
if (rdefs.options != NULL) {
|
||||
free(rdefs.options);
|
||||
}
|
||||
}
|
||||
|
||||
void Xkbmap::clearValues(void)
|
||||
{
|
||||
for (int i = RULES_NDX; i < NUM_STRING_VALS; i++) {
|
||||
svSrc[i] = FROM_SERVER;
|
||||
|
||||
if (svValue[i] != NULL) {
|
||||
free(svValue[i]);
|
||||
svValue[i]= NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
void Xkbmap::trySetString(valueIndices which, const char *newVal, svSources src)
|
||||
{
|
||||
if (svValue[which] != NULL) {
|
||||
if (svSrc[which]>=src) {
|
||||
return;
|
||||
} else {
|
||||
free(svValue[which]);
|
||||
svValue[which]= NULL;
|
||||
}
|
||||
}
|
||||
|
||||
svSrc[which]= src;
|
||||
svValue[which]= strdup(newVal);
|
||||
return;
|
||||
}
|
||||
|
||||
Bool Xkbmap::getDisplay(void)
|
||||
{
|
||||
int major,minor,why;
|
||||
|
||||
major= XkbMajorVersion;
|
||||
minor= XkbMinorVersion;
|
||||
dpy= XkbOpenDisplay(svValue[DISPLAY_NDX],NULL,NULL,&major,&minor,&why);
|
||||
|
||||
if (!dpy) {
|
||||
if (svValue[DISPLAY_NDX] == NULL) {
|
||||
svValue[DISPLAY_NDX]= strdup(getenv("DISPLAY"));
|
||||
}
|
||||
if (svValue[DISPLAY_NDX] == NULL) {
|
||||
svValue[DISPLAY_NDX]= strdup("default display");
|
||||
}
|
||||
switch (why) {
|
||||
case XkbOD_BadLibraryVersion:
|
||||
cerr << "scim_kmfl_server was compiled with XKB version " <<
|
||||
XkbMajorVersion << "." << setfill('0') << setw(2) << XkbMinorVersion << endl;
|
||||
cerr << "Xlib supports incompatible version " <<
|
||||
major << "." << setfill('0') << setw(2) << minor << endl;
|
||||
break;
|
||||
case XkbOD_ConnectionRefused:
|
||||
cerr << "Cannot open display " << svValue[DISPLAY_NDX] << endl;
|
||||
break;
|
||||
case XkbOD_NonXkbServer:
|
||||
cerr << "XKB extension not present on " << svValue[DISPLAY_NDX] << endl;
|
||||
break;
|
||||
case XkbOD_BadServerVersion:
|
||||
cerr << "scim_kmfl_server was compiled with XKB version " <<
|
||||
XkbMajorVersion << "." << setfill('0') << setw(2) << XkbMinorVersion << endl;
|
||||
cerr << "Server %s uses incompatible version " << svValue[DISPLAY_NDX]
|
||||
<< major << "." << setfill('0') << setw(2) << minor << endl;
|
||||
break;
|
||||
default:
|
||||
cerr << "Unknown error " << why << " from XkbOpenDisplay" << endl;
|
||||
break;
|
||||
}
|
||||
return False;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
Bool Xkbmap::getServerValues(void)
|
||||
{
|
||||
XkbRF_VarDefsRec vd;
|
||||
char * tmp= NULL;
|
||||
|
||||
if (!XkbRF_GetNamesProp(dpy,&tmp,&vd) || !tmp) {
|
||||
trySetString(RULES_NDX,DFLT_XKB_RULES_FILE,FROM_SERVER);
|
||||
trySetString(MODEL_NDX,DFLT_XKB_MODEL,FROM_SERVER);
|
||||
trySetString(LAYOUT_NDX,DFLT_XKB_LAYOUT,FROM_SERVER);
|
||||
} else {
|
||||
trySetString(RULES_NDX,tmp,FROM_SERVER);
|
||||
|
||||
XFree(tmp);
|
||||
|
||||
if (vd.model) {
|
||||
trySetString(MODEL_NDX,vd.model,FROM_SERVER);
|
||||
XFree(vd.model);
|
||||
}
|
||||
if (vd.layout) {
|
||||
trySetString(LAYOUT_NDX,vd.layout,FROM_SERVER);
|
||||
XFree(vd.layout);
|
||||
}
|
||||
if (vd.variant) {
|
||||
trySetString(VARIANT_NDX,vd.variant,FROM_SERVER);
|
||||
XFree(vd.variant);
|
||||
}
|
||||
if (vd.options) {
|
||||
addStringToOptions(vd.options);
|
||||
XFree(vd.options);
|
||||
}
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
void Xkbmap::addStringToOptions(char *opt_str)
|
||||
{
|
||||
list<string> optionlist;
|
||||
|
||||
stringtok (optionlist, opt_str, ",");
|
||||
for (list<string>::const_iterator i = optionlist.begin();
|
||||
i != optionlist.end(); i++) {
|
||||
options.push_back(*i);
|
||||
}
|
||||
}
|
||||
|
||||
char * Xkbmap::stringFromOptions(char *orig)
|
||||
{
|
||||
string newoptions;
|
||||
if (orig)
|
||||
{
|
||||
newoptions=orig;
|
||||
}
|
||||
for (vector<string>::iterator i = options.begin(); i < options.end(); i++) {
|
||||
if (newoptions.length() > 0) {
|
||||
newoptions+=",";
|
||||
}
|
||||
newoptions+= *i;
|
||||
}
|
||||
if (orig) {
|
||||
orig= (char*)realloc(orig, newoptions.length() + 1);
|
||||
|
||||
if (orig)
|
||||
strcpy(orig, newoptions.c_str());
|
||||
} else {
|
||||
orig=strdup(newoptions.c_str());
|
||||
}
|
||||
return orig;
|
||||
}
|
||||
|
||||
Bool Xkbmap::applyRules(void)
|
||||
{
|
||||
char * rfName;
|
||||
XkbRF_RulesPtr rules;
|
||||
XkbComponentNamesRec rnames;
|
||||
|
||||
rules=NULL;
|
||||
|
||||
if (svSrc[MODEL_NDX] != FROM_SERVER ||svSrc[LAYOUT_NDX] != FROM_SERVER ||svSrc[VARIANT_NDX] != FROM_SERVER || !options.empty()) {
|
||||
|
||||
if(svSrc[VARIANT_NDX] < svSrc[LAYOUT_NDX]) {
|
||||
if (svValue[VARIANT_NDX] != NULL) {
|
||||
free(svValue[VARIANT_NDX]);
|
||||
svValue[VARIANT_NDX] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
rdefs.model= svValue[MODEL_NDX];
|
||||
rdefs.layout= svValue[LAYOUT_NDX];
|
||||
rdefs.variant= svValue[VARIANT_NDX];
|
||||
if (!options.empty()) {
|
||||
rdefs.options=stringFromOptions(rdefs.options);
|
||||
}
|
||||
|
||||
if (svSrc[RULES_NDX]) {
|
||||
rfName= svValue[RULES_NDX];
|
||||
} else {
|
||||
rfName= DFLT_XKB_RULES_FILE;
|
||||
}
|
||||
|
||||
if (rfName[0]=='/') {
|
||||
rules= XkbRF_Load(rfName,svValue[LOCALE_NDX],True,True);
|
||||
} else {
|
||||
|
||||
for (vector<string>::const_iterator i=inclPath.begin(); i< inclPath.end() ;i++) {
|
||||
char buf[PATH_MAX];
|
||||
if (((*i).length()+strlen(rfName)+8)>PATH_MAX) {
|
||||
continue;
|
||||
}
|
||||
sprintf(buf,"%s/rules/%s",(*i).c_str(),svValue[RULES_NDX]);
|
||||
rules= XkbRF_Load(buf,svValue[LOCALE_NDX],True,True);
|
||||
if (rules) {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (!rules) {
|
||||
cerr << "Couldn't find rules file (" << svValue[RULES_NDX] << ")" << endl;
|
||||
return False;
|
||||
}
|
||||
|
||||
XkbRF_GetComponents(rules,&rdefs,&rnames);
|
||||
|
||||
if (rnames.keycodes) {
|
||||
trySetString(KEYCODES_NDX,rnames.keycodes,FROM_RULES);
|
||||
XFree(rnames.keycodes);
|
||||
rnames.keycodes= NULL;
|
||||
}
|
||||
if (rnames.symbols) {
|
||||
trySetString(SYMBOLS_NDX,rnames.symbols,FROM_RULES);
|
||||
XFree(rnames.symbols);
|
||||
rnames.symbols= NULL;
|
||||
}
|
||||
if (rnames.types) {
|
||||
trySetString(TYPES_NDX,rnames.types,FROM_RULES);
|
||||
XFree(rnames.types);
|
||||
rnames.types= NULL;
|
||||
}
|
||||
if (rnames.compat) {
|
||||
trySetString(COMPAT_NDX,rnames.compat,FROM_RULES);
|
||||
XFree(rnames.compat);
|
||||
rnames.compat= NULL;
|
||||
}
|
||||
if (rnames.geometry) {
|
||||
trySetString(GEOMETRY_NDX,rnames.geometry,FROM_RULES);
|
||||
XFree(rnames.geometry);
|
||||
rnames.geometry= NULL;
|
||||
}
|
||||
if (rnames.keymap) {
|
||||
trySetString(KEYMAP_NDX,rnames.keymap,FROM_RULES);
|
||||
XFree(rnames.keymap);
|
||||
rnames.keymap= NULL;
|
||||
}
|
||||
|
||||
XkbRF_Free(rules,True);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Primitive sanity check - filter out 'map names' (inside parenthesis) */
|
||||
/* that can confuse xkbcomp parser */
|
||||
Bool Xkbmap::checkName(char *name, const char* str)
|
||||
{
|
||||
char *i = name, *opar = NULL;
|
||||
Bool ret = True;
|
||||
|
||||
if(!name)
|
||||
return True;
|
||||
|
||||
while (*i){
|
||||
if (opar == NULL) {
|
||||
if (*i == '(') {
|
||||
opar = i;
|
||||
}
|
||||
} else {
|
||||
if ((*i == '(') || (*i == '|') || (*i == '+')) {
|
||||
ret = False;
|
||||
break;
|
||||
}
|
||||
if (*i == ')') {
|
||||
opar = NULL;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (opar) {
|
||||
ret = False;
|
||||
}
|
||||
if (!ret) {
|
||||
char c;
|
||||
int n = 1;
|
||||
for(i = opar+1; *i && n; i++) {
|
||||
if (*i == '(') {
|
||||
n++;
|
||||
}
|
||||
if (*i == ')') {
|
||||
n--;
|
||||
}
|
||||
}
|
||||
if (*i) {
|
||||
i++;
|
||||
}
|
||||
c = *i;
|
||||
*i = '\0';
|
||||
cerr << "Illegal map name '" << opar << "' ";
|
||||
*i = c;
|
||||
cerr << "in " << str << "name '" << name << "'" << endl;;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Bool Xkbmap::applyComponentNames(void)
|
||||
{
|
||||
XkbDescPtr xkb;
|
||||
|
||||
if(!checkName(svValue[TYPES_NDX], "types")) {
|
||||
return False;
|
||||
}
|
||||
if(!checkName(svValue[COMPAT_NDX], "compat")) {
|
||||
return False;
|
||||
}
|
||||
if(!checkName(svValue[SYMBOLS_NDX], "symbols")) {
|
||||
return False;
|
||||
}
|
||||
if(!checkName(svValue[KEYCODES_NDX], "keycodes")) {
|
||||
return False;
|
||||
}
|
||||
if(!checkName(svValue[GEOMETRY_NDX], "geometry")) {
|
||||
return False;
|
||||
}
|
||||
if(!checkName(svValue[KEYMAP_NDX], "keymap")) {
|
||||
return False;
|
||||
}
|
||||
|
||||
if (dpy) {
|
||||
XkbComponentNamesRec cmdNames;
|
||||
cmdNames.types= svValue[TYPES_NDX];
|
||||
cmdNames.compat= svValue[COMPAT_NDX];
|
||||
cmdNames.symbols= svValue[SYMBOLS_NDX];
|
||||
cmdNames.keycodes= svValue[KEYCODES_NDX];
|
||||
cmdNames.geometry= svValue[GEOMETRY_NDX];
|
||||
cmdNames.keymap= svValue[KEYMAP_NDX];
|
||||
xkb= XkbGetKeyboardByName(dpy,XkbUseCoreKbd,&cmdNames,
|
||||
XkbGBN_AllComponentsMask&(~XkbGBN_GeometryMask),
|
||||
XkbGBN_AllComponentsMask&(~XkbGBN_GeometryMask),
|
||||
True);
|
||||
if (!xkb) {
|
||||
cerr << "Error loading new keyboard description" << endl;
|
||||
return False;
|
||||
}
|
||||
|
||||
if (svValue[RULES_NDX] != NULL && (rdefs.model != NULL || rdefs.layout!= NULL)) {
|
||||
if (!XkbRF_SetNamesProp(dpy,svValue[RULES_NDX],&rdefs)) {
|
||||
cerr <<"Error updating the XKB names property" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
XkbFreeNames(xkb, XkbAllNamesMask,True);
|
||||
XkbFreeKeyboard(xkb,XkbAllControlsMask,True);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
string Xkbmap::getCurrentLayout(void)
|
||||
{
|
||||
Atom rules_atom;
|
||||
Atom actual_type;
|
||||
int fmt;
|
||||
int revert_to_return;
|
||||
Window focuswindow;
|
||||
unsigned long nitems;
|
||||
unsigned long bytes_after;
|
||||
char *data;
|
||||
char *out;
|
||||
Status rtrn;
|
||||
string currentlayout(defaultlayout);
|
||||
|
||||
if (!getDisplay()) {
|
||||
return defaultlayout;
|
||||
}
|
||||
|
||||
rules_atom= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,True);
|
||||
|
||||
if (rules_atom==None) /* property cannot exist */
|
||||
return defaultlayout;
|
||||
XGetInputFocus(dpy, &focuswindow, &revert_to_return);
|
||||
|
||||
|
||||
rtrn= XGetWindowProperty(dpy,focuswindow,rules_atom,
|
||||
0L,_XKB_RF_NAMES_PROP_MAXLEN,False,
|
||||
XA_STRING,&actual_type,
|
||||
&fmt,&nitems,&bytes_after,
|
||||
(unsigned char **)&data);
|
||||
|
||||
if (rtrn!=Success)
|
||||
{
|
||||
if (data) {
|
||||
XFree(data);
|
||||
}
|
||||
return defaultlayout;
|
||||
}
|
||||
|
||||
if ((bytes_after>0) || (actual_type!=XA_STRING) || (fmt!=8)) {
|
||||
if (data) {
|
||||
XFree(data);
|
||||
}
|
||||
return defaultlayout;
|
||||
}
|
||||
|
||||
// skip over file
|
||||
out= data;
|
||||
out+=strlen(out)+1;
|
||||
|
||||
// skip over model
|
||||
if ((unsigned long)(out-data)<nitems) {
|
||||
out+=strlen(out)+1;
|
||||
}
|
||||
|
||||
// get layout
|
||||
if ((unsigned long)(out-data)<nitems && *out) {
|
||||
currentlayout = out;
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
|
||||
return currentlayout;
|
||||
}
|
||||
|
||||
string Xkbmap::getCurrentSymbols(void)
|
||||
{
|
||||
XkbDescPtr xkb;
|
||||
char *sName= NULL;
|
||||
Atom sAtom;
|
||||
string sreturn(unknownsymbols);
|
||||
|
||||
if (!getDisplay()) {
|
||||
return unknownsymbols;
|
||||
}
|
||||
xkb= XkbGetMap(dpy,XkbAllMapComponentsMask,XkbUseCoreKbd);
|
||||
|
||||
if (xkb==NULL)
|
||||
{
|
||||
return unknownsymbols;
|
||||
}
|
||||
|
||||
if (XkbGetNames(dpy,XkbSymbolsNameMask,xkb)!=Success)
|
||||
{
|
||||
XkbFreeClientMap(xkb, 0, 1);
|
||||
return unknownsymbols;
|
||||
}
|
||||
|
||||
if (xkb->names!=NULL)
|
||||
sAtom= xkb->names->symbols;
|
||||
else
|
||||
sAtom= None;
|
||||
|
||||
if (sAtom!=None)
|
||||
sName= XkbAtomGetString(dpy,sAtom);
|
||||
|
||||
if (xkb->names!=NULL)
|
||||
XkbFreeNames(xkb,XkbSymbolsNameMask,True);
|
||||
|
||||
if (sName==NULL)
|
||||
{
|
||||
sreturn= unknownsymbols;
|
||||
} else {
|
||||
sreturn=sName;
|
||||
free(sName);
|
||||
}
|
||||
|
||||
XkbFreeKeyboard(xkb,XkbAllControlsMask,True);
|
||||
return sreturn;
|
||||
}
|
||||
|
||||
void Xkbmap::setSymbols(const string & symbols)
|
||||
{
|
||||
if (!getDisplay()) {
|
||||
return;
|
||||
}
|
||||
clearValues();
|
||||
options.clear();
|
||||
trySetString(LAYOUT_NDX, symbols.c_str(), FROM_CMD_LINE);
|
||||
svValue[LOCALE_NDX]= strdup(setlocale(LC_ALL,svValue[LOCALE_NDX]));
|
||||
svSrc[LOCALE_NDX]= FROM_SERVER;
|
||||
|
||||
if (dpy) {
|
||||
getServerValues();
|
||||
}
|
||||
|
||||
if (!applyRules()) {
|
||||
return;
|
||||
}
|
||||
|
||||
trySetString(SYMBOLS_NDX,symbols.c_str(),FROM_CMD_LINE);
|
||||
|
||||
if (!applyComponentNames()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dpy) {
|
||||
XCloseDisplay(dpy);
|
||||
}
|
||||
}
|
||||
|
||||
void Xkbmap::setLayout(const string & layout)
|
||||
{
|
||||
if (!getDisplay()) {
|
||||
return;
|
||||
}
|
||||
clearValues();
|
||||
options.clear();
|
||||
trySetString(LAYOUT_NDX, layout.c_str(), FROM_CMD_LINE);
|
||||
svValue[LOCALE_NDX]= strdup(setlocale(LC_ALL,svValue[LOCALE_NDX]));
|
||||
svSrc[LOCALE_NDX]= FROM_SERVER;
|
||||
|
||||
if (dpy) {
|
||||
getServerValues();
|
||||
}
|
||||
|
||||
if (!applyRules()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!applyComponentNames()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dpy) {
|
||||
XCloseDisplay(dpy);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
/*
|
||||
* KMFL Input Method for SCIM (Smart Common Input Method)
|
||||
*
|
||||
* Copyright (C) 2005 SIL International
|
||||
*
|
||||
* This library 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 library 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 library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined (__XKBMAP_H)
|
||||
#define __XKBMAP_H
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xos.h>
|
||||
#include <X11/XKBlib.h>
|
||||
#include <X11/extensions/XKBfile.h>
|
||||
#include <X11/extensions/XKBconfig.h>
|
||||
#include <X11/extensions/XKBrules.h>
|
||||
|
||||
|
||||
class Xkbmap
|
||||
{
|
||||
private:
|
||||
Display * dpy;
|
||||
|
||||
enum svSources {
|
||||
FROM_SERVER = 0,
|
||||
FROM_RULES = 1,
|
||||
FROM_CMD_LINE = 2,
|
||||
};
|
||||
|
||||
enum valueIndices {
|
||||
RULES_NDX = 0,
|
||||
DISPLAY_NDX = 1,
|
||||
LOCALE_NDX = 2,
|
||||
MODEL_NDX = 3,
|
||||
LAYOUT_NDX = 4,
|
||||
VARIANT_NDX = 5,
|
||||
KEYCODES_NDX = 6,
|
||||
TYPES_NDX = 7,
|
||||
COMPAT_NDX = 8,
|
||||
SYMBOLS_NDX = 9,
|
||||
GEOMETRY_NDX = 10,
|
||||
KEYMAP_NDX = 11,
|
||||
NUM_STRING_VALS = 12,
|
||||
};
|
||||
const std::string defaultlayout;
|
||||
const std::string unknownsymbols;
|
||||
svSources svSrc[NUM_STRING_VALS];
|
||||
char * svValue[NUM_STRING_VALS];
|
||||
|
||||
XkbRF_VarDefsRec rdefs;
|
||||
|
||||
std::vector < std::string > options;
|
||||
std::vector < std::string > inclPath;
|
||||
|
||||
|
||||
void clearValues(void);
|
||||
void trySetString(valueIndices which, const char *newVal, svSources src);
|
||||
Bool getDisplay(void);
|
||||
Bool getServerValues(void);
|
||||
void addStringToOptions(char *opt_str);
|
||||
char * stringFromOptions(char *orig);
|
||||
Bool applyRules(void);
|
||||
Bool checkName(char *name, const char* string);
|
||||
Bool applyComponentNames(void);
|
||||
|
||||
public:
|
||||
Xkbmap();
|
||||
~Xkbmap();
|
||||
std::string getCurrentLayout(void);
|
||||
void setLayout(const std::string & layout);
|
||||
std::string getCurrentSymbols(void);
|
||||
void setSymbols(const std::string & symbols);
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
vi:ts=4:nowrap:ai:expandtab
|
||||
*/
|
||||
Loading…
Add table
Reference in a new issue