summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:26:02 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:26:02 +0000
commitbd2ea3c166a0815f02187a84c7cbf7f7c4b117a3 (patch)
tree88008b1681b6ac25c35296532c34ba72f2f47d2a
downloadyakuake-bd2ea3c1.tar.gz
yakuake-bd2ea3c1.zip
Added KDE3 version of Yakuake
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/yakuake@1097626 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--AUTHORS2
-rw-r--r--COPYING340
-rw-r--r--COPYING-DOCS397
-rw-r--r--ChangeLog145
-rw-r--r--INSTALL167
-rw-r--r--Makefile.am5
-rw-r--r--Makefile.am.in4
-rw-r--r--README13
-rw-r--r--TODO4
-rw-r--r--VERSION1
-rw-r--r--acinclude.m411945
-rw-r--r--aclocal.m4875
-rw-r--r--config.h.in247
-rw-r--r--configure.files3
-rw-r--r--configure.in163
-rw-r--r--configure.in.in11
-rw-r--r--po/Makefile.am1
-rw-r--r--po/de/Makefile.am3
-rw-r--r--po/de/yakuake.po578
-rw-r--r--po/el/Makefile.am3
-rw-r--r--po/el/yakuake.po535
-rw-r--r--po/es/Makefile.am3
-rw-r--r--po/es/yakuake.po537
-rw-r--r--po/et/Makefile.am3
-rw-r--r--po/et/yakuake.po529
-rw-r--r--po/fr/Makefile.am3
-rw-r--r--po/fr/yakuake.po542
-rw-r--r--po/hu/Makefile.am3
-rw-r--r--po/hu/yakuake.po522
-rw-r--r--po/it/Makefile.am3
-rw-r--r--po/it/yakuake.po532
-rw-r--r--po/ja/Makefile.am3
-rw-r--r--po/ja/yakuake.po512
-rw-r--r--po/nl/Makefile.am3
-rw-r--r--po/nl/yakuake.po536
-rw-r--r--po/pl/Makefile.am3
-rw-r--r--po/pl/yakuake.po529
-rw-r--r--po/pt/Makefile.am3
-rw-r--r--po/pt/yakuake.po531
-rw-r--r--po/pt_BR/Makefile.am3
-rw-r--r--po/pt_BR/yakuake.po533
-rw-r--r--po/sv/Makefile.am3
-rw-r--r--po/sv/yakuake.po533
-rw-r--r--po/tr/Makefile.am3
-rw-r--r--po/tr/yakuake.po528
-rw-r--r--stamp-h.in0
-rw-r--r--subdirs2
-rw-r--r--yakuake/.krazy1
-rw-r--r--yakuake/Makefile.am11
-rw-r--r--yakuake/NEWS20
-rw-r--r--yakuake/configure.files2
-rw-r--r--yakuake/configure.in.in6
-rw-r--r--yakuake/skins/Makefile.am3
-rw-r--r--yakuake/skins/README40
-rw-r--r--yakuake/skins/default/Makefile.am5
-rw-r--r--yakuake/skins/default/icon.pngbin0 -> 1873 bytes
-rw-r--r--yakuake/skins/default/tabs.skin36
-rw-r--r--yakuake/skins/default/tabs/Makefile.am6
-rw-r--r--yakuake/skins/default/tabs/back_image.pngbin0 -> 180 bytes
-rw-r--r--yakuake/skins/default/tabs/left_corner.pngbin0 -> 229 bytes
-rw-r--r--yakuake/skins/default/tabs/minus_down.pngbin0 -> 243 bytes
-rw-r--r--yakuake/skins/default/tabs/minus_over.pngbin0 -> 245 bytes
-rw-r--r--yakuake/skins/default/tabs/minus_up.pngbin0 -> 243 bytes
-rw-r--r--yakuake/skins/default/tabs/plus.pngbin0 -> 293 bytes
-rw-r--r--yakuake/skins/default/tabs/plus_down.pngbin0 -> 253 bytes
-rw-r--r--yakuake/skins/default/tabs/plus_over.pngbin0 -> 254 bytes
-rw-r--r--yakuake/skins/default/tabs/plus_up.pngbin0 -> 253 bytes
-rw-r--r--yakuake/skins/default/tabs/right_corner.pngbin0 -> 227 bytes
-rw-r--r--yakuake/skins/default/tabs/selected_back.pngbin0 -> 222 bytes
-rw-r--r--yakuake/skins/default/tabs/selected_left.pngbin0 -> 218 bytes
-rw-r--r--yakuake/skins/default/tabs/selected_right.pngbin0 -> 218 bytes
-rw-r--r--yakuake/skins/default/tabs/separator.pngbin0 -> 234 bytes
-rw-r--r--yakuake/skins/default/tabs/unselected_back.pngbin0 -> 191 bytes
-rw-r--r--yakuake/skins/default/title.skin45
-rw-r--r--yakuake/skins/default/title/Makefile.am6
-rw-r--r--yakuake/skins/default/title/back.pngbin0 -> 254 bytes
-rw-r--r--yakuake/skins/default/title/config_down.pngbin0 -> 626 bytes
-rw-r--r--yakuake/skins/default/title/config_over.pngbin0 -> 634 bytes
-rw-r--r--yakuake/skins/default/title/config_up.pngbin0 -> 638 bytes
-rw-r--r--yakuake/skins/default/title/focus_down.pngbin0 -> 638 bytes
-rw-r--r--yakuake/skins/default/title/focus_over.pngbin0 -> 670 bytes
-rw-r--r--yakuake/skins/default/title/focus_up.pngbin0 -> 663 bytes
-rw-r--r--yakuake/skins/default/title/left.pngbin0 -> 1030 bytes
-rw-r--r--yakuake/skins/default/title/quit_down.pngbin0 -> 698 bytes
-rw-r--r--yakuake/skins/default/title/quit_over.pngbin0 -> 706 bytes
-rw-r--r--yakuake/skins/default/title/quit_up.pngbin0 -> 717 bytes
-rw-r--r--yakuake/skins/default/title/right.pngbin0 -> 324 bytes
-rw-r--r--yakuake/skins/plastik_dark/Makefile.am5
-rw-r--r--yakuake/skins/plastik_dark/icon.pngbin0 -> 1957 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs.skin36
-rw-r--r--yakuake/skins/plastik_dark/tabs/Makefile.am6
-rw-r--r--yakuake/skins/plastik_dark/tabs/back_image.pngbin0 -> 110 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/left_corner.pngbin0 -> 120 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/minus_down.pngbin0 -> 486 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/minus_over.pngbin0 -> 494 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/minus_up.pngbin0 -> 504 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/plus_down.pngbin0 -> 867 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/plus_over.pngbin0 -> 867 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/plus_up.pngbin0 -> 874 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/right_corner.pngbin0 -> 776 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/selected_back.pngbin0 -> 114 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/selected_left.pngbin0 -> 122 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/selected_right.pngbin0 -> 137 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/separator.pngbin0 -> 116 bytes
-rw-r--r--yakuake/skins/plastik_dark/tabs/unselected_back.pngbin0 -> 117 bytes
-rw-r--r--yakuake/skins/plastik_dark/title.skin45
-rw-r--r--yakuake/skins/plastik_dark/title/Makefile.am6
-rw-r--r--yakuake/skins/plastik_dark/title/back.pngbin0 -> 99 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/config_down.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/config_over.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/config_up.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/focus_down.pngbin0 -> 540 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/focus_over.pngbin0 -> 540 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/focus_up.pngbin0 -> 677 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/left.pngbin0 -> 2798 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/quit_down.pngbin0 -> 671 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/quit_over.pngbin0 -> 671 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/quit_up.pngbin0 -> 545 bytes
-rw-r--r--yakuake/skins/plastik_dark/title/right.pngbin0 -> 111 bytes
-rw-r--r--yakuake/skins/plastik_light/Makefile.am5
-rw-r--r--yakuake/skins/plastik_light/icon.pngbin0 -> 1628 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs.skin36
-rw-r--r--yakuake/skins/plastik_light/tabs/Makefile.am6
-rw-r--r--yakuake/skins/plastik_light/tabs/back_image.pngbin0 -> 110 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/left_corner.pngbin0 -> 120 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/minus_down.pngbin0 -> 506 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/minus_over.pngbin0 -> 486 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/minus_up.pngbin0 -> 501 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/plus_down.pngbin0 -> 867 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/plus_over.pngbin0 -> 867 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/plus_up.pngbin0 -> 874 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/right_corner.pngbin0 -> 776 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/selected_back.pngbin0 -> 92 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/selected_left.pngbin0 -> 110 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/selected_right.pngbin0 -> 122 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/separator.pngbin0 -> 116 bytes
-rw-r--r--yakuake/skins/plastik_light/tabs/unselected_back.pngbin0 -> 117 bytes
-rw-r--r--yakuake/skins/plastik_light/title.skin45
-rw-r--r--yakuake/skins/plastik_light/title/Makefile.am6
-rw-r--r--yakuake/skins/plastik_light/title/back.pngbin0 -> 99 bytes
-rw-r--r--yakuake/skins/plastik_light/title/config_down.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_light/title/config_over.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_light/title/config_up.pngbin0 -> 742 bytes
-rw-r--r--yakuake/skins/plastik_light/title/focus_down.pngbin0 -> 540 bytes
-rw-r--r--yakuake/skins/plastik_light/title/focus_over.pngbin0 -> 540 bytes
-rw-r--r--yakuake/skins/plastik_light/title/focus_up.pngbin0 -> 677 bytes
-rw-r--r--yakuake/skins/plastik_light/title/left.pngbin0 -> 2798 bytes
-rw-r--r--yakuake/skins/plastik_light/title/quit_down.pngbin0 -> 671 bytes
-rw-r--r--yakuake/skins/plastik_light/title/quit_over.pngbin0 -> 671 bytes
-rw-r--r--yakuake/skins/plastik_light/title/quit_up.pngbin0 -> 545 bytes
-rw-r--r--yakuake/skins/plastik_light/title/right.pngbin0 -> 111 bytes
-rw-r--r--yakuake/src/Makefile.am28
-rw-r--r--yakuake/src/dcop_interface.h82
-rw-r--r--yakuake/src/first_run_dialog.cpp49
-rw-r--r--yakuake/src/first_run_dialog.h42
-rw-r--r--yakuake/src/first_run_dialog_ui.ui166
-rw-r--r--yakuake/src/general_settings.cpp96
-rw-r--r--yakuake/src/general_settings.h47
-rw-r--r--yakuake/src/general_settings_ui.ui546
-rw-r--r--yakuake/src/hi16-app-yakuake.pngbin0 -> 757 bytes
-rw-r--r--yakuake/src/hi32-app-yakuake.pngbin0 -> 1873 bytes
-rw-r--r--yakuake/src/image_button.cpp181
-rw-r--r--yakuake/src/image_button.h95
-rw-r--r--yakuake/src/main.cpp59
-rw-r--r--yakuake/src/main_window.cpp1339
-rw-r--r--yakuake/src/main_window.h267
-rw-r--r--yakuake/src/session.cpp422
-rw-r--r--yakuake/src/session.h107
-rw-r--r--yakuake/src/settings.kcfgc8
-rw-r--r--yakuake/src/skin_list_item.cpp115
-rw-r--r--yakuake/src/skin_list_item.h53
-rw-r--r--yakuake/src/skin_settings.cpp431
-rw-r--r--yakuake/src/skin_settings.h72
-rw-r--r--yakuake/src/skin_settings_ui.ui125
-rw-r--r--yakuake/src/tab_bar.cpp242
-rw-r--r--yakuake/src/tab_bar.h108
-rw-r--r--yakuake/src/tabbed_widget.cpp618
-rw-r--r--yakuake/src/tabbed_widget.h149
-rw-r--r--yakuake/src/terminal.cpp84
-rw-r--r--yakuake/src/terminal.h65
-rw-r--r--yakuake/src/terminal_focus_watcher.cpp32
-rw-r--r--yakuake/src/terminal_focus_watcher.h35
-rw-r--r--yakuake/src/terminal_splitter.cpp121
-rw-r--r--yakuake/src/terminal_splitter.h49
-rw-r--r--yakuake/src/title_bar.cpp192
-rw-r--r--yakuake/src/title_bar.h91
-rw-r--r--yakuake/src/translucent_widget.cpp44
-rw-r--r--yakuake/src/translucent_widget.h45
-rw-r--r--yakuake/src/yakuake.desktop34
-rw-r--r--yakuake/src/yakuake.kcfg95
190 files changed, 28555 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..5f1f6ab
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,2 @@
+Eike Hein <hein@kde.org>
+Francois Chazal (Inactive)
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..c13faf0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.
diff --git a/COPYING-DOCS b/COPYING-DOCS
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/COPYING-DOCS
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document 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.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation 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. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..1cf39f7
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,145 @@
+Changes in 2.8.1:
+* Added an option to control whether the Yakuake window keeps above other
+ windows.
+* Improved experience for non-KDE users by disabling KRootPixmap-based
+ pseudo-translucency for them. Gets rid of rendering errors with skins
+ that make use of the alpha channel. Replaced by configurable skin back-
+ ground color.
+* Fix leftover gap below the window at 100% height or in fullscreen mode.
+* Added option to automatically open the Yakuake window when the pointer
+ touches the screen edge it lives on.
+
+Changes in 2.8:
+- Changes since 2.8-beta1:
+* Made the new behavior of the Open/Retract action focussing an already
+ open Yakuake window optional.
+* The Xinerama screen setting is now updated when the window is moved to
+ a different screen using facilities outside of Yakuake itself, such as
+ the new shortcuts provided by Lubos Lunak's Xinerama Improvements patch-
+ set for KWin 3.5.x. The window size and position get updated to fit the
+ new bounding box accordingly.
+* Initial session tab label naming is now consistent with Konsole. Instead
+ of naively incrementing the shell number, the lowest available number is
+ used.
+* Swapped horizontal and vertical split actions for consistency with Kate.
+* Added slotSessionName() and slotSessionName(int session_id) DCOP Calls.
+* Added sessionIdList() and terminalIdList(int session_id) DCOP calls.
+* Naming consistency improvements in the DCOP interface.
+* Added more What's This help in the config dialog.
+* Minor interface wording improvements.
+* Greatly expanded translation coverage.
+
+- Changes in 2.8-beta1:
+* Added a proper config dialog. Scale and position settings are previewed in
+ real-time as the controls are moved.
+* Added a Skins page to the config dialog, allowing to list, choose, install and
+ remove (given the necessary write permissions) skins. The skin format has been
+ slightly augmented to allow skins to ship a preview icon for the list. Skins can
+ be switched at runtime without a restart.
+* The Plastik skin by Daniel 'suslik' D. has been added to the base package.
+* Added support for splitting a session into multiple terminals. Horizontal and
+ vertical splits can be added and removed at will, as well as resized and
+ collapsed. To add a split at the active terminal's position, use the keyboard
+ shortcuts or the session tab context menu. To open a session preconfigred with
+ a certain split layout click and hold the New Session button on the tab bar,
+ then choose from the list, or set up keyboard shortcuts for the preconfigured
+ session types in the shortcut dialog.
+* The main menu has been redesigned to conform more to established KDE practices
+ in layout and naming. Several items have been added corresponding to new Yakuake
+ features.
+* Added a fullscreen mode.
+* Improved support for Xinerama multi-head setups.
+* Added a first-run dialog to allow changing the open/close shortcut before it
+ is needed. Note: First-time users of this Yakuake version will be greeted by
+ this dialog as well.
+* Added an About dialog.
+* The startup notification popup can now be disabled in the config dialog.
+* Activating the open/close shortcut will now bring the Yakuake window to the
+ foreground and focus it if it was already open but unfocussed, at popular
+ request.
+* Opening dialogs from Yakuake will no longer cause the window to retract.
+* Tabs can now be moved. Added corresponding keyboard shortcuts.
+* Tabs now have context menus containing several relevant actions, such as
+ moving and closing them.
+* Double-clicking the tab-bar will now open a new session, consistent with
+ Konsole and other KDE applications.
+* Renaming a tab using the in-line edit feature now requires a double-click on
+ the tab, consistent with established KDE behavior.
+* The in-line tab renaming control can now be cancelled with ESC.
+* Fixed the interaction model of the tab bar and the buttons to allow cancelling
+ activations by releasing the mouse button outside of them.
+* Added various new keyboard shortcuts corresponding to new Yakuake features and
+ improved consistency with Konsole in existing shortcuts (e.g. added the
+ alternate new session shortcut from Konsole).
+* Added keyboard shortcuts to switch to session 1 through 12.
+* Added keyboard shortcuts to adjust the width and height of the window.
+* Added an action and shortcut to paste the X11 selection buffer.
+* Added an action to quit Yakuake.
+* Made the quit warning with multiple open sessions behave consistently with
+ Konsole.
+* Greatly expanded DCOP interface. Added various new calls corresponding to new
+ Yakuake features. Made it easier to get information about the application's
+ state out of it, e.g. the title text of a session or sub-terminal. Fixed bugs
+ that caused related calls to reply with incorrect information.
+* Added What's This help and tooltips to interface elements.
+* Optimized the title bar to avoid unnecessary repaints.
+* Fixed crashes when using the slotRunCommandInSession DCOP call due to lack of
+ bounds-checking. Fixed a similar problem with slotRenameSession.
+* Bugs that caused the background updating of translucent parts of the Yakuake
+ window to stop have been fixed.
+* Adding a translucent session while the window is closed should no longer
+ result in a corrupted terminal background when opening the Yakuake window.
+* Yakuake will now fall back to the default skin on startup if the skin stored
+ in the settings cannot be found, rather than crash.
+* Fixed a crash when loading non-translucent button images from skins.
+* Bugs that caused the quick access options in the menu to come out of sync with
+ the actual settings have been fixed.
+* Fixed " - " postfix showing after the session title text when using skins
+ without their own postfix.
+* Fixed a crash when a terminal in a tab other than the currently selected tab
+ exits.
+* Ported preferences handling to KDE's KConfigXT framework. Aside from cleaner
+ code, this improves over the old preferences handling by avoiding unnecessary
+ disk activity (and thus spurious hard drive spin-ups on laptop computers and
+ other battery-bound devices).
+* Disabled startup notifications (i.e. KDE's bouncing cursor) for Yakuake.
+* Updated the installation colation of the .desktop menu file to conform to
+ modern XDG standards.
+
+
+Changes in 2.7.5:
+* Further translations have been added.
+* Yakuake no longer spawns login shells in new sessions.
+* A keyboard shortcut to rename the selected session has been added.
+* The default keyboard shortcuts and their names are now consistent with
+ Konsole.
+* A bug that led to the tab bar not updating after a slotSelectSession DCOP
+ call was issued has been fixed.
+* A bug that could lead to the slotRenameSession DCOP call failing to set a
+ session label after an older session had been closed has been fixed.
+* Upon attempting to set an all-whitespace session label, the label will now
+ fall back to its prior setting rather than a default label.
+* Yakuake will now display a warning before quitting the application with
+ multiple tabs open.
+
+
+Changes in 2.7.4:
+* A bug in the Makefiles that led to the configure script being run twice has
+ been fixed.
+* The source code is now localizable. First translations are included.
+* A bug that could result in a crash on quit has been fixed.
+* A bug that could prevent the first line in a new session from being used up to
+ the full width of the terminal has been fixed.
+* The COLORTERM environment variable is now being set in new sessions,
+ triggering the color detection of Midnight Commander.
+* The default session labels are now consistent with Konsole.
+* Whitespace at the beginning or end of session labels will now be trimmed.
+* Setting all-whitespace session labels is no longer possible.
+
+
+Changes in 2.7.3:
+* Inline renaming of tabs by double-clicking on the tab label
+* Processes can now interact with titlebar text
+* DCOP call slotToggleState to open/close Yakuake
+* DCOP call slotGetSelectedSession
+* DCOP call slotSetTitleText
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..02a4a07
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,167 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 4. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..2369f25
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,5 @@
+AUTOMAKE_OPTIONS = foreign 1.6.1
+
+include admin/deps.am
+include admin/Doxyfile.am
+SUBDIRS=$(TOPSUBDIRS)
diff --git a/Makefile.am.in b/Makefile.am.in
new file mode 100644
index 0000000..e46b27c
--- /dev/null
+++ b/Makefile.am.in
@@ -0,0 +1,4 @@
+AUTOMAKE_OPTIONS = foreign 1.6.1
+
+include admin/deps.am
+include admin/Doxyfile.am
diff --git a/README b/README
new file mode 100644
index 0000000..92a727c
--- /dev/null
+++ b/README
@@ -0,0 +1,13 @@
+Yakuake is a Quake-style terminal emulator based on KDE Konsole technology.
+
+It's a KDE Extragear application released under GPL v2.
+
+The current maintainer of Yakuake is Eike Hein <hein@kde.org>.
+
+
+Yakuake requires kdelibs and Konsole from KDE 3.4.0 or higher.
+
+
+The Yakuake website is located at: http://yakuake.kde.org/
+
+Report bugs and wishes at: http://bugs.kde.org/
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..1fa7c98
--- /dev/null
+++ b/TODO
@@ -0,0 +1,4 @@
+Planned for future releases:
+- Session management UI.
+- More flexible theming.
+- COMPOSITE support.
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..a3c5a92
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+yakuake version 2.8.1
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 0000000..6b26319
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,11945 @@
+## -*- autoconf -*-
+
+dnl This file is part of the KDE libraries/packages
+dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
+dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
+
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+
+dnl You should have received a copy of the GNU Library General Public License
+dnl along with this library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+dnl IMPORTANT NOTE:
+dnl Please do not modify this file unless you expect your modifications to be
+dnl carried into every other module in the repository.
+dnl
+dnl Single-module modifications are best placed in configure.in for kdelibs
+dnl and kdebase or configure.in.in if present.
+
+# KDE_PATH_X_DIRECT
+dnl Internal subroutine of AC_PATH_X.
+dnl Set ac_x_includes and/or ac_x_libraries.
+AC_DEFUN([KDE_PATH_X_DIRECT],
+[
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+if test "$ac_x_includes" = NO; then
+ # Guess where to find include files, by looking for this one X11 .h file.
+ test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
+
+ # First, try using that file with no special directory specified.
+AC_TRY_CPP([#include <$x_direct_test_include>],
+[# We can compile using X headers with no special include directory.
+ac_x_includes=],
+[# Look for the header file in a standard set of common directories.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ for ac_dir in \
+ /usr/X11/include \
+ /usr/X11R6/include \
+ /usr/X11R5/include \
+ /usr/X11R4/include \
+ \
+ /usr/include/X11 \
+ /usr/include/X11R6 \
+ /usr/include/X11R5 \
+ /usr/include/X11R4 \
+ \
+ /usr/local/X11/include \
+ /usr/local/X11R6/include \
+ /usr/local/X11R5/include \
+ /usr/local/X11R4/include \
+ \
+ /usr/local/include/X11 \
+ /usr/local/include/X11R6 \
+ /usr/local/include/X11R5 \
+ /usr/local/include/X11R4 \
+ \
+ /usr/X386/include \
+ /usr/x386/include \
+ /usr/XFree86/include/X11 \
+ \
+ /usr/include \
+ /usr/local/include \
+ /usr/unsupported/include \
+ /usr/athena/include \
+ /usr/local/x11r5/include \
+ /usr/lpp/Xamples/include \
+ \
+ /usr/openwin/include \
+ /usr/openwin/share/include \
+ ; \
+ do
+ if test -r "$ac_dir/$x_direct_test_include"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+ done])
+fi # $ac_x_includes = NO
+
+if test "$ac_x_libraries" = NO; then
+ # Check for the libraries.
+
+ test -z "$x_direct_test_library" && x_direct_test_library=Xt
+ test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
+
+ # See if we find them without any special options.
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS="$LIBS"
+ LIBS="-l$x_direct_test_library $LIBS"
+AC_TRY_LINK([#include <X11/Intrinsic.h>], [${x_direct_test_function}(1)],
+[LIBS="$ac_save_LIBS"
+# We can link X programs with no special library path.
+ac_x_libraries=],
+[LIBS="$ac_save_LIBS"
+# First see if replacing the include by lib works.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \
+ /usr/X11/lib${kdelibsuff} \
+ /usr/X11R6/lib${kdelibsuff} \
+ /usr/X11R5/lib${kdelibsuff} \
+ /usr/X11R4/lib${kdelibsuff} \
+ \
+ /usr/lib${kdelibsuff}/X11 \
+ /usr/lib${kdelibsuff}/X11R6 \
+ /usr/lib${kdelibsuff}/X11R5 \
+ /usr/lib${kdelibsuff}/X11R4 \
+ \
+ /usr/local/X11/lib${kdelibsuff} \
+ /usr/local/X11R6/lib${kdelibsuff} \
+ /usr/local/X11R5/lib${kdelibsuff} \
+ /usr/local/X11R4/lib${kdelibsuff} \
+ \
+ /usr/local/lib${kdelibsuff}/X11 \
+ /usr/local/lib${kdelibsuff}/X11R6 \
+ /usr/local/lib${kdelibsuff}/X11R5 \
+ /usr/local/lib${kdelibsuff}/X11R4 \
+ \
+ /usr/X386/lib${kdelibsuff} \
+ /usr/x386/lib${kdelibsuff} \
+ /usr/XFree86/lib${kdelibsuff}/X11 \
+ \
+ /usr/lib${kdelibsuff} \
+ /usr/local/lib${kdelibsuff} \
+ /usr/unsupported/lib${kdelibsuff} \
+ /usr/athena/lib${kdelibsuff} \
+ /usr/local/x11r5/lib${kdelibsuff} \
+ /usr/lpp/Xamples/lib${kdelibsuff} \
+ /lib/usr/lib${kdelibsuff}/X11 \
+ \
+ /usr/openwin/lib${kdelibsuff} \
+ /usr/openwin/share/lib${kdelibsuff} \
+ ; \
+do
+dnl Don't even attempt the hair of trying to link an X program!
+ for ac_extension in a so sl; do
+ if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done])
+fi # $ac_x_libraries = NO
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Find a file (or one of more files in a list of dirs)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_FIND_FILE],
+[
+$3=NO
+for i in $2;
+do
+ for j in $1;
+ do
+ echo "configure: __oline__: $i/$j" >&AC_FD_CC
+ if test -r "$i/$j"; then
+ echo "taking that" >&AC_FD_CC
+ $3=$i
+ break 2
+ fi
+ done
+done
+])
+
+dnl KDE_FIND_PATH(program-name, variable-name, list-of-dirs,
+dnl if-not-found, test-parameter, prepend-path)
+dnl
+dnl Look for program-name in list-of-dirs+$PATH.
+dnl If prepend-path is set, look in $PATH+list-of-dirs instead.
+dnl If found, $variable-name is set. If not, if-not-found is evaluated.
+dnl test-parameter: if set, the program is executed with this arg,
+dnl and only a successful exit code is required.
+AC_DEFUN([KDE_FIND_PATH],
+[
+ AC_MSG_CHECKING([for $1])
+ if test -n "$$2"; then
+ kde_cv_path="$$2";
+ else
+ kde_cache=`echo $1 | sed 'y%./+-%__p_%'`
+
+ AC_CACHE_VAL(kde_cv_path_$kde_cache,
+ [
+ kde_cv_path="NONE"
+ kde_save_IFS=$IFS
+ IFS=':'
+ dirs=""
+ for dir in $PATH; do
+ dirs="$dirs $dir"
+ done
+ if test -z "$6"; then dnl Append dirs in PATH (default)
+ dirs="$3 $dirs"
+ else dnl Prepend dirs in PATH (if 6th arg is set)
+ dirs="$dirs $3"
+ fi
+ IFS=$kde_save_IFS
+
+ for dir in $dirs; do
+ if test -x "$dir/$1"; then
+ if test -n "$5"
+ then
+ evalstr="$dir/$1 $5 2>&1 "
+ if eval $evalstr; then
+ kde_cv_path="$dir/$1"
+ break
+ fi
+ else
+ kde_cv_path="$dir/$1"
+ break
+ fi
+ fi
+ done
+
+ eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+ ])
+
+ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+ fi
+
+ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+ AC_MSG_RESULT(not found)
+ $4
+ else
+ AC_MSG_RESULT($kde_cv_path)
+ $2=$kde_cv_path
+
+ fi
+])
+
+AC_DEFUN([KDE_MOC_ERROR_MESSAGE],
+[
+ AC_MSG_ERROR([No Qt meta object compiler (moc) found!
+Please check whether you installed Qt correctly.
+You need to have a running moc binary.
+configure tried to run $ac_cv_path_moc and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable MOC to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_UIC_ERROR_MESSAGE],
+[
+ AC_MSG_WARN([No Qt ui compiler (uic) found!
+Please check whether you installed Qt correctly.
+You need to have a running uic binary.
+configure tried to run $ac_cv_path_uic and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable UIC to the right one before running
+configure.
+])
+])
+
+
+AC_DEFUN([KDE_CHECK_UIC_FLAG],
+[
+ AC_MSG_CHECKING([whether uic supports -$1 ])
+ kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
+ AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache,
+ [
+ cat >conftest.ui <<EOT
+ <!DOCTYPE UI><UI version="3" stdsetdef="1"></UI>
+EOT
+ ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null"
+ if AC_TRY_EVAL(ac_uic_testrun); then
+ eval "kde_cv_prog_uic_$kde_cache=yes"
+ else
+ eval "kde_cv_prog_uic_$kde_cache=no"
+ fi
+ rm -f conftest*
+ ])
+
+ if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT([yes])
+ :
+ $3
+ else
+ AC_MSG_RESULT([no])
+ :
+ $4
+ fi
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Find the meta object compiler and the ui compiler in the PATH,
+dnl in $QTDIR/bin, and some more usual places
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT_MOC_UIC],
+[
+ AC_REQUIRE([KDE_CHECK_PERL])
+ qt_bindirs=""
+ for dir in $kde_qt_dirs; do
+ qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc"
+ done
+ qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin"
+ if test ! "$ac_qt_bindir" = "NO"; then
+ qt_bindirs="$ac_qt_bindir $qt_bindirs"
+ fi
+
+ KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE])
+ if test -z "$UIC_NOT_NEEDED"; then
+ KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""])
+ if test -z "$UIC_PATH" ; then
+ KDE_UIC_ERROR_MESSAGE
+ exit 1
+ else
+ UIC=$UIC_PATH
+
+ if test $kde_qtver = 3; then
+ KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no)
+ KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no)
+
+ if test x$ac_uic_supports_libpath = xyes; then
+ UIC="$UIC -L \$(kde_widgetdir)"
+ fi
+ if test x$ac_uic_supports_nounload = xyes; then
+ UIC="$UIC -nounload"
+ fi
+ fi
+ fi
+ else
+ UIC="echo uic not available: "
+ fi
+
+ AC_SUBST(MOC)
+ AC_SUBST(UIC)
+
+ UIC_TR="i18n"
+ if test $kde_qtver = 3; then
+ UIC_TR="tr2i18n"
+ fi
+
+ AC_SUBST(UIC_TR)
+])
+
+AC_DEFUN([KDE_1_CHECK_PATHS],
+[
+ KDE_1_CHECK_PATH_HEADERS
+
+ KDE_TEST_RPATH=
+
+ if test -n "$USE_RPATH"; then
+
+ if test -n "$kde_libraries"; then
+ KDE_TEST_RPATH="-R $kde_libraries"
+ fi
+
+ if test -n "$qt_libraries"; then
+ KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries"
+ fi
+
+ if test -n "$x_libraries"; then
+ KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries"
+ fi
+
+ KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH"
+ fi
+
+AC_MSG_CHECKING([for KDE libraries installed])
+ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5'
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_ERROR([your system fails at linking a small KDE application!
+Check, if your compiler is installed correctly and if you have used the
+same compiler to compile Qt and kdelibs as you did use now.
+For more details about this problem, look at the end of config.log.])
+fi
+
+if eval `KDEDIR= ./conftest 2>&5`; then
+ kde_result=done
+else
+ kde_result=problems
+fi
+
+KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log
+kde_have_all_paths=yes
+
+KDE_SET_PATHS($kde_result)
+
+])
+
+AC_DEFUN([KDE_SET_PATHS],
+[
+ kde_cv_all_paths="kde_have_all_paths=\"yes\" \
+ kde_htmldir=\"$kde_htmldir\" \
+ kde_appsdir=\"$kde_appsdir\" \
+ kde_icondir=\"$kde_icondir\" \
+ kde_sounddir=\"$kde_sounddir\" \
+ kde_datadir=\"$kde_datadir\" \
+ kde_locale=\"$kde_locale\" \
+ kde_cgidir=\"$kde_cgidir\" \
+ kde_confdir=\"$kde_confdir\" \
+ kde_kcfgdir=\"$kde_kcfgdir\" \
+ kde_mimedir=\"$kde_mimedir\" \
+ kde_toolbardir=\"$kde_toolbardir\" \
+ kde_wallpaperdir=\"$kde_wallpaperdir\" \
+ kde_templatesdir=\"$kde_templatesdir\" \
+ kde_bindir=\"$kde_bindir\" \
+ kde_servicesdir=\"$kde_servicesdir\" \
+ kde_servicetypesdir=\"$kde_servicetypesdir\" \
+ kde_moduledir=\"$kde_moduledir\" \
+ kde_styledir=\"$kde_styledir\" \
+ kde_widgetdir=\"$kde_widgetdir\" \
+ xdg_appsdir=\"$xdg_appsdir\" \
+ xdg_menudir=\"$xdg_menudir\" \
+ xdg_directorydir=\"$xdg_directorydir\" \
+ kde_result=$1"
+])
+
+AC_DEFUN([KDE_SET_DEFAULT_PATHS],
+[
+if test "$1" = "default"; then
+
+ if test -z "$kde_htmldir"; then
+ kde_htmldir='\${datadir}/doc/HTML'
+ fi
+ if test -z "$kde_appsdir"; then
+ kde_appsdir='\${datadir}/applnk'
+ fi
+ if test -z "$kde_icondir"; then
+ kde_icondir='\${datadir}/icons'
+ fi
+ if test -z "$kde_sounddir"; then
+ kde_sounddir='\${datadir}/sounds'
+ fi
+ if test -z "$kde_datadir"; then
+ kde_datadir='\${datadir}/apps'
+ fi
+ if test -z "$kde_locale"; then
+ kde_locale='\${datadir}/locale'
+ fi
+ if test -z "$kde_cgidir"; then
+ kde_cgidir='\${exec_prefix}/cgi-bin'
+ fi
+ if test -z "$kde_confdir"; then
+ kde_confdir='\${datadir}/config'
+ fi
+ if test -z "$kde_kcfgdir"; then
+ kde_kcfgdir='\${datadir}/config.kcfg'
+ fi
+ if test -z "$kde_mimedir"; then
+ kde_mimedir='\${datadir}/mimelnk'
+ fi
+ if test -z "$kde_toolbardir"; then
+ kde_toolbardir='\${datadir}/toolbar'
+ fi
+ if test -z "$kde_wallpaperdir"; then
+ kde_wallpaperdir='\${datadir}/wallpapers'
+ fi
+ if test -z "$kde_templatesdir"; then
+ kde_templatesdir='\${datadir}/templates'
+ fi
+ if test -z "$kde_bindir"; then
+ kde_bindir='\${exec_prefix}/bin'
+ fi
+ if test -z "$kde_servicesdir"; then
+ kde_servicesdir='\${datadir}/services'
+ fi
+ if test -z "$kde_servicetypesdir"; then
+ kde_servicetypesdir='\${datadir}/servicetypes'
+ fi
+ if test -z "$kde_moduledir"; then
+ if test "$kde_qtver" = "2"; then
+ kde_moduledir='\${libdir}/kde2'
+ else
+ kde_moduledir='\${libdir}/kde3'
+ fi
+ fi
+ if test -z "$kde_styledir"; then
+ kde_styledir='\${libdir}/kde3/plugins/styles'
+ fi
+ if test -z "$kde_widgetdir"; then
+ kde_widgetdir='\${libdir}/kde3/plugins/designer'
+ fi
+ if test -z "$xdg_appsdir"; then
+ xdg_appsdir='\${datadir}/applications/kde'
+ fi
+ if test -z "$xdg_menudir"; then
+ xdg_menudir='\${sysconfdir}/xdg/menus'
+ fi
+ if test -z "$xdg_directorydir"; then
+ xdg_directorydir='\${datadir}/desktop-directories'
+ fi
+
+ KDE_SET_PATHS(defaults)
+
+else
+
+ if test $kde_qtver = 1; then
+ AC_MSG_RESULT([compiling])
+ KDE_1_CHECK_PATHS
+ else
+ AC_MSG_ERROR([path checking not yet supported for KDE 2])
+ fi
+
+fi
+])
+
+AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS],
+[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" ||
+ test -z "$kde_icondir" || test -z "$kde_sounddir" ||
+ test -z "$kde_datadir" || test -z "$kde_locale" ||
+ test -z "$kde_cgidir" || test -z "$kde_confdir" ||
+ test -z "$kde_kcfgdir" ||
+ test -z "$kde_mimedir" || test -z "$kde_toolbardir" ||
+ test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" ||
+ test -z "$kde_bindir" || test -z "$kde_servicesdir" ||
+ test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" ||
+ test -z "$kde_styledir" || test -z "kde_widgetdir" ||
+ test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" ||
+ test "x$kde_have_all_paths" != "xyes"; then
+ kde_have_all_paths=no
+ fi
+])
+
+AC_DEFUN([KDE_MISSING_PROG_ERROR],
+[
+ AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed KDE correctly.
+])
+])
+
+AC_DEFUN([KDE_MISSING_ARTS_ERROR],
+[
+ AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed aRts correctly or use
+--without-arts to compile without aRts support (this will remove functionality).
+])
+])
+
+AC_DEFUN([KDE_SET_DEFAULT_BINDIRS],
+[
+ kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin"
+ test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs"
+ if test -n "$KDEDIRS"; then
+ kde_save_IFS=$IFS
+ IFS=:
+ for dir in $KDEDIRS; do
+ kde_default_bindirs="$dir/bin $kde_default_bindirs "
+ done
+ IFS=$kde_save_IFS
+ fi
+])
+
+AC_DEFUN([KDE_SUBST_PROGRAMS],
+[
+ AC_ARG_WITH(arts,
+ AC_HELP_STRING([--without-arts],[build without aRts [default=no]]),
+ [build_arts=$withval],
+ [build_arts=yes]
+ )
+ AM_CONDITIONAL(include_ARTS, test "$build_arts" '!=' "no")
+ if test "$build_arts" = "no"; then
+ AC_DEFINE(WITHOUT_ARTS, 1, [Defined if compiling without arts])
+ fi
+
+ KDE_SET_DEFAULT_BINDIRS
+ kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_libs_prefix/bin $kde_default_bindirs"
+ KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)])
+ KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)])
+ if test "$build_arts" '!=' "no"; then
+ KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)])
+ KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)])
+ fi
+ KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs])
+
+ kde32ornewer=1
+ kde33ornewer=1
+ if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then
+ kde32ornewer=
+ kde33ornewer=
+ else
+ if test "$kde_qtver" = "3"; then
+ if test "$kde_qtsubver" -le 1; then
+ kde32ornewer=
+ fi
+ if test "$kde_qtsubver" -le 2; then
+ kde33ornewer=
+ fi
+ if test "$KDECONFIG" != "compiled"; then
+ if test `$KDECONFIG --version | grep KDE | sed 's/KDE: \(...\).*/\1/'` = 3.2; then
+ kde33ornewer=
+ fi
+ fi
+ fi
+ fi
+
+ if test -n "$kde32ornewer"; then
+ KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)])
+ KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)])
+ fi
+ if test -n "$kde33ornewer"; then
+ KDE_FIND_PATH(makekdewidgets, MAKEKDEWIDGETS, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(makekdewidgets)])
+ AC_SUBST(MAKEKDEWIDGETS)
+ fi
+ KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin], [XMLLINT=""])
+
+ if test -n "$MEINPROC" -a "$MEINPROC" != "compiled"; then
+ kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share"
+ test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs"
+ AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET)
+ if test "$KDE_XSL_STYLESHEET" = "NO"; then
+ KDE_XSL_STYLESHEET=""
+ else
+ KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl"
+ fi
+ fi
+
+ DCOP_DEPENDENCIES='$(DCOPIDL)'
+ if test -n "$kde32ornewer"; then
+ KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)'
+ DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)'
+ AC_SUBST(KCONFIG_COMPILER)
+ AC_SUBST(KCFG_DEPENDENCIES)
+ AC_SUBST(DCOPIDLNG)
+ fi
+ AC_SUBST(DCOPIDL)
+ AC_SUBST(DCOPIDL2CPP)
+ AC_SUBST(DCOP_DEPENDENCIES)
+ AC_SUBST(MCOPIDL)
+ AC_SUBST(ARTSCCONFIG)
+ AC_SUBST(MEINPROC)
+ AC_SUBST(KDE_XSL_STYLESHEET)
+ AC_SUBST(XMLLINT)
+])dnl
+
+AC_DEFUN([AC_CREATE_KFSSTND],
+[
+AC_REQUIRE([AC_CHECK_RPATH])
+
+AC_MSG_CHECKING([for KDE paths])
+kde_result=""
+kde_cached_paths=yes
+AC_CACHE_VAL(kde_cv_all_paths,
+[
+ KDE_SET_DEFAULT_PATHS($1)
+ kde_cached_paths=no
+])
+eval "$kde_cv_all_paths"
+KDE_CHECK_PATHS_FOR_COMPLETENESS
+if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then
+ # wrong values were cached, may be, we can set better ones
+ kde_result=
+ kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir=
+ kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir=
+ kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir=
+ kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir=
+ kde_have_all_paths=
+ kde_styledir=
+ kde_widgetdir=
+ xdg_appsdir = xdg_menudir= xdg_directorydir=
+ KDE_SET_DEFAULT_PATHS($1)
+ eval "$kde_cv_all_paths"
+ KDE_CHECK_PATHS_FOR_COMPLETENESS
+ kde_result="$kde_result (cache overridden)"
+fi
+if test "$kde_have_all_paths" = "no"; then
+ AC_MSG_ERROR([configure could not run a little KDE program to test the environment.
+Since it had compiled and linked before, it must be a strange problem on your system.
+Look at config.log for details. If you are not able to fix this, look at
+http://www.kde.org/faq/installation.html or any www.kde.org mirror.
+(If you're using an egcs version on Linux, you may update binutils!)
+])
+else
+ rm -f conftest*
+ AC_MSG_RESULT($kde_result)
+fi
+
+bindir=$kde_bindir
+
+KDE_SUBST_PROGRAMS
+
+])
+
+AC_DEFUN([AC_SUBST_KFSSTND],
+[
+AC_SUBST(kde_htmldir)
+AC_SUBST(kde_appsdir)
+AC_SUBST(kde_icondir)
+AC_SUBST(kde_sounddir)
+AC_SUBST(kde_datadir)
+AC_SUBST(kde_locale)
+AC_SUBST(kde_confdir)
+AC_SUBST(kde_kcfgdir)
+AC_SUBST(kde_mimedir)
+AC_SUBST(kde_wallpaperdir)
+AC_SUBST(kde_bindir)
+dnl X Desktop Group standards
+AC_SUBST(xdg_appsdir)
+AC_SUBST(xdg_menudir)
+AC_SUBST(xdg_directorydir)
+dnl for KDE 2
+AC_SUBST(kde_templatesdir)
+AC_SUBST(kde_servicesdir)
+AC_SUBST(kde_servicetypesdir)
+AC_SUBST(kde_moduledir)
+AC_SUBST(kdeinitdir, '$(kde_moduledir)')
+AC_SUBST(kde_styledir)
+AC_SUBST(kde_widgetdir)
+if test "$kde_qtver" = 1; then
+ kde_minidir="$kde_icondir/mini"
+else
+# for KDE 1 - this breaks KDE2 apps using minidir, but
+# that's the plan ;-/
+ kde_minidir="/dev/null"
+fi
+dnl AC_SUBST(kde_minidir)
+dnl AC_SUBST(kde_cgidir)
+dnl AC_SUBST(kde_toolbardir)
+])
+
+AC_DEFUN([KDE_MISC_TESTS],
+[
+ dnl Checks for libraries.
+ AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD
+ AC_SUBST(LIBUTIL)
+ AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD
+ AC_SUBST(LIBCOMPAT)
+ kde_have_crypt=
+ AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes],
+ AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [
+ AC_MSG_WARN([you have no crypt in either libcrypt or libc.
+You should install libcrypt from another source or configure with PAM
+support])
+ kde_have_crypt=no
+ ]))
+ AC_SUBST(LIBCRYPT)
+ if test $kde_have_crypt = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function])
+ fi
+ AC_CHECK_SOCKLEN_T
+ AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"])
+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+ AC_CHECK_LIB(dnet_stub, dnet_ntoa,
+ [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"])
+ fi
+ AC_CHECK_FUNC(inet_ntoa)
+ if test $ac_cv_func_inet_ntoa = no; then
+ AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl")
+ fi
+ AC_CHECK_FUNC(connect)
+ if test $ac_cv_func_connect = no; then
+ AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", ,
+ $X_EXTRA_LIBS)
+ fi
+
+ AC_CHECK_FUNC(remove)
+ if test $ac_cv_func_remove = no; then
+ AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix")
+ fi
+
+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+ AC_CHECK_FUNC(shmat, ,
+ AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"))
+
+ # more headers that need to be explicitly included on darwin
+ AC_CHECK_HEADERS(sys/types.h stdint.h)
+
+ # sys/bitypes.h is needed for uint32_t and friends on Tru64
+ AC_CHECK_HEADERS(sys/bitypes.h)
+
+ # darwin requires a poll emulation library
+ AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll")
+
+ # for some image handling on Mac OS X
+ AC_CHECK_HEADERS(Carbon/Carbon.h)
+
+ # CoreAudio framework
+ AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [
+ AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API])
+ FRAMEWORK_COREAUDIO="-Wl,-framework,CoreAudio"
+ ])
+
+ AC_CHECK_RES_INIT
+ AC_SUBST(LIB_POLL)
+ AC_SUBST(FRAMEWORK_COREAUDIO)
+ LIBSOCKET="$X_EXTRA_LIBS"
+ AC_SUBST(LIBSOCKET)
+ AC_SUBST(X_EXTRA_LIBS)
+ AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4
+ AC_SUBST(LIBUCB)
+
+ case $host in dnl this *is* LynxOS specific
+ *-*-lynxos* )
+ AC_MSG_CHECKING([LynxOS header file wrappers])
+ [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"]
+ AC_MSG_RESULT(disabled)
+ AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS
+ ;;
+ esac
+
+ KDE_CHECK_TYPES
+ KDE_CHECK_LIBDL
+ KDE_CHECK_STRLCPY
+ KDE_CHECK_PIE_SUPPORT
+
+# darwin needs this to initialize the environment
+AC_CHECK_HEADERS(crt_externs.h)
+AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
+
+AH_VERBATIM(_DARWIN_ENVIRON,
+[
+#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
+# include <sys/time.h>
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#endif
+])
+
+AH_VERBATIM(_AIX_STRINGS_H_BZERO,
+[
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+])
+
+AC_CHECK_FUNCS([vsnprintf snprintf])
+
+AH_VERBATIM(_TRU64,[
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Find the header files and libraries for X-Windows. Extended the
+dnl macro AC_PATH_X
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([K_PATH_X],
+[
+AC_REQUIRE([KDE_MISC_TESTS])dnl
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_ARG_ENABLE(
+ embedded,
+ AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]),
+ kde_use_qt_emb=$enableval,
+ kde_use_qt_emb=no
+)
+
+AC_ARG_ENABLE(
+ qtopia,
+ AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]),
+ kde_use_qt_emb_palm=$enableval,
+ kde_use_qt_emb_palm=no
+)
+
+AC_ARG_ENABLE(
+ mac,
+ AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]),
+ kde_use_qt_mac=$enableval,
+ kde_use_qt_mac=no
+)
+
+# used to disable x11-specific stuff on special platforms
+AM_CONDITIONAL(include_x11, test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no")
+
+if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then
+
+AC_MSG_CHECKING(for X)
+
+AC_CACHE_VAL(kde_cv_have_x,
+[# One or both of the vars are not set, and there is no cached value.
+if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then
+ kde_x_includes=NO
+else
+ kde_x_includes=$x_includes
+fi
+if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then
+ kde_x_libraries=NO
+else
+ kde_x_libraries=$x_libraries
+fi
+
+# below we use the standard autoconf calls
+ac_x_libraries=$kde_x_libraries
+ac_x_includes=$kde_x_includes
+
+KDE_PATH_X_DIRECT
+dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries.
+dnl Unfortunately, if compiling with the N32 ABI, this is not the correct
+dnl location. The correct location is /usr/lib32 or an undefined value
+dnl (the linker is smart enough to pick the correct default library).
+dnl Things work just fine if you use just AC_PATH_X_DIRECT.
+dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to
+dnl /usr/openwin/include, which doesn't work. /usr/include does work, so
+dnl x_includes should be left alone.
+case "$host" in
+mips-sgi-irix6*)
+ ;;
+*-*-solaris*)
+ ;;
+*)
+ _AC_PATH_X_XMKMF
+ if test -z "$ac_x_includes"; then
+ ac_x_includes="."
+ fi
+ if test -z "$ac_x_libraries"; then
+ ac_x_libraries="/usr/lib${kdelibsuff}"
+ fi
+esac
+#from now on we use our own again
+
+# when the user already gave --x-includes, we ignore
+# what the standard autoconf macros told us.
+if test "$kde_x_includes" = NO; then
+ kde_x_includes=$ac_x_includes
+fi
+
+# for --x-libraries too
+if test "$kde_x_libraries" = NO; then
+ kde_x_libraries=$ac_x_libraries
+fi
+
+if test "$kde_x_includes" = NO; then
+ AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!])
+fi
+
+if test "$kde_x_libraries" = NO; then
+ AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!])
+fi
+
+# Record where we found X for the cache.
+kde_cv_have_x="have_x=yes \
+ kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries"
+])dnl
+
+eval "$kde_cv_have_x"
+
+if test "$have_x" != yes; then
+ AC_MSG_RESULT($have_x)
+ no_x=yes
+else
+ AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes])
+fi
+
+if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then
+ X_INCLUDES=""
+ x_includes="."; dnl better than nothing :-
+ else
+ x_includes=$kde_x_includes
+ X_INCLUDES="-I$x_includes"
+fi
+
+if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE || test "$kde_x_libraries" = "/usr/lib"; then
+ X_LDFLAGS=""
+ x_libraries="/usr/lib"; dnl better than nothing :-
+ else
+ x_libraries=$kde_x_libraries
+ X_LDFLAGS="-L$x_libraries"
+fi
+all_includes="$X_INCLUDES"
+all_libraries="$X_LDFLAGS $LDFLAGS_AS_NEEDED $LDFLAGS_NEW_DTAGS"
+
+# Check for libraries that X11R6 Xt/Xaw programs need.
+ac_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+# check for ICE first), but we must link in the order -lSM -lICE or
+# we get undefined symbols. So assume we have SM if we have ICE.
+# These have to be linked with before -lX11, unlike the other
+# libraries we check for below, so use a different variable.
+# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
+AC_CHECK_LIB(ICE, IceConnectionNumber,
+ [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS)
+LDFLAGS="$ac_save_LDFLAGS"
+
+LIB_X11='-lX11 $(LIBSOCKET)'
+
+AC_MSG_CHECKING(for libXext)
+AC_CACHE_VAL(kde_cv_have_libXext,
+[
+kde_ldflags_safe="$LDFLAGS"
+kde_libs_safe="$LIBS"
+
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+LIBS="-lXext -lX11 $LIBSOCKET"
+
+AC_TRY_LINK([
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+],
+[
+printf("hello Xext\n");
+],
+kde_cv_have_libXext=yes,
+kde_cv_have_libXext=no
+)
+
+LDFLAGS=$kde_ldflags_safe
+LIBS=$kde_libs_safe
+])
+
+AC_MSG_RESULT($kde_cv_have_libXext)
+
+if test "$kde_cv_have_libXext" = "no"; then
+ AC_MSG_ERROR([We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either.])
+fi
+
+LIB_XEXT="-lXext"
+QTE_NORTTI=""
+
+elif test "$kde_use_qt_emb" = "yes"; then
+ dnl We're using QT Embedded
+ CPPFLAGS=-DQWS
+ CXXFLAGS="$CXXFLAGS -fno-rtti"
+ QTE_NORTTI="-fno-rtti -DQWS"
+ X_PRE_LIBS=""
+ LIB_X11=""
+ LIB_XEXT=""
+ LIB_XRENDER=""
+ LIBSM=""
+ X_INCLUDES=""
+ X_LDFLAGS=""
+ x_includes=""
+ x_libraries=""
+elif test "$kde_use_qt_mac" = "yes"; then
+ dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to
+ dnl be included to get the information) --Sam
+ CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp"
+ CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp"
+ X_PRE_LIBS=""
+ LIB_X11=""
+ LIB_XEXT=""
+ LIB_XRENDER=""
+ LIBSM=""
+ X_INCLUDES=""
+ X_LDFLAGS=""
+ x_includes=""
+ x_libraries=""
+fi
+AC_SUBST(X_PRE_LIBS)
+AC_SUBST(LIB_X11)
+AC_SUBST(LIB_XRENDER)
+AC_SUBST(LIBSM)
+AC_SUBST(X_INCLUDES)
+AC_SUBST(X_LDFLAGS)
+AC_SUBST(x_includes)
+AC_SUBST(x_libraries)
+AC_SUBST(QTE_NORTTI)
+AC_SUBST(LIB_XEXT)
+
+])
+
+AC_DEFUN([KDE_PRINT_QT_PROGRAM],
+[
+AC_REQUIRE([KDE_USE_QT])
+cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qglobal.h>
+#include <qapplication.h>
+EOF
+if test "$kde_qtver" = "2"; then
+cat >> conftest.$ac_ext <<EOF
+#include <qevent.h>
+#include <qstring.h>
+#include <qstyle.h>
+EOF
+
+if test $kde_qtsubver -gt 0; then
+cat >> conftest.$ac_ext <<EOF
+#if QT_VERSION < 210
+#error 1
+#endif
+EOF
+fi
+fi
+
+if test "$kde_qtver" = "3"; then
+cat >> conftest.$ac_ext <<EOF
+#include <qcursor.h>
+#include <qstylefactory.h>
+#include <private/qucomextra_p.h>
+EOF
+fi
+
+echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext
+cat >> conftest.$ac_ext <<EOF
+#error 1
+#endif
+
+int main() {
+EOF
+if test "$kde_qtver" = "2"; then
+cat >> conftest.$ac_ext <<EOF
+ QStringList *t = new QStringList();
+ Q_UNUSED(t);
+EOF
+if test $kde_qtsubver -gt 0; then
+cat >> conftest.$ac_ext <<EOF
+ QString s;
+ s.setLatin1("Elvis is alive", 14);
+EOF
+fi
+fi
+if test "$kde_qtver" = "3"; then
+cat >> conftest.$ac_ext <<EOF
+ (void)QStyleFactory::create(QString::null);
+ QCursor c(Qt::WhatsThisCursor);
+EOF
+fi
+cat >> conftest.$ac_ext <<EOF
+ return 0;
+}
+EOF
+])
+
+AC_DEFUN([KDE_USE_QT],
+[
+if test -z "$1"; then
+ # Current default Qt version: 3.3
+ kde_qtver=3
+ kde_qtsubver=3
+else
+ kde_qtsubver=`echo "$1" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
+ # following is the check if subversion isnt found in passed argument
+ if test "$kde_qtsubver" = "$1"; then
+ kde_qtsubver=1
+ fi
+ kde_qtver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
+ if test "$kde_qtver" = "1"; then
+ kde_qtsubver=42
+ fi
+fi
+
+if test -z "$2"; then
+ if test "$kde_qtver" = "2"; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_minversion=">= Qt 2.2.2"
+ else
+ kde_qt_minversion=">= Qt 2.0.2"
+ fi
+ fi
+ if test "$kde_qtver" = "3"; then
+ if test $kde_qtsubver -gt 0; then
+ if test $kde_qtsubver -gt 1; then
+ if test $kde_qtsubver -gt 2; then
+ kde_qt_minversion=">= Qt 3.3 and < 4.0"
+ else
+ kde_qt_minversion=">= Qt 3.2 and < 4.0"
+ fi
+ else
+ kde_qt_minversion=">= Qt 3.1 (20021021) and < 4.0"
+ fi
+ else
+ kde_qt_minversion=">= Qt 3.0 and < 4.0"
+ fi
+ fi
+ if test "$kde_qtver" = "1"; then
+ kde_qt_minversion=">= 1.42 and < 2.0"
+ fi
+else
+ kde_qt_minversion="$2"
+fi
+
+if test -z "$3"; then
+ if test $kde_qtver = 3; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_verstring="QT_VERSION >= 0x03@VER@00 && QT_VERSION < 0x040000"
+ qtsubver=`echo "00$kde_qtsubver" | sed -e 's,.*\(..\)$,\1,'`
+ kde_qt_verstring=`echo $kde_qt_verstring | sed -e "s,@VER@,$qtsubver,"`
+ else
+ kde_qt_verstring="QT_VERSION >= 300 && QT_VERSION < 0x040000"
+ fi
+ fi
+ if test $kde_qtver = 2; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_verstring="QT_VERSION >= 222"
+ else
+ kde_qt_verstring="QT_VERSION >= 200"
+ fi
+ fi
+ if test $kde_qtver = 1; then
+ kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
+ fi
+else
+ kde_qt_verstring="$3"
+fi
+
+if test $kde_qtver = 4; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt4 /usr/lib/qt /usr/share/qt4"
+fi
+if test $kde_qtver = 3; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3 /usr/lib${kdelibsuff}/qt-3.3"
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" ; then
+ if $PKG_CONFIG --exists qt-mt ; then
+ kde_qt_dirs="$kde_qt_dirs `$PKG_CONFIG --variable=prefix qt-mt`"
+ fi
+ fi
+fi
+if test $kde_qtver = 2; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
+fi
+if test $kde_qtver = 1; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt"
+fi
+])
+
+AC_DEFUN([KDE_CHECK_QT_DIRECT],
+[
+AC_REQUIRE([KDE_USE_QT])
+AC_MSG_CHECKING([if Qt compiles without flags])
+AC_CACHE_VAL(kde_cv_qt_direct,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
+ac_LIBRARY_PATH="$LIBRARY_PATH"
+ac_cxxflags_safe="$CXXFLAGS"
+ac_ldflags_safe="$LDFLAGS"
+ac_libs_safe="$LIBS"
+
+CXXFLAGS="$CXXFLAGS -I$qt_includes"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$LIBQT -lXext -lX11 $LIBSOCKET"
+else
+LIBS="$LIBQT $LIBSOCKET"
+fi
+LD_LIBRARY_PATH=
+export LD_LIBRARY_PATH
+LIBRARY_PATH=
+export LIBRARY_PATH
+
+KDE_PRINT_QT_PROGRAM
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ kde_cv_qt_direct="yes"
+else
+ kde_cv_qt_direct="no"
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.$ac_ext >&AC_FD_CC
+fi
+
+rm -f conftest*
+CXXFLAGS="$ac_cxxflags_safe"
+LDFLAGS="$ac_ldflags_safe"
+LIBS="$ac_libs_safe"
+
+LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
+export LD_LIBRARY_PATH
+LIBRARY_PATH="$ac_LIBRARY_PATH"
+export LIBRARY_PATH
+AC_LANG_RESTORE
+])
+
+if test "$kde_cv_qt_direct" = "yes"; then
+ AC_MSG_RESULT(yes)
+ $1
+else
+ AC_MSG_RESULT(no)
+ $2
+fi
+])
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the Qt headers and libraries.
+dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
+dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT_1_3],
+[
+AC_REQUIRE([K_PATH_X])
+AC_REQUIRE([KDE_USE_QT])
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+dnl ------------------------------------------------------------------------
+dnl Add configure flag to enable linking to MT version of Qt library.
+dnl ------------------------------------------------------------------------
+
+AC_ARG_ENABLE(
+ mt,
+ AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]),
+ kde_use_qt_mt=$enableval,
+ [
+ if test $kde_qtver = 3; then
+ kde_use_qt_mt=yes
+ else
+ kde_use_qt_mt=no
+ fi
+ ]
+)
+
+USING_QT_MT=""
+
+dnl ------------------------------------------------------------------------
+dnl If we not get --disable-qt-mt then adjust some vars for the host.
+dnl ------------------------------------------------------------------------
+
+KDE_MT_LDFLAGS=
+KDE_MT_LIBS=
+if test "x$kde_use_qt_mt" = "xyes"; then
+ KDE_CHECK_THREADING
+ if test "x$kde_use_threading" = "xyes"; then
+ CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS"
+ KDE_MT_LDFLAGS="$USE_THREADS"
+ KDE_MT_LIBS="$LIBPTHREAD"
+ else
+ kde_use_qt_mt=no
+ fi
+fi
+AC_SUBST(KDE_MT_LDFLAGS)
+AC_SUBST(KDE_MT_LIBS)
+
+kde_qt_was_given=yes
+
+dnl ------------------------------------------------------------------------
+dnl If we haven't been told how to link to Qt, we work it out for ourselves.
+dnl ------------------------------------------------------------------------
+if test -z "$LIBQT_GLOB"; then
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ LIBQT_GLOB="libqte.*"
+ else
+ LIBQT_GLOB="libqt.*"
+ fi
+fi
+
+dnl ------------------------------------------------------------
+dnl If we got --enable-embedded then adjust the Qt library name.
+dnl ------------------------------------------------------------
+if test "x$kde_use_qt_emb" = "xyes"; then
+ qtlib="qte"
+else
+ qtlib="qt"
+fi
+
+kde_int_qt="-l$qtlib"
+
+if test -z "$LIBQPE"; then
+dnl ------------------------------------------------------------
+dnl If we got --enable-palmtop then add -lqpe to the link line
+dnl ------------------------------------------------------------
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ if test "x$kde_use_qt_emb_palm" = "xyes"; then
+ LIB_QPE="-lqpe"
+ else
+ LIB_QPE=""
+ fi
+ else
+ LIB_QPE=""
+ fi
+fi
+
+dnl ------------------------------------------------------------------------
+dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
+dnl ------------------------------------------------------------------------
+
+if test "x$kde_use_qt_mt" = "xyes"; then
+ LIBQT="-l$qtlib-mt"
+ kde_int_qt="-l$qtlib-mt"
+ LIBQT_GLOB="lib$qtlib-mt.*"
+ USING_QT_MT="using -mt"
+else
+ LIBQT="-l$qtlib"
+fi
+
+if test $kde_qtver != 1; then
+
+ AC_REQUIRE([AC_FIND_PNG])
+ AC_REQUIRE([AC_FIND_JPEG])
+ LIBQT="$LIBQT $LIBPNG $LIBJPEG"
+fi
+
+if test $kde_qtver = 3; then
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+ LIBQT="$LIBQT $LIBDL"
+fi
+
+AC_MSG_CHECKING([for Qt])
+
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET"
+fi
+ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
+qt_libraries=""
+qt_includes=""
+AC_ARG_WITH(qt-dir,
+ AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]),
+ [ ac_qt_includes="$withval"/include
+ ac_qt_libraries="$withval"/lib${kdelibsuff}
+ ac_qt_bindir="$withval"/bin
+ ])
+
+AC_ARG_WITH(qt-includes,
+ AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]),
+ [
+ ac_qt_includes="$withval"
+ ])
+
+kde_qt_libs_given=no
+
+AC_ARG_WITH(qt-libraries,
+ AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]),
+ [ ac_qt_libraries="$withval"
+ kde_qt_libs_given=yes
+ ])
+
+AC_CACHE_VAL(ac_cv_have_qt,
+[#try to guess Qt locations
+
+qt_incdirs=""
+for dir in $kde_qt_dirs; do
+ qt_incdirs="$qt_incdirs $dir/include $dir"
+done
+if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+fi
+if test "$PKG_CONFIG" != "no" ; then
+ if $PKG_CONFIG --exists qt-mt ; then
+ qt_incdirs="$qt_incdirs `$PKG_CONFIG --variable=includedir qt-mt`"
+ fi
+fi
+qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes"
+if test ! "$ac_qt_includes" = "NO"; then
+ qt_incdirs="$ac_qt_includes $qt_incdirs"
+fi
+
+if test "$kde_qtver" != "1"; then
+ kde_qt_header=qstyle.h
+else
+ kde_qt_header=qglobal.h
+fi
+
+AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
+ac_qt_includes="$qt_incdir"
+
+qt_libdirs=""
+for dir in $kde_qt_dirs; do
+ qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir/lib $dir"
+done
+if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+fi
+if test "$PKG_CONFIG" != "no" ; then
+ if $PKG_CONFIG --exists qt-mt ; then
+ qt_libdirs="$qt_incdirs `$PKG_CONFIG --variable=libdir qt-mt`"
+ fi
+fi
+qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
+if test ! "$ac_qt_libraries" = "NO"; then
+ qt_libdir=$ac_qt_libraries
+else
+ qt_libdirs="$ac_qt_libraries $qt_libdirs"
+ # if the Qt was given, the chance is too big that libqt.* doesn't exist
+ qt_libdir=NONE
+ for dir in $qt_libdirs; do
+ try="ls -1 $dir/${LIBQT_GLOB}"
+ if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi
+ done
+fi
+for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do
+ if test -e "$a"; then
+ LIBQT="$LIBQT ${kde_int_qt}_incremental"
+ break
+ fi
+done
+
+ac_qt_libraries="$qt_libdir"
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+ac_cxxflags_safe="$CXXFLAGS"
+ac_ldflags_safe="$LDFLAGS"
+ac_libs_safe="$LIBS"
+
+CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
+LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+LIBS="$LIBS $LIBQT $KDE_MT_LIBS"
+
+KDE_PRINT_QT_PROGRAM
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ rm -f conftest*
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.$ac_ext >&AC_FD_CC
+ ac_qt_libraries="NO"
+fi
+rm -f conftest*
+CXXFLAGS="$ac_cxxflags_safe"
+LDFLAGS="$ac_ldflags_safe"
+LIBS="$ac_libs_safe"
+
+AC_LANG_RESTORE
+if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
+ ac_cv_have_qt="have_qt=no"
+ ac_qt_notfound=""
+ missing_qt_mt=""
+ if test "$ac_qt_includes" = NO; then
+ if test "$ac_qt_libraries" = NO; then
+ ac_qt_notfound="(headers and libraries)";
+ else
+ ac_qt_notfound="(headers)";
+ fi
+ else
+ if test "x$kde_use_qt_mt" = "xyes"; then
+ missing_qt_mt="
+Make sure that you have compiled Qt with thread support!"
+ ac_qt_notfound="(library $qtlib-mt)";
+ else
+ ac_qt_notfound="(library $qtlib)";
+ fi
+ fi
+
+ AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation!
+For more details about this problem, look at the end of config.log.$missing_qt_mt])
+else
+ have_qt="yes"
+fi
+])
+
+eval "$ac_cv_have_qt"
+
+if test "$have_qt" != yes; then
+ AC_MSG_RESULT([$have_qt]);
+else
+ ac_cv_have_qt="have_qt=yes \
+ ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
+ AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
+
+ qt_libraries="$ac_qt_libraries"
+ qt_includes="$ac_qt_includes"
+fi
+
+if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then
+ KDE_CHECK_QT_DIRECT(qt_libraries= ,[])
+fi
+
+AC_SUBST(qt_libraries)
+AC_SUBST(qt_includes)
+
+if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
+ QT_INCLUDES=""
+else
+ QT_INCLUDES="-I$qt_includes"
+ all_includes="$QT_INCLUDES $all_includes"
+fi
+
+if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then
+ QT_LDFLAGS=""
+else
+ QT_LDFLAGS="-L$qt_libraries"
+ all_libraries="$QT_LDFLAGS $all_libraries"
+fi
+test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS"
+
+AC_SUBST(QT_INCLUDES)
+AC_SUBST(QT_LDFLAGS)
+AC_PATH_QT_MOC_UIC
+
+KDE_CHECK_QT_JPEG
+
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)'
+else
+LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)'
+fi
+test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS"
+for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do
+ if test -e "$a"; then
+ LIB_QT="$LIB_QT ${kde_int_qt}_incremental"
+ break
+ fi
+done
+
+AC_SUBST(LIB_QT)
+AC_SUBST(LIB_QPE)
+
+AC_SUBST(kde_qtver)
+])
+
+AC_DEFUN([AC_PATH_QT],
+[
+AC_PATH_QT_1_3
+])
+
+AC_DEFUN([KDE_CHECK_UIC_PLUGINS],
+[
+AC_REQUIRE([AC_PATH_QT_MOC_UIC])
+
+if test x$ac_uic_supports_libpath = xyes; then
+
+AC_MSG_CHECKING([if UIC has KDE plugins available])
+AC_CACHE_VAL(kde_cv_uic_plugins,
+[
+cat > actest.ui << EOF
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>NewConnectionDialog</class>
+<widget class="QDialog">
+ <widget class="KLineEdit">
+ <property name="name">
+ <cstring>testInput</cstring>
+ </property>
+ </widget>
+</widget>
+</UI>
+EOF
+
+
+
+kde_cv_uic_plugins=no
+kde_line="$UIC_PATH -L $kde_widgetdir"
+if test x$ac_uic_supports_nounload = xyes; then
+ kde_line="$kde_line -nounload"
+fi
+kde_line="$kde_line -impl actest.h actest.ui > actest.cpp"
+if AC_TRY_EVAL(kde_line); then
+ # if you're trying to debug this check and think it's incorrect,
+ # better check your installation. The check _is_ correct - your
+ # installation is not.
+ if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then
+ kde_cv_uic_plugins=yes
+ fi
+fi
+rm -f actest.ui actest.cpp
+])
+
+AC_MSG_RESULT([$kde_cv_uic_plugins])
+if test "$kde_cv_uic_plugins" != yes; then
+ AC_MSG_ERROR([
+you need to install kdelibs first.
+
+If you did install kdelibs, then the Qt version that is picked up by
+this configure is not the same version you used to compile kdelibs.
+The Qt Plugin installed by kdelibs is *ONLY* loadable if it is the
+_same Qt version_, compiled with the _same compiler_ and the same Qt
+configuration settings.
+])
+fi
+fi
+])
+
+AC_DEFUN([KDE_CHECK_FINAL],
+[
+ AC_ARG_ENABLE(final,
+ AC_HELP_STRING([--enable-final],
+ [build size optimized apps (experimental - needs lots of memory)]),
+ kde_use_final=$enableval, kde_use_final=no)
+
+ if test "x$kde_use_final" = "xyes"; then
+ KDE_USE_FINAL_TRUE=""
+ KDE_USE_FINAL_FALSE="#"
+ else
+ KDE_USE_FINAL_TRUE="#"
+ KDE_USE_FINAL_FALSE=""
+ fi
+ AC_SUBST(KDE_USE_FINAL_TRUE)
+ AC_SUBST(KDE_USE_FINAL_FALSE)
+])
+
+AC_DEFUN([KDE_CHECK_CLOSURE],
+[
+ AC_ARG_ENABLE(closure,
+ AC_HELP_STRING([--enable-closure],[delay template instantiation]),
+ kde_use_closure=$enableval, kde_use_closure=no)
+
+ KDE_NO_UNDEFINED=""
+ if test "x$kde_use_closure" = "xyes"; then
+ KDE_USE_CLOSURE_TRUE=""
+ KDE_USE_CLOSURE_FALSE="#"
+# CXXFLAGS="$CXXFLAGS $REPO"
+ else
+ KDE_USE_CLOSURE_TRUE="#"
+ KDE_USE_CLOSURE_FALSE=""
+ KDE_NO_UNDEFINED=""
+ case $host in
+ *-*-linux-gnu)
+ KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined],
+ [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined],
+ [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"],
+ [KDE_NO_UNDEFINED=""])],
+ [KDE_NO_UNDEFINED=""])
+ ;;
+ esac
+ fi
+ AC_SUBST(KDE_USE_CLOSURE_TRUE)
+ AC_SUBST(KDE_USE_CLOSURE_FALSE)
+ AC_SUBST(KDE_NO_UNDEFINED)
+])
+
+dnl Check if the linker supports --enable-new-dtags and --as-needed
+AC_DEFUN([KDE_CHECK_NEW_LDFLAGS],
+[
+ AC_ARG_ENABLE(new_ldflags,
+ AC_HELP_STRING([--enable-new-ldflags],
+ [enable the new linker flags]),
+ kde_use_new_ldflags=$enableval,
+ kde_use_new_ldflags=no)
+
+ LDFLAGS_AS_NEEDED=""
+ LDFLAGS_NEW_DTAGS=""
+ if test "x$kde_use_new_ldflags" = "xyes"; then
+ LDFLAGS_NEW_DTAGS=""
+ KDE_CHECK_COMPILER_FLAG([Wl,--enable-new-dtags],
+ [LDFLAGS_NEW_DTAGS="-Wl,--enable-new-dtags"],)
+
+ KDE_CHECK_COMPILER_FLAG([Wl,--as-needed],
+ [LDFLAGS_AS_NEEDED="-Wl,--as-needed"],)
+ fi
+ AC_SUBST(LDFLAGS_AS_NEEDED)
+ AC_SUBST(LDFLAGS_NEW_DTAGS)
+])
+
+AC_DEFUN([KDE_CHECK_NMCHECK],
+[
+ AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]),
+ kde_use_nmcheck=$enableval, kde_use_nmcheck=no)
+
+ if test "$kde_use_nmcheck" = "yes"; then
+ KDE_USE_NMCHECK_TRUE=""
+ KDE_USE_NMCHECK_FALSE="#"
+ else
+ KDE_USE_NMCHECK_TRUE="#"
+ KDE_USE_NMCHECK_FALSE=""
+ fi
+ AC_SUBST(KDE_USE_NMCHECK_TRUE)
+ AC_SUBST(KDE_USE_NMCHECK_FALSE)
+])
+
+AC_DEFUN([KDE_EXPAND_MAKEVAR], [
+savex=$exec_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+tmp=$$2
+while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done
+exec_prefix=$savex
+])
+
+dnl ------------------------------------------------------------------------
+dnl Now, the same with KDE
+dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed)
+dnl and $(kde_includes) will be the kdehdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_BASE_PATH_KDE],
+[
+AC_REQUIRE([KDE_CHECK_STL])
+AC_REQUIRE([AC_PATH_QT])dnl
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_CHECK_RPATH
+AC_MSG_CHECKING([for KDE])
+
+if test "${prefix}" != NONE; then
+ kde_includes=${includedir}
+ KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir)
+
+ kde_libraries=${libdir}
+ KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir)
+
+else
+ ac_kde_includes=
+ ac_kde_libraries=
+ kde_libraries=""
+ kde_includes=""
+fi
+
+AC_CACHE_VAL(ac_cv_have_kde,
+[#try to guess kde locations
+
+if test "$kde_qtver" = 1; then
+ kde_check_header="ksock.h"
+ kde_check_lib="libkdecore.la"
+else
+ kde_check_header="ksharedptr.h"
+ kde_check_lib="libkio.la"
+fi
+
+if test -z "$1"; then
+
+kde_incdirs="$kde_libs_prefix/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes"
+test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs"
+kde_incdirs="$ac_kde_includes $kde_incdirs"
+AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir)
+ac_kde_includes="$kde_incdir"
+
+if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then
+ AC_MSG_ERROR([
+in the prefix, you've chosen, are no KDE headers installed. This will fail.
+So, check this please and use another prefix!])
+fi
+
+kde_libdirs="$kde_libs_prefix/lib${kdelibsuff} /usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}"
+test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs"
+kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs"
+AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir)
+ac_kde_libraries="$kde_libdir"
+
+kde_widgetdir=NO
+dnl this might be somewhere else
+AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir)
+
+if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
+AC_MSG_ERROR([
+in the prefix, you've chosen, are no KDE libraries installed. This will fail.
+So, check this please and use another prefix!])
+fi
+
+if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then
+AC_MSG_ERROR([
+I can't find the designer plugins. These are required and should have been installed
+by kdelibs])
+fi
+
+if test -n "$kde_widgetdir"; then
+ kde_widgetdir="$kde_widgetdir/kde3/plugins/designer"
+fi
+
+
+if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then
+ ac_cv_have_kde="have_kde=no"
+else
+ ac_cv_have_kde="have_kde=yes \
+ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+fi
+
+else dnl test -z $1, e.g. from kdelibs
+
+ ac_cv_have_kde="have_kde=no"
+
+fi
+])dnl
+
+eval "$ac_cv_have_kde"
+
+if test "$have_kde" != "yes"; then
+ if test "${prefix}" = NONE; then
+ ac_kde_prefix="$ac_default_prefix"
+ else
+ ac_kde_prefix="$prefix"
+ fi
+ if test "$exec_prefix" = NONE; then
+ ac_kde_exec_prefix="$ac_kde_prefix"
+ AC_MSG_RESULT([will be installed in $ac_kde_prefix])
+ else
+ ac_kde_exec_prefix="$exec_prefix"
+ AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix])
+ fi
+
+ kde_libraries="${libdir}"
+ kde_includes="${includedir}"
+
+else
+ ac_cv_have_kde="have_kde=yes \
+ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+ AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes])
+
+ kde_libraries="$ac_kde_libraries"
+ kde_includes="$ac_kde_includes"
+fi
+AC_SUBST(kde_libraries)
+AC_SUBST(kde_includes)
+
+if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then
+ KDE_INCLUDES=""
+else
+ KDE_INCLUDES="-I$kde_includes"
+ all_includes="$KDE_INCLUDES $all_includes"
+fi
+
+KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION"
+
+KDE_LDFLAGS="-L$kde_libraries"
+if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then
+ all_libraries="$KDE_LDFLAGS $all_libraries"
+fi
+
+AC_SUBST(KDE_LDFLAGS)
+AC_SUBST(KDE_INCLUDES)
+
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+all_libraries="$all_libraries $USER_LDFLAGS"
+all_includes="$all_includes $USER_INCLUDES"
+AC_SUBST(all_includes)
+AC_SUBST(all_libraries)
+
+if test -z "$1"; then
+KDE_CHECK_UIC_PLUGINS
+fi
+
+ac_kde_libraries="$kde_libdir"
+
+AC_SUBST(AUTODIRS)
+
+
+])
+
+AC_DEFUN([KDE_CHECK_EXTRA_LIBS],
+[
+AC_MSG_CHECKING(for extra includes)
+AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]),
+ kde_use_extra_includes="$withval",
+ kde_use_extra_includes=NONE
+)
+kde_extra_includes=
+if test -n "$kde_use_extra_includes" && \
+ test "$kde_use_extra_includes" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_includes; do
+ kde_extra_includes="$kde_extra_includes $dir"
+ USER_INCLUDES="$USER_INCLUDES -I$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_includes="added"
+else
+ kde_use_extra_includes="no"
+fi
+AC_SUBST(USER_INCLUDES)
+
+AC_MSG_RESULT($kde_use_extra_includes)
+
+kde_extra_libs=
+AC_MSG_CHECKING(for extra libs)
+AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]),
+ kde_use_extra_libs=$withval,
+ kde_use_extra_libs=NONE
+)
+if test -n "$kde_use_extra_libs" && \
+ test "$kde_use_extra_libs" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_libs; do
+ kde_extra_libs="$kde_extra_libs $dir"
+ KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir"
+ USER_LDFLAGS="$USER_LDFLAGS -L$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_libs="added"
+else
+ kde_use_extra_libs="no"
+fi
+
+AC_SUBST(USER_LDFLAGS)
+
+AC_MSG_RESULT($kde_use_extra_libs)
+
+])
+
+AC_DEFUN([KDE_1_CHECK_PATH_HEADERS],
+[
+ AC_MSG_CHECKING([for KDE headers installed])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+cat > conftest.$ac_ext <<EOF
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+#include <stdio.h>
+#include "confdefs.h"
+#include <kapp.h>
+
+int main() {
+ printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data());
+ printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data());
+ printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data());
+ printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data());
+ printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data());
+ printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data());
+ printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data());
+ printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data());
+ printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data());
+ printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data());
+ printf("kde_wallpaperdir=\\"%s\\"\n",
+ KApplication::kde_wallpaperdir().data());
+ printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data());
+ printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data());
+ printf("kde_servicesdir=\\"/tmp/dummy\\"\n");
+ printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n");
+ printf("kde_moduledir=\\"/tmp/dummy\\"\n");
+ printf("kde_styledir=\\"/tmp/dummy\\"\n");
+ printf("kde_widgetdir=\\"/tmp/dummy\\"\n");
+ printf("xdg_appsdir=\\"/tmp/dummy\\"\n");
+ printf("xdg_menudir=\\"/tmp/dummy\\"\n");
+ printf("xdg_directorydir=\\"/tmp/dummy\\"\n");
+ printf("kde_kcfgdir=\\"/tmp/dummy\\"\n");
+ return 0;
+ }
+EOF
+
+ ac_save_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$all_includes $CPPFLAGS"
+ if AC_TRY_EVAL(ac_compile); then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_ERROR([your system is not able to compile a small KDE application!
+Check, if you installed the KDE header files correctly.
+For more details about this problem, look at the end of config.log.])
+ fi
+ CPPFLAGS=$ac_save_CPPFLAGS
+
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([KDE_CHECK_KDEQTADDON],
+[
+AC_MSG_CHECKING(for kde-qt-addon)
+AC_CACHE_VAL(kde_cv_have_kdeqtaddon,
+[
+ kde_ldflags_safe="$LDFLAGS"
+ kde_libs_safe="$LIBS"
+ kde_cxxflags_safe="$CXXFLAGS"
+
+ LIBS="-lkde-qt-addon $LIBQT $LIBS"
+ CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes"
+ LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS"
+
+ AC_TRY_LINK([
+ #include <qdom.h>
+ ],
+ [
+ QDomDocument doc;
+ ],
+ kde_cv_have_kdeqtaddon=yes,
+ kde_cv_have_kdeqtaddon=no
+ )
+
+ LDFLAGS=$kde_ldflags_safe
+ LIBS=$kde_libs_safe
+ CXXFLAGS=$kde_cxxflags_safe
+])
+
+AC_MSG_RESULT($kde_cv_have_kdeqtaddon)
+
+if test "$kde_cv_have_kdeqtaddon" = "no"; then
+ AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first.
+It is a separate package (and CVS module) named kde-qt-addon.])
+fi
+])
+
+AC_DEFUN([KDE_CREATE_LIBS_ALIASES],
+[
+ AC_REQUIRE([KDE_MISC_TESTS])
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+ AC_REQUIRE([K_PATH_X])
+
+if test $kde_qtver = 3; then
+ case $host in
+ *cygwin*) lib_kded="-lkdeinit_kded" ;;
+ *) lib_kded="" ;;
+ esac
+ AC_SUBST(LIB_KDED, $lib_kded)
+ AC_SUBST(LIB_KDECORE, "-lkdecore")
+ AC_SUBST(LIB_KDEUI, "-lkdeui")
+ AC_SUBST(LIB_KIO, "-lkio")
+ AC_SUBST(LIB_KJS, "-lkjs")
+ AC_SUBST(LIB_SMB, "-lsmb")
+ AC_SUBST(LIB_KAB, "-lkab")
+ AC_SUBST(LIB_KABC, "-lkabc")
+ AC_SUBST(LIB_KHTML, "-lkhtml")
+ AC_SUBST(LIB_KSPELL, "-lkspell")
+ AC_SUBST(LIB_KPARTS, "-lkparts")
+ AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+ AC_SUBST(LIB_KUTILS, "-lkutils")
+ AC_SUBST(LIB_KDEPIM, "-lkdepim")
+ AC_SUBST(LIB_KIMPROXY, "-lkimproxy")
+ AC_SUBST(LIB_KNEWSTUFF, "-lknewstuff")
+ AC_SUBST(LIB_KDNSSD, "-lkdnssd")
+ AC_SUBST(LIB_KUNITTEST, "-lkunittest")
+# these are for backward compatibility
+ AC_SUBST(LIB_KSYCOCA, "-lkio")
+ AC_SUBST(LIB_KFILE, "-lkio")
+elif test $kde_qtver = 2; then
+ AC_SUBST(LIB_KDECORE, "-lkdecore")
+ AC_SUBST(LIB_KDEUI, "-lkdeui")
+ AC_SUBST(LIB_KIO, "-lkio")
+ AC_SUBST(LIB_KSYCOCA, "-lksycoca")
+ AC_SUBST(LIB_SMB, "-lsmb")
+ AC_SUBST(LIB_KFILE, "-lkfile")
+ AC_SUBST(LIB_KAB, "-lkab")
+ AC_SUBST(LIB_KHTML, "-lkhtml")
+ AC_SUBST(LIB_KSPELL, "-lkspell")
+ AC_SUBST(LIB_KPARTS, "-lkparts")
+ AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+else
+ AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)")
+ AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)")
+ AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)")
+ AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)")
+ AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)")
+fi
+])
+
+AC_DEFUN([AC_PATH_KDE],
+[
+ AC_BASE_PATH_KDE
+ AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]),
+ [
+ if test "$enableval" = "no";
+ then ac_use_path_checking="default"
+ else ac_use_path_checking=""
+ fi
+ ],
+ [
+ if test "$kde_qtver" = 1;
+ then ac_use_path_checking=""
+ else ac_use_path_checking="default"
+ fi
+ ]
+ )
+
+ AC_CREATE_KFSSTND($ac_use_path_checking)
+
+ AC_SUBST_KFSSTND
+ KDE_CREATE_LIBS_ALIASES
+])
+
+dnl KDE_CHECK_FUNC_EXT(<func>, [headers], [sample-use], [C prototype], [autoheader define], [call if found])
+AC_DEFUN([KDE_CHECK_FUNC_EXT],
+[
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(kde_cv_func_$1,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+save_CXXFLAGS="$CXXFLAGS"
+kde_safe_LIBS="$LIBS"
+LIBS="$LIBS $X_EXTRA_LIBS"
+if test "$GXX" = "yes"; then
+CXXFLAGS="$CXXFLAGS -pedantic-errors"
+fi
+AC_TRY_COMPILE([
+$2
+],
+[
+$3
+],
+kde_cv_func_$1=yes,
+kde_cv_func_$1=no)
+CXXFLAGS="$save_CXXFLAGS"
+LIBS="$kde_safe_LIBS"
+AC_LANG_RESTORE
+])
+
+AC_MSG_RESULT($kde_cv_func_$1)
+
+AC_MSG_CHECKING([if $1 needs custom prototype])
+AC_CACHE_VAL(kde_cv_proto_$1,
+[
+if test "x$kde_cv_func_$1" = xyes; then
+ kde_cv_proto_$1=no
+else
+ case "$1" in
+ setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat)
+ kde_cv_proto_$1="yes - in libkdefakes"
+ ;;
+ *)
+ kde_cv_proto_$1=unknown
+ ;;
+ esac
+fi
+
+if test "x$kde_cv_proto_$1" = xunknown; then
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ kde_safe_libs=$LIBS
+ LIBS="$LIBS $X_EXTRA_LIBS"
+ AC_TRY_LINK([
+$2
+
+extern "C" $4;
+],
+[
+$3
+],
+[ kde_cv_func_$1=yes
+ kde_cv_proto_$1=yes ],
+ [kde_cv_proto_$1="$1 unavailable"]
+)
+LIBS=$kde_safe_libs
+AC_LANG_RESTORE
+fi
+])
+AC_MSG_RESULT($kde_cv_proto_$1)
+
+if test "x$kde_cv_func_$1" = xyes; then
+ AC_DEFINE(HAVE_$5, 1, [Define if you have $1])
+ $6
+fi
+if test "x$kde_cv_proto_$1" = xno; then
+ AC_DEFINE(HAVE_$5_PROTO, 1,
+ [Define if you have the $1 prototype])
+fi
+
+AH_VERBATIM([_HAVE_$5_PROTO],
+[
+#if !defined(HAVE_$5_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+$4;
+#ifdef __cplusplus
+}
+#endif
+#endif
+])
+])
+
+AC_DEFUN([AC_CHECK_SETENV],
+[
+ KDE_CHECK_FUNC_EXT(setenv, [
+#include <stdlib.h>
+],
+ [setenv("VAR", "VALUE", 1);],
+ [int setenv (const char *, const char *, int)],
+ [SETENV])
+])
+
+AC_DEFUN([AC_CHECK_UNSETENV],
+[
+ KDE_CHECK_FUNC_EXT(unsetenv, [
+#include <stdlib.h>
+],
+ [unsetenv("VAR");],
+ [void unsetenv (const char *)],
+ [UNSETENV])
+])
+
+AC_DEFUN([AC_CHECK_GETDOMAINNAME],
+[
+ KDE_CHECK_FUNC_EXT(getdomainname, [
+#include <stdlib.h>
+#include <unistd.h>
+#include <netdb.h>
+],
+ [
+char buffer[200];
+getdomainname(buffer, 200);
+],
+ [#include <sys/types.h>
+ int getdomainname (char *, size_t)],
+ [GETDOMAINNAME])
+])
+
+AC_DEFUN([AC_CHECK_GETHOSTNAME],
+[
+ KDE_CHECK_FUNC_EXT(gethostname, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+char buffer[200];
+gethostname(buffer, 200);
+],
+ [int gethostname (char *, unsigned int)],
+ [GETHOSTNAME])
+])
+
+AC_DEFUN([AC_CHECK_USLEEP],
+[
+ KDE_CHECK_FUNC_EXT(usleep, [
+#include <unistd.h>
+],
+ [
+usleep(200);
+],
+ [int usleep (unsigned int)],
+ [USLEEP])
+])
+
+
+AC_DEFUN([AC_CHECK_RANDOM],
+[
+ KDE_CHECK_FUNC_EXT(random, [
+#include <stdlib.h>
+],
+ [
+random();
+],
+ [long int random(void)],
+ [RANDOM])
+
+ KDE_CHECK_FUNC_EXT(srandom, [
+#include <stdlib.h>
+],
+ [
+srandom(27);
+],
+ [void srandom(unsigned int)],
+ [SRANDOM])
+
+])
+
+AC_DEFUN([AC_CHECK_INITGROUPS],
+[
+ KDE_CHECK_FUNC_EXT(initgroups, [
+#include <sys/types.h>
+#include <unistd.h>
+#include <grp.h>
+],
+ [
+char buffer[200];
+initgroups(buffer, 27);
+],
+ [int initgroups(const char *, gid_t)],
+ [INITGROUPS])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMPS],
+[
+ KDE_CHECK_FUNC_EXT(mkstemps, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkstemps("/tmp/aaaXXXXXX", 6);
+],
+ [int mkstemps(char *, int)],
+ [MKSTEMPS])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMP],
+[
+ KDE_CHECK_FUNC_EXT(mkstemp, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkstemp("/tmp/aaaXXXXXX");
+],
+ [int mkstemp(char *)],
+ [MKSTEMP])
+])
+
+AC_DEFUN([AC_CHECK_MKDTEMP],
+[
+ KDE_CHECK_FUNC_EXT(mkdtemp, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkdtemp("/tmp/aaaXXXXXX");
+],
+ [char *mkdtemp(char *)],
+ [MKDTEMP])
+])
+
+
+AC_DEFUN([AC_CHECK_RES_INIT],
+[
+ AC_MSG_CHECKING([if res_init needs -lresolv])
+ kde_libs_safe="$LIBS"
+ LIBS="$LIBS $X_EXTRA_LIBS -lresolv"
+ AC_TRY_LINK(
+ [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+ ],
+ [
+ res_init();
+ ],
+ [
+ LIBRESOLV="-lresolv"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function])
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+ LIBS=$kde_libs_safe
+ AC_SUBST(LIBRESOLV)
+
+ KDE_CHECK_FUNC_EXT(res_init,
+ [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+ ],
+ [res_init()],
+ [int res_init(void)],
+ [RES_INIT])
+])
+
+AC_DEFUN([AC_CHECK_STRLCPY],
+[
+ KDE_CHECK_FUNC_EXT(strlcpy, [
+#include <string.h>
+],
+[ char buf[20];
+ strlcpy(buf, "KDE function test", sizeof(buf));
+],
+ [unsigned long strlcpy(char*, const char*, unsigned long)],
+ [STRLCPY])
+])
+
+AC_DEFUN([AC_CHECK_STRLCAT],
+[
+ KDE_CHECK_FUNC_EXT(strlcat, [
+#include <string.h>
+],
+[ char buf[20];
+ buf[0]='\0';
+ strlcat(buf, "KDE function test", sizeof(buf));
+],
+ [unsigned long strlcat(char*, const char*, unsigned long)],
+ [STRLCAT])
+])
+
+AC_DEFUN([AC_CHECK_RES_QUERY],
+[
+ KDE_CHECK_FUNC_EXT(res_query, [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <netdb.h>
+],
+[
+res_query(NULL, 0, 0, NULL, 0);
+],
+ [int res_query(const char *, int, int, unsigned char *, int)],
+ [RES_QUERY])
+])
+
+AC_DEFUN([AC_CHECK_DN_SKIPNAME],
+[
+ KDE_CHECK_FUNC_EXT(dn_skipname, [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+],
+[
+dn_skipname (NULL, NULL);
+],
+ [int dn_skipname (unsigned char *, unsigned char *)],
+ [DN_SKIPNAME])
+])
+
+
+AC_DEFUN([AC_FIND_GIF],
+ [AC_MSG_CHECKING([for giflib])
+AC_CACHE_VAL(ac_cv_lib_gif,
+[ac_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$all_libraries -lgif -lX11 $LIBSOCKET"
+else
+LIBS="$all_libraries -lgif"
+fi
+AC_TRY_LINK(dnl
+[
+#ifdef __cplusplus
+extern "C" {
+#endif
+int GifLastError(void);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+],
+ [return GifLastError();],
+ eval "ac_cv_lib_gif=yes",
+ eval "ac_cv_lib_gif=no")
+LIBS="$ac_save_LIBS"
+])dnl
+if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif])
+else
+ AC_MSG_ERROR(You need giflib30. Please install the kdesupport package)
+fi
+])
+
+AC_DEFUN([KDE_FIND_JPEG_HELPER],
+[
+AC_MSG_CHECKING([for libjpeg$2])
+AC_CACHE_VAL(ac_cv_lib_jpeg_$1,
+[
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(
+[
+#ifdef __cplusplus
+extern "C" {
+#endif
+void jpeg_CreateDecompress();
+#ifdef __cplusplus
+}
+#endif
+],
+[jpeg_CreateDecompress();],
+ eval "ac_cv_lib_jpeg_$1=-ljpeg$2",
+ eval "ac_cv_lib_jpeg_$1=no")
+LIBS="$ac_save_LIBS"
+CFLAGS="$ac_save_CFLAGS"
+])
+
+if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then
+ LIBJPEG="$ac_cv_lib_jpeg_$1"
+ AC_MSG_RESULT($ac_cv_lib_jpeg_$1)
+else
+ AC_MSG_RESULT(no)
+ $3
+fi
+
+])
+
+AC_DEFUN([AC_FIND_JPEG],
+[
+dnl first look for libraries
+KDE_FIND_JPEG_HELPER(6b, 6b,
+ KDE_FIND_JPEG_HELPER(normal, [],
+ [
+ LIBJPEG=
+ ]
+ )
+)
+
+dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h
+dnl requires system dependent includes loaded before it)
+jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes"
+AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir)
+test "x$jpeg_incdir" = xNO && jpeg_incdir=
+
+dnl if headers _and_ libraries are missing, this is no error, and we
+dnl continue with a warning (the user will get no jpeg support in khtml)
+dnl if only one is missing, it means a configuration error, but we still
+dnl only warn
+if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg])
+else
+ if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then
+ AC_MSG_WARN([
+There is an installation error in jpeg support. You seem to have only one
+of either the headers _or_ the libraries installed. You may need to either
+provide correct --with-extra-... options, or the development package of
+libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/
+Disabling JPEG support.
+])
+ else
+ AC_MSG_WARN([libjpeg not found. disable JPEG support.])
+ fi
+ jpeg_incdir=
+ LIBJPEG=
+fi
+
+AC_SUBST(LIBJPEG)
+AH_VERBATIM(_AC_CHECK_JPEG,
+[/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+])
+])
+
+AC_DEFUN([KDE_CHECK_QT_JPEG],
+[
+if test -n "$LIBJPEG"; then
+AC_MSG_CHECKING([if Qt needs $LIBJPEG])
+AC_CACHE_VAL(kde_cv_qt_jpeg,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS $LIBQT"
+LIBS=`echo $LIBS | sed "s/$LIBJPEG//"`
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(
+[#include <qapplication.h>],
+ [
+ int argc;
+ char** argv;
+ QApplication app(argc, argv);],
+ eval "kde_cv_qt_jpeg=no",
+ eval "kde_cv_qt_jpeg=yes")
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_RESTORE
+fi
+])
+
+if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then
+ AC_MSG_RESULT(yes)
+ LIBJPEG_QT='$(LIBJPEG)'
+else
+ AC_MSG_RESULT(no)
+ LIBJPEG_QT=
+fi
+
+])
+
+AC_DEFUN([AC_FIND_ZLIB],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for libz])
+AC_CACHE_VAL(ac_cv_lib_z,
+[
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(dnl
+[
+#include<zlib.h>
+#include<string.h>
+],
+[
+ char buf[42];
+ gzFile f = (gzFile) 0;
+ /* this would segfault.. but we only link, don't run */
+ (void) gzgets(f, buf, sizeof(buf));
+
+ return (strcmp(zlibVersion(), ZLIB_VERSION) == 0);
+],
+ eval "ac_cv_lib_z='-lz'",
+ eval "ac_cv_lib_z=no")
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if test ! "$ac_cv_lib_z" = no; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz])
+ LIBZ="$ac_cv_lib_z"
+ AC_MSG_RESULT($ac_cv_lib_z)
+else
+ AC_MSG_ERROR(not found.
+ Possibly configure picks up an outdated version
+ installed by XFree86. Remove it from your system.
+
+ Check your installation and look into config.log)
+ LIBZ=""
+fi
+AC_SUBST(LIBZ)
+])
+
+AC_DEFUN([KDE_TRY_TIFFLIB],
+[
+AC_MSG_CHECKING([for libtiff $1])
+
+AC_CACHE_VAL(kde_cv_libtiff_$1,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm"
+else
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm"
+fi
+kde_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+[
+#include<tiffio.h>
+],
+ [return (TIFFOpen( "", "r") == 0); ],
+[
+ kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ"
+], [
+ kde_cv_libtiff_$1=no
+])
+
+LIBS="$kde_save_LIBS"
+CXXFLAGS="$kde_save_CXXFLAGS"
+AC_LANG_RESTORE
+])
+
+if test "$kde_cv_libtiff_$1" = "no"; then
+ AC_MSG_RESULT(no)
+ LIBTIFF=""
+ $3
+else
+ LIBTIFF="$kde_cv_libtiff_$1"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff])
+ $2
+fi
+
+])
+
+AC_DEFUN([AC_FIND_TIFF],
+[
+AC_REQUIRE([K_PATH_X])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+KDE_TRY_TIFFLIB(tiff, [],
+ KDE_TRY_TIFFLIB(tiff34))
+
+AC_SUBST(LIBTIFF)
+])
+
+AC_DEFUN([KDE_FIND_LIBEXR],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_CACHE_VAL(ac_cv_libexr,
+[
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+
+ AC_MSG_CHECKING([for OpenEXR libraries])
+
+ if test "$PKG_CONFIG" = "no" ; then
+ AC_MSG_RESULT(no)
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ if ! $PKG_CONFIG --exists OpenEXR ; then
+ AC_MSG_RESULT(no)
+ EXRSTATUS=no
+ else
+ if ! $PKG_CONFIG --atleast-version="1.1.1" OpenEXR ; then
+ AC_MSG_RESULT(no)
+ EXRSTATUS=old
+ else
+ kde_save_LIBS="$LIBS"
+ LIBS="$LIBS $all_libraries $USER_LDFLAGS `pkg-config --libs OpenEXR` $LIBZ"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ kde_save_CXXFLAGS="$CXXFLAGS"
+ EXR_FLAGS=`$PKG_CONFIG --cflags OpenEXR`
+ CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES $EXR_FLAGS"
+
+ AC_TRY_LINK(dnl
+ [
+ #include <ImfRgbaFile.h>
+ ],
+ [
+ using namespace Imf;
+ RgbaInputFile file ("dummy");
+ return 0;
+ ],
+ eval "ac_cv_libexr='`pkg-config --libs OpenEXR`'",
+ eval "ac_cv_libexr=no"
+ )
+ LIBS="$kde_save_LIBS"
+ CXXFLAGS="$kde_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])dnl
+ if eval "test ! \"`echo $ac_cv_libexr`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_EXR, 1, [Define if you have OpenEXR])
+ LIB_EXR="$ac_cv_libexr"
+ AC_MSG_RESULT($ac_cv_libexr)
+ else
+ AC_MSG_RESULT(no)
+ LIB_EXR=""
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST(LIB_EXR)
+ AC_SUBST(EXR_FLAGS)
+])
+
+
+
+AC_DEFUN([AC_FIND_PNG],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_MSG_CHECKING([for libpng])
+AC_CACHE_VAL(ac_cv_lib_png,
+[
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET"
+else
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm"
+fi
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+ [
+ #include<png.h>
+ ],
+ [
+ png_structp png_ptr = png_create_read_struct( /* image ptr */
+ PNG_LIBPNG_VER_STRING, 0, 0, 0 );
+ return( png_ptr != 0 );
+ ],
+ eval "ac_cv_lib_png='-lpng $LIBZ -lm'",
+ eval "ac_cv_lib_png=no"
+)
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng])
+ LIBPNG="$ac_cv_lib_png"
+ AC_SUBST(LIBPNG)
+ AC_MSG_RESULT($ac_cv_lib_png)
+else
+ AC_MSG_RESULT(no)
+ LIBPNG=""
+ AC_SUBST(LIBPNG)
+fi
+])
+
+
+AC_DEFUN([AC_FIND_JASPER],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_JPEG])
+AC_MSG_CHECKING([for jasper])
+AC_CACHE_VAL(ac_cv_jasper,
+[
+kde_save_LIBS="$LIBS"
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+ [
+ #include<jasper/jasper.h>
+ ],
+ [
+ return( jas_init() );
+ ],
+ eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'",
+ eval "ac_cv_jasper=no"
+)
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper])
+ LIB_JASPER="$ac_cv_jasper"
+ AC_MSG_RESULT($ac_cv_jasper)
+else
+ AC_MSG_RESULT(no)
+ LIB_JASPER=""
+fi
+AC_SUBST(LIB_JASPER)
+])
+
+AC_DEFUN([AC_CHECK_BOOL],
+[
+ AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool])
+])
+
+AC_DEFUN([AC_CHECK_GNU_EXTENSIONS],
+[
+AC_MSG_CHECKING(if you need GNU extensions)
+AC_CACHE_VAL(ac_cv_gnu_extensions,
+[
+cat > conftest.c << EOF
+#include <features.h>
+
+#ifdef __GNU_LIBRARY__
+yes
+#endif
+EOF
+
+if (eval "$ac_cpp conftest.c") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ rm -rf conftest*
+ ac_cv_gnu_extensions=yes
+else
+ ac_cv_gnu_extensions=no
+fi
+])
+
+AC_MSG_RESULT($ac_cv_gnu_extensions)
+if test "$ac_cv_gnu_extensions" = "yes"; then
+ AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_COMPILER_FLAG],
+[
+AC_MSG_CHECKING([whether $CXX supports -$1])
+kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'`
+AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -$1"
+ AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
+ CXXFLAGS="$save_CXXFLAGS"
+ AC_LANG_RESTORE
+])
+if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ :
+ $2
+else
+ AC_MSG_RESULT(no)
+ :
+ $3
+fi
+])
+
+AC_DEFUN([KDE_CHECK_C_COMPILER_FLAG],
+[
+AC_MSG_CHECKING([whether $CC supports -$1])
+kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'`
+AC_CACHE_VAL(kde_cv_prog_cc_$kde_cache,
+[
+ AC_LANG_SAVE
+ AC_LANG_C
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -$1"
+ AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cc_$kde_cache=yes"], [])
+ CFLAGS="$save_CFLAGS"
+ AC_LANG_RESTORE
+])
+if eval "test \"`echo '$kde_cv_prog_cc_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ :
+ $2
+else
+ AC_MSG_RESULT(no)
+ :
+ $3
+fi
+])
+
+
+dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables
+dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
+dnl it's all white-space separated
+AC_DEFUN([AC_REMOVE_FORBIDDEN],
+[ __val=$$1
+ __forbid=" $2 "
+ if test -n "$__val"; then
+ __new=""
+ ac_save_IFS=$IFS
+ IFS=" "
+ for i in $__val; do
+ case "$__forbid" in
+ *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
+ *) # Careful to not add spaces, where there were none, because otherwise
+ # libtool gets confused, if we change e.g. CXX
+ if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
+ esac
+ done
+ IFS=$ac_save_IFS
+ $1=$__new
+ fi
+])
+
+
+AC_DEFUN([KDE_CHECK_FOR_BAD_COMPILER],
+[
+ AC_MSG_CHECKING([whether $CC is blacklisted])
+
+ dnl In theory we have tu run this test against $CC and $CXX
+ dnl in C and in C++ mode, because its perfectly legal for
+ dnl the user to mix compiler versions, since C has a defined
+ dnl ABI.
+ dnl
+ dnl For now, we assume the user is not on crack.
+
+ AC_TRY_COMPILE([
+#ifdef __GNUC__
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 0
+choke me
+#endif
+#endif
+], ,
+ kde_bad_compiler=no,
+ kde_bad_compiler=yes
+)
+
+ AC_MSG_RESULT($kde_bad_compiler)
+
+if test "$kde_bad_compiler" = "yes"; then
+ AC_MSG_ERROR([
+
+This particular compiler version is blacklisted because it
+is known to miscompile KDE. Please use a newer version, or
+if that is not yet available, choose an older version.
+
+Please do not report a bug or bother us reporting this
+configure error. We know about it, and we introduced
+it by intention to avoid untraceable bugs or crashes in KDE.
+
+])
+fi
+
+])
+
+
+AC_DEFUN([KDE_CHECK_FOR_OPT_NOINLINE_MATCH],
+[
+ AC_CACHE_CHECK([whether system headers can cope with -O2 -fno-inline],
+ kde_cv_opt_noinline_match,
+ [
+ kde_cv_opt_noinline_match=irrelevant
+ dnl if we don't use both -O2 and -fno-inline, this check is moot
+ if echo "$CFLAGS" | grep -e -O2 >/dev/null 2>/dev/null \
+ && echo "$CFLAGS" | grep -e -fno-inline >/dev/null 2>/dev/null ; then
+
+ ac_cflags_save="$CFLAGS"
+ CFLAGS="$CFLAGS -D_USE_GNU"
+
+ AC_TRY_LINK([
+ #include <string.h>
+], [ const char *pt, *et;
+ et = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p ( ";," ) && ((size_t)(const void *)(( ";," )+ 1) - (size_t)(const void *)( ";," ) == 1) ? ((__a0 =((__const char *) ( ";," ))[0], __a0 == '\0') ? ((void) ( pt ),((void *)0) ) : ((__a1 = ((__const char *) ( ";," ))[1], __a1== '\0') ? (__extension__ (__builtin_constant_p ( __a0 ) && ( __a0 ) == '\0' ? (char *) __rawmemchr ( pt , __a0) : strchr( pt , __a0 ))) : ((__a2 = ((__const char *) ( ";," ))[2], __a2 == '\0') ? __strpbrk_c2 ( pt , __a0, __a1) :(((__const char *) ( ";," ))[3] == '\0' ? __strpbrk_c3 ( pt ,__a0, __a1, __a2): strpbrk ( pt , ";," ))))) : strpbrk ( pt , ";," )); }) ;
+],
+ kde_cv_opt_noinline_match=yes,
+ kde_cv_opt_noinline_match=no
+ )
+
+ CFLAGS="$ac_cflags_save"
+ fi
+ ])
+])
+
+
+dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
+AC_DEFUN([AC_VALIDIFY_CXXFLAGS],
+[dnl
+if test "x$kde_use_qt_emb" != "xyes"; then
+ AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
+else
+ AC_REMOVE_FORBIDDEN(CXX, [-rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
+fi
+])
+
+AC_DEFUN([AC_CHECK_COMPILERS],
+[
+ AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]),
+ [
+ case $enableval in
+ yes)
+ kde_use_debug_code="yes"
+ kde_use_debug_define=no
+ ;;
+ full)
+ kde_use_debug_code="full"
+ kde_use_debug_define=no
+ ;;
+ *)
+ kde_use_debug_code="no"
+ kde_use_debug_define=yes
+ ;;
+ esac
+ ],
+ [kde_use_debug_code="no"
+ kde_use_debug_define=no
+ ])
+
+ dnl Just for configure --help
+ AC_ARG_ENABLE(dummyoption,
+ AC_HELP_STRING([--disable-debug],
+ [disables debug output and debug symbols [default=no]]),
+ [],[])
+
+ AC_ARG_ENABLE(strict,
+ AC_HELP_STRING([--enable-strict],
+ [compiles with strict compiler options (may not work!)]),
+ [
+ if test $enableval = "no"; then
+ kde_use_strict_options="no"
+ else
+ kde_use_strict_options="yes"
+ fi
+ ], [kde_use_strict_options="no"])
+
+ AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similar]),
+ [
+ if test $enableval = "no"; then
+ kde_use_warnings="no"
+ else
+ kde_use_warnings="yes"
+ fi
+ ], [kde_use_warnings="yes"])
+
+ dnl enable warnings for debug build
+ if test "$kde_use_debug_code" != "no"; then
+ kde_use_warnings=yes
+ fi
+
+ AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]),
+ [kde_use_profiling=$enableval],
+ [kde_use_profiling="no"]
+ )
+
+ dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
+ CFLAGS=" $CFLAGS"
+
+ AC_PROG_CC
+
+ AC_PROG_CPP
+
+ if test "$GCC" = "yes"; then
+ if test "$kde_use_debug_code" != "no"; then
+ if test $kde_use_debug_code = "full"; then
+ CFLAGS="-g3 -fno-inline $CFLAGS"
+ else
+ CFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CFLAGS"
+ fi
+ else
+ CFLAGS="-O2 $CFLAGS"
+ fi
+ fi
+
+ if test "$kde_use_debug_define" = "yes"; then
+ CFLAGS="-DNDEBUG $CFLAGS"
+ fi
+
+
+ case "$host" in
+ *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";;
+ *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";;
+ esac
+
+ if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then
+ LDFLAGS=""
+ fi
+
+ CXXFLAGS=" $CXXFLAGS"
+
+ AC_PROG_CXX
+
+ KDE_CHECK_FOR_BAD_COMPILER
+
+ if test "$GXX" = "yes" || test "$CXX" = "KCC"; then
+ if test "$kde_use_debug_code" != "no"; then
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS"
+ else
+ if test "$kde_use_debug_code" = "full"; then
+ CXXFLAGS="-g3 -fno-inline $CXXFLAGS"
+ else
+ CXXFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CXXFLAGS"
+ fi
+ fi
+ KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"])
+
+ dnl convenience compiler flags
+ KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""])
+ AC_SUBST(WOVERLOADED_VIRTUAL)
+ else
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="+K3 $CXXFLAGS"
+ else
+ CXXFLAGS="-O2 $CXXFLAGS"
+ fi
+ fi
+ fi
+
+ if test "$kde_use_debug_define" = "yes"; then
+ CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS"
+ fi
+
+ if test "$kde_use_profiling" = "yes"; then
+ KDE_CHECK_COMPILER_FLAG(pg,
+ [
+ CFLAGS="-pg $CFLAGS"
+ CXXFLAGS="-pg $CXXFLAGS"
+ ])
+ fi
+
+ if test "$kde_use_warnings" = "yes"; then
+ if test "$GCC" = "yes"; then
+ CXXFLAGS="-Wall -W -Wpointer-arith $CXXFLAGS"
+ case $host in
+ *-*-linux-gnu)
+ CFLAGS="-std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS"
+ CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts $CXXFLAGS"
+ KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"])
+ KDE_CHECK_C_COMPILER_FLAG(Wmissing-format-attribute, [CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"])
+ ;;
+ esac
+ KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"])
+ KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"])
+ dnl ### FIXME: revert for KDE 4
+ KDE_CHECK_COMPILER_FLAG(Wno-non-virtual-dtor,[CXXFLAGS="$CXXFLAGS -Wno-non-virtual-dtor"])
+ fi
+ fi
+
+ if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then
+ CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS"
+ fi
+
+ AC_ARG_ENABLE(pch,
+ AC_HELP_STRING([--enable-pch],
+ [enables precompiled header support (currently only KCC or gcc >=3.4+unsermake) [default=no]]),
+ [ kde_use_pch=$enableval ],[ kde_use_pch=no ])
+
+ HAVE_GCC_VISIBILITY=0
+ AC_SUBST([HAVE_GCC_VISIBILITY])
+
+ if test "$GXX" = "yes"; then
+ gcc_no_reorder_blocks=NO
+ KDE_CHECK_COMPILER_FLAG(fno-reorder-blocks,[gcc_no_reorder_blocks=YES])
+ if test $kde_use_debug_code != "no" && \
+ test $kde_use_debug_code != "full" && \
+ test "YES" = "$gcc_no_reorder_blocks" ; then
+ CXXFLAGS="$CXXFLAGS -fno-reorder-blocks"
+ CFLAGS="$CFLAGS -fno-reorder-blocks"
+ fi
+ KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"])
+ KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"])
+ KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"])
+ KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= )
+ ENABLE_PERMISSIVE_FLAG="-fpermissive"
+
+ if test "$kde_use_pch" = "yes"; then
+ AC_MSG_CHECKING(whether gcc supports precompiling c header files)
+ echo >conftest.h
+ if $CC -x c-header conftest.h >/dev/null 2>/dev/null; then
+ kde_gcc_supports_pch=yes
+ AC_MSG_RESULT(yes)
+ else
+ kde_gcc_supports_pch=no
+ AC_MSG_RESULT(no)
+ fi
+ if test "$kde_gcc_supports_pch" = "yes"; then
+ AC_MSG_CHECKING(whether gcc supports precompiling c++ header files)
+ if $CXX -x c++-header conftest.h >/dev/null 2>/dev/null; then
+ kde_gcc_supports_pch=yes
+ AC_MSG_RESULT(yes)
+ else
+ kde_gcc_supports_pch=no
+ AC_MSG_RESULT(no)
+ fi
+ fi
+ rm -f conftest.h conftest.h.gch
+ fi
+
+ KDE_CHECK_FOR_OPT_NOINLINE_MATCH
+ if test "x$kde_cv_opt_noinline_match" = "xno" ; then
+ CFLAGS="`echo "$CFLAGS" | sed "s/ -fno-inline//"`"
+ fi
+ fi
+ AM_CONDITIONAL(unsermake_enable_pch, test "$kde_use_pch" = "yes" && test "$kde_gcc_supports_pch" = "yes")
+ if test "$CXX" = "KCC"; then
+ dnl unfortunately we currently cannot disable exception support in KCC
+ dnl because doing so is binary incompatible and Qt by default links with exceptions :-(
+ dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"])
+ dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= )
+
+ if test "$kde_use_pch" = "yes"; then
+ dnl TODO: support --pch-dir!
+ KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"])
+ dnl the below works (but the dir must exist), but it's
+ dnl useless for a whole package.
+ dnl The are precompiled headers for each source file, so when compiling
+ dnl from scratch, it doesn't make a difference, and they take up
+ dnl around ~5Mb _per_ sourcefile.
+ dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp,
+ dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"])
+ fi
+ dnl this flag controls inlining. by default KCC inlines in optimisation mode
+ dnl all implementations that are defined inside the class {} declaration.
+ dnl because of templates-compatibility with broken gcc compilers, this
+ dnl can cause excessive inlining. This flag limits it to a sane level
+ KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"])
+ KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"])
+ KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"])
+ KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"])
+ dnl Some source files are shared between multiple executables
+ dnl (or libraries) and some of those need template instantiations.
+ dnl In that case KCC needs to compile those sources with
+ dnl --one_instantiation_per_object. To make it easy for us we compile
+ dnl _all_ objects with that flag (--one_per is a shorthand).
+ KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"])
+ fi
+ AC_SUBST(USE_EXCEPTIONS)
+ dnl obsolete macro - provided to keep things going
+ USE_RTTI=
+ AC_SUBST(USE_RTTI)
+
+ case "$host" in
+ *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;;
+ *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";;
+ *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";;
+ *-*-solaris*)
+ if test "$GXX" = yes; then
+ libstdcpp=`$CXX -print-file-name=libstdc++.so`
+ if test ! -f $libstdcpp; then
+ AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so])
+ fi
+ fi
+ ;;
+ esac
+
+ AC_VALIDIFY_CXXFLAGS
+
+ AC_PROG_CXXCPP
+
+ if test "$GCC" = yes; then
+ NOOPT_CFLAGS=-O0
+ fi
+ KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0])
+
+ AC_ARG_ENABLE(coverage,
+ AC_HELP_STRING([--enable-coverage],[use gcc coverage testing]), [
+ if test "$am_cv_CC_dependencies_compiler_type" = "gcc3"; then
+ ac_coverage_compiler="-fprofile-arcs -ftest-coverage"
+ ac_coverage_linker="-lgcc"
+ elif test "$am_cv_CC_dependencies_compiler_type" = "gcc"; then
+ ac_coverage_compiler="-fprofile-arcs -ftest-coverage"
+ ac_coverage_linker=""
+ else
+ AC_MSG_ERROR([coverage with your compiler is not supported])
+ fi
+ CFLAGS="$CFLAGS $ac_coverage_compiler"
+ CXXFLAGS="$CXXFLAGS $ac_coverage_compiler"
+ LDFLAGS="$LDFLAGS $ac_coverage_linker"
+ ])
+
+ AC_SUBST(NOOPT_CXXFLAGS)
+ AC_SUBST(NOOPT_CFLAGS)
+ AC_SUBST(ENABLE_PERMISSIVE_FLAG)
+
+ KDE_CHECK_NEW_LDFLAGS
+ KDE_CHECK_FINAL
+ KDE_CHECK_CLOSURE
+ KDE_CHECK_NMCHECK
+
+ ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), [])
+])
+
+AC_DEFUN([KDE_CHECK_VISIBILITY_GCC_BUG],
+ [
+ AC_CACHE_CHECK([for gcc -fvisibility-inlines-hidden bug], kde_cv_val_gcc_visibility_bug,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ safe_CXXFLAGS=$CXXFLAGS
+ safe_LDFLAGS=$LDFLAGS
+ CXXFLAGS="$CXXFLAGS -fPIC -fvisibility-inlines-hidden -O0"
+ LDFLAGS="$LDFLAGS -shared -fPIC"
+
+ AC_TRY_LINK(
+ [
+ /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19664 */
+ #include <string>
+ int some_function( void ) __attribute__ ((visibility("default")));
+ int some_function( void )
+ {
+ std::string s("blafasel");
+ return 0;
+ }
+ ], [/* elvis is alive */],
+ kde_cv_val_gcc_visibility_bug=no, kde_cv_val_gcc_visibility_bug=yes)
+
+ CXXFLAGS=$safe_CXXFLAGS
+ LDFLAGS=$safe_LDFLAGS
+ AC_LANG_RESTORE
+ ]
+ )
+
+ if test x$kde_cv_val_gcc_visibility_bug = xno; then
+ CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden"
+ fi
+ ]
+)
+
+AC_DEFUN([KDE_ENABLE_HIDDEN_VISIBILITY],
+[
+ AC_BEFORE([AC_PATH_QT_1_3], [KDE_ENABLE_HIDDEN_VISIBILITY])
+
+ AC_MSG_CHECKING([grepping for visibility push/pop in headers])
+
+ if test "x$GXX" = "xyes"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_EGREP_CPP(
+ [GCC visibility push],
+ [ #include <exception>
+ ],
+ [
+ AC_MSG_RESULT(yes)
+ kde_stdc_visibility_patched=yes ],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([Your libstdc++ doesn't appear to be patched for
+ visibility support. Disabling -fvisibility=hidden])
+
+ kde_stdc_visibility_patched=no ])
+
+ AC_LANG_RESTORE
+
+ kde_have_gcc_visibility=no
+ KDE_CHECK_COMPILER_FLAG(fvisibility=hidden,
+ [
+ kde_have_gcc_visibility=yes
+ dnl the whole toolchain is just a mess, gcc is just too buggy
+ dnl to handle STL with visibility enabled. Lets reconsider
+ dnl when gcc 4.2 is out or when things get fixed in the compiler.
+ dnl Contact mueller@kde.org for details.
+ AC_ARG_ENABLE(gcc-hidden-visibility,
+ AC_HELP_STRING([--enable-gcc-hidden-visibility],[toolchain hidden visibility [default=no]]),
+ [kde_have_gcc_visibility=$enableval],
+ [kde_have_gcc_visibility=no])
+
+ AC_CACHE_CHECK([if Qt is patched for -fvisibility], kde_cv_val_qt_gcc_visibility_patched,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ safe_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS $all_includes"
+
+ AC_TRY_COMPILE(
+ [
+#include <qglobal.h>
+#if Q_EXPORT - 0 != 0
+/* if this compiles, then Q_EXPORT is undefined */
+/* if Q_EXPORT is nonempty, this will break compilation */
+#endif
+ ], [/* elvis is alive */],
+ kde_cv_val_qt_gcc_visibility_patched=no, kde_cv_val_qt_gcc_visibility_patched=yes)
+
+ CXXFLAGS=$safe_CXXFLAGS
+ AC_LANG_RESTORE
+ ]
+ )
+
+ if test x$kde_have_gcc_visibility = "xyes" && test x$kde_stdc_visibility_patched = "xyes" && test x$kde_cv_val_qt_gcc_visibility_patched = "xyes"; then
+ CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
+ KDE_CHECK_VISIBILITY_GCC_BUG
+ HAVE_GCC_VISIBILITY=1
+ AC_DEFINE_UNQUOTED(__KDE_HAVE_GCC_VISIBILITY, "$HAVE_GCC_VISIBILITY", [define to 1 if -fvisibility is supported])
+ fi
+ ])
+ fi
+])
+
+AC_DEFUN([KDE_ADD_DEPENDENCIES],
+[
+ [A]M_DEPENDENCIES(CC)
+ [A]M_DEPENDENCIES(CXX)
+])
+
+dnl just a wrapper to clean up configure.in
+AC_DEFUN([KDE_PROG_LIBTOOL],
+[
+AC_REQUIRE([AC_CHECK_COMPILERS])
+AC_REQUIRE([AC_ENABLE_SHARED])
+AC_REQUIRE([AC_ENABLE_STATIC])
+
+AC_REQUIRE([AC_LIBTOOL_DLOPEN])
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_OBJEXT
+AC_EXEEXT
+
+AM_PROG_LIBTOOL
+AC_LIBTOOL_CXX
+
+LIBTOOL_SHELL="/bin/sh ./libtool"
+# LIBTOOL="$LIBTOOL --silent"
+KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)"
+AC_SUBST(KDE_PLUGIN)
+
+# This hack ensures that libtool creates shared libs for kunittest plugins. By default check_LTLIBRARIES makes static libs.
+KDE_CHECK_PLUGIN="\$(KDE_PLUGIN) -rpath \$(libdir)"
+AC_SUBST(KDE_CHECK_PLUGIN)
+
+# we patch configure quite some so we better keep that consistent for incremental runs
+AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure')
+])
+
+AC_DEFUN([KDE_CHECK_LIB64],
+[
+ AC_ARG_ENABLE(libsuffix,
+ AC_HELP_STRING([--enable-libsuffix],
+ [/lib directory suffix (64,32,none,auto[=default])]),
+ kdelibsuff=$enableval, kdelibsuff="auto")
+
+ if test "$kdelibsuff" = "auto"; then
+
+cat > conftest.c << EOF
+#include <stdio.h>
+int main() {
+ return 0;
+}
+EOF
+ kdelibsuff=`$CC conftest.c -o conftest.out; ldd conftest.out |sed -ne '/libc.so/{
+ s,.*/lib\([[^\/]]*\)/.*,\1,
+ p
+}'`
+ rm -rf conftest.*
+ fi
+
+ if test "$kdelibsuff" = "no" || test "$kdelibsuff" = "none"; then
+ kdelibsuff=
+ fi
+ if test -z "$kdelibsuff"; then
+ AC_MSG_RESULT([not using lib directory suffix])
+ AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories)
+ else
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir="$libdir${kdelibsuff}"
+ AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms
+ fi
+ AC_DEFINE_UNQUOTED(KDELIBSUFF, ["${kdelibsuff}"], Suffix for lib directories)
+ AC_MSG_RESULT([using lib directory suffix $kdelibsuff])
+ fi
+])
+
+AC_DEFUN([KDE_CHECK_TYPES],
+[ AC_CHECK_SIZEOF(int, 4)dnl
+ AC_CHECK_SIZEOF(short)dnl
+ AC_CHECK_SIZEOF(long, 4)dnl
+ AC_CHECK_SIZEOF(char *, 4)dnl
+])dnl
+
+dnl Not used - kept for compat only?
+AC_DEFUN([KDE_DO_IT_ALL],
+[
+AC_CANONICAL_SYSTEM
+AC_ARG_PROGRAM
+AM_INIT_AUTOMAKE($1, $2)
+AM_DISABLE_LIBRARIES
+AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde})
+AC_CHECK_COMPILERS
+KDE_PROG_LIBTOOL
+AM_KDE_WITH_NLS
+AC_PATH_KDE
+])
+
+AC_DEFUN([AC_CHECK_RPATH],
+[
+AC_MSG_CHECKING(for rpath)
+AC_ARG_ENABLE(rpath,
+ AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]),
+ USE_RPATH=$enableval, USE_RPATH=yes)
+
+if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then
+
+ KDE_RPATH="-R \$(libdir)"
+
+ if test "$kde_libraries" != "$libdir"; then
+ KDE_RPATH="$KDE_RPATH -R \$(kde_libraries)"
+ fi
+
+ if test -n "$qt_libraries"; then
+ KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)"
+ fi
+ dnl $x_libraries is set to /usr/lib in case
+ if test -n "$X_LDFLAGS"; then
+ X_RPATH="-R \$(x_libraries)"
+ KDE_RPATH="$KDE_RPATH $X_RPATH"
+ fi
+ if test -n "$KDE_EXTRA_RPATH"; then
+ KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)"
+ fi
+fi
+AC_SUBST(KDE_EXTRA_RPATH)
+AC_SUBST(KDE_RPATH)
+AC_SUBST(X_RPATH)
+AC_MSG_RESULT($USE_RPATH)
+])
+
+dnl Check for the type of the third argument of getsockname
+AC_DEFUN([AC_CHECK_SOCKLEN_T],
+[
+ AC_MSG_CHECKING(for socklen_t)
+ AC_CACHE_VAL(kde_cv_socklen_t,
+ [
+ AC_LANG_PUSH(C++)
+ kde_cv_socklen_t=no
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [
+ socklen_t len;
+ getpeername(0,0,&len);
+ ],
+ [
+ kde_cv_socklen_t=yes
+ kde_cv_socklen_t_equiv=socklen_t
+ ])
+ AC_LANG_POP(C++)
+ ])
+ AC_MSG_RESULT($kde_cv_socklen_t)
+ if test $kde_cv_socklen_t = no; then
+ AC_MSG_CHECKING([for socklen_t equivalent for socket functions])
+ AC_CACHE_VAL(kde_cv_socklen_t_equiv,
+ [
+ kde_cv_socklen_t_equiv=int
+ AC_LANG_PUSH(C++)
+ for t in int size_t unsigned long "unsigned long"; do
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [
+ $t len;
+ getpeername(0,0,&len);
+ ],
+ [
+ kde_cv_socklen_t_equiv="$t"
+ break
+ ])
+ done
+ AC_LANG_POP(C++)
+ ])
+ AC_MSG_RESULT($kde_cv_socklen_t_equiv)
+ fi
+ AC_DEFINE_UNQUOTED(kde_socklen_t, $kde_cv_socklen_t_equiv,
+ [type to use in place of socklen_t if not defined])
+ AC_DEFINE_UNQUOTED(ksize_t, $kde_cv_socklen_t_equiv,
+ [type to use in place of socklen_t if not defined (deprecated, use kde_socklen_t)])
+])
+
+dnl This is a merge of some macros out of the gettext aclocal.m4
+dnl since we don't need anything, I took the things we need
+dnl the copyright for them is:
+dnl >
+dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+dnl This Makefile.in 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 This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE.
+dnl >
+dnl for this file it is relicensed under LGPL
+
+AC_DEFUN([AM_KDE_WITH_NLS],
+ [
+ dnl If we use NLS figure out what method
+
+ AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt,
+ [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+ if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then
+ AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it])
+ GMSGFMT=":"
+ fi
+ MSGFMT=$GMSGFMT
+ AC_SUBST(GMSGFMT)
+ AC_SUBST(MSGFMT)
+
+ AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is no GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext programs is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+ AC_SUBST(XGETTEXT)
+
+ ])
+
+# Search path for a program which passes the given test.
+# Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+# serial 1
+# Stephan Kulow: I appended a _KDE against name conflicts
+
+dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE],
+[# 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.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ 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 -n "[$]$1"; then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# serial 1
+
+AC_DEFUN([AM_LC_MESSAGES],
+ [if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES])
+ fi
+ fi])
+
+dnl From Jim Meyering.
+dnl FIXME: migrate into libit.
+
+AC_DEFUN([AM_FUNC_OBSTACK],
+[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack,
+ [AC_TRY_LINK([#include "obstack.h"],
+ [struct obstack *mem;obstack_free(mem,(char *) 0)],
+ am_cv_func_obstack=yes,
+ am_cv_func_obstack=no)])
+ if test $am_cv_func_obstack = yes; then
+ AC_DEFINE(HAVE_OBSTACK)
+ else
+ LIBOBJS="$LIBOBJS obstack.o"
+ fi
+])
+
+dnl From Jim Meyering. Use this if you use the GNU error.[ch].
+dnl FIXME: Migrate into libit
+
+AC_DEFUN([AM_FUNC_ERROR_AT_LINE],
+[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
+ [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
+ am_cv_lib_error_at_line=yes,
+ am_cv_lib_error_at_line=no)])
+ if test $am_cv_lib_error_at_line = no; then
+ LIBOBJS="$LIBOBJS error.o"
+ fi
+ AC_SUBST(LIBOBJS)dnl
+])
+
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# serial 1
+# Stephan Kulow: I put a KDE in it to avoid name conflicts
+
+AC_DEFUN([AM_KDE_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_RANLIB])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+ AC_REQUIRE([AM_KDE_WITH_NLS])dnl
+ AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h])
+ AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \
+__argz_count __argz_stringify __argz_next])
+
+ AC_MSG_CHECKING(for stpcpy)
+ AC_CACHE_VAL(kde_cv_func_stpcpy,
+ [
+ kde_safe_cxxflags=$CXXFLAGS
+ CXXFLAGS="-Werror"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+ #include <string.h>
+ ],
+ [
+ char buffer[200];
+ stpcpy(buffer, buffer);
+ ],
+ kde_cv_func_stpcpy=yes,
+ kde_cv_func_stpcpy=no)
+ AC_LANG_RESTORE
+ CXXFLAGS=$kde_safe_cxxflags
+ ])
+ AC_MSG_RESULT($kde_cv_func_stpcpy)
+ if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then
+ AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy])
+ fi
+
+ AM_LC_MESSAGES
+
+ if test "x$CATOBJEXT" != "x"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+ *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ ])
+
+AC_DEFUN([AC_HAVE_XPM],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$XPM_LDFLAGS" && XPM_LDFLAGS=
+ test -z "$XPM_INCLUDE" && XPM_INCLUDE=
+
+ AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]),
+ xpm_test=$withval, xpm_test="yes")
+ if test "x$xpm_test" = xno; then
+ ac_cv_have_xpm=no
+ else
+ AC_MSG_CHECKING(for XPM)
+ AC_CACHE_VAL(ac_cv_have_xpm,
+ [
+ ac_save_ldflags="$LDFLAGS"
+ ac_save_cflags="$CFLAGS"
+ if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+ LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET"
+ else
+ LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET"
+ fi
+ CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES"
+ test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS"
+ AC_TRY_LINK([#include <X11/xpm.h>],[],
+ ac_cv_have_xpm="yes",ac_cv_have_xpm="no")
+ LDFLAGS="$ac_save_ldflags"
+ CFLAGS="$ac_save_cflags"
+ ])dnl
+
+ if test "$ac_cv_have_xpm" = no; then
+ AC_MSG_RESULT(no)
+ XPM_LDFLAGS=""
+ XPMINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support])
+ if test "$XPM_LDFLAGS" = ""; then
+ XPMLIB='-lXpm $(LIB_X11)'
+ else
+ XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)'
+ fi
+ if test "$XPM_INCLUDE" = ""; then
+ XPMINC=""
+ else
+ XPMINC="-I$XPM_INCLUDE"
+ fi
+ AC_MSG_RESULT(yes)
+ $1
+ fi
+ fi
+ AC_SUBST(XPMINC)
+ AC_SUBST(XPMLIB)
+])
+
+AC_DEFUN([AC_HAVE_DPMS],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS=
+ test -z "$DPMS_INCLUDE" && DPMS_INCLUDE=
+ DPMS_LIB=
+
+ AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]),
+ dpms_test=$withval, dpms_test="yes")
+ if test "x$dpms_test" = xno; then
+ ac_cv_have_dpms=no
+ else
+ AC_MSG_CHECKING(for DPMS)
+ dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms.
+ dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms".
+ AC_CACHE_VAL(ac_cv_have_dpms,
+ [
+ if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then
+ AC_MSG_RESULT(no)
+ ac_cv_have_dpms="no"
+ else
+ ac_save_ldflags="$LDFLAGS"
+ ac_save_cflags="$CFLAGS"
+ ac_save_libs="$LIBS"
+ LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries"
+ LIBS="-lX11 -lXext $LIBSOCKET"
+ CFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AC_TRY_LINK([
+ #include <X11/Xproto.h>
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>
+ int foo_test_dpms()
+ { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[],
+ ac_cv_have_dpms="yes", [
+ LIBS="-lXdpms $LIBS"
+ AC_TRY_LINK([
+ #include <X11/Xproto.h>
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>
+ int foo_test_dpms()
+ { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[],
+ [
+ ac_cv_have_dpms="-lXdpms"
+ ],ac_cv_have_dpms="no")
+ ])
+ LDFLAGS="$ac_save_ldflags"
+ CFLAGS="$ac_save_cflags"
+ LIBS="$ac_save_libs"
+ fi
+ ])dnl
+
+ if test "$ac_cv_have_dpms" = no; then
+ AC_MSG_RESULT(no)
+ DPMS_LDFLAGS=""
+ DPMSINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support])
+ if test "$ac_cv_have_dpms" = "-lXdpms"; then
+ DPMS_LIB="-lXdpms"
+ fi
+ if test "$DPMS_LDFLAGS" = ""; then
+ DPMSLIB="$DPMS_LIB "'$(LIB_X11)'
+ else
+ DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)'
+ fi
+ if test "$DPMS_INCLUDE" = ""; then
+ DPMSINC=""
+ else
+ DPMSINC="-I$DPMS_INCLUDE"
+ fi
+ AC_MSG_RESULT(yes)
+ $1
+ fi
+ fi
+ ac_save_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO,
+ [Define if you have the DPMSCapable prototype in <X11/extensions/dpms.h>])
+ AC_CHECK_DECL(DPMSCapable,
+ AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),,
+ [#include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>])
+ AH_TEMPLATE(HAVE_DPMSINFO_PROTO,
+ [Define if you have the DPMSInfo prototype in <X11/extensions/dpms.h>])
+ AC_CHECK_DECL(DPMSInfo,
+ AC_DEFINE(HAVE_DPMSINFO_PROTO),,
+ [#include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>])
+ CFLAGS="$ac_save_cflags"
+ AC_SUBST(DPMSINC)
+ AC_SUBST(DPMSLIB)
+])
+
+AC_DEFUN([AC_HAVE_GL],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$GL_LDFLAGS" && GL_LDFLAGS=
+ test -z "$GL_INCLUDE" && GL_INCLUDE=
+
+ AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]),
+ gl_test=$withval, gl_test="yes")
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ # GL and Qt Embedded is a no-go for now.
+ ac_cv_have_gl=no
+ elif test "x$gl_test" = xno; then
+ ac_cv_have_gl=no
+ else
+ AC_MSG_CHECKING(for GL)
+ AC_CACHE_VAL(ac_cv_have_gl,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_ldflags=$LDFLAGS
+ ac_save_cxxflags=$CXXFLAGS
+ ac_save_libs=$LIBS
+ LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries"
+ LIBS="$LIBS -lGL -lGLU"
+ test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LIBS="$LIBS -lX11"
+ LIBS="$LIBS $LIB_XEXT -lm $LIBSOCKET"
+ CXXFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS"
+ AC_TRY_LINK([#include <GL/gl.h>
+#include <GL/glu.h>
+], [],
+ ac_cv_have_gl="yes", ac_cv_have_gl="no")
+ AC_LANG_RESTORE
+ LDFLAGS=$ac_save_ldflags
+ CXXFLAGS=$ac_save_cxxflags
+ LIBS=$ac_save_libs
+ ])dnl
+
+ if test "$ac_cv_have_gl" = "no"; then
+ AC_MSG_RESULT(no)
+ GL_LDFLAGS=""
+ GLINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)])
+ if test "$GL_LDFLAGS" = ""; then
+ GLLIB='-lGLU -lGL $(LIB_X11)'
+ else
+ GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)'
+ fi
+ if test "$GL_INCLUDE" = ""; then
+ GLINC=""
+ else
+ GLINC="-I$GL_INCLUDE"
+ fi
+ AC_MSG_RESULT($ac_cv_have_gl)
+ $1
+ fi
+ fi
+ AC_SUBST(GLINC)
+ AC_SUBST(GLLIB)
+])
+
+
+ dnl shadow password and PAM magic - maintained by ossi@kde.org
+
+AC_DEFUN([KDE_PAM], [
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+
+ want_pam=
+ AC_ARG_WITH(pam,
+ AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]),
+ [ if test "x$withval" = "xyes"; then
+ want_pam=yes
+ pam_service=kde
+ elif test "x$withval" = "xno"; then
+ want_pam=no
+ else
+ want_pam=yes
+ pam_service=$withval
+ fi
+ ], [ pam_service=kde ])
+
+ use_pam=
+ PAMLIBS=
+ if test "x$want_pam" != xno; then
+ AC_CHECK_LIB(pam, pam_start, [
+ AC_CHECK_HEADER(security/pam_appl.h,
+ [ pam_header=security/pam_appl.h ],
+ [ AC_CHECK_HEADER(pam/pam_appl.h,
+ [ pam_header=pam/pam_appl.h ],
+ [
+ AC_MSG_WARN([PAM detected, but no headers found!
+Make sure you have the necessary development packages installed.])
+ ]
+ )
+ ]
+ )
+ ], , $LIBDL)
+ if test -z "$pam_header"; then
+ if test "x$want_pam" = xyes; then
+ AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!])
+ fi
+ else
+ AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)])
+ PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL"
+ use_pam=yes
+
+ dnl darwin claims to be something special
+ if test "$pam_header" = "pam/pam_appl.h"; then
+ AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/])
+ fi
+
+ dnl test whether struct pam_message is const (Linux) or not (Sun)
+ AC_MSG_CHECKING(for const pam_message)
+ AC_EGREP_HEADER([struct pam_message], $pam_header,
+ [ AC_EGREP_HEADER([const struct pam_message], $pam_header,
+ [AC_MSG_RESULT([const: Linux-type PAM])],
+ [AC_MSG_RESULT([nonconst: Sun-type PAM])
+ AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])]
+ )],
+ [AC_MSG_RESULT([not found - assume const, Linux-type PAM])])
+ fi
+ fi
+
+ AC_SUBST(PAMLIBS)
+])
+
+dnl DEF_PAM_SERVICE(arg name, full name, define name)
+AC_DEFUN([DEF_PAM_SERVICE], [
+ AC_ARG_WITH($1-pam,
+ AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]),
+ [ if test "x$use_pam" = xyes; then
+ $3_PAM_SERVICE=$withval
+ else
+ AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected.
+You may want to enforce it by using --with-pam.])
+ fi
+ ],
+ [ if test "x$use_pam" = xyes; then
+ $3_PAM_SERVICE="$pam_service"
+ fi
+ ])
+ if test -n "$$3_PAM_SERVICE"; then
+ AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE])
+ AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2])
+ fi
+ AC_SUBST($3_PAM_SERVICE)
+])
+
+AC_DEFUN([KDE_SHADOWPASSWD], [
+ AC_REQUIRE([KDE_PAM])
+
+ AC_CHECK_LIB(shadow, getspent,
+ [ LIBSHADOW="-lshadow"
+ ac_use_shadow=yes
+ ],
+ [ dnl for UnixWare
+ AC_CHECK_LIB(gen, getspent,
+ [ LIBGEN="-lgen"
+ ac_use_shadow=yes
+ ],
+ [ AC_CHECK_FUNC(getspent,
+ [ ac_use_shadow=yes ],
+ [ ac_use_shadow=no ])
+ ])
+ ])
+ AC_SUBST(LIBSHADOW)
+ AC_SUBST(LIBGEN)
+
+ AC_MSG_CHECKING([for shadow passwords])
+
+ AC_ARG_WITH(shadow,
+ AC_HELP_STRING([--with-shadow],[If you want shadow password support]),
+ [ if test "x$withval" != "xno"; then
+ use_shadow=yes
+ else
+ use_shadow=no
+ fi
+ ], [
+ use_shadow="$ac_use_shadow"
+ ])
+
+ if test "x$use_shadow" = xyes; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords])
+ else
+ AC_MSG_RESULT(no)
+ LIBSHADOW=
+ LIBGEN=
+ fi
+
+ dnl finally make the relevant binaries setuid root, if we have shadow passwds.
+ dnl this still applies, if we could use it indirectly through pam.
+ if test "x$use_shadow" = xyes ||
+ ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then
+ case $host in
+ *-*-freebsd* | *-*-netbsd* | *-*-openbsd*)
+ SETUIDFLAGS="-m 4755 -o root";;
+ *)
+ SETUIDFLAGS="-m 4755";;
+ esac
+ fi
+ AC_SUBST(SETUIDFLAGS)
+
+])
+
+AC_DEFUN([KDE_PASSWDLIBS], [
+ AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT
+ AC_REQUIRE([KDE_PAM])
+ AC_REQUIRE([KDE_SHADOWPASSWD])
+
+ if test "x$use_pam" = "xyes"; then
+ PASSWDLIBS="$PAMLIBS"
+ else
+ PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN"
+ fi
+
+ dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but
+ dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires
+ dnl root to read, so kcheckpass needs to be root (even when using pam, since pam
+ dnl may need to read /etc/master.passwd).
+ case $host in
+ *-*-freebsd*)
+ SETUIDFLAGS="-m 4755 -o root"
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_SUBST(PASSWDLIBS)
+])
+
+AC_DEFUN([KDE_CHECK_LIBDL],
+[
+AC_CHECK_LIB(dl, dlopen, [
+LIBDL="-ldl"
+ac_cv_have_dlfcn=yes
+])
+
+AC_CHECK_LIB(dld, shl_unload, [
+LIBDL="-ldld"
+ac_cv_have_shload=yes
+])
+
+AC_SUBST(LIBDL)
+])
+
+AC_DEFUN([KDE_CHECK_DLOPEN],
+[
+KDE_CHECK_LIBDL
+AC_CHECK_HEADERS(dlfcn.h dl.h)
+if test "$ac_cv_header_dlfcn_h" = "no"; then
+ ac_cv_have_dlfcn=no
+fi
+
+if test "$ac_cv_header_dl_h" = "no"; then
+ ac_cv_have_shload=no
+fi
+
+dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE
+dnl (MM)
+AC_ARG_ENABLE(dlopen,
+AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]),
+enable_dlopen=$enableval,
+enable_dlopen=yes)
+
+# override the user's opinion, if we know it better ;)
+if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then
+ enable_dlopen=no
+fi
+
+if test "$ac_cv_have_dlfcn" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn])
+fi
+
+if test "$ac_cv_have_shload" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload])
+fi
+
+if test "$enable_dlopen" = no ; then
+ test -n "$1" && eval $1
+else
+ test -n "$2" && eval $2
+fi
+
+])
+
+AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING],
+[
+KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no)
+KDE_PROG_LIBTOOL
+AC_MSG_CHECKING([dynamic loading])
+eval "`egrep '^build_libtool_libs=' libtool`"
+if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then
+ dynamic_loading=yes
+ AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING)
+else
+ dynamic_loading=no
+fi
+AC_MSG_RESULT($dynamic_loading)
+if test "$dynamic_loading" = "yes"; then
+ $1
+else
+ $2
+fi
+])
+
+AC_DEFUN([KDE_ADD_INCLUDES],
+[
+if test -z "$1"; then
+ test_include="Pix.h"
+else
+ test_include="$1"
+fi
+
+AC_MSG_CHECKING([for libg++ ($test_include)])
+
+AC_CACHE_VAL(kde_cv_libgpp_includes,
+[
+kde_cv_libgpp_includes=no
+
+ for ac_dir in \
+ \
+ /usr/include/g++ \
+ /usr/include \
+ /usr/unsupported/include \
+ /opt/include \
+ $extra_include \
+ ; \
+ do
+ if test -r "$ac_dir/$test_include"; then
+ kde_cv_libgpp_includes=$ac_dir
+ break
+ fi
+ done
+])
+
+AC_MSG_RESULT($kde_cv_libgpp_includes)
+if test "$kde_cv_libgpp_includes" != "no"; then
+ all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES"
+fi
+])
+])
+
+AC_DEFUN([KDE_CHECK_LIBPTHREAD],
+[
+ dnl This code is here specifically to handle the
+ dnl various flavors of threading library on FreeBSD
+ dnl 4-, 5-, and 6-, and the (weird) rules around it.
+ dnl There may be an environment PTHREAD_LIBS that
+ dnl specifies what to use; otherwise, search for it.
+ dnl -pthread is special cased and unsets LIBPTHREAD
+ dnl below if found.
+ LIBPTHREAD=""
+
+ if test -n "$PTHREAD_LIBS"; then
+ if test "x$PTHREAD_LIBS" = "x-pthread" ; then
+ LIBPTHREAD="PTHREAD"
+ else
+ PTHREAD_LIBS_save="$PTHREAD_LIBS"
+ PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'`
+ AC_MSG_CHECKING([for pthread_create in $PTHREAD_LIBS])
+ KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [
+ LIBPTHREAD="$PTHREAD_LIBS_save"])
+ PTHREAD_LIBS="$PTHREAD_LIBS_save"
+ fi
+ fi
+
+ dnl Is this test really needed, in the face of the Tru64 test below?
+ if test -z "$LIBPTHREAD"; then
+ AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"])
+ fi
+
+ dnl This is a special Tru64 check, see BR 76171 issue #18.
+ if test -z "$LIBPTHREAD" ; then
+ AC_MSG_CHECKING([for pthread_create in -lpthread])
+ kde_safe_libs=$LIBS
+ LIBS="$LIBS -lpthread"
+ AC_TRY_LINK([#include <pthread.h>],[(void)pthread_create(0,0,0,0);],[
+ AC_MSG_RESULT(yes)
+ LIBPTHREAD="-lpthread"],[
+ AC_MSG_RESULT(no)])
+ LIBS=$kde_safe_libs
+ fi
+
+ dnl Un-special-case for FreeBSD.
+ if test "x$LIBPTHREAD" = "xPTHREAD" ; then
+ LIBPTHREAD=""
+ fi
+
+ AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_PTHREAD_OPTION],
+[
+ USE_THREADS=""
+ if test -z "$LIBPTHREAD"; then
+ KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"])
+ fi
+
+ AH_VERBATIM(__svr_define, [
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+])
+ case $host_os in
+ solaris*)
+ KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
+ ;;
+ freebsd*)
+ CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS"
+ ;;
+ aix*)
+ CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE"
+ LIBPTHREAD="$LIBPTHREAD -lc_r"
+ ;;
+ linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="$CXXFLAGS --thread_safe"
+ NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe"
+ fi
+ ;;
+ *)
+ ;;
+ esac
+ AC_SUBST(USE_THREADS)
+ AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_THREADING],
+[
+ AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
+ AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION])
+ dnl default is yes if libpthread is found and no if no libpthread is available
+ if test -z "$LIBPTHREAD"; then
+ if test -z "$USE_THREADS"; then
+ kde_check_threading_default=no
+ else
+ kde_check_threading_default=yes
+ fi
+ else
+ kde_check_threading_default=yes
+ fi
+ AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]),
+ kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default)
+ if test "x$kde_use_threading" = "xyes"; then
+ AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
+ fi
+])
+
+AC_DEFUN([KDE_TRY_LINK_PYTHON],
+[
+if test "$kde_python_link_found" = no; then
+
+if test "$1" = normal; then
+ AC_MSG_CHECKING(if a Python application links)
+else
+ AC_MSG_CHECKING(if Python depends on $2)
+fi
+
+AC_CACHE_VAL(kde_cv_try_link_python_$1,
+[
+kde_save_cflags="$CFLAGS"
+CFLAGS="$CFLAGS $PYTHONINC"
+kde_save_libs="$LIBS"
+LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET"
+kde_save_ldflags="$LDFLAGS"
+LDFLAGS="$LDFLAGS $PYTHONLIB"
+
+AC_TRY_LINK(
+[
+#include <Python.h>
+],[
+ PySys_SetArgv(1, 0);
+],
+ [kde_cv_try_link_python_$1=yes],
+ [kde_cv_try_link_python_$1=no]
+)
+CFLAGS="$kde_save_cflags"
+LIBS="$kde_save_libs"
+LDFLAGS="$kde_save_ldflags"
+])
+
+if test "$kde_cv_try_link_python_$1" = "yes"; then
+ AC_MSG_RESULT(yes)
+ kde_python_link_found=yes
+ if test ! "$1" = normal; then
+ LIBPYTHON="$LIBPYTHON $2"
+ fi
+ $3
+else
+ AC_MSG_RESULT(no)
+ $4
+fi
+
+fi
+
+])
+
+AC_DEFUN([KDE_CHECK_PYTHON_DIR],
+[
+AC_MSG_CHECKING([for Python directory])
+
+AC_CACHE_VAL(kde_cv_pythondir,
+[
+ if test -z "$PYTHONDIR"; then
+ kde_cv_pythondir=/usr/local
+ else
+ kde_cv_pythondir="$PYTHONDIR"
+ fi
+])
+
+AC_ARG_WITH(pythondir,
+AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]),
+[
+ ac_python_dir=$withval
+], ac_python_dir=$kde_cv_pythondir
+)
+
+AC_MSG_RESULT($ac_python_dir)
+])
+
+AC_DEFUN([KDE_CHECK_PYTHON_INTERN],
+[
+AC_REQUIRE([KDE_CHECK_LIBDL])
+AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
+AC_REQUIRE([KDE_CHECK_PYTHON_DIR])
+
+if test -z "$1"; then
+ version="1.5"
+else
+ version="$1"
+fi
+
+AC_MSG_CHECKING([for Python$version])
+
+python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes"
+AC_FIND_FILE(Python.h, $python_incdirs, python_incdir)
+if test ! -r $python_incdir/Python.h; then
+ AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir)
+ python_incdir=$python_incdir/python$version
+ if test ! -r $python_incdir/Python.h; then
+ python_incdir=no
+ fi
+fi
+
+PYTHONINC=-I$python_incdir
+
+python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs"
+AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir)
+if test ! -r $python_libdir/libpython$version.so; then
+ AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir)
+ if test ! -r $python_libdir/libpython$version.a; then
+ AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir)
+ python_libdir=$python_libdir/python$version/config
+ if test ! -r $python_libdir/libpython$version.a; then
+ python_libdir=no
+ fi
+ fi
+fi
+
+PYTHONLIB=-L$python_libdir
+kde_orig_LIBPYTHON=$LIBPYTHON
+if test -z "$LIBPYTHON"; then
+ LIBPYTHON=-lpython$version
+fi
+
+AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir)
+python_moddir=$python_moddir/python$version
+if test ! -r $python_moddir/copy.py; then
+ python_moddir=no
+fi
+
+PYTHONMODDIR=$python_moddir
+
+AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir)
+
+if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then
+ LIBPYTHON=$kde_orig_LIBPYTHON
+ test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB=""
+ test "x$PYTHONINC" = "x-Ino" && PYTHONINC=""
+ $2
+else
+ dnl Note: this test is very weak
+ kde_python_link_found=no
+ KDE_TRY_LINK_PYTHON(normal)
+ KDE_TRY_LINK_PYTHON(m, -lm)
+ KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD)
+ KDE_TRY_LINK_PYTHON(tcl, -ltcl)
+ KDE_TRY_LINK_PYTHON(db2, -ldb2)
+ KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil])
+ KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil])
+ KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm])
+ KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [],
+ [AC_MSG_WARN([it seems, Python depends on another library.
+ Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this
+ and contact the authors to let them know about this problem])
+ ])
+
+ LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET"
+ AC_SUBST(PYTHONINC)
+ AC_SUBST(PYTHONLIB)
+ AC_SUBST(LIBPYTHON)
+ AC_SUBST(PYTHONMODDIR)
+ AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python])
+fi
+
+])
+
+
+AC_DEFUN([KDE_CHECK_PYTHON],
+[
+ KDE_CHECK_PYTHON_INTERN("2.5",
+ [KDE_CHECK_PYTHON_INTERN("2.4",
+ [KDE_CHECK_PYTHON_INTERN("2.3",
+ [KDE_CHECK_PYTHON_INTERN("2.2",
+ [KDE_CHECK_PYTHON_INTERN("2.1",
+ [KDE_CHECK_PYTHON_INTERN("2.0",
+ [KDE_CHECK_PYTHON_INTERN($1, $2) ])
+ ])
+ ])
+ ])
+ ])
+ ])
+])
+
+AC_DEFUN([KDE_CHECK_STL],
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`"
+
+ AC_MSG_CHECKING([if C++ programs can be compiled])
+ AC_CACHE_VAL(kde_cv_stl_works,
+ [
+ AC_TRY_COMPILE([
+#include <string>
+using namespace std;
+],[
+ string astring="Hallo Welt.";
+ astring.erase(0, 6); // now astring is "Welt"
+ return 0;
+], kde_cv_stl_works=yes,
+ kde_cv_stl_works=no)
+])
+
+ AC_MSG_RESULT($kde_cv_stl_works)
+
+ if test "$kde_cv_stl_works" = "yes"; then
+ # back compatible
+ AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI])
+ else
+ AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs.
+Check config.log for details - if you're using a Linux distribution you might miss
+a package named similar to libstdc++-dev.])
+ fi
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([AC_FIND_QIMGIO],
+ [AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for qimgio])
+AC_CACHE_VAL(ac_cv_lib_qimgio,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_save_LIBS="$LIBS"
+ac_save_CXXFLAGS="$CXXFLAGS"
+LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT"
+CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
+AC_TRY_RUN(dnl
+[
+#include <qimageio.h>
+#include <qstring.h>
+int main() {
+ QString t = "hallo";
+ t.fill('t');
+ qInitImageIO();
+}
+],
+ ac_cv_lib_qimgio=yes,
+ ac_cv_lib_qimgio=no,
+ ac_cv_lib_qimgio=no)
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_RESTORE
+])dnl
+if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then
+ LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available])
+ AC_SUBST(LIBQIMGIO)
+else
+ AC_MSG_RESULT(not found)
+fi
+])
+
+AC_DEFUN([AM_DISABLE_LIBRARIES],
+[
+ AC_PROVIDE([AM_ENABLE_STATIC])
+ AC_PROVIDE([AM_ENABLE_SHARED])
+ enable_static=no
+ enable_shared=yes
+])
+
+
+AC_DEFUN([AC_CHECK_UTMP_FILE],
+[
+ AC_MSG_CHECKING([for utmp file])
+
+ AC_CACHE_VAL(kde_cv_utmp_file,
+ [
+ kde_cv_utmp_file=no
+
+ for ac_file in \
+ \
+ /var/run/utmp \
+ /var/adm/utmp \
+ /etc/utmp \
+ ; \
+ do
+ if test -r "$ac_file"; then
+ kde_cv_utmp_file=$ac_file
+ break
+ fi
+ done
+ ])
+
+ if test "$kde_cv_utmp_file" != "no"; then
+ AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries])
+ $1
+ AC_MSG_RESULT($kde_cv_utmp_file)
+ else
+ $2
+ AC_MSG_RESULT([non found])
+ fi
+])
+
+
+AC_DEFUN([KDE_CREATE_SUBDIRSLIST],
+[
+
+DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin"
+TOPSUBDIRS=""
+
+if test ! -s $srcdir/subdirs; then
+ dnl Note: Makefile.common creates subdirs, so this is just a fallback
+ files=`cd $srcdir && ls -1`
+ dirs=`for i in $files; do if test -d $i; then echo $i; fi; done`
+ for i in $dirs; do
+ echo $i >> $srcdir/subdirs
+ done
+fi
+
+ac_topsubdirs=
+if test -s $srcdir/inst-apps; then
+ ac_topsubdirs="`cat $srcdir/inst-apps`"
+elif test -s $srcdir/subdirs; then
+ ac_topsubdirs="`cat $srcdir/subdirs`"
+fi
+
+for i in $ac_topsubdirs; do
+ AC_MSG_CHECKING([if $i should be compiled])
+ if test -d $srcdir/$i; then
+ install_it="yes"
+ for j in $DO_NOT_COMPILE; do
+ if test $i = $j; then
+ install_it="no"
+ fi
+ done
+ else
+ install_it="no"
+ fi
+ AC_MSG_RESULT($install_it)
+ vari=`echo $i | sed -e 's,[[-+.@]],_,g'`
+ if test $install_it = "yes"; then
+ TOPSUBDIRS="$TOPSUBDIRS $i"
+ eval "$vari""_SUBDIR_included=yes"
+ else
+ eval "$vari""_SUBDIR_included=no"
+ fi
+done
+
+AC_SUBST(TOPSUBDIRS)
+])
+
+AC_DEFUN([KDE_CHECK_NAMESPACES],
+[
+AC_MSG_CHECKING(whether C++ compiler supports namespaces)
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_TRY_COMPILE([
+],
+[
+namespace Foo {
+ extern int i;
+ namespace Bar {
+ extern int i;
+ }
+}
+
+int Foo::i = 0;
+int Foo::Bar::i = 1;
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_NAMESPACES)
+], [
+AC_MSG_RESULT(no)
+])
+AC_LANG_RESTORE
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_S_ISSOCK],
+[
+AC_MSG_CHECKING(for S_ISSOCK)
+AC_CACHE_VAL(ac_cv_have_s_issock,
+[
+AC_TRY_LINK(
+[
+#include <sys/stat.h>
+],
+[
+struct stat buff;
+int b = S_ISSOCK( buff.st_mode );
+],
+ac_cv_have_s_issock=yes,
+ac_cv_have_s_issock=no)
+])
+AC_MSG_RESULT($ac_cv_have_s_issock)
+if test "$ac_cv_have_s_issock" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.])
+fi
+
+AH_VERBATIM(_ISSOCK,
+[
+#ifndef HAVE_S_ISSOCK
+#define HAVE_S_ISSOCK
+#define S_ISSOCK(mode) (1==0)
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_KDEMAXPATHLEN],
+[
+AC_MSG_CHECKING(for MAXPATHLEN)
+AC_CACHE_VAL(ac_cv_maxpathlen,
+[
+cat > conftest.$ac_ext <<EOF
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <sys/param.h>
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+KDE_HELLO MAXPATHLEN
+
+EOF
+
+ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out"
+
+if AC_TRY_EVAL(ac_try) && test -s conftest.out; then
+ ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out`
+else
+ ac_cv_maxpathlen=1024
+fi
+
+rm conftest.*
+
+])
+AC_MSG_RESULT($ac_cv_maxpathlen)
+AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] )
+])
+
+AC_DEFUN([KDE_CHECK_HEADER],
+[
+ kde_safe_cppflags=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $all_includes"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADER([$1], [$2], [$3], [$4])
+ AC_LANG_RESTORE
+ CPPFLAGS=$kde_safe_cppflags
+])
+
+AC_DEFUN([KDE_CHECK_HEADERS],
+[
+ AH_CHECK_HEADERS([$1])
+ AC_LANG_SAVE
+ kde_safe_cppflags=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $all_includes"
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADERS([$1], [$2], [$3], [$4])
+ CPPFLAGS=$kde_safe_cppflags
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([KDE_FAST_CONFIGURE],
+[
+ dnl makes configure fast (needs perl)
+ AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]),
+ with_fast_perl=$enableval, with_fast_perl=yes)
+])
+
+AC_DEFUN([KDE_CONF_FILES],
+[
+ val=
+ if test -f $srcdir/configure.files ; then
+ val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files`
+ fi
+ CONF_FILES=
+ if test -n "$val" ; then
+ for i in $val ; do
+ CONF_FILES="$CONF_FILES $i"
+ done
+ fi
+ AC_SUBST(CONF_FILES)
+])dnl
+
+dnl This sets the prefix, for arts and kdelibs
+dnl Do NOT use in any other module.
+dnl It only looks at --prefix, KDEDIR and falls back to /usr/local/kde
+AC_DEFUN([KDE_SET_PREFIX_CORE],
+[
+ unset CDPATH
+ dnl make $KDEDIR the default for the installation
+ AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde})
+
+ if test "x$prefix" = "xNONE"; then
+ prefix=$ac_default_prefix
+ ac_configure_args="$ac_configure_args --prefix=$prefix"
+ fi
+ # And delete superfluous '/' to make compares easier
+ prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+
+ kde_libs_prefix='$(prefix)'
+ kde_libs_htmldir='$(kde_htmldir)'
+ AC_SUBST(kde_libs_prefix)
+ AC_SUBST(kde_libs_htmldir)
+ KDE_FAST_CONFIGURE
+ KDE_CONF_FILES
+])
+
+
+AC_DEFUN([KDE_SET_PREFIX],
+[
+ unset CDPATH
+ dnl We can't give real code to that macro, only a value.
+ dnl It only matters for --help, since we set the prefix in this function anyway.
+ AC_PREFIX_DEFAULT(${KDEDIR:-the kde prefix})
+
+ KDE_SET_DEFAULT_BINDIRS
+ if test "x$prefix" = "xNONE"; then
+ dnl no prefix given: look for kde-config in the PATH and deduce the prefix from it
+ KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend)
+ else
+ dnl prefix given: look for kde-config, preferrably in prefix, otherwise in PATH
+ kde_save_PATH="$PATH"
+ PATH="$exec_prefix/bin:$prefix/bin:$PATH"
+ KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend)
+ PATH="$kde_save_PATH"
+ fi
+
+ kde_libs_prefix=`$KDECONFIG --prefix`
+ if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then
+ AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs.
+ This means it has been moved since you installed it.
+ This won't work. Please recompile kdelibs for the new prefix.
+ ])
+ fi
+ kde_libs_htmldir=`$KDECONFIG --install html --expandvars`
+
+ AC_MSG_CHECKING([where to install])
+ if test "x$prefix" = "xNONE"; then
+ prefix=$kde_libs_prefix
+ AC_MSG_RESULT([$prefix (as returned by kde-config)])
+ else
+ dnl --prefix was given. Compare prefixes and warn (in configure.in.bot.end) if different
+ given_prefix=$prefix
+ AC_MSG_RESULT([$prefix (as requested)])
+ fi
+
+ # And delete superfluous '/' to make compares easier
+ prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ given_prefix=`echo "$given_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+
+ AC_SUBST(KDECONFIG)
+ AC_SUBST(kde_libs_prefix)
+ AC_SUBST(kde_libs_htmldir)
+
+ KDE_FAST_CONFIGURE
+ KDE_CONF_FILES
+])
+
+pushdef([AC_PROG_INSTALL],
+[
+ dnl our own version, testing for a -p flag
+ popdef([AC_PROG_INSTALL])
+ dnl as AC_PROG_INSTALL works as it works we first have
+ dnl to save if the user didn't specify INSTALL, as the
+ dnl autoconf one overwrites INSTALL and we have no chance to find
+ dnl out afterwards
+ test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL
+ test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM
+ test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT
+ AC_PROG_INSTALL
+
+ if test -z "$kde_save_INSTALL_given" ; then
+ # OK, user hasn't given any INSTALL, autoconf found one for us
+ # now we test, if it supports the -p flag
+ AC_MSG_CHECKING(for -p flag to install)
+ rm -f confinst.$$.* > /dev/null 2>&1
+ echo "Testtest" > confinst.$$.orig
+ ac_res=no
+ if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then
+ if test -f confinst.$$.new ; then
+ # OK, -p seems to do no harm to install
+ INSTALL="${INSTALL} -p"
+ ac_res=yes
+ fi
+ fi
+ rm -f confinst.$$.*
+ AC_MSG_RESULT($ac_res)
+ fi
+ dnl the following tries to resolve some signs and wonders coming up
+ dnl with different autoconf/automake versions
+ dnl e.g.:
+ dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s
+ dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS)
+ dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s
+ dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has
+ dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the
+ dnl install-@DIR@PROGRAMS targets to explicitly use that flag
+ dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as
+ dnl INSTALL_SCRIPT, which breaks with automake <= 1.4
+ dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure
+ dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from
+ dnl automake (due to broken Makefile.am or whatever) to install programs,
+ dnl and so does not see the -s flag in automake > 1.4
+ dnl to clean up that mess we:
+ dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG
+ dnl which cleans KDE's program with automake > 1.4;
+ dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems
+ dnl with automake<=1.4
+ dnl note that dues to this sometimes two '-s' flags are used (if KDE
+ dnl properly uses install-@DIR@PROGRAMS, but I don't care
+ dnl
+ dnl And to all this comes, that I even can't write in comments variable
+ dnl names used by automake, because it is so stupid to think I wanted to
+ dnl _use_ them, therefor I have written A_M_... instead of AM_
+ dnl hmm, I wanted to say something ... ahh yes: Arghhh.
+
+ if test -z "$kde_save_INSTALL_PROGRAM_given" ; then
+ INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
+ fi
+ if test -z "$kde_save_INSTALL_SCRIPT_given" ; then
+ INSTALL_SCRIPT='${INSTALL}'
+ fi
+])dnl
+
+AC_DEFUN([KDE_LANG_CPLUSPLUS],
+[AC_LANG_CPLUSPLUS
+ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
+pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS])
+])
+
+pushdef([AC_LANG_CPLUSPLUS],
+[popdef([AC_LANG_CPLUSPLUS])
+KDE_LANG_CPLUSPLUS
+])
+
+AC_DEFUN([KDE_CHECK_LONG_LONG],
+[
+AC_MSG_CHECKING(for long long)
+AC_CACHE_VAL(kde_cv_c_long_long,
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_LINK([], [
+ long long foo = 0;
+ foo = foo+1;
+ ],
+ kde_cv_c_long_long=yes, kde_cv_c_long_long=no)
+ AC_LANG_RESTORE
+])
+AC_MSG_RESULT($kde_cv_c_long_long)
+if test "$kde_cv_c_long_long" = yes; then
+ AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_LIB],
+[
+ kde_save_LDFLAGS="$LDFLAGS"
+ dnl AC_CHECK_LIB modifies LIBS, so save it here
+ kde_save_LIBS="$LIBS"
+ LDFLAGS="$LDFLAGS $all_libraries"
+ case $host_os in
+ aix*) LDFLAGS="-brtl $LDFLAGS"
+ test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS"
+ ;;
+ esac
+ AC_CHECK_LIB($1, $2, $3, $4, $5)
+ LDFLAGS="$kde_save_LDFLAGS"
+ LIBS="$kde_save_LIBS"
+])
+
+AC_DEFUN([KDE_JAVA_PREFIX],
+[
+ dir=`dirname "$1"`
+ base=`basename "$1"`
+ list=`ls -1 $dir 2> /dev/null`
+ for entry in $list; do
+ if test -d $dir/$entry/bin; then
+ case $entry in
+ $base)
+ javadirs="$javadirs $dir/$entry/bin"
+ ;;
+ esac
+ elif test -d $dir/$entry/jre/bin; then
+ case $entry in
+ $base)
+ javadirs="$javadirs $dir/$entry/jre/bin"
+ ;;
+ esac
+ fi
+ done
+])
+
+dnl KDE_CHEC_JAVA_DIR(onlyjre)
+AC_DEFUN([KDE_CHECK_JAVA_DIR],
+[
+
+AC_ARG_WITH(java,
+AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]),
+[ ac_java_dir=$withval
+], ac_java_dir=""
+)
+
+AC_MSG_CHECKING([for Java])
+
+dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH
+if test "x$ac_java_dir" = "xno"; then
+ kde_java_bindir=no
+ kde_java_includedir=no
+ kde_java_libjvmdir=no
+ kde_java_libgcjdir=no
+ kde_java_libhpidir=no
+else
+ if test "x$ac_java_dir" = "x"; then
+
+
+ dnl No option set -> collect list of candidate paths
+ if test -n "$JAVA_HOME"; then
+ KDE_JAVA_PREFIX($JAVA_HOME)
+ fi
+ KDE_JAVA_PREFIX(/usr/j2se)
+ KDE_JAVA_PREFIX(/usr/lib/j2se)
+ KDE_JAVA_PREFIX(/usr/j*dk*)
+ KDE_JAVA_PREFIX(/usr/lib/j*dk*)
+ KDE_JAVA_PREFIX(/opt/j*sdk*)
+ KDE_JAVA_PREFIX(/usr/lib/java*)
+ KDE_JAVA_PREFIX(/usr/java*)
+ KDE_JAVA_PREFIX(/usr/java/j*dk*)
+ KDE_JAVA_PREFIX(/usr/java/j*re*)
+ KDE_JAVA_PREFIX(/usr/lib/SunJava2*)
+ KDE_JAVA_PREFIX(/usr/lib/SunJava*)
+ KDE_JAVA_PREFIX(/usr/lib/IBMJava2*)
+ KDE_JAVA_PREFIX(/usr/lib/IBMJava*)
+ KDE_JAVA_PREFIX(/opt/java*)
+
+ kde_cv_path="NONE"
+ kde_save_IFS=$IFS
+ IFS=':'
+ for dir in $PATH; do
+ if test -d "$dir"; then
+ javadirs="$javadirs $dir"
+ fi
+ done
+ IFS=$kde_save_IFS
+ jredirs=
+
+ dnl Now javadirs contains a list of paths that exist, all ending with bin/
+ for dir in $javadirs; do
+ dnl Check for the java executable
+ if test -x "$dir/java"; then
+ sane_path=$(cd $dir; /bin/pwd)
+ dnl And also check for a libjvm.so somewhere under there
+ dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big.
+ if test "$sane_path" != "/usr/bin"; then
+ libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+ if test ! -f $libjvmdir/libjvm.so; then continue; fi
+ jredirs="$jredirs $dir"
+ fi
+ fi
+ done
+
+ dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found
+ JAVAC=
+ JAVA=
+ kde_java_bindir=no
+ for dir in $jredirs; do
+ JAVA="$dir/java"
+ kde_java_bindir=$dir
+ if test -x "$dir/javac"; then
+ JAVAC="$dir/javac"
+ break
+ fi
+ done
+
+ if test -n "$JAVAC"; then
+ dnl this substitution might not work - well, we test for jni.h below
+ kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'`
+ else
+ kde_java_includedir=no
+ fi
+ else
+ dnl config option set
+ kde_java_bindir=$ac_java_dir/bin
+ if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then
+ kde_java_includedir=no
+ else
+ kde_java_includedir=$ac_java_dir/include
+ fi
+ fi
+fi
+
+dnl At this point kde_java_bindir and kde_java_includedir are either set or "no"
+if test "x$kde_java_bindir" != "xno"; then
+
+ dnl Look for libjvm.so
+ kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+ dnl Look for libgcj.so
+ kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1`
+ dnl Look for libhpi.so and avoid green threads
+ kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1`
+
+ dnl Now check everything's fine under there
+ dnl the include dir is our flag for having the JDK
+ if test -d "$kde_java_includedir"; then
+ if test ! -x "$kde_java_bindir/javac"; then
+ AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.])
+ fi
+ if test ! -x "$kde_java_bindir/javah"; then
+ AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+ if test ! -x "$kde_java_bindir/jar"; then
+ AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+ if test ! -r "$kde_java_includedir/jni.h"; then
+ AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.])
+ fi
+
+ jni_includes="-I$kde_java_includedir"
+ dnl Strange thing, jni.h requires jni_md.h which is under genunix here..
+ dnl and under linux here..
+
+ dnl not needed for gcj
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux"
+ test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris"
+ test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix"
+ fi
+
+ else
+ JAVAC=
+ jni_includes=
+ fi
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ if test ! -r "$kde_java_libjvmdir/libjvm.so"; then
+ AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.])
+ fi
+ else
+ if test ! -r "$kde_java_libgcjdir/libgcj.so"; then
+ AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.])
+ fi
+ fi
+
+ if test ! -x "$kde_java_bindir/java"; then
+ AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+
+ dnl not needed for gcj compile
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ if test ! -r "$kde_java_libhpidir/libhpi.so"; then
+ AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.])
+ fi
+ fi
+
+ if test -n "$jni_includes"; then
+ dnl Check for JNI version
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_cxxflags_safe="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS $all_includes $jni_includes"
+
+ AC_TRY_COMPILE([
+ #include <jni.h>
+ ],
+ [
+ #ifndef JNI_VERSION_1_2
+ Syntax Error
+ #endif
+ ],[ kde_jni_works=yes ],
+ [ kde_jni_works=no ])
+
+ if test $kde_jni_works = no; then
+ AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h.
+ You need to have Java Development Kit (JDK) version 1.2.
+
+ Use --with-java to specify another location.
+ Use --without-java to configure without java support.
+ Or download a newer JDK and try again.
+ See e.g. http://java.sun.com/products/jdk/1.2 ])
+ fi
+
+ CXXFLAGS="$ac_cxxflags_safe"
+ AC_LANG_RESTORE
+
+ dnl All tests ok, inform and subst the variables
+
+ JAVAC=$kde_java_bindir/javac
+ JAVAH=$kde_java_bindir/javah
+ JAR=$kde_java_bindir/jar
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ if test "x$kde_java_libgcjdir" = "x"; then
+ JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi"
+ else
+ JVMLIBS="-L$kde_java_libgcjdir -lgcj"
+ fi
+ AC_MSG_RESULT([java JDK in $kde_java_bindir])
+
+ else
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ AC_MSG_RESULT([java JRE in $kde_java_bindir])
+ fi
+elif test -d "/Library/Java/Home"; then
+ kde_java_bindir="/Library/Java/Home/bin"
+ jni_includes="-I/Library/Java/Home/include"
+
+ JAVAC=$kde_java_bindir/javac
+ JAVAH=$kde_java_bindir/javah
+ JAR=$kde_java_bindir/jar
+ JVMLIBS="-Wl,-framework,JavaVM"
+
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ AC_MSG_RESULT([Apple Java Framework])
+else
+ AC_MSG_RESULT([none found])
+fi
+
+AC_SUBST(JAVAC)
+AC_SUBST(JAVAH)
+AC_SUBST(JAR)
+AC_SUBST(JVMLIBS)
+AC_SUBST(jni_includes)
+
+# for backward compat
+kde_cv_java_includedir=$kde_java_includedir
+kde_cv_java_bindir=$kde_java_bindir
+])
+
+dnl this is a redefinition of autoconf 2.5x's AC_FOREACH.
+dnl When the argument list becomes big, as in KDE for AC_OUTPUT in
+dnl big packages, m4_foreach is dog-slow. So use our own version of
+dnl it. (matz@kde.org)
+m4_define([mm_foreach],
+[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])])
+m4_define([mm_car], [[$1]])
+m4_define([mm_car2], [[$@]])
+m4_define([_mm_foreach],
+[m4_if(m4_quote($2), [], [],
+ [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1],
+ mm_car2(m4_shift($2)),
+ [$3])])])
+m4_define([AC_FOREACH],
+[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
+
+AC_DEFUN([KDE_NEED_FLEX],
+[
+kde_libs_safe=$LIBS
+LIBS="$LIBS $USER_LDFLAGS"
+AM_PROG_LEX
+LIBS=$kde_libs_safe
+if test -z "$LEXLIB"; then
+ AC_MSG_ERROR([You need to have flex installed.])
+fi
+AC_SUBST(LEXLIB)
+])
+
+AC_DEFUN([AC_PATH_QTOPIA],
+[
+ dnl TODO: use AC_CACHE_VAL
+
+ if test -z "$1"; then
+ qtopia_minver_maj=1
+ qtopia_minver_min=5
+ qtopia_minver_pat=0
+ else
+ qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"`
+ qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"`
+ qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"`
+ fi
+
+ qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat"
+ qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat"
+
+ AC_REQUIRE([AC_PATH_QT])
+
+ AC_MSG_CHECKING([for Qtopia])
+
+ LIB_QTOPIA="-lqpe"
+ AC_SUBST(LIB_QTOPIA)
+
+ kde_qtopia_dirs="$QPEDIR /opt/Qtopia"
+
+ ac_qtopia_incdir=NO
+
+ AC_ARG_WITH(qtopia-dir,
+ AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]),
+ [ ac_qtopia_incdir="$withval"/include] )
+
+ qtopia_incdirs=""
+ for dir in $kde_qtopia_dirs; do
+ qtopia_incdirs="$qtopia_incdirs $dir/include"
+ done
+
+ if test ! "$ac_qtopia_incdir" = "NO"; then
+ qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs"
+ fi
+
+ qtopia_incdir=""
+ AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir)
+ ac_qtopia_incdir="$qtopia_incdir"
+
+ if test -z "$qtopia_incdir"; then
+ AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.])
+ fi
+
+ qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`;
+ qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`;
+ qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`;
+
+ qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat"
+ qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat"
+ if test "$qtopia_ver" -lt "$qtopia_minver"; then
+ AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr
+is required.])
+ fi
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ ac_cxxflags_safe="$CXXFLAGS"
+ ac_ldflags_safe="$LDFLAGS"
+ ac_libs_safe="$LIBS"
+
+ CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes"
+ LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+ LIBS="$LIBS $LIB_QTOPIA $LIBQT"
+
+ cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qpe/qpeapplication.h>
+#include <qpe/version.h>
+
+int main( int argc, char **argv )
+{
+ QPEApplication app( argc, argv );
+ return 0;
+}
+EOF
+
+ if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ rm -f conftest*
+ else
+ rm -f conftest*
+ AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at
+the end of config.log])
+ fi
+
+ CXXFLAGS="$ac_cxxflags_safe"
+ LDFLAGS="$ac_ldflags_safe"
+ LIBS="$ac_libs_safe"
+
+ AC_LANG_RESTORE
+
+ QTOPIA_INCLUDES="-I$qtopia_incdir"
+ AC_SUBST(QTOPIA_INCLUDES)
+
+ AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir])
+])
+
+
+AC_DEFUN([KDE_INIT_DOXYGEN],
+[
+AC_MSG_CHECKING([for Qt docs])
+kde_qtdir=
+if test "${with_qt_dir+set}" = set; then
+ kde_qtdir="$with_qt_dir"
+fi
+
+AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR)
+AC_MSG_RESULT($QTDOCDIR)
+
+AC_SUBST(QTDOCDIR)
+
+KDE_FIND_PATH(dot, DOT, [], [])
+if test -n "$DOT"; then
+ KDE_HAVE_DOT="YES"
+else
+ KDE_HAVE_DOT="NO"
+fi
+AC_SUBST(KDE_HAVE_DOT)
+KDE_FIND_PATH(doxygen, DOXYGEN, [], [])
+AC_SUBST(DOXYGEN)
+
+DOXYGEN_PROJECT_NAME="$1"
+DOXYGEN_PROJECT_NUMBER="$2"
+AC_SUBST(DOXYGEN_PROJECT_NAME)
+AC_SUBST(DOXYGEN_PROJECT_NUMBER)
+
+KDE_HAS_DOXYGEN=no
+if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then
+ KDE_HAS_DOXYGEN=yes
+fi
+AC_SUBST(KDE_HAS_DOXYGEN)
+
+])
+
+
+AC_DEFUN([AC_FIND_BZIP2],
+[
+AC_MSG_CHECKING([for bzDecompress in libbz2])
+AC_CACHE_VAL(ac_cv_lib_bzip2,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET"
+kde_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(dnl
+[
+#define BZ_NO_STDIO
+#include<bzlib.h>
+],
+ [ bz_stream s; (void) bzDecompress(&s); ],
+ eval "ac_cv_lib_bzip2='-lbz2'",
+ eval "ac_cv_lib_bzip2=no")
+LIBS="$kde_save_LIBS"
+CXXFLAGS="$kde_save_CXXFLAGS"
+AC_LANG_RESTORE
+])dnl
+AC_MSG_RESULT($ac_cv_lib_bzip2)
+
+if test ! "$ac_cv_lib_bzip2" = no; then
+ BZIP2DIR=bzip2
+
+ LIBBZ2="$ac_cv_lib_bzip2"
+ AC_SUBST(LIBBZ2)
+
+else
+
+ cxx_shared_flag=
+ ld_shared_flag=
+ KDE_CHECK_COMPILER_FLAG(shared, [
+ ld_shared_flag="-shared"
+ ])
+ KDE_CHECK_COMPILER_FLAG(fPIC, [
+ cxx_shared_flag="-fPIC"
+ ])
+
+ AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2])
+ AC_CACHE_VAL(ac_cv_lib_bzip2_prefix,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ kde_save_LIBS="$LIBS"
+ LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET"
+ kde_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES"
+
+ AC_TRY_LINK(dnl
+ [
+ #define BZ_NO_STDIO
+ #include<bzlib.h>
+ ],
+ [ bz_stream s; (void) BZ2_bzDecompress(&s); ],
+ eval "ac_cv_lib_bzip2_prefix='-lbz2'",
+ eval "ac_cv_lib_bzip2_prefix=no")
+ LIBS="$kde_save_LIBS"
+ CXXFLAGS="$kde_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])dnl
+
+ AC_MSG_RESULT($ac_cv_lib_bzip2_prefix)
+
+ if test ! "$ac_cv_lib_bzip2_prefix" = no; then
+ BZIP2DIR=bzip2
+
+ LIBBZ2="$ac_cv_lib_bzip2_prefix"
+ AC_SUBST(LIBBZ2)
+
+ AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix])
+ dnl else, we just ignore this
+ fi
+
+fi
+AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR")
+])
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the SSL headers and libraries.
+dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed)
+dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([KDE_CHECK_SSL],
+[
+LIBSSL="-lssl -lcrypto"
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+ac_ssl_includes=NO ac_ssl_libraries=NO
+ssl_libraries=""
+ssl_includes=""
+AC_ARG_WITH(ssl-dir,
+ AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]),
+ [ ac_ssl_includes="$withval"/include
+ ac_ssl_libraries="$withval"/lib$kdelibsuff
+ ])
+
+want_ssl=yes
+AC_ARG_WITH(ssl,
+ AC_HELP_STRING([--without-ssl],[disable SSL checks]),
+ [want_ssl=$withval])
+
+if test $want_ssl = yes; then
+
+AC_MSG_CHECKING(for OpenSSL)
+
+AC_CACHE_VAL(ac_cv_have_ssl,
+[#try to guess OpenSSL locations
+
+ ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes"
+ ssl_incdirs="$ac_ssl_includes $ssl_incdirs"
+ AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir)
+ ac_ssl_includes="$ssl_incdir"
+
+ ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs"
+ if test ! "$ac_ssl_libraries" = "NO"; then
+ ssl_libdirs="$ac_ssl_libraries $ssl_libdirs"
+ fi
+
+ test=NONE
+ ssl_libdir=NONE
+ for dir in $ssl_libdirs; do
+ try="ls -1 $dir/libssl*"
+ if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi
+ done
+
+ ac_ssl_libraries="$ssl_libdir"
+
+ ac_ldflags_safe="$LDFLAGS"
+ ac_libs_safe="$LIBS"
+
+ LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries"
+ LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref"
+
+ AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();,
+ ac_ssl_rsaref="yes"
+ ,
+ ac_ssl_rsaref="no"
+ )
+
+ LDFLAGS="$ac_ldflags_safe"
+ LIBS="$ac_libs_safe"
+
+ if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then
+ have_ssl=no
+ else
+ have_ssl=yes;
+ fi
+
+ ])
+
+ eval "$ac_cv_have_ssl"
+
+ AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes])
+
+ AC_MSG_CHECKING([whether OpenSSL uses rsaref])
+ AC_MSG_RESULT($ac_ssl_rsaref)
+
+ AC_MSG_CHECKING([for easter eggs])
+ AC_MSG_RESULT([none found])
+
+else
+ have_ssl=no
+fi
+
+if test "$have_ssl" = yes; then
+ AC_MSG_CHECKING(for OpenSSL version)
+ dnl Check for SSL version
+ AC_CACHE_VAL(ac_cv_ssl_version,
+ [
+
+ cat >conftest.$ac_ext <<EOF
+#include <openssl/opensslv.h>
+#include <stdio.h>
+ int main() {
+
+#ifndef OPENSSL_VERSION_NUMBER
+ printf("ssl_version=\\"error\\"\n");
+#else
+ if (OPENSSL_VERSION_NUMBER < 0x00906000)
+ printf("ssl_version=\\"old\\"\n");
+ else
+ printf("ssl_version=\\"ok\\"\n");
+#endif
+ return (0);
+ }
+EOF
+
+ ac_save_CPPFLAGS=$CPPFLAGS
+ if test "$ac_ssl_includes" != "/usr/include"; then
+ CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes"
+ fi
+
+ if AC_TRY_EVAL(ac_link); then
+
+ if eval `./conftest 2>&5`; then
+ if test $ssl_version = error; then
+ AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !])
+ else
+ if test $ssl_version = old; then
+ AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.])
+ have_ssl=no
+ fi
+ fi
+ ac_cv_ssl_version="ssl_version=$ssl_version"
+ else
+ AC_MSG_ERROR([Your system couldn't run a small SSL test program.
+ Check config.log, and if you can't figure it out, send a mail to
+ David Faure <faure@kde.org>, attaching your config.log])
+ fi
+
+ else
+ AC_MSG_ERROR([Your system couldn't link a small SSL test program.
+ Check config.log, and if you can't figure it out, send a mail to
+ David Faure <faure@kde.org>, attaching your config.log])
+ fi
+ CPPFLAGS=$ac_save_CPPFLAGS
+
+ ])
+
+ eval "$ac_cv_ssl_version"
+ AC_MSG_RESULT($ssl_version)
+fi
+
+if test "$have_ssl" != yes; then
+ LIBSSL="";
+else
+ AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL])
+ ac_cv_have_ssl="have_ssl=yes \
+ ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref"
+
+
+ ssl_libraries="$ac_ssl_libraries"
+ ssl_includes="$ac_ssl_includes"
+
+ if test "$ac_ssl_rsaref" = yes; then
+ LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref"
+ fi
+
+ if test $ssl_version = "old"; then
+ AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6])
+ fi
+fi
+
+SSL_INCLUDES=
+
+if test "$ssl_includes" = "/usr/include"; then
+ if test -f /usr/kerberos/include/krb5.h; then
+ SSL_INCLUDES="-I/usr/kerberos/include"
+ fi
+elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then
+ SSL_INCLUDES="-I$ssl_includes"
+fi
+
+if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then
+ SSL_LDFLAGS=""
+else
+ SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries"
+fi
+
+AC_SUBST(SSL_INCLUDES)
+AC_SUBST(SSL_LDFLAGS)
+AC_SUBST(LIBSSL)
+])
+
+AC_DEFUN([KDE_CHECK_STRLCPY],
+[
+ AC_REQUIRE([AC_CHECK_STRLCAT])
+ AC_REQUIRE([AC_CHECK_STRLCPY])
+ AC_CHECK_SIZEOF(size_t)
+ AC_CHECK_SIZEOF(unsigned long)
+
+ AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long])
+ AC_TRY_COMPILE(,[
+ #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG
+ choke me
+ #endif
+ ],AC_MSG_RESULT([yes]),[
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+ Apparently on your system our assumption sizeof size_t == sizeof unsigned long
+ does not apply. Please mail kde-devel@kde.org with a description of your system!
+ ])
+ ])
+])
+
+AC_DEFUN([KDE_CHECK_BINUTILS],
+[
+ AC_MSG_CHECKING([if ld supports unversioned version maps])
+
+ kde_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+ echo "{ local: extern \"C++\" { foo }; };" > conftest.map
+ AC_TRY_LINK([int foo;],
+[
+#ifdef __INTEL_COMPILER
+icc apparently does not support libtools version-info and version-script
+at the same time. Dunno where the bug is, but until somebody figured out,
+better disable the optional version scripts.
+#endif
+
+ foo = 42;
+], kde_supports_versionmaps=yes, kde_supports_versionmaps=no)
+ LDFLAGS="$kde_save_LDFLAGS"
+ rm -f conftest.map
+ AM_CONDITIONAL(include_VERSION_SCRIPT,
+ [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"])
+
+ AC_MSG_RESULT($kde_supports_versionmaps)
+])
+
+AC_DEFUN([AM_PROG_OBJC],[
+AC_CHECK_PROGS(OBJC, gcc, gcc)
+test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH])
+if test "x${OBJCFLAGS-unset}" = xunset; then
+ OBJCFLAGS="-g -O2"
+fi
+AC_SUBST(OBJCFLAGS)
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)])
+])
+
+AC_DEFUN([KDE_CHECK_PERL],
+[
+ KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [
+ AC_MSG_ERROR([No Perl found in your $PATH.
+We need perl to generate some code.])
+ ])
+ AC_SUBST(PERL)
+])
+
+AC_DEFUN([KDE_CHECK_LARGEFILE],
+[
+AC_SYS_LARGEFILE
+if test "$ac_cv_sys_file_offset_bits" != no; then
+ CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+fi
+
+if test "x$ac_cv_sys_large_files" != "xno"; then
+ CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=1"
+fi
+
+])
+
+dnl A small extension to PKG_CHECK_MODULES (defined in pkg.m4.in)
+dnl which allows to search for libs that get installed into the KDE prefix.
+dnl
+dnl Syntax: KDE_PKG_CHECK_MODULES(KSTUFF, libkexif >= 0.2 glib = 1.3.4, action-if, action-not)
+dnl defines KSTUFF_LIBS, KSTUFF_CFLAGS, see pkg-config man page
+dnl also defines KSTUFF_PKG_ERRORS on error
+AC_DEFUN([KDE_PKG_CHECK_MODULES], [
+
+ PKG_CONFIG_PATH="$prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH"
+ if test "$prefix" != "$kde_libs_prefix"; then
+ PKG_CONFIG_PATH="$kde_libs_prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH"
+ fi
+ export PKG_CONFIG_PATH
+ PKG_CHECK_MODULES([$1],[$2],[$3],[$4])
+])
+
+
+dnl Check for PIE support in the compiler and linker
+AC_DEFUN([KDE_CHECK_PIE_SUPPORT],
+[
+ AC_CACHE_CHECK([for PIE support], kde_cv_val_pie_support,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ safe_CXXFLAGS=$CXXFLAGS
+ safe_LDFLAGS=$LDFLAGS
+ CXXFLAGS="$CXXFLAGS -fPIE"
+ LDFLAGS="$LDFLAGS -pie"
+
+ AC_TRY_LINK([int foo;], [], [kde_cv_val_pie_support=yes], [kde_cv_val_pie_support=no])
+
+ CXXFLAGS=$safe_CXXFLAGS
+ LDFLAGS=$safe_LDFLAGS
+ AC_LANG_RESTORE
+ ])
+
+ AC_MSG_CHECKING(if enabling -pie/fPIE support)
+
+ AC_ARG_ENABLE(pie,
+ AC_HELP_STRING([--enable-pie],[platform supports PIE linking [default=detect]]),
+ [kde_has_pie_support=$enableval],
+ [kde_has_pie_support=detect])
+
+ if test "$kde_has_pie_support" = "detect"; then
+ kde_has_pie_support=$kde_cv_val_pie_support
+ fi
+
+ AC_MSG_RESULT([$kde_has_pie_support])
+
+ KDE_USE_FPIE=""
+ KDE_USE_PIE=""
+
+ AC_SUBST([KDE_USE_FPIE])
+ AC_SUBST([KDE_USE_PIE])
+
+ if test "$kde_has_pie_support" = "yes"; then
+ KDE_USE_FPIE="-fPIE"
+ KDE_USE_PIE="-pie"
+ fi
+])
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+## 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.
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool --silent'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 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
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ LINUX_64_MODE="32"
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ LINUX_64_MODE="64"
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ testring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \
+ = "XX$testring") >/dev/null 2>&1 &&
+ new_result=`expr "X$testring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ testring=$testring$testring
+ done
+ testring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+ # that will create temporary files in the current directory regardless of
+ # the output directory. Thus, making CWD read-only will cause this test
+ # to fail, enabling locking or at least warning the user not to do parallel
+ # builds.
+ chmod -w .
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w .
+ $rm conftest* out/*
+ rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case "$host_cpu" in
+ ia64*)
+ shrext='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ libsuff=
+ if test "x$LINUX_64_MODE" = x64; then
+ # Some platforms are per default 64-bit, so there's no /lib64
+ if test -d /lib64 -a ! -h /lib64; then
+ libsuff=64
+ fi
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_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=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_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=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_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=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--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([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+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 $CC])
+ 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.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname 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(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_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 `"$lt_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="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_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_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_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'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi4*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+mingw* | pw32*)
+ # win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='win32_libid'
+ ;;
+
+darwin* | rhapsody*)
+ # this will be overwritten by pass_all, but leave it in just in case
+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System`
+ ;;
+ *) # Darwin 1.3 on
+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+ ;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case "$host_cpu" in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ irix5* | nonstopux*)
+ # this will be overridden with pass_all, but let us keep it just in case
+ lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ # this will be overridden with pass_all, but let us keep it just in case
+ lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
+ ;;
+ esac
+ lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ case $host_cpu in
+ alpha* | hppa* | i*86 | ia64* | m68* | mips* | powerpc* | sparc* | s390* | sh* | x86_64* )
+ lt_cv_deplibs_check_method=pass_all ;;
+ # the debian people say, arm and glibc 2.3.1 works for them with pass_all
+ arm* )
+ lt_cv_deplibs_check_method=pass_all ;;
+ *)
+ # glibc up to 2.1.1 does not perform some relocations on ARM
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
+ esac
+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+ else
+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ # this will be overridden with pass_all, but let us keep it just in case
+ lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!). If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+ ;;
+ esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then :
+ else
+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ 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
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # KDE requires run time linking. Make it the default.
+ aix_use_runtimelinking=yes
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='-qmkshrobj ${wl}-G'
+ else
+ shared_flag='-qmkshrobj'
+ fi
+ fi
+ fi
+
+ # Let the compiler handle the export list.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=no
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs'
+
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ ia64*|hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sco*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext|*.$libext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4*)
+ test "$enable_shared" = yes && enable_static=no
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ test -f Makefile && make "$ltmain"
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris* | sysv5*)
+ symcode='[[BDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGISTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+
+ 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
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=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 can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=no
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $compiler_flags $libobjs $deplibs -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=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
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+
+ # KDE requires run time linking. Make it the default.
+ aix_use_runtimelinking=yes
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='-qmkshrobj ${wl}-G'
+ else
+ shared_flag='-qmkshrobj'
+ fi
+ fi
+ fi
+
+ # Let the compiler handle the export list.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi4*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ 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.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=no
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $compiler_flags $libobjs `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes ; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-flat_namespace -Wl,-undefined -Wl,suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-Wl,-undefined -Wl,dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $compiler_flags $libobjs $deplibs'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $compiler_flags $libobjs $deplibs~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $compiler_flags $libobjs $deplibs'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $compiler_flags $libobjs $deplibs'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $compiler_flags $libobjs $deplibs'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $compiler_flags $libobjs $deplibs$output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $compiler_flags $libobjs $deplibs ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $compiler_flags $libobjs $deplibs ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs~$rm $lib.exp'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $compiler_flags $libobjs $deplibs'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs'
+ fi
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv5*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && break
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
+dnl also defines GSTUFF_PKG_ERRORS on error
+AC_DEFUN([PKG_CHECK_MODULES], [
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ AC_MSG_CHECKING(for $2)
+
+ if $PKG_CONFIG --exists "$2" ; then
+ AC_MSG_RESULT(yes)
+ succeeded=yes
+
+ AC_MSG_CHECKING($1_CFLAGS)
+ $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+ AC_MSG_RESULT($$1_CFLAGS)
+
+ AC_MSG_CHECKING($1_LIBS)
+ $1_LIBS=`$PKG_CONFIG --libs "$2"`
+ AC_MSG_RESULT($$1_LIBS)
+ else
+ $1_CFLAGS=""
+ $1_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ ifelse([$4], ,echo $$1_PKG_ERRORS,)
+ fi
+
+ AC_SUBST($1_CFLAGS)
+ AC_SUBST($1_LIBS)
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ ifelse([$3], , :, [$3])
+ else
+ ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
+ fi
+])
+
+
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..fcc414d
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,875 @@
+# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+# 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_if(m4_PACKAGE_VERSION, [2.61],,
+[m4_fatal([this file was generated for autoconf 2.61.
+You have another version of autoconf. If you want to use that,
+you should regenerate the build system entirely.], [63])])
+
+# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+#
+# 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.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10])dnl
+_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# 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.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# 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 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# 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 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# 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 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# 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 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+#
+# 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 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# 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 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# 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 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# 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
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# 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.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# 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 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# 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 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# 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.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# 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.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# 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 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([acinclude.m4])
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..ea2ad17
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,247 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
+#undef HAVE_CARBON_CARBON_H
+
+/* Define if you have the CoreAudio API */
+#undef HAVE_COREAUDIO
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+#undef HAVE_CRT_EXTERNS_H
+
+/* Defines if your system has the crypt function */
+#undef HAVE_CRYPT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have libjpeg */
+#undef HAVE_LIBJPEG
+
+/* Define if you have libpng */
+#undef HAVE_LIBPNG
+
+/* Define if you have a working libpthread (will enable threaded code) */
+#undef HAVE_LIBPTHREAD
+
+/* Define if you have libz */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define if your system needs _NSGetEnviron to set up the environment */
+#undef HAVE_NSGETENVIRON
+
+/* Define if you have res_init */
+#undef HAVE_RES_INIT
+
+/* Define if you have the res_init prototype */
+#undef HAVE_RES_INIT_PROTO
+
+/* Define if you have a STL implementation by SGI */
+#undef HAVE_SGI_STL
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have strlcat */
+#undef HAVE_STRLCAT
+
+/* Define if you have the strlcat prototype */
+#undef HAVE_STRLCAT_PROTO
+
+/* Define if you have strlcpy */
+#undef HAVE_STRLCPY
+
+/* Define if you have the strlcpy prototype */
+#undef HAVE_STRLCPY_PROTO
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Suffix for lib directories */
+#undef KDELIBSUFF
+
+/* Define a safe value for MAXPATHLEN */
+#undef KDEMAXPATHLEN
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `char *', as computed by sizeof. */
+#undef SIZEOF_CHAR_P
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `size_t', as computed by sizeof. */
+#undef SIZEOF_SIZE_T
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* If we use arts volume */
+#undef USE_ARTS
+
+/* Version number of package */
+#undef VERSION
+
+/* Defined if compiling without arts */
+#undef WITHOUT_ARTS
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+
+
+
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+
+
+
+#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
+# include <sys/time.h>
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#endif
+
+
+
+#if !defined(HAVE_RES_INIT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+int res_init(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCAT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcat(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCPY_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcpy(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+
+
+
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+
+
+/* type to use in place of socklen_t if not defined */
+#undef kde_socklen_t
+
+/* type to use in place of socklen_t if not defined (deprecated, use
+ kde_socklen_t) */
+#undef ksize_t
diff --git a/configure.files b/configure.files
new file mode 100644
index 0000000..62a5214
--- /dev/null
+++ b/configure.files
@@ -0,0 +1,3 @@
+./admin/configure.in.min
+configure.in.in
+./yakuake/configure.in.in
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..54378f8
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,163 @@
+dnl =======================================================
+dnl FILE: ./admin/configure.in.min
+dnl =======================================================
+
+dnl This file is part of the KDE libraries/packages
+dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
+
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+
+dnl You should have received a copy of the GNU Library General Public License
+dnl along with this library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+# Original Author was Kalle@kde.org
+# I lifted it in some mater. (Stephan Kulow)
+# I used much code from Janos Farkas
+
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(acinclude.m4) dnl a source file from your sub dir
+
+dnl This is so we can use kde-common
+AC_CONFIG_AUX_DIR(admin)
+
+dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
+unset CDPATH
+
+dnl Checking host/target/build systems, for make, install etc.
+AC_CANONICAL_SYSTEM
+dnl Perform program name transformation
+AC_ARG_PROGRAM
+
+dnl Automake doc recommends to do this only here. (Janos)
+AM_INIT_AUTOMAKE(yakuake, 2.8.1) dnl searches for some needed programs
+
+KDE_SET_PREFIX
+
+dnl generate the config header
+AM_CONFIG_HEADER(config.h) dnl at the distribution this done
+
+dnl Checks for programs.
+AC_CHECK_COMPILERS
+AC_ENABLE_SHARED(yes)
+AC_ENABLE_STATIC(no)
+KDE_PROG_LIBTOOL
+
+dnl for NLS support. Call them in this order!
+dnl WITH_NLS is for the po files
+AM_KDE_WITH_NLS
+
+KDE_USE_QT(3.2)
+AC_PATH_KDE
+dnl =======================================================
+dnl FILE: configure.in.in
+dnl =======================================================
+
+#MIN_CONFIG(3.2)
+CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
+
+if test "$build_arts" = "yes"; then
+ AC_DEFINE(USE_ARTS, 1, [If we use arts volume])
+ LIB_ARTS="-lartskde"
+ AC_SUBST(LIB_ARTS)
+fi
+
+KDE_INIT_DOXYGEN([The API Reference], [Version $VERSION])
+
+dnl =======================================================
+dnl FILE: ./yakuake/configure.in.in
+dnl =======================================================
+
+#MIN_CONFIG(3.2.0)
+
+dnl PACKAGE set before
+AC_C_BIGENDIAN
+AC_CHECK_KDEMAXPATHLEN
+
+KDE_CREATE_SUBDIRSLIST
+AM_CONDITIONAL(po_SUBDIR_included, test "x$po_SUBDIR_included" = xyes)
+AM_CONDITIONAL(yakuake_SUBDIR_included, test "x$yakuake_SUBDIR_included" = xyes)
+AC_CONFIG_FILES([ Makefile ])
+AC_CONFIG_FILES([ po/Makefile ])
+AC_CONFIG_FILES([ po/de/Makefile ])
+AC_CONFIG_FILES([ po/el/Makefile ])
+AC_CONFIG_FILES([ po/es/Makefile ])
+AC_CONFIG_FILES([ po/et/Makefile ])
+AC_CONFIG_FILES([ po/fr/Makefile ])
+AC_CONFIG_FILES([ po/hu/Makefile ])
+AC_CONFIG_FILES([ po/it/Makefile ])
+AC_CONFIG_FILES([ po/ja/Makefile ])
+AC_CONFIG_FILES([ po/nl/Makefile ])
+AC_CONFIG_FILES([ po/pl/Makefile ])
+AC_CONFIG_FILES([ po/pt/Makefile ])
+AC_CONFIG_FILES([ po/pt_BR/Makefile ])
+AC_CONFIG_FILES([ po/sv/Makefile ])
+AC_CONFIG_FILES([ po/tr/Makefile ])
+AC_CONFIG_FILES([ yakuake/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/default/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/default/tabs/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/default/title/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_dark/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_dark/tabs/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_dark/title/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_light/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_light/tabs/Makefile ])
+AC_CONFIG_FILES([ yakuake/skins/plastik_light/title/Makefile ])
+AC_CONFIG_FILES([ yakuake/src/Makefile ])
+AC_OUTPUT
+# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
+if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
+ # And if so, warn when they don't match
+ if test "$kde_libs_prefix" != "$given_prefix"; then
+ # And if kde doesn't know about the prefix yet
+ echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
+ if test $? -ne 0; then
+ echo ""
+ echo "Warning: you chose to install this package in $given_prefix,"
+ echo "but KDE was found in $kde_libs_prefix."
+ echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
+ echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
+ echo "Then restart KDE."
+ echo ""
+ fi
+ fi
+fi
+
+if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
+ echo ""
+ echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
+ echo "was not included. Therefore, GCC symbol visibility support remains disabled."
+ echo ""
+ echo "For better performance, consider including the Qt visibility supporting patch"
+ echo "located at:"
+ echo ""
+ echo "http://bugs.kde.org/show_bug.cgi?id=109386"
+ echo ""
+ echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
+ echo "everything will continue to work just fine without it."
+ echo ""
+fi
+
+if test "$all_tests" = "bad"; then
+ if test ! "$cache_file" = "/dev/null"; then
+ echo ""
+ echo "Please remove the file $cache_file after changing your setup"
+ echo "so that configure will find the changes next time."
+ echo ""
+ fi
+else
+ echo ""
+ echo "Good - your configure finished. Start make now"
+ echo ""
+fi
diff --git a/configure.in.in b/configure.in.in
new file mode 100644
index 0000000..a47e6de
--- /dev/null
+++ b/configure.in.in
@@ -0,0 +1,11 @@
+#MIN_CONFIG(3.2)
+CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
+
+if test "$build_arts" = "yes"; then
+ AC_DEFINE(USE_ARTS, 1, [If we use arts volume])
+ LIB_ARTS="-lartskde"
+ AC_SUBST(LIB_ARTS)
+fi
+
+KDE_INIT_DOXYGEN([The API Reference], [Version $VERSION])
+
diff --git a/po/Makefile.am b/po/Makefile.am
new file mode 100644
index 0000000..54cb7de
--- /dev/null
+++ b/po/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = $(AUTODIRS)
diff --git a/po/de/Makefile.am b/po/de/Makefile.am
new file mode 100644
index 0000000..b15dd61
--- /dev/null
+++ b/po/de/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = de
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/de/yakuake.po b/po/de/yakuake.po
new file mode 100644
index 0000000..92b8500
--- /dev/null
+++ b/po/de/yakuake.po
@@ -0,0 +1,578 @@
+# translation of yakuake.po to german
+# translation of yakuake.po to
+#
+# Eike Hein <sho@eikehein.com>, 2006.
+# Thomas Reitelbach <tr@erdfunkstelle.de>, 2006.
+# Frederik Schwarzer <schwarzerf@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-16 17:09+0100\n"
+"Last-Translator: Frederik Schwarzer <schwarzerf@gmail.com>\n"
+"Language-Team: german <kde-i18n-de@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Ein der Quake-Konsole nachempfundener Terminalemulator basierend auf KDE "
+"Konsole."
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Betreuer"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Projektgründer (Inaktiv)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Plastik-Design"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Automatisch öffnen, wenn Mauszeiger obere Bildschirmkante berührt"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Bildschirm %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Mit der Unterfensterleiste können Sie zwischen Sitzungen umschalten."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Neue Sitzung"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Fügt eine neue Sitzung hinzu. Drücken Sie die Maustaste und halten Sie sie "
+"gedrückt, um einen Sitzungstyp aus einem Menü zu wählen."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Sitzung schließen"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Schließt die aktive Sitzung."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "von %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Sofern verfügbar, wird in der Titelleiste der Sitzungstitel angezeigt."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Bei Fokusverlust geöffnet lassen"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Menü öffnen"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Yakuake einfahren/ausfahren"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Fährt das Yakuake-Fenster ein bzw. aus"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Zwei Terminals, waagrecht"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Zwei Terminals, senkrecht"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Vier Terminals"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Zu nächstem Terminal gehen"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Zu vorigem Terminal gehen"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Auswahl einfügen"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Sitzung umbenennen ..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Fensterbreite verringern"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Fensterbreite vergrößern"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Fensterhöhe vergrößern"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Fensterhöhe verringern"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Globale Kurzbefehle einrichten ..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Zu nächster Sitzung gehen"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Zu voriger Sitzung gehen"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Sitzung nach links verschieben"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Sitzung nach rechts verschieben"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Terminal waagrecht teilen"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Terminal senkrecht teilen"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Terminal schließen"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Zu Sitzung %1 wechseln"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Anwendung erfolgreich gestartet!\n"
+"Zur Benutzung %1 drücken ..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Sie haben mehrere offene Sitzungen. Wenn Sie fortfahren, werden diese ebenfalls "
+"beendet.\n"
+"\n"
+"Sind Sie sicher, dass Sie das Programm beenden möchten?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Wirklich beenden?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Sitzung schl&ießen"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake-Benachrichtigung"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Schnelleinstellungen"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Auf Bildschirm öffnen"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Geöffnet halten, wenn Fokus verloren geht"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Einstellungen"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "An Zeigerposition"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Allgemein"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Designs"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Erster Start"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Unbenannt"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake-Designs"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Designarchiv auswählen"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Download des Designs fehlgeschlagen"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Der Installer benötigt eine Datei, kein Verzeichnis."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Benötigte Dateien konnten im Designarchiv nicht gefunden werden.\n"
+"\n"
+"Das Archiv ist ungültig."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Der Inhalt des Designarchivs konnte nicht angezeigt werden."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Dieses Design ist bereits installiert, und Sie besitzen nicht die nötigen "
+"Rechte, es zu überschreiben."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Dieses Design ist bereits installiert. Möchten Sie es überschreiben?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Design bereits vorhanden"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Design neu installieren"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Design konnte nicht entfernt werden"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Das Designarchiv konnte nicht geöffnet werden."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Design kann nicht installiert werden"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Möchten Sie \"%1\" von %2 entfernen?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Design entfernen"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Befehlsfenster\n"
+"Befehlsfenster %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Eike Hein, Frederik Schwarzer"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "sho@eikehein.com, schwarzerf@gmail.com"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Design installieren ..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Hintergrundfarbe des Designs:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"Diese Einstellung definiert die Farbe der Oberfläche, auf die durchscheinende "
+"Design-Elemente gemalt werden. Sie ist nur verfügbar, wenn Yakuake außerhalb "
+"von KDE läuft und Transluzenz nicht verfügbar ist."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Design"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Willkommen in Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Sie können den Kurzbefehl jederzeit im Menü ändern."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Keiner"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Bevor Sie die Anwendung benutzen, sollten Sie den Kurzbefehl zum Öffnen und "
+"Schließen des Yakuake-Fensters festlegen:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Bei Programmstart Hinweisfenster anzeigen"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Beenden bestätigen, wenn mehr als eine Sitzung geschlossen wird"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Unterfensterleiste anzeigen"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Fenster über anderen Fenstern halten"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Ist diese Einstellung markiert, bleibt das Yakuake-Fenster über anderen "
+"Fenster, selbst wenn es den Fokus verliert."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Fenster geöffnet halten, wenn der Fokus verloren geht"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Ist diese Einstellung markiert, bleibt das Yakuake-Fenster geöffnet, wenn es "
+"den Fokus verliert."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Tastenkürzel für Ein- und Ausfahren holt Fokus zurück"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Ist diese Einstellung markiert, holt das Tastenkürzel den Fokus zurück, wenn "
+"das Yakuake-Fenster zwar geöffnet ist, aber nicht den Fokus hat. Ist diese "
+"Einstellung deaktiviert, fährt das Yakuake-Fenster mit dem Tastenkürzel ein, ob "
+"es den Fokus hat, oder nicht."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Automatisch öffnen, wenn der Mauszeiger die Bildschirmkante berührt"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Ist diese Einstellung markiert, wird das Yakuake-Fenster geöffnet, wenn der "
+"Mauszeiger die obere Bildschirmkante berührt."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Größe und Animation"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Breite:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Höhe:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Geschwindigkeit:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Diese Einstellung steuert die ungefähre Dauer der Animation beim Aus- und "
+"Einfahren des Yakuake-Fensters."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Position"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Auf Bildschirm anzeigen:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Bildschirm 1"
+
+#~ msgid "%"
+#~ msgstr "%"
+
+#~ msgid "~"
+#~ msgstr "~"
+
+#~ msgid "ms"
+#~ msgstr "ms"
+
+#~ msgid "Access key"
+#~ msgstr "Zugriffstaste"
+
+#~ msgid "Toggles the open/close state of Yakuake"
+#~ msgstr "Öffnet/schließt Yakuake"
+
+#~ msgid "Screen Display"
+#~ msgstr "Bildschirm"
+
+#~ msgid "Terminal Width"
+#~ msgstr "Terminalbreite"
+
+#~ msgid "Horizontal Location"
+#~ msgstr "Horizontale Position"
+
+#~ msgid "Animation Duration"
+#~ msgstr "Animationsdauer"
+
+#~ msgid "Force Background Refresh"
+#~ msgstr "Hintergrundaktualisierung erzwingen"
+
+#~ msgid "Shortcuts"
+#~ msgstr "Kurzbefehle"
+
+#~ msgid "Change Access Key..."
+#~ msgstr "Zugriffstaste ändern ..."
+
+#~ msgid "Change Control Keys..."
+#~ msgstr "Kontrolltasten ändern ..."
diff --git a/po/el/Makefile.am b/po/el/Makefile.am
new file mode 100644
index 0000000..da7e49a
--- /dev/null
+++ b/po/el/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = el
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/el/yakuake.po b/po/el/yakuake.po
new file mode 100644
index 0000000..3f7c66d
--- /dev/null
+++ b/po/el/yakuake.po
@@ -0,0 +1,535 @@
+# translation of yakuake.po to Greek
+#
+# Spiros Georgaras <sng@hellug.gr>, 2006, 2007.
+# Toussis Manolis <manolis@koppermind.homelinux.org>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-10-11 23:51+0300\n"
+"Last-Translator: Spiros Georgaras <sng@hellug.gr>\n"
+"Language-Team: Greek <i18ngr@lists.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Ένας προσομοιωτής τερματικού σε στυλ Quake βασισμένος στην τεχνολογία του KDE "
+"Konsole. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Συντηρητής"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Ιδρυτής έργου (μη ενεργός)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Οθόνη %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Η γραμμή καρτέλας σας επιτρέπει την εναλλαγή μεταξύ των συνεδριών."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Νέα συνεδρία"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Προσθήκη μιας νέας συνεδρίας. Πιέστε και κρατήστε πατημένο για την επιλογή του "
+"τύπου συνεδρίας."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Κλείσιμο συνεδρίας"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Κλείσιμο της ενεργού συνεδρίας."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "κατά %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Η γραμμή τίτλου εμφανίζει τον τίτλο της συνεδρίας αν είναι διαθέσιμος."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Διατήρηση ανοιχτό κατά την απώλεια εστίασης"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Άνοιγμα μενού"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Άνοιγμα/ανάκληση του Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Κύλιση μέσα και έξω του παραθύρου του Yakuake"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Δύο τερματικά, οριζόντια"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Δύο τερματικά, κατακόρυφα"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Τέσσερα τερματικά, ορθογώνιο"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Μετάβαση στο επόμενο τερματικό"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Μετάβαση στο προηγούμενο τερματικό"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Επικόλληση επιλογής"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Μετονομασία συνεδρίας..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Αύξηση πλάτους"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Μείωση πλάτους"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Αύξηση ύψους"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Μείωση ύψους"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Ρύθμιση καθολικών συντομεύσεων..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Μετάβαση στην επόμενη συνεδρία"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Μετάβαση στην προηγούμενη συνεδρία"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Μετακίνηση συνεδρίας αριστερά"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Μετακίνηση συνεδρίας δεξιά"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Διαχωρισμός τερματικού οριζόντια"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Διαχωρισμός τερματικού κατακόρυφα"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Κλείσιμο τερματικού"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Εναλλαγή στη συνεδρία %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Η εφαρμογή εκτελέστηκε με επιτυχία!\n"
+"Πατήστε το %1 για χρήση της..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Έχετε πολλαπλές ανοιχτές συνεδρίες. Αυτές θα τερματιστούν αν συνεχίσετε.\n"
+"\n"
+"Επιθυμείτε πράγματι την έξοδο;"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Πραγματικά έξοδος;"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Κ&λείσιμο συνεδρίας"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Ειδοποίηση του Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Γρήγορες επιλογές"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Άνοιγμα στην οθόνη"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Διατήρηση ανοιχτό κατά την αλλαγή εστίασης"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Στη θέση ποντικιού"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Γενικά"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Θέματα"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Πρώτη εκτέλεση"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Χωρίς όνομα"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Άγνωστο"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Θέματα του Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Επιλέξτε αρχειοθήκη θέματος"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Αποτυχία λήψης του θέματος"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Δόθηκε στην εγκατάσταση ένας κατάλογος και όχι ένα αρχείο."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Αδυναμία εντοπισμού των απαραίτητων αρχείων στην αρχειοθήκη του θέματος.\n"
+"\n"
+" Η αρχειοθήκη φαίνεται να μην είναι έγκυρη."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Αδυναμία εμφάνισης περιεχομένων της αρχειοθήκης θέματος."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Το θέμα φαίνεται να έχει εγκατασταθεί ήδη και δεν έχετε τα απαιτούμενα "
+"δικαιώματα για την αντικατάστασή του."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr ""
+"Το θέμα φαίνεται να είναι εγκατεστημένο ήδη. Επιθυμείτε την αντικατάστασή του;"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Το θέμα υπάρχει ήδη"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Επανεγκατάσταση θέματος"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Αδυναμία διαγραφής θέματος"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Η αρχειοθήκη του θέματος δεν μπορεί να ανοιχτεί."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Αδυναμία εγκατάστασης θέματος"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Επιθυμείτε την αφαίρεση του \"%1\" με %2;"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Αφαίρεση θέματος"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Κέλυφος\n"
+"Αριθμ. κελύφους. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Σπύρος Γεωργαράς, Τούσης Μανώλης"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "sng@hellug.gr,manolis@koppermind.homelinux.org"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Εγκατάσταση θέματος..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Θέμα"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Καλώς ήρθατε στο Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr ""
+"Μπορείτε να τροποποιήσετε τη συντόμευση οποιαδήποτε στιγμή μέσω του μενού."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Κανένα"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Πριν τη χρήση της εφαρμογής, ίσως να επιθυμείτε την τροποποίηση της συντόμευσης "
+"πληκτρολογίου που χρησιμοποιείται για το άνοιγμα και κλείσιμο του παραθύρου του "
+"Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Εμφάνιση αναδυόμενης ειδοποίησης κατά την έναρξη της εφαρμογής"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Επιβεβαίωση εξόδου όταν γίνεται κλείσιμο παραπάνω από μίας συνεδρίας"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Εμφάνιση της γραμμής καρτελών"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Διατήρηση ανοιχτού παραθύρου σε αλλαγή εστίασης"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Ενεργοποιήστε αυτήν την επιλογή αν θέλετε να παραμένει ανοικτό το παράθυρο του "
+"Yakuake όταν χάνει την εστίαση."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Διατήρηση ανοιχτού παραθύρου σε αλλαγή εστίασης"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Ενεργοποιήστε αυτήν την επιλογή αν θέλετε να παραμένει ανοικτό το παράθυρο του "
+"Yakuake όταν χάνει την εστίαση."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Χρησιμοποιήσετε το Άνοιγμα/Ανάκληση για να εστιάσετε στο παράθυρο"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Ενεργοποιήστε αυτήν την επιλογή αν θέλετε η συντόμευση Άνοιγμα/Ανάκληση να "
+"περνάει την εστίαση στο παράθυρο του Yakuake αν αυτό είναι ήδη ανοικτό. "
+"Απενεργοποιήστε την αν θέλετε η συντόμευση Άνοιγμα/Ανάκληση να κλείνει το "
+"παράθυρο του Yakuake ανεξαρτήτως από το αν έχει την εστίαση ή όχι."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Ενεργοποιήστε αυτήν την επιλογή αν θέλετε να παραμένει ανοικτό το παράθυρο του "
+"Yakuake όταν χάνει την εστίαση."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Μέγεθος και κίνηση"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Πλάτος:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Ύψος:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Ταχύτητα:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Αυτή η επιλογή ρυθμίζει τη διάρκεια του εφέ κίνησης όταν το παράθυρο του "
+"Yakuake ανοίγει ή κλείνει."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Θέση"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Άνοιγμα στην οθόνη:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Οθόνη 1"
diff --git a/po/es/Makefile.am b/po/es/Makefile.am
new file mode 100644
index 0000000..d3df28d
--- /dev/null
+++ b/po/es/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = es
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/es/yakuake.po b/po/es/yakuake.po
new file mode 100644
index 0000000..865de39
--- /dev/null
+++ b/po/es/yakuake.po
@@ -0,0 +1,537 @@
+# translation of yakuake.po to Español
+#
+# Israel Garcia <israelgarcia86@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-26 16:56+0100\n"
+"Last-Translator: Israel Garcia <israelgarcia86@gmail.com>\n"
+"Language-Team: Español <kde-es@kybs.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Un emulador de terminal de tipo Quake, basado en la tecnología de KDE Konsole. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Responsable"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Fundador del proyecto (inactivo)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Piel de aspecto plástico"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Apertura automática al situar el cursor sobre el borde de la pantalla"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Pantalla %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "La barra de pestañas le permite cambiar entre sesiones."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nueva sesión"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Añade una nueva sesión. Pulse y mantenga para seleccionar el tipo de sesión "
+"desde el menú."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Cerrar sesión"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Cierra la sesión activa."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "por %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "La barra de título muestra el título de la sesión si está disponible."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Mantener abierta cuando pierda el foco"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Abrir el menú"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Abrir/retraer Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Desliza la ventana de Yakuake hacia arriba y hacia abajo"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Dos terminales en horizontal"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Dos terminales en vertical"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Cuatro terminales formando un cuadrado"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Ir al siguiente terminal"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Ir al terminal anterior"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Pegar selección"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Cambiar el nombre de la sesión..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Aumentar la anchura"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Reducir la anchura"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Aumentar la altura"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Reducir la altura"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Configurar accesos rápidos globales..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Ir a la sesión siguiente"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Ir a la sesión anterior"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Mover la sesión hacia la izquierda"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Mover la sesión hacia la derecha"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Dividir el terminal horizontalmente"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Dividir el terminal verticalmente"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Cerrar el terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Cambiar a la sesión %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"La aplicación se ha iniciado correctamente.\n"
+"Pulse %1 para abrirla..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Ha abierto varias sesiones. Se cerrarán si continúa.\n"
+"\n"
+"¿Seguro que desea salir?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "¿Salir realmente?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Cerrar &la sesión"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Notificación de Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Opciones rápidas"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Abrir en la pantalla"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Mantener abierta al cambiar el foco"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Preferencias"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "En la ubicación del ratón"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "General"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Pieles"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Primera ejecución"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Sin nombre"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Pieles de Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Seleccionar el archivo de pieles"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Falló la descarga de la piel"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Se le ha indicado un directorio al instalador, no un fichero."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"No ha sido posible localizar los archivos necesarios en el archivo de la piel.\n"
+"\n"
+" El archivo no parece ser válido."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "No es posible listar los contenidos del archivo de piel."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Parece que esta piel ya está instalada, y usted carece de los permisos "
+"necesarios para reescribirla."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Parece que esta piel ya está instalada. ¿Desea sobreescribirla?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "La piel ya existe"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Reinstalar la piel"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "No ha sido posible borrar la piel"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "No se pudo abrir el archivo que contiene la piel."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "No se puede instalar la piel"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "¿Desea eliminar «%1» por %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Eliminar la piel"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Consola\n"
+"Consola nº %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr ""
+"Israel García García,Juan Manuel García Molina,Enrique Matías Sánchez (Quique)"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "israelgarcia86@gmail.com,juanma@superiodico.net,cronopios@gmail.com"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Instalar una piel..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Color de fondo de la piel:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"Esto controla el color de la superficie que transluce los elementos de la piel "
+"que están encima. Esta configuración está únicamente disponible si Yakuake está "
+"ejecutándose fuera de KDE y la transparencia no está disponible."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Piel"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Bienvenido a Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr ""
+"Puede cambiar el acceso rápido posteriormente en cualquier momento a través del "
+"menú."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Ninguno"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Antes de usar la aplicación, puede que desee cambiar los accesos rápidos de "
+"teclado que se usan para abrir y cerrar la ventana de Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Mostrar el aviso emergente en el inicio de la aplicación"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Confirmar la salida cuando haya varias sesiones abiertas"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Mostrar la barra de pestañas"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Mantener ventana por encima de otras ventanas"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Habilite esta opción si desea que la ventana de Yakuake permanezca abierta "
+"cuando pierda el foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Mantener la ventana abierta cuando cambie el foco"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Habilite esta opción si desea que la ventana de Yakuake permanezca abierta "
+"cuando pierda el foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Use la acción Abrir/Retraer para enfocar la ventana"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Habilite esta opción si desea que el acceso rápido Abrir/Retraer enfoque la "
+"ventana de Yakuake cuando ya esté abierta pero no tenga el foco. Deshabilite "
+"esta opción para que el acceso rápido Abrir/Retraer retraiga la ventana de "
+"Yakuake independientemente de si tiene o no el foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Abrir automáticamente cuando el cursor toque el borde de la pantalla"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Habilite esta opción si desea que la ventana de Yakuake se abra cuando el "
+"cursor toque la parte superior del borde de la pantalla."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Tamaño y animación"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Anchura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Altura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Velocidad:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Esta opción controla la duración aproximada de la animación de deslizamiento al "
+"abrir o retraer la ventana de Yakuake."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Posición"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Abrir en la pantalla:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Pantalla 1"
diff --git a/po/et/Makefile.am b/po/et/Makefile.am
new file mode 100644
index 0000000..21009b2
--- /dev/null
+++ b/po/et/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = et
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/et/yakuake.po b/po/et/yakuake.po
new file mode 100644
index 0000000..590ac37
--- /dev/null
+++ b/po/et/yakuake.po
@@ -0,0 +1,529 @@
+# translation of yakuake.po to
+#
+# Marek Laane <bald@starman.ee>, 2006-2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-12 20:24+0300\n"
+"Last-Translator: Marek Laane <bald@starman.ee>\n"
+"Language-Team: <kde-et@linux.ee>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Quake stiilis terminaliemulaator, mis kasutab KDE Konsooli tehnoloogiat. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Hooldaja"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Projekti rajaja (pole aktiivne)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Plastiku nahk"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Automaatne avamine kursori liikumisel ekraani serva"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Ekraan %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Kaardiriba võimaldab lülituda seansside vahel."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Uus seanss"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr "Lisab uue seansi. Hoia all menüüst seansitüübi valimiseks."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Sulge seanss"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Sulgeb aktiivse seansi."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr ", autor %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Tiitliriba näitab võimaluse korral seansi nime."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Hoitakse avatuna fookuse kaotamisel"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Ava menüü"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Ava/Peida Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Lülitab Yakuake akna sisse ja välja"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Kaks terminali, rõhtsalt"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Kaks terminali, püstiselt"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Neli terminali"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Järgmisse terminali"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Eelmisse terminali"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Aseta valik"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Nimeta seanss ümber..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Suurenda laiust"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Vähenda laiust"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Suurenda kõrgust"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Vähenda kõrgust"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Globaalsete kiirklahvide seadistamine..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Järgmisele seansile"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Eelmisele seansile"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Liiguta seanss vasakule"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Liiguta seanss paremale"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Poolita terminal rõhtsuunas"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Poolita terminal püstsuunas"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Sulge terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Lülitu seansile %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Rakendus on edukalt käivitatud!\n"
+"Vajuta %1 selle kasutamiseks..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Sul on mitu avatud seanssi. Jätkamisel need tapetakse.\n"
+"\n"
+"Kas tõesti väljuda?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Kas tõesti väljuda?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Su&lge seanss"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake märguanne"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Kiirvalikud"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Avatakse ekraanil"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Fookuse muutmisel hoitakse avatuna"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Seadistused"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Hiire asukohas"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Üldine"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Nahad"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Esmakäivitus"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Nimetu"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Tundmatu"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake nahad"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Naha arhiivifaili valimine"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Naha allalaadimine nurjus"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Paigaldajale anti ette kataloog, mitte fail."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Vajalike failide tuvastamine naha arhiivifailis nurjus.\n"
+"\n"
+" Arhiivifail tundub olevat vigane."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Naha arhiivifaili sisu tuvastamine nurjus."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Paistab, et see nahk on juba paigadatud, ja sul pole õigust seda üle kirjutada."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Paistab, et see nahk on juba paigaldatud. Kas kirjutada see üle?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Nahk on juba olemas"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Paigalda nahk uuesti"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Naha kustutamine nurjus"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Naha arhiivifaili avamine nurjus."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Naha paigaldamine nurjus"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Kas eemaldada \"%1\", mille autor on %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Eemalda nahk"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Shell\n"
+"Shell nr. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Marek Laane"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "bald@starman.ee"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Paigalda nahk..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Naha taustavärv:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"See määrab esiplaani värvi, millest koosnevad läbipaistvad naha elemendid. Seda "
+"saab kasutada ainult siis, kui Yakuaket pruugitakse väljaspool KDE-d ning "
+"läbipaistvus ei ole kasutatav."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Nahk"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Tere tulemast kasutama Yakuaket</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Kiirklahvi saab muuta ka hiljem menüü abil."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Puudub"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Enne rakenduse käivitamist võib olla mõttekas muuta kiirklahvi, millega "
+"avatakse ja suletakse Yakuake aken:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Märguande näitamine rakenduse käivitamisel"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Kinnituse küsimine mitme seansi sulgemisel"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Kaardiriba näitamine"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Aken hoitakse teiste akende kohal"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Sisselülitamisel jääb Yakuake aken teiste akende kohale ka siis, kui see ei asu "
+"enam fooksuses."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Fookuse muutumisel hoitakse aken avatuna"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Sisselülitamisel jääb Yakuake aken avatuks ka siis, kui see ei asu enam "
+"fooksuses."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Avamis/peitmistoimingu kasutamine akna fokuseerimiseks"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Sisselülitamisel saab avamis/peitmistoimingu kiirklahviga anda Yakuake aknale "
+"fookuse, kui see on juba avatud, aga pole fookuses. Kui see pole sisse "
+"lülitatud, peidab avamis/peitmiskäsk Yakuake sellest hoolimata, kas see on "
+"fookuses või mitte."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Automaatne avamine kursori liikumisel ekraani serva"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Sisselülitamisel jääb Yakuake aken avatuks ka siis, kui hiirekursor puudutab "
+"ekraani ülemist serva."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Suurus ja animatsioon"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Laius"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Kõrgus:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Kiirus:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Siin saab määrata animatsiooni kiiruse Yakuake akna avamisel või peitmisel."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Asend"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Avatakse ekraanil:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Ekraan 1"
diff --git a/po/fr/Makefile.am b/po/fr/Makefile.am
new file mode 100644
index 0000000..1e563b7
--- /dev/null
+++ b/po/fr/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = fr
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/fr/yakuake.po b/po/fr/yakuake.po
new file mode 100644
index 0000000..e42c8ce
--- /dev/null
+++ b/po/fr/yakuake.po
@@ -0,0 +1,542 @@
+# translation of yakuake.po to
+#
+# Daniel Huhardeaux <devel@tootai.net>, 2006, 2007.
+# Éric Bischoff <ebischoff@nerim.net>, 2006.
+# Xavier Guerrin <xavier.guerrin@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-10-28 16:33+0100\n"
+"Last-Translator: Xavier Guerrin <xavier.guerrin@gmail.com>\n"
+"Language-Team: <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Un émulateur de terminal dans le style de Quake basé sur la technologie Konsole "
+"de KDE."
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Mainteneur"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Créateur du projet (inactif)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Écran %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "La barre des onglets vous permet de basculer de session"
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nouvelle session"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Ajoute une nouvelle session. Appuyez et maintenez enfoncé pour sélectionner le "
+"type de session à partir du menu."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Fermer la session"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Ferme la session courante."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "de %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr ""
+"La barre de titre affiche, s'il est disponible, le titre de la session."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Garder ouvert lors d'une perte de focus"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Ouvrir le Menu"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Ouvrir/Rétracter Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Active ou désactive la fenêtre de Yakuake"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Deux Terminaux horizontaux"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Deux Terminaux verticaux"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Quatre Terminaux en mosaïque"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Aller au Terminal suivant"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Aller au Terminal précédent"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Coller la sélection"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Renommer la session..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Augmenter la largeur"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Diminuer la largeur"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Augmenter la hauteur"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Diminuer la hauteur"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Configurer les raccourcis globaux..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Aller à la Session suivante"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Aller à la Session précédente"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Déplacer la Session vers la gauche"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Déplacer la Session vers la droite"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Scinder le Terminal horizontalement"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Scinder le Terminal verticalement"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Fermer le Terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Aller à la Session %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Application lancée avec succès !\n"
+"Appuyez sur %1 pour l'utiliser..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Plusieurs sessions sont ouvertes. Celles-ci seront détruites si vous "
+"poursuivez.\n"
+"\n"
+"Confirmez-vous la fermeture ?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Vraiment sortir ?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "&Fermer la Session"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Message de Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Options instantanées"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Ouvrir à l'écran"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Garder ouvert lors d'un changement de focus"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Paramètres"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "À la position de la souris"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Général"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Thèmes"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Première exécution"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Sans nom"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Thèmes Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Sélectionner l'archive du Thème"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Erreur de chargement du Thème."
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "L'installateur a besoin d'un répertoire et non d'un fichier."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Impossible de localiser les fichiers nécessaires dans l'archive du thème.\n"
+"\n"
+"L'archive semble invalide."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Impossible de lister le contenu de l'archive du thème."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Ce thème semble déjà installé et vous ne possédez pas les droits nécessaires "
+"pour le remplacer."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Ce thème semble déjà installé. Voulez-vous le remplacer ?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Thème déjà existant"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Réinstaller le thème"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Impossible de supprimer le thème"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "L'archive du thème n'a pu être ouverte."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Impossible d'installer le thème"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Voulez-vous supprimer \"%1\" de %2 ?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Supprimer le thème"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Console\n"
+"Console N° %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Daniel Huhardeaux"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "devel@tootai.net"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Installer le thème..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Couleur de fond du thème :"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"Ceci contrôle la couleur de la surface sur laquelle les éléments transparents "
+"des thèmes sont rendus. Ce paramètre n'est disponible que lorsque Yakuake est "
+"lancé en dehors de KDE et que la transparence n'est pas disponible."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Thème"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Bienvenue dans Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr ""
+"Vous pouvez à chaque instant modifier les touches de raccourci via le menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Aucun"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Avant d'utiliser l'application, vous devriez paramétrer le raccourci "
+"d'ouverture et de fermeture de la fenêtre de Yakuake :"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Afficher la fenêtre de notification lors du démarrage de l'application"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr ""
+"Confirmer la fermeture de l'application lorsque plusieurs sessions sont "
+"ouvertes"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Afficher la barre d'onglets"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Maintenir la fenêtre au-dessus des autres"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Activez cette option si vous voulez que la fenêtre de Yakuake reste visible "
+"quand elle perd le focus."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Maintenir la fenêtre visible quand le focus change"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Activez cette option si la fenêtre Yakuake doit rester ouverte lorsqu'il y a "
+"perte de focus."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr ""
+"Utiliser l'action Ouverture/Rétractation pour obtenir le focus sur la fenêtre"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Validez cette option si vous désirez que le raccourci d'Ouverture/Rétractation "
+"récupère le focus sur la fenêtre déjà ouverte. Désactivez cette option pour "
+"rétracter la fenêtre de Yakuake via le raccourci peu importe le focus."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Activez cette option si la fenêtre Yakuake doit rester ouverte lorsqu'il y a "
+"perte de focus."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Taille et Animation"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Largeur :"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Hauteur :"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Vitesse :"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Ce paramètre contrôle la durée approximative de l'animation lors de l'ouverture "
+"ou rétractation de la fenêtre Yakuake."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Position"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Ouvrir à l'écran :"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Écran 1"
diff --git a/po/hu/Makefile.am b/po/hu/Makefile.am
new file mode 100644
index 0000000..a60c4c4
--- /dev/null
+++ b/po/hu/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = hu
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/hu/yakuake.po b/po/hu/yakuake.po
new file mode 100644
index 0000000..ebeb8f1
--- /dev/null
+++ b/po/hu/yakuake.po
@@ -0,0 +1,522 @@
+# translation of yakuake.po to Hungarian
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-12-12 11:11+0100\n"
+"Last-Translator: Szoldán Albert <szoldan.albert@pentaschool.hu>\n"
+"Language-Team: german <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr "Egy Quake-stilusú terminálemulátor KDE Konzol technológiai alapokon."
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Karbantartó"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Adomány a projektnek (Inaktiv)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Képernyő %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "A mappasáv segítségével lehet a munkamenetek között váltani."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Új munkamenet"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr "Új munkamenet hozzáadása. Tartsd nyomva a munkamenet típust a menüben."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Munkamenet bezárása"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Aktív munkamenet bezárása."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "Készítő: %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "A címsáv megjeleníti a munkamenet nevét, ha van ilyen."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Fókusz elhagyásakor tartsd nyitva"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Menü megnyitása"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Yakuake megnyitása/bezárása"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Yakuake ablak animálása"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Két terminál vizszintesen"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Két terminál függőlegesen"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Négy terminál elosztva"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Ugrás a következő terminálra"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Ugrás az elöző terminálra"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Kijelölés beillesztése"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Munkamenet átnevezése ..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Szélesség növelése"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Szélesség csökkentése"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Magasság növelése"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Magasság csökkentése"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Globális gyorsbillentyűk beállítása..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Ugrás a következő munkamenetre"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Ugrás az előző munkamenetre"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Munkamenet mozgatása balra"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Munkamenet mozgatása jobbra"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Terminál felosztása vizszintesen"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Terminál felosztása függőlegesen"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Terminál bezárása"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Váltás erre a munkamenetre %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"A program sikeresen elindult\n"
+"Nyomja le a %1 -t a használatához ..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Több munkamenet van megnyitva. Ha folytatja, akkor ezek a munkamenetek "
+"megszakadnak.\n"
+"\n"
+"Biztos ki szeretne lépni?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Biztos kilép?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Munkamenet be&zárása"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake értesítés"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Gyors beállítás"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Megnyitás munkamenetben"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Nyitvatartás fókusz változáskor"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Beállítások"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Az egér helyzeténél"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Általános"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Megjelenés (bőrök)"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Első Futtatás"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Névtelen"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake bőrök"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "\"Bőr\" fájl kiválasztása"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Nem sikerült a \"bőrt\" letölteni."
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "A telepítéshez egy könyvtárt választott ki, nem egy fájlt."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Nem találom az adott helyen a \"bőr\"-nek szükséges fájlokat.\n"
+"\n"
+"A \"bőr\" fájl hibás."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Nem tudom olvasni a \"bőr\" fájl összetevőit."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Ez a \"Bőr\" már telepítve van és a felülíráshoz nincs beállítva jogosultság."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Ez a \"bőr\" már telepítve van. Felül szeretné írni?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Ilyen bőr már létezik"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Bőr újratelepítése"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Nem lehet a bőrt törölni"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "A tömörített bőr fájlt nem lehet megnyitni."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Nem lehet bőrt telepíteni"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Biztos törli a \"%1\" nevű bőrt, amit %2 készített?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Bőr eltávolítása"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr "Konzol %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Szoldán Albert"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "szoldan.albert@pentaschool.hu"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Bőr telepítése ..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Bőr"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Üdvözlöm a Yakuake-ban</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Később bármikor megváltoztathatók a gyorsbillentyűk a menüben."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Nincs"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Mielőtt elkezdi használni ezt a programot, lehetőség van arra, hogy a Yakuake-t "
+"megnyitó/bezáró gyorsbillentyűt megváltoztassa. Kattintson az alábbi gombra, "
+"majd nyomja le a kívánt billentyűkombinációt:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Előugró értesítőablak megjelenítése a program indításakor"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Megerősítés kérése egynél több munkamenet bezárásakor"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Mappasáv megjelenítése"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Ablak nyitvatartása fókusz változásakor"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Engedélyezze ezt a beállítást, ha azt akarja, hogy a Yakuake ablak nyitva "
+"maradjon, amikor elveszti a fókuszt."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Ablak nyitvatartása fókusz változásakor"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Engedélyezze ezt a beállítást, ha azt akarja, hogy a Yakuake ablak nyitva "
+"maradjon, amikor elveszti a fókuszt."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Legyen aktív az ablak a Megnyit/Bezár gomb használatakor"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Engedélyezze ezt az opciót, ha szeretné, hogy a Megnyit/Bezár gyorsbilentyű "
+"lenyomásakor ne a program legyen fókuszban (aktív)."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Engedélyezze ezt a beállítást, ha azt akarja, hogy a Yakuake ablak nyitva "
+"maradjon, amikor elveszti a fókuszt."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Méret és animáció"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Szélesség:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Magasság:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Sebesség:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Ez a beállítás megközelítöleg megadja, hogy mennyi ideig tartson a becsúszó "
+"animáció, amikor a Yakuake ablakot megnyitja vagy bezárja."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Pozició"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Megnyitás képernyőn:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Képernyő 1"
diff --git a/po/it/Makefile.am b/po/it/Makefile.am
new file mode 100644
index 0000000..0d5c097
--- /dev/null
+++ b/po/it/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = it
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/it/yakuake.po b/po/it/yakuake.po
new file mode 100644
index 0000000..ddf4765
--- /dev/null
+++ b/po/it/yakuake.po
@@ -0,0 +1,532 @@
+# translation of yakuake.po to Italian
+#
+# Andrea Di Menna <a.dimenna@libero.it>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-06-22 11:39+0200\n"
+"Last-Translator: Andrea Di Menna <a.dimenna@libero.it>\n"
+"Language-Team: Italian <kde-i18n-it@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Un emulatore di terminale sullo stile di Quake basato sulla tecnologia di KDE "
+"Konsole. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Responsabile"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Fondatore del progetto (inattivo)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Schermo %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "La barra con le linguette ti permette di cambiare sessione."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nuova sessione"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Aggiunge una nuova sessione. Tieni premuto per scegliere il tipo di sessione "
+"dal menu."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Chiudi sessione"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Chiude la sessione attiva."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "di %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "La barra del titolo mostra il titolo della sessione se disponibile."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Tieni aperta quando perde il fuoco"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Apri menu"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Apre/chiude Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Fa scorrere la finestra di Yakuake dentro e fuori lo schermo"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Due terminali, orizzontale"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Due terminali, verticale"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Quattro terminali, quadrato"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Vai al terminale successivo"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Vai al terminale precedente"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Incolla selezione"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Rinomina sessione..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Aumenta larghezza"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Diminuisci larghezza"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Aumenta altezza"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Diminuisci altezza"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Configura le scorciatoie globali..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Vai alla sessione successiva"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Vai alla sessione precedente"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Vai alla sessione a sinistra"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Vai alla sessione a destra"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Dividi il terminale orizzontalmente"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Dividi il terminale verticalmente"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Chiudi terminale"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Passa alla sessione %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Applicazione avviata correttamente!\n"
+"Premi %1 per usarla..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Ci sono sessioni multiple aperte. Verranno terminate se si continua.\n"
+"\n"
+"Vuoi davvero uscire?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Vuoi uscire veramente?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Chi&udi sessione"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Notifica di Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Opzioni rapide"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Apri sullo schermo"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Tieni aperto al passaggio di fuoco"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Impostazioni"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Usa posizione mouse"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Generale"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Temi"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Primo avvio"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Senza nome"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Temi Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Seleziona archivio tema"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Impossibile scaricare tema"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "È stata selezionata una cartella, non un file."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Impossibile trovare i file richiesti nell'archivio del tema.\n"
+"\n"
+"L'archivio sembra essere non valido."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Impossibile elencare i contenuti dell'archivio del tema."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Questo tema sembra essere già installato e ti mancano i permessi richiesti per "
+"sovrascriverlo."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Questo tema sembra essere già installato. Vuoi sovrascriverlo?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Il tema esiste già"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Reinstalla tema"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Impossibile eliminare tema"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Impposibile aprire larchivio del tema."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Impossibile installare tema"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Vuoi rimuovere \"%1\" di %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Rimuovi tema"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Shell\n"
+"Shell n. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Andrea Di Menna"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "a.dimenna@libero.it"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Installa tema..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Tema"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Benvenuto in Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Puoi cambiare la scorciatoia in qualsiasi momento attraverso il menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Nessuna"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Prima di usare l'applicazione, vorresti poter cambiare le scorciatoie da "
+"tastiera usate per aprire e chiudere la finestra di Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Mostra una finestra di notifica all'avvio dell'applicazione"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Conferma l'uscita quando si chiude più di una sessione"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Mostra barra delle schede"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Tieni aperta la finestra al passaggio del fuoco"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Abilita questa opzione se vuoi che la finestra di Yakuake rimanga aperta quando "
+"perde il fuoco."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Tieni aperta la finestra al passaggio del fuoco"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Abilita questa opzione se vuoi che la finestra di Yakuake rimanga aperta quando "
+"perde il fuoco."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Usa l'azione Apri/chiudi per passare il fuoco alla finestra"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Abilita questa opzione se vuoi che la scorciatoia Apri/chiudi passi il fuoco "
+"alla finestra di Yakuake quando è già aperta ma non ha il fuoco. Disabilita "
+"questa opzione per far sì che la scorciatoia Apri/chiudi faccia scomparire la "
+"finestra di Yakuake sia che abbia o meno il fuoco."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Abilita questa opzione se vuoi che la finestra di Yakuake rimanga aperta quando "
+"perde il fuoco."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Dimensioni ed animazioni"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Larghezza:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Altezza:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Velocità:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Questa impostazione controlla la durata approssimata dell'animazione di "
+"scorrimento quando la finestra di Yakuake compare o scompare."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Posizione"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Apri sullo schermo:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Schermo 1"
diff --git a/po/ja/Makefile.am b/po/ja/Makefile.am
new file mode 100644
index 0000000..f18f0ca
--- /dev/null
+++ b/po/ja/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = ja
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/ja/yakuake.po b/po/ja/yakuake.po
new file mode 100644
index 0000000..5e65cd1
--- /dev/null
+++ b/po/ja/yakuake.po
@@ -0,0 +1,512 @@
+# translation of yakuake.pot to Japanese.
+# Yukiko Bando <ybando@k6.dion.ne.jp>, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-11 20:00+0900\n"
+"Last-Translator: Yukiko Bando <ybando@k6.dion.ne.jp>\n"
+"Language-Team: Japanese <Kdeveloper@kde.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr "KDE Konsole のテクノロジーに基づく Quake スタイルのターミナルエミュレータ"
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "メンテナ"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "プロジェクト創始者 (活動休止中)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Plastik スキン"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "マウスポインタがスクリーンの上端に触れたら自動的に開くオプション"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "スクリーン %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "タブバーのタブをクリックしてセッションを切り替えることができます。"
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "新規セッション"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr "新しいセッションを追加します。クリックして保持すると、メニューからセッションのタイプを選択できます。"
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "セッションを閉じる"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "アクティブなセッションを閉じます。"
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "%1 作"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "可能であれば、タイトルバーはセッションのタイトルを表示します。"
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "フォーカスが失われても開いておく"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "メニューを開く"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Yakuake を開く/閉じる"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "スライドして Yakuake ウィンドウを開く/閉じる"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "上下分割ターミナル"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "左右分割ターミナル"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "4 分割ターミナル"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "次のターミナル"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "前のターミナル"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "選択を貼り付け"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "セッション名を変更..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "幅を増やす"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "幅を減らす"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "高さを増やす"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "高さを減らす"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "グローバルショートカットを設定..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "次のセッション"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "前のセッション"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "セッションを左に移動"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "セッションを右に移動"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "ターミナルを上下に分割"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "ターミナルを左右に分割"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "ターミナルを閉じる"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "セッション %1 に切り替え"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"アプリケーションを起動しました。\n"
+"使用するには %1 を押してください。"
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"複数のセッションが開いています。続行すると、すべてのセッションが強制終了されます。\n"
+"\n"
+"本当に終了しますか?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "本当に終了しますか?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "セッションを閉じる(&L)"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake 通知"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "クイックオプション"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "スクリーンで開く"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "フォーカスが変わっても開いておく"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "設定"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "マウスの場所"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "全般"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "スキン"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "初回起動"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "名前なし"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "不明"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake スキン"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "スキンアーカイブを選択"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "スキンのダウンロードに失敗しました"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "ファイルではなくディレクトリが選択されました。"
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"スキンアーカイブの中に必要なファイルが見つかりません。\n"
+"\n"
+"有効なアーカイブではないようです。"
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "スキンアーカイブの内容を一覧表示できません。"
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr "このスキンは既にインストールされているようですが、上書きする権限がありません。"
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "このスキンは既にインストールされているようです。上書きしますか?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "スキンは既に存在します"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "スキンを再インストール"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "スキンを削除できませんでした"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "スキンアーカイブのファイルを開けませんでした。"
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "スキンをインストールできません"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "%2 作の \"%1\" を削除しますか?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "スキンを削除"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr "シェル No.%n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Yukiko Bando"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "ybando@k6.dion.ne.jp"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "スキンをインストール..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "スキンの背景色:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr "半透明のスキンの地の色を指定します。この設定は Yakuake が KDE 以外で実行されていて半透明が利用できない場合にのみ使われます。"
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "スキン"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "Yakuake へようこそ"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "このショートカットは後でメニューから変更できます。"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "なし"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr "使用を開始する前に、Yakuake ウィンドウを開く/閉じるためのキーボードショートカットを変更できます。"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "アプリケーションの起動を通知するポップアップを表示する"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "複数のセッションを閉じるときは確認する"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "タブバーを表示する"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "他のウィンドウの上に保持する"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr "フォーカスが失われても Yakuake ウィンドウを他のウィンドウの上に保持しておく場合、このオプションを有効にしてください。"
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "フォーカスが変わってもウィンドウを開いておく"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr "フォーカスが失われても Yakuake ウィンドウを開いておく場合、このオプションを有効にしてください。"
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "開く/閉じるショートカットでウィンドウをフォーカスする"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"「開く/閉じる」ショートカットを使って既に開いているフォーカスされていない Yakuake "
+"ウィンドウにフォーカスを移す場合、このオプションを有効にしてください。フォーカスされているかどうかに関係なく「開く/閉じる」ショートカットで Yakuake "
+"ウィンドウを閉じる場合は、無効にしておいてください。"
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "マウスポインタがスクリーンの上端に触れたら自動的に開く"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr "マウスポインタがスクリーンの上端に触れたら Yakuake ウィンドウを開くようにする場合、このオプションを有効にしてください。"
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "サイズとアニメーション"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "幅:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "高さ:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "速度:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr "この設定で、Yakuake ウィンドウがスライドして開く/閉じるアニメーションのおよその長さをコントロールします。"
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "位置"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "次のスクリーンで開く:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "スクリーン 1"
diff --git a/po/nl/Makefile.am b/po/nl/Makefile.am
new file mode 100644
index 0000000..69faf0b
--- /dev/null
+++ b/po/nl/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = nl
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/nl/yakuake.po b/po/nl/yakuake.po
new file mode 100644
index 0000000..91de45b
--- /dev/null
+++ b/po/nl/yakuake.po
@@ -0,0 +1,536 @@
+# translation of yakuake.po to Dutch
+# Rinse de Vries <rinsedevries@kde.nl>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-11 11:54+0100\n"
+"Last-Translator: Rinse de Vries <rinsedevries@kde.nl>\n"
+"Language-Team: Dutch <kde-i18n-nl@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Een terminalprogramma in de stijl van Quake, gebaseerd op de technologie van "
+"KDE's Konsole."
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Onderhouder"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Projectstichter (niet langer actief)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Plastik-skin"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Automatisch openen wanneer aanwijzer schermrand raakt"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Scherm %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Met de tabbalk kunt u tussen sessies wisselen"
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nieuwe sessie"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Voegt een nieuwe sessie toe. Houdt de muisknop ingedrukt om een sessietype in "
+"het menu te selecteren."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Sessie sluiten"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Sluit de actieve sessie."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "door %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "De titelbalk toont de sessietitel indien beschikbaar."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Open houden wanneer focus verloren is"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Menu openen"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Yakuake openen/terugtrekken"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Schuift het venster van Yakuake open of dicht"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Twee terminals, horizontaal"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Twee terminals, verticaal"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Vier terminals, quad"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Ga naar volgende terminal"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Ga naar vorige terminal"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Selectie plakken"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Sessie hernoemen..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Breedte vergroten"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Breedte verkleinen"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Hoogte vergroten"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Hoogte verkleinen"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Globale sneltoetsen instellen..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Ga naar volgende sessie"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Ga naar vorige sessie"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Sessie naar links verplaatsen"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Sessie naar rechts verplaatsen"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Terminal horizontaal splitsen"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Terminal verticaal splitsen"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Terminal sluiten"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Overschakelen naar sessie %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Programma is met succes gestart.\n"
+"Druk op %1 om het te gebruiken..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"U hebt meerdere sessies geopend. Deze zullen geforceerd worden afgesloten als u "
+"nu stopt.\n"
+"\n"
+"Wilt u stoppen?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Wilt u stoppen?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Sessie s&luiten"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake-melding"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Snelle opties"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Op scherm openen"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Open houden bij focusverandering"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Instellingen"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Op muislocatie"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Algemeen"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Skins"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Eerste keer"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Naamloos"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake-skins"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Skin-archief selecteren"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Kon skin niet downloaden"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Het installatieprogramma ontving een map, geen bestand."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Kon de vereiste bestanden niet in het skin-archief terugvinden.\n"
+"\n"
+"Dit lijkt niet op een geldig archief."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Kon de inhoud van het skin-archief niet opsommen."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Het skin blijkt al te zijn geïnstalleerd. U hebt geen toegangsrechten om de "
+"bestaande te overschrijven."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr ""
+"De skin blijkt al te zijn geïnstalleerd. Wilt u de bestaande overschrijven?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Skin bestaat al"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Skin opnieuw installeren"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Kon skin niet verwijderen"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Het skin-archief kon niet worden geopend."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Kon skin niet installeren"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Wilt u \"%1\" verwijderen door %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Skin verwijderen"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Shell\n"
+"Shellnr. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Rinse de Vries"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "rinse@kde.nl"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Skin installeren..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Achtergrondkleur van skin:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"De bepaalt de kleur van het oppervlak waarop de doorschijnende skinelementen "
+"worden opgebouwd. Deze instelling is alleen beschikbaar als Yakuake buiten KDE "
+"draait en transparantie niet beschikbaar is."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Skin"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Welkom bij Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "U kunt de sneltoets op een later tijdstip wijzigen in het menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Geen"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Voordat u het programma gebruikt kunt u de sneltoets wijzigen die gebruikt "
+"wordt om het Yakuake-venster te openen en te sluiten:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Notificatiedialoog tonen bij programmastart"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Afsluiten bevestigen als er meer dan één sessie zal worden gesloten"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Tabbalk tonen"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Venster boven alle andere vensters plaatsen"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Activeer deze optie als u wilt dat het venster van Yakuake voor alle andere "
+"vensters wordt weergegeven, ook als een ander venster de focus krijgt."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Venster open houden bij focuswijziging"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Activeer deze optie als u wilt dat het venster van Yakuake open blijft als een "
+"ander venster de focus krijgt."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Open/terugtrek-actie gebruiken om venster focus te geven"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Activeer deze optie als u de sneltoetsen voor openen/terugtrekken wilt "
+"gebruiken om het venster van Yakuake de focus te geven als dat nodig is. "
+"Schakel deze optie uit als u met de openen/terugtrekken-sneltoets het "
+"Yakuake-venster wilt sluiten ongeacht of het de focus heeft of niet."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Automatisch openen als aanwijzer de schermrand raakt"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Activeer deze optie als u wilt dat het venster van Yakuake wordt geopend als de "
+"muisaanwijzer de bovenrand van het scherm raakt."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Grootte en animatie"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Breedte:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Hoogte:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Snelheid:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Deze instellingen bepalen de geschatte duur van de schuifanimatie als het "
+"venster van Yakuake wordt geopend of zich terugtrekt."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Positie"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Openen op scherm:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Scherm 1"
diff --git a/po/pl/Makefile.am b/po/pl/Makefile.am
new file mode 100644
index 0000000..498aaef
--- /dev/null
+++ b/po/pl/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = pl
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/pl/yakuake.po b/po/pl/yakuake.po
new file mode 100644
index 0000000..7995291
--- /dev/null
+++ b/po/pl/yakuake.po
@@ -0,0 +1,529 @@
+# translation of yakuake.po to Polish
+# translation of yakuake.po to
+#
+# Eike Hein <sho@eikehein.com>, 2006.
+# Thomas Reitelbach <tr@erdfunkstelle.de>, 2006.
+# Frederik Schwarzer <schwarzerf@gmail.com>, 2007.
+# Tomasz Argasiński <targasinski@o2.pl>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-12-09 00:40+0100\n"
+"Last-Translator: Tomasz Argasiński <targasinski@o2.pl>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Emulator terminala w stylu konsoli Quake oparty o technologię KDE Konsole."
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Opiekun"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Założyciel projektu (nieaktywny)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Ekran %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Pasek kart pozwala na przełączanie się pomiędzy sesjami."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nowa sesja"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr "Dodaje nową sesję. Wciśnij i przytrzymaj aby wybrać typ sesji z menu."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Zamknij sesję"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Zamyka aktywną sesję."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "Autor: %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Pasek tytułu wyświetla nazwę sesji gdy dostepna."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Pozostaw otwarty po utracie ogniska."
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Otwórz menu"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Otwórz/schowaj Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Wysuwa i wycofuje okno Yakuake."
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Dwa terminale, poziomo"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Dwa terminale, pionowo"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Cztery terminale"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Przejdź do następnego terminala"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Przejdź do poprzedniego terminala"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Wklej zaznaczenie"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Zmień nazwę sesji..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Zwiększ szerokość"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Zmniejsz szerokość"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Zwiększ wysokość"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Zmniejsz wysokość"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Konfiguracja skrótów globalnych"
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Przejdź do następnej sesji"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Przejdź do poprzedniej sesji"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Przesuń sesję w lewo"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Przesuń sesję w prawo"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Podziel terminal w poziomie"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Podziel terminal w pionie"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Zamknij terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Przełącz do sesji %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr "Program został uruchomiony!<br>Wciśnij %1 aby go użyć..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Masz kilka otwartych sesji. i wszystkie zostaną zamknięte."
+"<br> "
+"<br> Czy na pewno chcesz zakończyć?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Czy na pewno chcesz zakończyć?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "&Zamknij sesję"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Powiadomienie Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Szybkie opcje"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Otwórz na ekranie"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Utrzymuj otwarte przy zmianie skupienia"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Ustawienia"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "W lokalizacji myszy"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Ogólne"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Motywy"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Pierwsze uruchomienie"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Nienazwany"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|motywy Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Wybierz archiwum z motywem"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Pobieranie motywu nie powidło się"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Instalator otrzymał folder, nie plik."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Nie udało się odnaleźć wymaganych plików w archiwum z motywem.\n"
+" \n"
+"Archiwum może być nieprawidłowe."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Nie udało się wylistować zawartości archiwum z motywem."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Ten motyw jest już zainstalowany i nie posiadasz wymaganych uprawnień do "
+"nadpisania go."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Ten motyw jest już zainstalowany. Czy chcesz go nadpisać?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Motyw już istnieje"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Ponownie zainstaluj motyw"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Nie można usunąć motywu."
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Nie można otworzyć archiwum z motywem."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Nie można zainstalować motywu"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Czy chcesz usunąć \"%1\" z %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Usuń motyw"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Tomasz Argasiński"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "targasinski@o2.pl"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Zainstaluj motyw..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Motyw"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Witaj w programie Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Możesz zmienić ten skrót w każdej chwili poprzez menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Żaden"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Zanim zaczniesz używać tego programu możesz chcieć zmienić skrót klawiaturowy "
+"służący do otwierania i zamykania okna Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Pokaż powiadomienie po uruchomieniu programu."
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Potwierdź zamknięcie przy zamykaniu więcej niż jednej sesji."
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Pokaż pasek kart"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Zawsze na wierzchu"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Zaznacz tę opcję, gdy chcesz aby okno Yakuake pozostało otwarte po utracie "
+"skupienia."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Zawsze na wierzchu"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Zaznacz tę opcję, gdy chcesz aby okno Yakuake pozostało otwarte po utracie "
+"skupienia."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Okno uzyskuje skupienie podczas otwierania/chowania"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Włącz tę opcję, jeżeli chcesz, aby skrót otwórz/schowaj przywracał skupienie "
+"oknu Yakuake, gdy jest otwarte, lecz brak mu skupienia. Wyłącz tę opcję, aby "
+"skrót otwórz/schowaj chował okno Yakuake bez względu na to, czy okno Yakuake "
+"posiada skupienie, czy nie."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Zaznacz tę opcję, gdy chcesz aby okno Yakuake pozostało otwarte po utracie "
+"skupienia."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Rozmiar i animacja"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Szerokość:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Wysokość:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Szybkość:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"To ustawienie kontroluje czas trwania animacji przesuwania podczas wysuwania i "
+"chowania okna Yakuake."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Pozycja"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Otwórz na ekranie:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Ekran 1"
diff --git a/po/pt/Makefile.am b/po/pt/Makefile.am
new file mode 100644
index 0000000..fd3494d
--- /dev/null
+++ b/po/pt/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = pt
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/pt/yakuake.po b/po/pt/yakuake.po
new file mode 100644
index 0000000..93cef1c
--- /dev/null
+++ b/po/pt/yakuake.po
@@ -0,0 +1,531 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-11 14:34+0000\n"
+"Last-Translator: José Nuno Coelho Pires <jncp@netcabo.pt>\n"
+"Language-Team: pt <kde-i18n-pt@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POFile-SpellExtra: Yakuake Konsole Quake Plastik\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Um emulador de terminal do estilo do Quake, baseado na tecnologia do Konsole do "
+"KDE. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Manutenção"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Fundador do Projecto (Inactivo)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Visual Plastik"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Abrir automaticamente ao passar o cursor pelo extremo do ecrã"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Ecrã %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "A barra de páginas permite-lhe mudar de sessões."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nova Sessão"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Adiciona uma nova sessão. Carregue e mantenha assim para seleccionar o tipo de "
+"sessão do menu."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Fechar a Sessão"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Fecha a sessão activa."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "por %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "A barra de título mostra o título da sessão, se estiver disponível."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Manter aberta mesmo se o primeiro plano se perder"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Abrir o Menu"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Abrir/Retrair o Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Desliza a janela do Yakuake para cima e para baixo"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Dois Terminais na Horizontal"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Dois Terminais na Vertical"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Quatro Terminais - Quádruplo"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Ir para o Terminal Seguinte"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Ir para o Terminal Anterior"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Colar Selecção"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Mudar o Nome à Sessão..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Aumentar a Largura"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Diminuir a Largura"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Aumentar a Altura"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Diminuir a Altura"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Configurar os Atalhos Globais..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Ir para a Próxima Sessão"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Ir para a Sessão Anterior"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Mover a Sessão para a Esquerda"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Mover a Sessão para a Direita"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Dividir o Terminal na Horizontal"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Dividir o Terminal na Vertical"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Fechar o Terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Mudar para a Sessão %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"A aplicação foi iniciada com sucesso!\n"
+"Carregue em %1 para a usar..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Você tem várias sessões abertas. Estas serão terminadas se continuar.\n"
+"\n"
+"Tem a certeza que deseja sair?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Deseja Realmente Sair?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Fe&char a Sessão"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Notificação do Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Opções Rápidas"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Abrir no ecrã"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Manter aberta com a mudança de primeiro plano"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Configuração"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Na localização do rato"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Geral"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Aparências"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Primeira Execução"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Sem nome"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Aparências do Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Seleccionar o Pacote da Aparência"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Não Foi Possível Obter a Aparência"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Foi indicada uma pasta para o instalador, não um ficheiro."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Não é possível localizar os ficheiros necessários do pacote da aparência.\n"
+"\n"
+"O pacote parece ser inválido."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Não é possível apresentar o conteúdo do pacote da aparência."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Esta aparência parece já estar instalada e você não tem permissões para a "
+"substituir."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Esta aparência já parece estar instalada. Deseja substituí-la?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "A Aparência Já Existe"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Instalar de Novo a Aparência"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Não Foi Possível Remover a Aparência"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "O pacote da aparência não pôde ser acedido."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Não é Possível Instalar a Aparência"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Deseja remover a \"%1\" de %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Remover a Aparência"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Consola\n"
+"Consola No. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "José Nuno Pires,Pedro Morais"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "jncp@netcabo.pt,morais@kde.org"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Instalar a Aparência..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Cor de fundo do visual:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"Isto controla a cor da superfície sobre a qual se compõem os elementos "
+"translúcidos do visual. Esta opção só fica disponível se o Yakuake for "
+"executado fora do KDE e a translucidez estiver indisponível."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Aparência"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Bem-vindo ao Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Poderá alterar mais tarde o atalho com o menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Nenhuma"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Antes de usar a aplicação, poderá querer alterar o atalho de teclado usado para "
+"abrir e fechar a janela do Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Mostrar a mensagem de notificação no arranque da aplicação"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Confirmar a saída com mais do que uma sessão aberta"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Mostrar a barra de páginas"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Manter a janela acima de todas as outras"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Active esta opção se quiser que a janela do Yakuake se mantenha por cima de "
+"todas as janelas, mesmo que deixe de ficar em primeiro plano."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Manter a janela aberta com a mudança de primeiro plano"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Active esta opção se quiser que a janela do Yakuake se mantenha aberta ao "
+"deixar de ficar em primeiro plano."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Usar a acção Abrir/Retrair para pôr a janela em primeiro plano"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Active esta opção se quiser que a acção para Abrir/Retrair coloque a janela do "
+"Yakuake em primeiro plano quando já estiver aberta mas não estiver em primeiro "
+"plano. Desactive esta opção para que o atalho para Abrir/Retrair retraia a "
+"janela, independentemente de estar ou não em primeiro plano."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Abrir automaticamente quando o cursor tocar no extremo do ecrã"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Active esta opção se quiser que a janela do Yakuake se abra quando o cursor do "
+"rato tocar no extremo superior do ecrã."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Tamanho e Animação"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Largura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Altura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Velocidade:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Esta opção controla a duração aproximada da animação do deslizamento, quando a "
+"janela do Yakuake se está a abrir ou a retrair."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Posição"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Abrir no ecrã:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Ecrã 1"
diff --git a/po/pt_BR/Makefile.am b/po/pt_BR/Makefile.am
new file mode 100644
index 0000000..2046214
--- /dev/null
+++ b/po/pt_BR/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = pt_BR
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/pt_BR/yakuake.po b/po/pt_BR/yakuake.po
new file mode 100644
index 0000000..5138c9a
--- /dev/null
+++ b/po/pt_BR/yakuake.po
@@ -0,0 +1,533 @@
+# translation of yakuake.po to Brazilian Portuguese
+# Diniz Bortolotto <diniz.bb@gmail.com>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-07-28 15:14-0300\n"
+"Last-Translator: Diniz Bortolotto <diniz.bb@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-pt_br@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POFile-SpellExtra: Yakuake Konsole Quake\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"Um emulador de terminal no estilo do Quake, baseado na tecnologia do Konsole do "
+"KDE. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Mantenedor"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Criador do Projeto (Inativo)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Tela %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "A barra de abas permite que você alterne entre sessões."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Nova Sessão"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Adiciona uma nova sessão. Pressione e mantenha para selecionar o tipo de sessão "
+"do menu."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Fechar a Sessão"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Fechar a sessão ativa."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "por %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "A barra de título mostra o título da sessão se disponível."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Manter aberta quando o foco é perdido"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Abrir o Menu"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Abrir/Retrair o Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Desliza a janela do Yakuake para cima e para baixo"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Dois Terminais, Horizontal"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Dois Terminais, Vertical"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Quatro Terminais, Quádruplo"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Ir para o Próximo Terminal"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Ir para o Terminal Anterior"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Colar Seleção"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Renomear Sessão..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Aumentar Largura"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Diminuir Largura"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Aumentar Altura"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Diminuir Altura"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Configurar Atalhos Globais..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Ir para a Próxima Sessão"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Ir para a Sessão Anterior"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Mover a Sessão para a Esquerda"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Mover a Sessão para a Direita"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Dividir o Terminal Horizontalmente"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Dividir o Terminal Verticalmente"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Fechar o Terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Mudar para a Sessão %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"O aplicativo foi iniciado com sucesso!\n"
+"Pressione %1 para usá-lo..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Você tem várias sessões abertas. Estas serão terminadas se você continuar.\n"
+"\n"
+"Deseja mesmo sair?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Deseja Realmente Sair?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Fe&char a Sessão"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Notificação do Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Opções Rápidas"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Abrir na tela"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Manter aberta na mudança de foco"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Configurações"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Na posição do mouse"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Geral"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Aparências"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Primeira Execução"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Sem nome"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Aparências do Yakuake"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Selecionar o Pacote de Aparência"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Não Foi Possível Obter a Aparência"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Foi indicado um diretório para o instalador, não um arquivo."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Não é possível localizar os arquivos necessários do pacote de aparência.\n"
+"\n"
+" O pacote parece ser inválido."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Não é possível apresentar o conteúdo do pacote de aparência."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Esta aparência parece já estar instalada e você não tem as permissões "
+"necessárias para substituí-la."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Esta aparência parece já estar instalada. Você quer substituí-la?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "A Aparência Já Existe"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Reinstalar a Aparência"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Não Foi Possível Remover a Aparência"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "O pacote de aparência não pôde ser aberto."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Não é Possível Instalar a Aparência"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Você quer remover \"%1\" de %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Remover Aparência"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Console\n"
+"Console No. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Diniz Bortolotto, Christian Tosta"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "diniz.bb@gmail.com, bugzilla@ekaaty.com.br"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Instalar a Aparência..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Aparência"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Bem-vindo ao Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr ""
+"Você pode alterar o atalho a qualquer momento mais tarde através do menu."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Nenhuma"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Antes de usar o aplicativo, talvez você queira trocar o atalho de teclado usado "
+"para abrir e fechar a janela do Yakuake:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Mostrar a mensagem de notificação na inicialização do aplicativo"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Confirmar a saída quando estiver fechando mais de uma sessão"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Mostrar a barra de abas"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Manter a janela aberta na mudança de foco"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Ative esta opção se você quer que a janela do Yakuake permaneça aberta quando "
+"ela perde o foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Manter a janela aberta na mudança de foco"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Ative esta opção se você quer que a janela do Yakuake permaneça aberta quando "
+"ela perde o foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Usar a ação Abrir/Retrair para pôr a janela em primeiro plano"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Ative esta opção se quiser que o atalho para Abrir/Retrair coloque a janela do "
+"Yakuake em primeiro plano quando já estiver aberta mas não estiver em primeiro "
+"plano. Desative esta opção para que o atalho para Abrir/Retrair retraia a "
+"janela, independentemente de estar ou não em primeiro plano."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Ative esta opção se você quer que a janela do Yakuake permaneça aberta quando "
+"ela perde o foco."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Tamanho e Animação"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Largura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Altura:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Velocidade:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Esta opção controla a duração aproximada da animação deslizante quando a janela "
+"do Yakuake está abrindo ou retraindo."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Posição"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Abrir na tela:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Tela 1"
diff --git a/po/sv/Makefile.am b/po/sv/Makefile.am
new file mode 100644
index 0000000..300ce12
--- /dev/null
+++ b/po/sv/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = sv
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/sv/yakuake.po b/po/sv/yakuake.po
new file mode 100644
index 0000000..a696b82
--- /dev/null
+++ b/po/sv/yakuake.po
@@ -0,0 +1,533 @@
+# translation of yakuake.po to Swedish
+#
+# Stefan Asserhäll <stefan.asserhall@comhem.se>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-11-11 16:31+0100\n"
+"Last-Translator: Stefan Asserhäll <stefan.asserhall@comhem.se>\n"
+"Language-Team: Swedish <sv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"En Quake-liknande terminalemulator baserad på teknologi från KDE:s Terminal. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Utvecklare"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Projektgrundare (inaktiv)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr "Plastik-skal"
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr "Öppna automatiskt när pekaren rör skärmkanten"
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Skärm %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Flikraden låter dig byta mellan sessioner."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Ny session"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Lägger till en ny session. Klicka och håll nere för att välja sessionstyp från "
+"en meny."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Stäng session"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Stänger aktiv session."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "av %1"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Namnlisten visar sessionens namn om det är tillgängligt."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Behåll öppen när fokus förloras"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Öppna meny"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Öppna eller dra tillbaka Yakuake"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Låter Yakuakes fönster glida in eller ut"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "Två terminaler, horisontella"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "Två terminaler, vertikala"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Fyra terminaler, i fyrkant"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Gå till nästa terminal"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Gå till föregående terminal"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Klistra in markering"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Byt namn på session..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Öka bredd"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Minska bredd"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Öka höjd"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Minska höjd"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Anpassa globala genvägar..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Gå till nästa session"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Gå till föregående session"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Flytta session åt vänster"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Flytta session åt höger"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Dela terminal horisontellt"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Dela terminal vertikalt"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Stäng terminal"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Byt till session %1"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr ""
+"Programmet startat med lyckat resultat.\n"
+"Tryck på %1 för att använda det..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Du har flera sessioner öppna. De dödas om du fortsätter.\n"
+"\n"
+"Vill du verkligen avsluta?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Verkligen avsluta?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Stän&g session"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Underrättelse från Yakuake"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Snabbalternativ"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Öppna på skärm"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Behåll öppen vid fokusändring"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Inställningar"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Vid muspekaren"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Allmänt"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Skal"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "Första körning"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "Namnlös"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Okänd"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake-skal"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Välj skalarkiv"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Misslyckades ladda ner skal"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "En katalog angavs för installation, istället för en fil."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Kunde inte hitta nödvändiga filer i skalarkivet.\n"
+"\n"
+"Arkivet verkar vara felaktigt."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Kan inte lista innehållet i skalarkivet."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Skalet verkar redan vara installerat, och du saknar de rättigheter som krävs "
+"för att skriva över det."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Skalet verkar redan vara installerat. Vill du skriva över det?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Skalet finns redan"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Installera om skal"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Kunde inte ta bort skal"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Skalarkivfilen kunde inte öppnas."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Kan inte installera skal"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "Vill du ta bort \"%1\" av %2?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Ta bort skal"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr ""
+"Skal\n"
+"Skal nummer %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Stefan Asserhäll"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "stefan.asserhall@comhem.se"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Installera skal..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr "Skalets bakgrundsfärg:"
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+"Det här styr färgen på ytan som halvgenomskinliga delar av skalet sätts samman "
+"på. Inställningen är bara tillgänglig om Yakuake körs utanför KDE och "
+"genomskinlighet inte är tillgänglig."
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Skal"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Välkommen till Yakuake</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Du kan ändra snabbtangenten när som helst senare via menyn."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Ingen"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Innan programmet används, kanske du vill ändra snabbtangenten som används för "
+"att öppna och stänga Yakuakes fönster:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Visa underrättelsemeddelande när programmet startas"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Bekräfta avslutning när mer än en session stängs"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Visa flikraden"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, no-c-format
+msgid "Keep window above other windows"
+msgstr "Behåll fönstret ovanför andra fönster"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Aktivera alternativet om du vill att Yakuakes fönster ska förbli ovanför andra "
+"fönster också när det förlorar fokus."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Behåll fönster öppet vid fokusändring"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Aktivera alternativet om du vill att Yakuakes fönster ska förbli öppet när det "
+"förlorar fokus."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Använd öppna och dra tillbaka för att ge fönster fokus"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Aktivera alternativet om du vill att snabbtangenten för att öppna eller dra "
+"tillbaka ska ge Yakuakes fönster fokus när det redan är öppet men inte har "
+"fokus. Inaktivera alternativet för att låta snabbtangenten dra tillbaka "
+"Yakuakes fönster oberoende av om det har fokus eller inte."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr "Öppna automatiskt när pekaren rör skärmens kant"
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Aktivera alternativet om du vill att Yakuakes fönster ska förbli öppet när "
+"muspekaren rör skärmens överkant."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Storlek och animation"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Bredd:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Höjd:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Hastighet:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Inställningen styr ungefärlig längd på den glidande animationen när Yakuakes "
+"fönster öppnas eller dras tillbaka."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Position"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Öppna på skärm:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Skärm 1"
diff --git a/po/tr/Makefile.am b/po/tr/Makefile.am
new file mode 100644
index 0000000..a9550cb
--- /dev/null
+++ b/po/tr/Makefile.am
@@ -0,0 +1,3 @@
+KDE_LANG = tr
+SUBDIRS = $(AUTODIRS)
+POFILES = AUTO
diff --git a/po/tr/yakuake.po b/po/tr/yakuake.po
new file mode 100644
index 0000000..f7d89af
--- /dev/null
+++ b/po/tr/yakuake.po
@@ -0,0 +1,528 @@
+# translation of yakuake.po to
+#
+# İsmail Dönmez <ismail@pardus.org.tr>, 2006.
+# Can Coşkuner <fethicanc@gmail.com>, 2007.
+# Serdar Soytetir <tulliana@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: yakuake\n"
+"POT-Creation-Date: 2007-11-11 09:37+0100\n"
+"PO-Revision-Date: 2007-05-15 14:20+0300\n"
+"Last-Translator: Serdar Soytetir <tulliana@gmail.com>\n"
+"Language-Team: <tr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/main.cpp:24
+msgid "A Quake-style terminal emulator based on KDE Konsole technology. "
+msgstr ""
+"KDE Konsole teknolojisi üzerine kurulmuş Quake benzeri bir terminal emülatörü. "
+
+#: src/main.cpp:29
+msgid "Yakuake"
+msgstr "Yakuake"
+
+#: src/main.cpp:32
+msgid "Maintainer"
+msgstr "Geliştirici"
+
+#: src/main.cpp:33
+msgid "Project Founder (Inactive)"
+msgstr "Proje Kurucusu (İnaktif)"
+
+#: src/main.cpp:41
+msgid "Plastik skin"
+msgstr ""
+
+#: src/main.cpp:42
+msgid "Auto-open on pointer touching screen edge"
+msgstr ""
+
+#: src/general_settings.cpp:35 src/main_window.cpp:825
+#, c-format
+msgid "Screen %1"
+msgstr "Ekran %1"
+
+#: src/tab_bar.cpp:152
+msgid "The tab bar allows you to switch between sessions."
+msgstr "Tab çubuğu oturumlar arasında geçiş yapmanızı sağlar."
+
+#: src/main_window.cpp:84 src/tab_bar.cpp:157
+msgid "New Session"
+msgstr "Yeni oturum"
+
+#: src/tab_bar.cpp:158
+msgid "Adds a new session. Press and hold to select session type from menu."
+msgstr ""
+"Yeni oturum ekler. Tıklayın ve menüden oturum türünü seçmek için basılı tutun."
+
+#: src/main_window.cpp:170 src/tab_bar.cpp:162
+msgid "Close Session"
+msgstr "Oturumu kapat"
+
+#: src/tab_bar.cpp:163
+msgid "Closes the active session."
+msgstr "Etkin oturumu kapatır."
+
+#: src/skin_list_item.cpp:33
+#, c-format
+msgid "by %1"
+msgstr "%1 ile"
+
+#: src/title_bar.cpp:25
+msgid "The title bar displays the session title if available."
+msgstr "Başlık çubuğu eğer var ise oturumun başlığını gösterir."
+
+#: src/title_bar.cpp:100
+msgid "Keep open when focus is lost"
+msgstr "Odaktan çıktığında açık tut"
+
+#: src/title_bar.cpp:103
+msgid "Open Menu"
+msgstr "Menüyü Aç"
+
+#: src/main_window.cpp:70
+msgid "Open/Retract Yakuake"
+msgstr "Yakuake'yi Aç/Geri çek"
+
+#: src/main_window.cpp:71
+msgid "Slides the Yakuake window in and out"
+msgstr "Yakuake penceresini aşağıya ve yukarıya kaydırır"
+
+#: src/main_window.cpp:88
+msgid "Two Terminals, Horizontal"
+msgstr "İki Terminal, Yatay"
+
+#: src/main_window.cpp:92
+msgid "Two Terminals, Vertical"
+msgstr "İki Terminal, Dikey"
+
+#: src/main_window.cpp:96
+msgid "Four Terminals, Quad"
+msgstr "Dört Terminal, Dörtlü"
+
+#: src/main_window.cpp:100
+msgid "Go to Next Terminal"
+msgstr "Bir Sonraki Oturuma Geç"
+
+#: src/main_window.cpp:104
+msgid "Go to Previous Terminal"
+msgstr "Önceki Oturuma Geç"
+
+#: src/main_window.cpp:112
+msgid "Paste Selection"
+msgstr "Seçimi Yapıştır"
+
+#: src/main_window.cpp:116
+msgid "Rename Session..."
+msgstr "Oturumun Adını Değiştir..."
+
+#: src/main_window.cpp:120
+msgid "Increase Width"
+msgstr "Terminal Genişliği"
+
+#: src/main_window.cpp:123
+msgid "Decrease Width"
+msgstr "Genişliği azalt"
+
+#: src/main_window.cpp:126
+msgid "Increase Height"
+msgstr "Yüksekliği arttır"
+
+#: src/main_window.cpp:129
+msgid "Decrease Height"
+msgstr "Yüksekliği azalt"
+
+#: src/main_window.cpp:133
+msgid "Configure Global Shortcuts..."
+msgstr "Genel kısayolları ayarla..."
+
+#: src/main_window.cpp:155
+msgid "Go to Next Session"
+msgstr "Bir Sonraki Oturuma Geç"
+
+#: src/main_window.cpp:158
+msgid "Go to Previous Session"
+msgstr "Önceki Oturuma Geç"
+
+#: src/main_window.cpp:162
+msgid "Move Session Left"
+msgstr "Oturumu sola taşı"
+
+#: src/main_window.cpp:166
+msgid "Move Session Right"
+msgstr "Oturumu sağa taşı"
+
+#: src/main_window.cpp:175
+msgid "Split Terminal Horizontally"
+msgstr "Terminali Yatay Ayır"
+
+#: src/main_window.cpp:180
+msgid "Split Terminal Vertically"
+msgstr "Terminali Dikey Ayır"
+
+#: src/main_window.cpp:185
+msgid "Close Terminal"
+msgstr "Oturumu Kapat"
+
+#: src/main_window.cpp:195
+#, c-format
+msgid "Switch to Session %1"
+msgstr "Oturum %1'e geç"
+
+#: src/main_window.cpp:223
+msgid ""
+"Application successfully started!\n"
+"Press %1 to use it..."
+msgstr "Yakuake başarıyla başlatıldı. Kullanmak için %1 tuşuna basın..."
+
+#: src/main_window.cpp:281
+msgid ""
+"You have multiple open sessions. These will be killed if you continue.\n"
+"\n"
+"Are you sure you want to quit?"
+msgstr ""
+"Birden fazla oturum açık. Eğer devam ederseniz bunlar kapatılacak. \n"
+"\n"
+"Gerçekten çıkmak istiyor musunuz?"
+
+#: src/main_window.cpp:282
+msgid "Really Quit?"
+msgstr "Gerçekten çıkmak istiyor musunuz?"
+
+#: src/main_window.cpp:284
+msgid "C&lose Session"
+msgstr "Oturumu &Kapat"
+
+#: src/main_window.cpp:327
+msgid "Yakuake Notification"
+msgstr "Yakuake Uyarı"
+
+#: src/main_window.cpp:776
+msgid "Quick Options"
+msgstr "Çabuk Seçenekler"
+
+#: src/main_window.cpp:784
+msgid "Open on screen"
+msgstr "Ekranda aç"
+
+#: src/main_window.cpp:796
+msgid "Keep open on focus change"
+msgstr "Odak değiştiğinde açık tut"
+
+#: src/main_window.cpp:798
+msgid "Settings"
+msgstr "Ayarlar"
+
+#. i18n: file ./src/general_settings_ui.ui line 451
+#: rc.cpp:129 src/main_window.cpp:822
+#, no-c-format
+msgid "At mouse location"
+msgstr "Fare konumunda"
+
+#: src/main_window.cpp:1207
+msgid "General"
+msgstr "Genel"
+
+#: src/main_window.cpp:1211
+msgid "Skins"
+msgstr "Temalar"
+
+#: src/main_window.cpp:1227
+msgid "First Run"
+msgstr "İlk Çalıştırma"
+
+#: src/skin_settings.cpp:124
+msgid "Unnamed"
+msgstr "İsimsiz"
+
+#: src/skin_settings.cpp:125
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#: src/skin_settings.cpp:177
+msgid "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"
+msgstr "*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Temaları"
+
+#: src/skin_settings.cpp:178
+msgid "Select Skin Archive"
+msgstr "Tema Arşivini Seç"
+
+#: src/skin_settings.cpp:186
+msgid "Failed to Download Skin"
+msgstr "Tema İndirme Başarısız"
+
+#: src/skin_settings.cpp:206
+msgid "The installer was given a directory, not a file."
+msgstr "Yükleyiciye dosya değil, dizin verildi."
+
+#: src/skin_settings.cpp:239
+msgid ""
+"Unable to locate required files in the skin archive.\n"
+"\n"
+" The archive appears to be invalid."
+msgstr ""
+"Tema arşivinde gerekli dosyalar bulunamadı.\n"
+"\n"
+" Arşiv geçersiz görünüyor."
+
+#: src/skin_settings.cpp:242
+msgid "Unable to list the skin archive contents."
+msgstr "Tema arşivi listelenemiyor."
+
+#: src/skin_settings.cpp:265
+msgid ""
+"This skin appears to be already installed and you lack the required permissions "
+"to overwrite it."
+msgstr ""
+"Bu tema zaten yüklü. Üzerine tekrar yazabilmek için gerekli yetkiye ihtiyacınız "
+"var."
+
+#: src/skin_settings.cpp:272
+msgid "This skin appears to be already installed. Do you want to overwrite it?"
+msgstr "Bu tema zaten yüklü. Üzerine yazmak iste misiniz?"
+
+#: src/skin_settings.cpp:273
+msgid "Skin Already Exists"
+msgstr "Tema Zaten Mevcut"
+
+#: src/skin_settings.cpp:274
+msgid "Reinstall Skin"
+msgstr "Temayı Tekrar Yükle"
+
+#: src/skin_settings.cpp:296
+msgid "Could Not Delete Skin"
+msgstr "Tema Silinemedi"
+
+#: src/skin_settings.cpp:319
+msgid "The skin archive file could not be opened."
+msgstr "Tema arşiv dosyası açılamadı."
+
+#: src/skin_settings.cpp:325
+msgid "Cannot Install Skin"
+msgstr "Tema Yüklenemiyor"
+
+#: src/skin_settings.cpp:350
+msgid "Do you want to remove \"%1\" by %2?"
+msgstr "%2 tarafından yapılan \"%1\"'i silmek istiyor musunuz?"
+
+#. i18n: file ./src/skin_settings_ui.ui line 35
+#: rc.cpp:37 src/skin_settings.cpp:351
+#, no-c-format
+msgid "Remove Skin"
+msgstr "Temayı Sil"
+
+#: src/tabbed_widget.cpp:106
+#, c-format
+msgid ""
+"_n: Shell\n"
+"Shell No. %n"
+msgstr "Kabuk No. %n"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "İsmail Dönmez, Can Coşkuner"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "ismail@pardus.org.tr, fethicanc@gmail.com"
+
+#. i18n: file ./src/skin_settings_ui.ui line 43
+#: rc.cpp:40
+#, no-c-format
+msgid "Install Skin..."
+msgstr "Tema Yükle..."
+
+#. i18n: file ./src/skin_settings_ui.ui line 62
+#: rc.cpp:43
+#, no-c-format
+msgid "Skin background color:"
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 76
+#: rc.cpp:47
+#, no-c-format
+msgid ""
+"This controls the color of the surface that translucent skin elements are "
+"composited upon. This setting is only available if Yakuake is run outside of "
+"KDE and translucency is unavailable."
+msgstr ""
+
+#. i18n: file ./src/skin_settings_ui.ui line 101
+#: rc.cpp:50
+#, no-c-format
+msgid "Skin"
+msgstr "Tema"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 43
+#: rc.cpp:53
+#, no-c-format
+msgid "<b>Welcome to Yakuake</b>"
+msgstr "<b>Yakuake'ye Hoş Geldiniz</b>"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 65
+#: rc.cpp:56
+#, no-c-format
+msgid "You can change the shortcut later at any time via the menu."
+msgstr "Kısayolu daha sonra menüyü kullanarak da değiştirebilirsiniz."
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 93
+#: rc.cpp:59
+#, no-c-format
+msgid "None"
+msgstr "Hiçbiri"
+
+#. i18n: file ./src/first_run_dialog_ui.ui line 118
+#: rc.cpp:62
+#, no-c-format
+msgid ""
+"Before using the application, you might want to change the keyboard shortcut "
+"used to open and close the Yakuake window:"
+msgstr ""
+"Uygulamayı kullanmadan önce Yakuake penceresini açıp kapatmak için gerekli olan "
+"klavye kısayollarını değiştirmek isteyebilirsiniz:"
+
+#. i18n: file ./src/general_settings_ui.ui line 46
+#: rc.cpp:68
+#, no-c-format
+msgid "Show notification popup at application startup"
+msgstr "Uygulama başlangıcında uyarı penceresini göster"
+
+#. i18n: file ./src/general_settings_ui.ui line 54
+#: rc.cpp:71
+#, no-c-format
+msgid "Confirm quit when closing more than one session"
+msgstr "Birden çok oturumu kapatırken onay iste"
+
+#. i18n: file ./src/general_settings_ui.ui line 62
+#: rc.cpp:74
+#, no-c-format
+msgid "Show the tab bar"
+msgstr "Sekme barını göster"
+
+#. i18n: file ./src/general_settings_ui.ui line 107
+#: rc.cpp:77
+#, fuzzy, no-c-format
+msgid "Keep window above other windows"
+msgstr "Odak değiştiğinde pencereyi açık tut"
+
+#. i18n: file ./src/general_settings_ui.ui line 110
+#: rc.cpp:80
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to keep on top of other "
+"windows even when it loses focus."
+msgstr ""
+"Yakuake penceresinin odaktan çıktığında da açık kalmasını istiyorsanız bu "
+"seçeneği işaretleyin."
+
+#. i18n: file ./src/general_settings_ui.ui line 118
+#: rc.cpp:83
+#, no-c-format
+msgid "Keep window open on focus change"
+msgstr "Odak değiştiğinde pencereyi açık tut"
+
+#. i18n: file ./src/general_settings_ui.ui line 124
+#: rc.cpp:87
+#, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to stay open when it loses "
+"focus."
+msgstr ""
+"Yakuake penceresinin odaktan çıktığında da açık kalmasını istiyorsanız bu "
+"seçeneği işaretleyin."
+
+#. i18n: file ./src/general_settings_ui.ui line 135
+#: rc.cpp:90
+#, no-c-format
+msgid "Use Open/Retract action to focus window"
+msgstr "Pencereyi odaklamak için Aç/Geri Çek eylemini kullan"
+
+#. i18n: file ./src/general_settings_ui.ui line 138
+#: rc.cpp:93
+#, no-c-format
+msgid ""
+"Enable this option if you want the Open/Retract shortcut to focus the Yakuake "
+"window when it is already open but lacks focus. Disable this option to have the "
+"Open/Retract shortcut retract the Yakuake window regardless of whether or not "
+"it has focus."
+msgstr ""
+"Yakuake penceresi açık ve odaklanmamışken pencerenin odaklanması için Aç "
+"/Vazgeç kısayollarını kullanabilmek için bu seçeneği etkinleştirin. Yakuake "
+"penceresinin odaklanmış olup olmadığına bakmadan Aç /Vazgeç kısayolunu "
+"kullanmak için bu seçeneği pasifleştirin."
+
+#. i18n: file ./src/general_settings_ui.ui line 149
+#: rc.cpp:96
+#, no-c-format
+msgid "Automatically open when pointer touches screen edge"
+msgstr ""
+
+#. i18n: file ./src/general_settings_ui.ui line 152
+#: rc.cpp:99
+#, fuzzy, no-c-format
+msgid ""
+"Enable this option if you want the Yakuake window to open when the mouse "
+"pointer touches the top edge of the screen."
+msgstr ""
+"Yakuake penceresinin odaktan çıktığında da açık kalmasını istiyorsanız bu "
+"seçeneği işaretleyin."
+
+#. i18n: file ./src/general_settings_ui.ui line 162
+#: rc.cpp:102
+#, no-c-format
+msgid "Size and Animation"
+msgstr "Boyut ve Animasyon"
+
+#. i18n: file ./src/general_settings_ui.ui line 173
+#: rc.cpp:105
+#, no-c-format
+msgid "Width:"
+msgstr "Genişlik:"
+
+#. i18n: file ./src/general_settings_ui.ui line 181
+#: rc.cpp:108
+#, no-c-format
+msgid "Height:"
+msgstr "Yükseklik:"
+
+#. i18n: file ./src/general_settings_ui.ui line 189
+#: rc.cpp:111
+#, no-c-format
+msgid "Speed:"
+msgstr "Hız:"
+
+#. i18n: file ./src/general_settings_ui.ui line 276
+#: rc.cpp:114
+#, no-c-format
+msgid ""
+"This setting controls the approximate duration of the sliding animation when "
+"the Yakuake window is opening or retracting."
+msgstr ""
+"Bu ayar Yakuake penceresinin açılma veya geri çekilme animasyon süresini "
+"ayarlar."
+
+#. i18n: file ./src/general_settings_ui.ui line 361
+#: rc.cpp:117
+#, no-c-format
+msgid "Position"
+msgstr "Pozisyon"
+
+#. i18n: file ./src/general_settings_ui.ui line 445
+#: rc.cpp:126
+#, no-c-format
+msgid "Open on screen:"
+msgstr "Ekranda aç:"
+
+#. i18n: file ./src/general_settings_ui.ui line 456
+#: rc.cpp:132
+#, no-c-format
+msgid "Screen 1"
+msgstr "Ekran %1"
diff --git a/stamp-h.in b/stamp-h.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stamp-h.in
diff --git a/subdirs b/subdirs
new file mode 100644
index 0000000..29f7b74
--- /dev/null
+++ b/subdirs
@@ -0,0 +1,2 @@
+po
+yakuake
diff --git a/yakuake/.krazy b/yakuake/.krazy
new file mode 100644
index 0000000..76f04a1
--- /dev/null
+++ b/yakuake/.krazy
@@ -0,0 +1 @@
+EXCLUDE i18ncheckarg
diff --git a/yakuake/Makefile.am b/yakuake/Makefile.am
new file mode 100644
index 0000000..6f08666
--- /dev/null
+++ b/yakuake/Makefile.am
@@ -0,0 +1,11 @@
+SUBDIRS = src skins
+
+EXTRA_DIST = AUTHORS COPYING ChangeLog INSTALL README TODO NEWS
+
+messages: rc.cpp
+ $(EXTRACTRC) `find . -name "*.rc" -o -name "*.ui" -o -name "*.kcfg"` > rc.cpp
+ LIST=`find . -name \*.h -o -name \*.hh -o -name \*.H -o -name \*.hxx -o -name \*.hpp -o -name \*.cpp -o -name \*.cc -o -name *.cxx -o -name \*.ecpp -o -name \*.C`; \
+ if test -n "$$LIST"; then \
+ $(XGETTEXT) $$LIST -o $(podir)/yakuake.pot; \
+ fi
+ rm -f rc.cpp
diff --git a/yakuake/NEWS b/yakuake/NEWS
new file mode 100644
index 0000000..6e7bda5
--- /dev/null
+++ b/yakuake/NEWS
@@ -0,0 +1,20 @@
+Wed Jan 17 20:00:00 CEST 2008
+Released Yakuake 2.8.1.
+
+Mon Oct 01 23:00:00 CEST 2007
+Released Yakuake 2.8.
+
+Sun May 06 12:00:00 CEST 2007
+Released Yakuake 2.8-beta1.
+
+Sun Mar 19 12:00:00 CEST 2006
+Released Yakuake 2.7.5.
+
+Sat Mar 18 12:00:00 CEST 2006
+Released Yakuake 2.7.4.
+
+Tue Mar 14 20:00:00 CEST 2006
+After Francois Chazal has announced that he is unable to continue
+Yakuake development due to time constraints, maintainership has
+passed on to Eike Hein. Yakuake is to be imported into the KDE.org
+Extragear module for future development.
diff --git a/yakuake/configure.files b/yakuake/configure.files
new file mode 100644
index 0000000..030bce8
--- /dev/null
+++ b/yakuake/configure.files
@@ -0,0 +1,2 @@
+./admin/configure.in.min
+configure.in.in
diff --git a/yakuake/configure.in.in b/yakuake/configure.in.in
new file mode 100644
index 0000000..cf05638
--- /dev/null
+++ b/yakuake/configure.in.in
@@ -0,0 +1,6 @@
+#MIN_CONFIG(3.2.0)
+
+AM_INIT_AUTOMAKE(yakuake, 1.1)
+AC_C_BIGENDIAN
+AC_CHECK_KDEMAXPATHLEN
+
diff --git a/yakuake/skins/Makefile.am b/yakuake/skins/Makefile.am
new file mode 100644
index 0000000..64bfe55
--- /dev/null
+++ b/yakuake/skins/Makefile.am
@@ -0,0 +1,3 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+SUBDIRS = default plastik_light plastik_dark
diff --git a/yakuake/skins/README b/yakuake/skins/README
new file mode 100644
index 0000000..7b31656
--- /dev/null
+++ b/yakuake/skins/README
@@ -0,0 +1,40 @@
+** What is a Yakuake skin?
+
+ A Yakuake skin, at present, is a collection of PNG image files and related
+ settings that allows modifying the visual appearance of the Yakuake window
+ frame, the window title bar and the tab bar along with the button controls
+ on them and the default title bar caption.
+
+
+** How is a Yakuake skin composed?
+
+ A Yakuake skin consists of a main directory, the name of which is used by
+ the application to identify that skin, and the files within. Two required
+ files are title.skin and tabs.skin located immediately in that directory.
+ Both are INI-style text files which contain the paths of the pixmaps that
+ are to be applied to the title bar and tab bar interface elements, res-
+ pectively, as well as the coordinates of the buttons and additional infor-
+ mation about the skin, such as its display name, its author and the email
+ address of the author.
+
+ You should derive new skins from the default skin. Please remember to
+ change the name of the base skin directory (which serves as identifier),
+ the skin display name, and include author information.
+
+
+** How should I package a Yakuake skin?
+
+ The "Skins" page in the Yakuake configuration dialog features an "Install
+ Skin" facility that can install Yakuake skin directories packaged as a
+ tar archive and optionally compressed using gzip or bzip2. Packages can be
+ installed from a local volume or a URL (using KIO).
+
+ In managing skins, Yakuake uses the name of the base skin directory loca-
+ ted within the tar archive as internal identifier for the skin. It should
+ be unique to your skin, i.e. ideally a simplified version of the proper
+ name of your skin.
+
+ The skin list on the "Skins" config dialog page reads the Name and Author
+ properties from the *.skin files to populate list items with information.
+ Additionally, it will try to load a 32x32px image file given via the Icon
+ property to show as artwork next to the skin name.
diff --git a/yakuake/skins/default/Makefile.am b/yakuake/skins/default/Makefile.am
new file mode 100644
index 0000000..c298a07
--- /dev/null
+++ b/yakuake/skins/default/Makefile.am
@@ -0,0 +1,5 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+SUBDIRS = title tabs
+skinrcdir = $(kde_datadir)/yakuake/default
+skinrc_DATA = tabs.skin title.skin icon.png
diff --git a/yakuake/skins/default/icon.png b/yakuake/skins/default/icon.png
new file mode 100644
index 0000000..91fef38
--- /dev/null
+++ b/yakuake/skins/default/icon.png
Binary files differ
diff --git a/yakuake/skins/default/tabs.skin b/yakuake/skins/default/tabs.skin
new file mode 100644
index 0000000..7bad4dd
--- /dev/null
+++ b/yakuake/skins/default/tabs.skin
@@ -0,0 +1,36 @@
+[Description]
+Skin=Default
+Author=Francois Chazal
+Email=neptune3k@free.fr
+Icon=/icon.png
+
+[Tabs]
+x=20
+y=0
+red=255
+green=255
+blue=255
+separator_image=/tabs/unselected_back.png
+selected_background=/tabs/selected_back.png
+selected_left_corner=/tabs/selected_left.png
+selected_right_corner=/tabs/selected_right.png
+unselected_background=/tabs/unselected_back.png
+
+[Background]
+back_image=/tabs/back_image.png
+left_corner=/tabs/left_corner.png
+right_corner=/tabs/right_corner.png
+
+[PlusButton]
+x=2
+y=2
+up_image=/tabs/plus_up.png
+over_image=/tabs/plus_over.png
+down_image=/tabs/plus_down.png
+
+[MinusButton]
+x=18
+y=2
+up_image=/tabs/minus_up.png
+over_image=/tabs/minus_over.png
+down_image=/tabs/minus_down.png
diff --git a/yakuake/skins/default/tabs/Makefile.am b/yakuake/skins/default/tabs/Makefile.am
new file mode 100644
index 0000000..b7d822d
--- /dev/null
+++ b/yakuake/skins/default/tabs/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+tabsrcdir = $(kde_datadir)/yakuake/default/tabs
+tabsrc_DATA = back_image.png left_corner.png minus_down.png minus_over.png \
+ minus_up.png plus_down.png plus_over.png plus.png plus_up.png right_corner.png \
+ selected_back.png selected_left.png selected_right.png unselected_back.png separator.png
diff --git a/yakuake/skins/default/tabs/back_image.png b/yakuake/skins/default/tabs/back_image.png
new file mode 100644
index 0000000..9b19c6a
--- /dev/null
+++ b/yakuake/skins/default/tabs/back_image.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/left_corner.png b/yakuake/skins/default/tabs/left_corner.png
new file mode 100644
index 0000000..1f75cae
--- /dev/null
+++ b/yakuake/skins/default/tabs/left_corner.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/minus_down.png b/yakuake/skins/default/tabs/minus_down.png
new file mode 100644
index 0000000..f473c16
--- /dev/null
+++ b/yakuake/skins/default/tabs/minus_down.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/minus_over.png b/yakuake/skins/default/tabs/minus_over.png
new file mode 100644
index 0000000..ee788f4
--- /dev/null
+++ b/yakuake/skins/default/tabs/minus_over.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/minus_up.png b/yakuake/skins/default/tabs/minus_up.png
new file mode 100644
index 0000000..d8d787e
--- /dev/null
+++ b/yakuake/skins/default/tabs/minus_up.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/plus.png b/yakuake/skins/default/tabs/plus.png
new file mode 100644
index 0000000..3ae8944
--- /dev/null
+++ b/yakuake/skins/default/tabs/plus.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/plus_down.png b/yakuake/skins/default/tabs/plus_down.png
new file mode 100644
index 0000000..5f82313
--- /dev/null
+++ b/yakuake/skins/default/tabs/plus_down.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/plus_over.png b/yakuake/skins/default/tabs/plus_over.png
new file mode 100644
index 0000000..14cef28
--- /dev/null
+++ b/yakuake/skins/default/tabs/plus_over.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/plus_up.png b/yakuake/skins/default/tabs/plus_up.png
new file mode 100644
index 0000000..95c7c8a
--- /dev/null
+++ b/yakuake/skins/default/tabs/plus_up.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/right_corner.png b/yakuake/skins/default/tabs/right_corner.png
new file mode 100644
index 0000000..6adc11a
--- /dev/null
+++ b/yakuake/skins/default/tabs/right_corner.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/selected_back.png b/yakuake/skins/default/tabs/selected_back.png
new file mode 100644
index 0000000..8c41bfa
--- /dev/null
+++ b/yakuake/skins/default/tabs/selected_back.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/selected_left.png b/yakuake/skins/default/tabs/selected_left.png
new file mode 100644
index 0000000..e2ddabd
--- /dev/null
+++ b/yakuake/skins/default/tabs/selected_left.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/selected_right.png b/yakuake/skins/default/tabs/selected_right.png
new file mode 100644
index 0000000..034a9e5
--- /dev/null
+++ b/yakuake/skins/default/tabs/selected_right.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/separator.png b/yakuake/skins/default/tabs/separator.png
new file mode 100644
index 0000000..55b5990
--- /dev/null
+++ b/yakuake/skins/default/tabs/separator.png
Binary files differ
diff --git a/yakuake/skins/default/tabs/unselected_back.png b/yakuake/skins/default/tabs/unselected_back.png
new file mode 100644
index 0000000..b151759
--- /dev/null
+++ b/yakuake/skins/default/tabs/unselected_back.png
Binary files differ
diff --git a/yakuake/skins/default/title.skin b/yakuake/skins/default/title.skin
new file mode 100644
index 0000000..f2db91e
--- /dev/null
+++ b/yakuake/skins/default/title.skin
@@ -0,0 +1,45 @@
+[Description]
+Skin=Default
+Author=Francois Chazal
+Email=neptune3k@free.fr
+Icon=/icon.png
+
+[Border]
+red=181
+green=203
+blue=211
+width=1
+
+[Text]
+x=26
+y=14
+red=40
+green=60
+blue=80
+text=KDE Terminal Emulator
+
+[Background]
+back_image=/title/back.png
+left_corner=/title/left.png
+right_corner=/title/right.png
+
+[FocusButton]
+x=56
+y=4
+up_image=/title/focus_up.png
+over_image=/title/focus_over.png
+down_image=/title/focus_down.png
+
+[ConfigButton]
+x=38
+y=4
+up_image=/title/config_up.png
+over_image=/title/config_over.png
+down_image=/title/config_down.png
+
+[QuitButton]
+x=20
+y=4
+up_image=/title/quit_up.png
+over_image=/title/quit_over.png
+down_image=/title/quit_down.png
diff --git a/yakuake/skins/default/title/Makefile.am b/yakuake/skins/default/title/Makefile.am
new file mode 100644
index 0000000..f15e689
--- /dev/null
+++ b/yakuake/skins/default/title/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+titlercdir = $(kde_datadir)/yakuake/default/title
+titlerc_DATA = back.png config_down.png config_over.png config_up.png\
+ focus_down.png focus_over.png focus_up.png left.png quit_down.png\
+ quit_over.png quit_up.png right.png
diff --git a/yakuake/skins/default/title/back.png b/yakuake/skins/default/title/back.png
new file mode 100644
index 0000000..7a675d3
--- /dev/null
+++ b/yakuake/skins/default/title/back.png
Binary files differ
diff --git a/yakuake/skins/default/title/config_down.png b/yakuake/skins/default/title/config_down.png
new file mode 100644
index 0000000..6dfe5de
--- /dev/null
+++ b/yakuake/skins/default/title/config_down.png
Binary files differ
diff --git a/yakuake/skins/default/title/config_over.png b/yakuake/skins/default/title/config_over.png
new file mode 100644
index 0000000..1b09054
--- /dev/null
+++ b/yakuake/skins/default/title/config_over.png
Binary files differ
diff --git a/yakuake/skins/default/title/config_up.png b/yakuake/skins/default/title/config_up.png
new file mode 100644
index 0000000..928b591
--- /dev/null
+++ b/yakuake/skins/default/title/config_up.png
Binary files differ
diff --git a/yakuake/skins/default/title/focus_down.png b/yakuake/skins/default/title/focus_down.png
new file mode 100644
index 0000000..7d24c7b
--- /dev/null
+++ b/yakuake/skins/default/title/focus_down.png
Binary files differ
diff --git a/yakuake/skins/default/title/focus_over.png b/yakuake/skins/default/title/focus_over.png
new file mode 100644
index 0000000..dbb57d7
--- /dev/null
+++ b/yakuake/skins/default/title/focus_over.png
Binary files differ
diff --git a/yakuake/skins/default/title/focus_up.png b/yakuake/skins/default/title/focus_up.png
new file mode 100644
index 0000000..d3170c1
--- /dev/null
+++ b/yakuake/skins/default/title/focus_up.png
Binary files differ
diff --git a/yakuake/skins/default/title/left.png b/yakuake/skins/default/title/left.png
new file mode 100644
index 0000000..bbdb113
--- /dev/null
+++ b/yakuake/skins/default/title/left.png
Binary files differ
diff --git a/yakuake/skins/default/title/quit_down.png b/yakuake/skins/default/title/quit_down.png
new file mode 100644
index 0000000..cf55743
--- /dev/null
+++ b/yakuake/skins/default/title/quit_down.png
Binary files differ
diff --git a/yakuake/skins/default/title/quit_over.png b/yakuake/skins/default/title/quit_over.png
new file mode 100644
index 0000000..36032c4
--- /dev/null
+++ b/yakuake/skins/default/title/quit_over.png
Binary files differ
diff --git a/yakuake/skins/default/title/quit_up.png b/yakuake/skins/default/title/quit_up.png
new file mode 100644
index 0000000..2159eb1
--- /dev/null
+++ b/yakuake/skins/default/title/quit_up.png
Binary files differ
diff --git a/yakuake/skins/default/title/right.png b/yakuake/skins/default/title/right.png
new file mode 100644
index 0000000..710b3fe
--- /dev/null
+++ b/yakuake/skins/default/title/right.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/Makefile.am b/yakuake/skins/plastik_dark/Makefile.am
new file mode 100644
index 0000000..54d82f1
--- /dev/null
+++ b/yakuake/skins/plastik_dark/Makefile.am
@@ -0,0 +1,5 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+SUBDIRS = title tabs
+skinrcdir = $(kde_datadir)/yakuake/plastik_dark
+skinrc_DATA = tabs.skin title.skin icon.png
diff --git a/yakuake/skins/plastik_dark/icon.png b/yakuake/skins/plastik_dark/icon.png
new file mode 100644
index 0000000..943777e
--- /dev/null
+++ b/yakuake/skins/plastik_dark/icon.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs.skin b/yakuake/skins/plastik_dark/tabs.skin
new file mode 100644
index 0000000..799c971
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs.skin
@@ -0,0 +1,36 @@
+[Description]
+Skin=Plastik (Dark)
+Author=suslik
+Email=dd@accentsolution.com
+Icon=/icon.png
+
+[Tabs]
+x=38
+y=0
+red=255
+green=255
+blue=255
+separator_image=/tabs/separator.png
+selected_background=/tabs/selected_back.png
+selected_left_corner=/tabs/selected_left.png
+selected_right_corner=/tabs/selected_right.png
+unselected_background=/tabs/unselected_back.png
+
+[Background]
+back_image=/tabs/back_image.png
+left_corner=/tabs/left_corner.png
+right_corner=/tabs/right_corner.png
+
+[PlusButton]
+x=4
+y=5
+up_image=/tabs/plus_up.png
+over_image=/tabs/plus_over.png
+down_image=/tabs/plus_down.png
+
+[MinusButton]
+x=49
+y=0
+up_image=/tabs/minus_up.png
+over_image=/tabs/minus_over.png
+down_image=/tabs/minus_down.png
diff --git a/yakuake/skins/plastik_dark/tabs/Makefile.am b/yakuake/skins/plastik_dark/tabs/Makefile.am
new file mode 100644
index 0000000..684d624
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+tabsrcdir = $(kde_datadir)/yakuake/plastik_dark/tabs
+tabsrc_DATA = back_image.png left_corner.png minus_down.png minus_over.png \
+ minus_up.png plus_down.png plus_over.png plus_up.png right_corner.png \
+ selected_back.png selected_left.png selected_right.png unselected_back.png separator.png
diff --git a/yakuake/skins/plastik_dark/tabs/back_image.png b/yakuake/skins/plastik_dark/tabs/back_image.png
new file mode 100644
index 0000000..38867d1
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/back_image.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/left_corner.png b/yakuake/skins/plastik_dark/tabs/left_corner.png
new file mode 100644
index 0000000..31f989e
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/left_corner.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/minus_down.png b/yakuake/skins/plastik_dark/tabs/minus_down.png
new file mode 100644
index 0000000..50b8709
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/minus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/minus_over.png b/yakuake/skins/plastik_dark/tabs/minus_over.png
new file mode 100644
index 0000000..6e1bf1a
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/minus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/minus_up.png b/yakuake/skins/plastik_dark/tabs/minus_up.png
new file mode 100644
index 0000000..ad6c45e
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/minus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/plus_down.png b/yakuake/skins/plastik_dark/tabs/plus_down.png
new file mode 100644
index 0000000..af9b6ba
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/plus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/plus_over.png b/yakuake/skins/plastik_dark/tabs/plus_over.png
new file mode 100644
index 0000000..af9b6ba
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/plus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/plus_up.png b/yakuake/skins/plastik_dark/tabs/plus_up.png
new file mode 100644
index 0000000..dcbcd19
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/plus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/right_corner.png b/yakuake/skins/plastik_dark/tabs/right_corner.png
new file mode 100644
index 0000000..91dbb1f
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/right_corner.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/selected_back.png b/yakuake/skins/plastik_dark/tabs/selected_back.png
new file mode 100644
index 0000000..6063261
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/selected_back.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/selected_left.png b/yakuake/skins/plastik_dark/tabs/selected_left.png
new file mode 100644
index 0000000..e5bd3cd
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/selected_left.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/selected_right.png b/yakuake/skins/plastik_dark/tabs/selected_right.png
new file mode 100644
index 0000000..cf5f342
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/selected_right.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/separator.png b/yakuake/skins/plastik_dark/tabs/separator.png
new file mode 100644
index 0000000..5e81759
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/separator.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/tabs/unselected_back.png b/yakuake/skins/plastik_dark/tabs/unselected_back.png
new file mode 100644
index 0000000..48f2b97
--- /dev/null
+++ b/yakuake/skins/plastik_dark/tabs/unselected_back.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title.skin b/yakuake/skins/plastik_dark/title.skin
new file mode 100644
index 0000000..6cc7884
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title.skin
@@ -0,0 +1,45 @@
+[Description]
+Skin=Plastik (Dark)
+Author=suslik
+Email=dd@accentsolution.com
+Icon=/icon.png
+
+[Border]
+red=233
+green=233
+blue=233
+width=0
+
+[Text]
+x=150
+y=15
+red=100
+green=100
+blue=100
+text=
+
+[Background]
+back_image=/title/back.png
+left_corner=/title/left.png
+right_corner=/title/right.png
+
+[FocusButton]
+x=29
+y=0
+up_image=/title/focus_up.png
+over_image=/title/focus_over.png
+down_image=/title/focus_down.png
+
+[ConfigButton]
+x=87
+y=0
+up_image=/title/config_up.png
+over_image=/title/config_over.png
+down_image=/title/config_down.png
+
+[QuitButton]
+x=50
+y=1
+up_image=/title/quit_up.png
+over_image=/title/quit_over.png
+down_image=/title/quit_down.png
diff --git a/yakuake/skins/plastik_dark/title/Makefile.am b/yakuake/skins/plastik_dark/title/Makefile.am
new file mode 100644
index 0000000..ff27e23
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+titlercdir = $(kde_datadir)/yakuake/plastik_dark/title
+titlerc_DATA = back.png config_down.png config_over.png config_up.png\
+ focus_down.png focus_over.png focus_up.png left.png quit_down.png\
+ quit_over.png quit_up.png right.png
diff --git a/yakuake/skins/plastik_dark/title/back.png b/yakuake/skins/plastik_dark/title/back.png
new file mode 100644
index 0000000..b3f870c
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/back.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/config_down.png b/yakuake/skins/plastik_dark/title/config_down.png
new file mode 100644
index 0000000..09dbec0
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/config_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/config_over.png b/yakuake/skins/plastik_dark/title/config_over.png
new file mode 100644
index 0000000..09dbec0
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/config_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/config_up.png b/yakuake/skins/plastik_dark/title/config_up.png
new file mode 100644
index 0000000..f5968d2
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/config_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/focus_down.png b/yakuake/skins/plastik_dark/title/focus_down.png
new file mode 100644
index 0000000..0ffe632
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/focus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/focus_over.png b/yakuake/skins/plastik_dark/title/focus_over.png
new file mode 100644
index 0000000..0ffe632
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/focus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/focus_up.png b/yakuake/skins/plastik_dark/title/focus_up.png
new file mode 100644
index 0000000..b6892ec
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/focus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/left.png b/yakuake/skins/plastik_dark/title/left.png
new file mode 100644
index 0000000..a7405dc
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/left.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/quit_down.png b/yakuake/skins/plastik_dark/title/quit_down.png
new file mode 100644
index 0000000..f855824
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/quit_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/quit_over.png b/yakuake/skins/plastik_dark/title/quit_over.png
new file mode 100644
index 0000000..f855824
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/quit_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/quit_up.png b/yakuake/skins/plastik_dark/title/quit_up.png
new file mode 100644
index 0000000..bf819bf
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/quit_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_dark/title/right.png b/yakuake/skins/plastik_dark/title/right.png
new file mode 100644
index 0000000..fce68a8
--- /dev/null
+++ b/yakuake/skins/plastik_dark/title/right.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/Makefile.am b/yakuake/skins/plastik_light/Makefile.am
new file mode 100644
index 0000000..32dbd2d
--- /dev/null
+++ b/yakuake/skins/plastik_light/Makefile.am
@@ -0,0 +1,5 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+SUBDIRS = title tabs
+skinrcdir = $(kde_datadir)/yakuake/plastik_light
+skinrc_DATA = tabs.skin title.skin icon.png
diff --git a/yakuake/skins/plastik_light/icon.png b/yakuake/skins/plastik_light/icon.png
new file mode 100644
index 0000000..3494757
--- /dev/null
+++ b/yakuake/skins/plastik_light/icon.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs.skin b/yakuake/skins/plastik_light/tabs.skin
new file mode 100644
index 0000000..d408658
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs.skin
@@ -0,0 +1,36 @@
+[Description]
+Skin=Plastik (Light)
+Author=suslik
+Email=dd@accentsolution.com
+Icon=/icon.png
+
+[Tabs]
+x=38
+y=0
+red=255
+green=255
+blue=255
+separator_image=/tabs/separator.png
+selected_background=/tabs/selected_back.png
+selected_left_corner=/tabs/selected_left.png
+selected_right_corner=/tabs/selected_right.png
+unselected_background=/tabs/unselected_back.png
+
+[Background]
+back_image=/tabs/back_image.png
+left_corner=/tabs/left_corner.png
+right_corner=/tabs/right_corner.png
+
+[PlusButton]
+x=4
+y=5
+up_image=/tabs/plus_up.png
+over_image=/tabs/plus_over.png
+down_image=/tabs/plus_down.png
+
+[MinusButton]
+x=49
+y=0
+up_image=/tabs/minus_up.png
+over_image=/tabs/minus_over.png
+down_image=/tabs/minus_down.png
diff --git a/yakuake/skins/plastik_light/tabs/Makefile.am b/yakuake/skins/plastik_light/tabs/Makefile.am
new file mode 100644
index 0000000..420c6ec
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+tabsrcdir = $(kde_datadir)/yakuake/plastik_light/tabs
+tabsrc_DATA = back_image.png left_corner.png minus_down.png minus_over.png \
+ minus_up.png plus_down.png plus_over.png plus_up.png right_corner.png \
+ selected_back.png selected_left.png selected_right.png unselected_back.png separator.png
diff --git a/yakuake/skins/plastik_light/tabs/back_image.png b/yakuake/skins/plastik_light/tabs/back_image.png
new file mode 100644
index 0000000..38867d1
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/back_image.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/left_corner.png b/yakuake/skins/plastik_light/tabs/left_corner.png
new file mode 100644
index 0000000..31f989e
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/left_corner.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/minus_down.png b/yakuake/skins/plastik_light/tabs/minus_down.png
new file mode 100644
index 0000000..b9878a9
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/minus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/minus_over.png b/yakuake/skins/plastik_light/tabs/minus_over.png
new file mode 100644
index 0000000..53333d1
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/minus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/minus_up.png b/yakuake/skins/plastik_light/tabs/minus_up.png
new file mode 100644
index 0000000..75c2cf4
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/minus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/plus_down.png b/yakuake/skins/plastik_light/tabs/plus_down.png
new file mode 100644
index 0000000..af9b6ba
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/plus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/plus_over.png b/yakuake/skins/plastik_light/tabs/plus_over.png
new file mode 100644
index 0000000..af9b6ba
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/plus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/plus_up.png b/yakuake/skins/plastik_light/tabs/plus_up.png
new file mode 100644
index 0000000..dcbcd19
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/plus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/right_corner.png b/yakuake/skins/plastik_light/tabs/right_corner.png
new file mode 100644
index 0000000..91dbb1f
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/right_corner.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/selected_back.png b/yakuake/skins/plastik_light/tabs/selected_back.png
new file mode 100644
index 0000000..621492c
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/selected_back.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/selected_left.png b/yakuake/skins/plastik_light/tabs/selected_left.png
new file mode 100644
index 0000000..25fbfb7
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/selected_left.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/selected_right.png b/yakuake/skins/plastik_light/tabs/selected_right.png
new file mode 100644
index 0000000..99d96d0
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/selected_right.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/separator.png b/yakuake/skins/plastik_light/tabs/separator.png
new file mode 100644
index 0000000..5e81759
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/separator.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/tabs/unselected_back.png b/yakuake/skins/plastik_light/tabs/unselected_back.png
new file mode 100644
index 0000000..48f2b97
--- /dev/null
+++ b/yakuake/skins/plastik_light/tabs/unselected_back.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title.skin b/yakuake/skins/plastik_light/title.skin
new file mode 100644
index 0000000..f87ddd7
--- /dev/null
+++ b/yakuake/skins/plastik_light/title.skin
@@ -0,0 +1,45 @@
+[Description]
+Skin=Plastik (Light)
+Author=suslik
+Email=dd@accentsolution.com
+Icon=/icon.png
+
+[Border]
+red=233
+green=233
+blue=233
+width=0
+
+[Text]
+x=150
+y=15
+red=100
+green=100
+blue=100
+text=
+
+[Background]
+back_image=/title/back.png
+left_corner=/title/left.png
+right_corner=/title/right.png
+
+[FocusButton]
+x=29
+y=0
+up_image=/title/focus_up.png
+over_image=/title/focus_over.png
+down_image=/title/focus_down.png
+
+[ConfigButton]
+x=87
+y=0
+up_image=/title/config_up.png
+over_image=/title/config_over.png
+down_image=/title/config_down.png
+
+[QuitButton]
+x=50
+y=1
+up_image=/title/quit_up.png
+over_image=/title/quit_over.png
+down_image=/title/quit_down.png
diff --git a/yakuake/skins/plastik_light/title/Makefile.am b/yakuake/skins/plastik_light/title/Makefile.am
new file mode 100644
index 0000000..01d89a2
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I$(top_srcdir)/src
+METASOURCES = AUTO
+titlercdir = $(kde_datadir)/yakuake/plastik_light/title
+titlerc_DATA = back.png config_down.png config_over.png config_up.png\
+ focus_down.png focus_over.png focus_up.png left.png quit_down.png\
+ quit_over.png quit_up.png right.png
diff --git a/yakuake/skins/plastik_light/title/back.png b/yakuake/skins/plastik_light/title/back.png
new file mode 100644
index 0000000..b3f870c
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/back.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/config_down.png b/yakuake/skins/plastik_light/title/config_down.png
new file mode 100644
index 0000000..09dbec0
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/config_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/config_over.png b/yakuake/skins/plastik_light/title/config_over.png
new file mode 100644
index 0000000..09dbec0
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/config_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/config_up.png b/yakuake/skins/plastik_light/title/config_up.png
new file mode 100644
index 0000000..f5968d2
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/config_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/focus_down.png b/yakuake/skins/plastik_light/title/focus_down.png
new file mode 100644
index 0000000..0ffe632
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/focus_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/focus_over.png b/yakuake/skins/plastik_light/title/focus_over.png
new file mode 100644
index 0000000..0ffe632
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/focus_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/focus_up.png b/yakuake/skins/plastik_light/title/focus_up.png
new file mode 100644
index 0000000..b6892ec
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/focus_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/left.png b/yakuake/skins/plastik_light/title/left.png
new file mode 100644
index 0000000..a7405dc
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/left.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/quit_down.png b/yakuake/skins/plastik_light/title/quit_down.png
new file mode 100644
index 0000000..f855824
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/quit_down.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/quit_over.png b/yakuake/skins/plastik_light/title/quit_over.png
new file mode 100644
index 0000000..f855824
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/quit_over.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/quit_up.png b/yakuake/skins/plastik_light/title/quit_up.png
new file mode 100644
index 0000000..bf819bf
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/quit_up.png
Binary files differ
diff --git a/yakuake/skins/plastik_light/title/right.png b/yakuake/skins/plastik_light/title/right.png
new file mode 100644
index 0000000..fce68a8
--- /dev/null
+++ b/yakuake/skins/plastik_light/title/right.png
Binary files differ
diff --git a/yakuake/src/Makefile.am b/yakuake/src/Makefile.am
new file mode 100644
index 0000000..285ee28
--- /dev/null
+++ b/yakuake/src/Makefile.am
@@ -0,0 +1,28 @@
+METASOURCES = AUTO
+
+KDE_ICON = AUTO
+
+bin_PROGRAMS = yakuake
+
+yakuake_SOURCES = dcop_interface.skel first_run_dialog.cpp \
+ first_run_dialog_ui.ui general_settings.cpp general_settings_ui.ui \
+ image_button.cpp main.cpp main_window.cpp session.cpp settings.kcfgc \
+ skin_list_item.cpp skin_settings.cpp skin_settings_ui.ui \
+ tabbed_widget.cpp tab_bar.cpp terminal.cpp terminal_focus_watcher.cpp \
+ terminal_splitter.cpp title_bar.cpp translucent_widget.cpp
+
+yakuake_LDFLAGS = $(KDE_RPATH) $(all_libraries)
+yakuake_LDADD = $(LIB_KDEUI) $(LIB_KIO)
+
+INCLUDES = -I$(top_srcdir)/. -I$(top_srcdir)/src $(all_includes)
+
+kde_kcfg_DATA = yakuake.kcfg
+
+xdg_apps_DATA = yakuake.desktop
+
+shellrcdir = $(kde_datadir)/yakuake
+
+noinst_HEADERS = dcop_interface.h first_run_dialog.h general_settings.h \
+ image_button.h main_window.h session.h skin_list_item.h \
+ skin_settings.h tabbed_widget.h tab_bar.h terminal.h \
+ terminal_focus_watcher.h terminal_splitter.h title_bar.h
diff --git a/yakuake/src/dcop_interface.h b/yakuake/src/dcop_interface.h
new file mode 100644
index 0000000..0606cd0
--- /dev/null
+++ b/yakuake/src/dcop_interface.h
@@ -0,0 +1,82 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+#ifndef DCOP_INTERFACE_H
+# define DCOP_INTERFACE_H
+
+
+#include <dcopobject.h>
+
+
+class DCOPInterface : virtual public DCOPObject
+{
+ K_DCOP
+
+ k_dcop:
+ virtual void slotToggleState() = 0;
+
+ virtual void slotAddSession() = 0;
+
+ virtual void slotRemoveSession() = 0;
+ virtual void slotRemoveSession(int session_id) = 0;
+
+ virtual void slotRemoveTerminal() = 0;
+ virtual void slotRemoveTerminal(int session_id) = 0;
+ virtual void slotRemoveTerminal(int session_id, int terminal_id) = 0;
+
+ virtual void slotRenameSession(int session_id, const QString & name) = 0;
+
+ virtual const QString sessionIdList() = 0;
+ virtual const QString terminalIdList(int session_id) = 0;
+
+ virtual int tabPositionForSessionId(int session_id) = 0;
+ virtual int sessionIdForTabPosition(int position) = 0;
+
+ virtual int selectedSession() = 0;
+ virtual int selectedTerminal() = 0;
+
+ virtual void slotSelectSession(int session_id) = 0;
+ virtual void slotSelectTabPosition(int position) = 0;
+
+ virtual const QString slotSessionName() = 0;
+ virtual const QString slotSessionName(int session_id) = 0;
+
+ virtual const QString slotSessionTitle() = 0;
+ virtual const QString slotSessionTitle(int session_id) = 0;
+ virtual const QString slotSessionTitle(int session_id, int terminal_id) = 0;
+
+ virtual void slotSetSessionTitleText(const QString& title) = 0;
+ virtual void slotSetSessionTitleText(int session_id, const QString& title) = 0;
+ virtual void slotSetSessionTitleText(int session_id, int terminal_id, const QString& title) = 0;
+
+ virtual void slotPasteClipboard() = 0;
+ virtual void slotPasteClipboard(int session_id) = 0;
+ virtual void slotPasteClipboard(int session_id, int terminal_id) = 0;
+
+ virtual void slotPasteSelection() = 0;
+ virtual void slotPasteSelection(int session_id) = 0;
+ virtual void slotPasteSelection(int session_id, int terminal_id) = 0;
+
+ virtual void slotRunCommandInSession(const QString& command) = 0;
+ virtual void slotRunCommandInSession(int session_id, const QString& command) = 0;
+ virtual void slotRunCommandInSession(int session_id, int terminal_id, const QString& command) = 0;
+
+ virtual void slotSplitHorizontally() = 0;
+ virtual void slotSplitHorizontally(int session_id) = 0;
+ virtual void slotSplitHorizontally(int session_id, int terminal_id) = 0;
+
+ virtual void slotSplitVertically() = 0;
+ virtual void slotSplitVertically(int session_id) = 0;
+ virtual void slotSplitVertically(int session_id, int terminal_id) = 0;
+};
+
+#endif /* DCOP_INTERFACE_H */
diff --git a/yakuake/src/first_run_dialog.cpp b/yakuake/src/first_run_dialog.cpp
new file mode 100644
index 0000000..bbae3a4
--- /dev/null
+++ b/yakuake/src/first_run_dialog.cpp
@@ -0,0 +1,49 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "first_run_dialog.h"
+#include "first_run_dialog.moc"
+
+#include <kkeybutton.h>
+#include <kshortcut.h>
+#include <kkeydialog.h>
+
+
+FirstRunDialog::FirstRunDialog(QWidget* parent, const char* name)
+ : FirstRunDialogUI(parent, name)
+{
+ connect(key_button, SIGNAL(capturedShortcut(const KShortcut&)),
+ this, SLOT(validateShortcut(const KShortcut&)));
+}
+
+FirstRunDialog::~FirstRunDialog()
+{
+}
+
+KShortcut FirstRunDialog::shortcut()
+{
+ return key_button->shortcut();
+}
+
+void FirstRunDialog::setShortcut(const KShortcut& shortcut)
+{
+ key_button->setShortcut(shortcut, false);
+}
+
+void FirstRunDialog::validateShortcut(const KShortcut& shortcut)
+{
+ if (!KKeyChooser::checkGlobalShortcutsConflict(shortcut, true, this)
+ && !KKeyChooser::KKeyChooser::checkStandardShortcutsConflict(shortcut, true, this))
+ {
+ key_button->setShortcut(shortcut, false);
+ }
+}
diff --git a/yakuake/src/first_run_dialog.h b/yakuake/src/first_run_dialog.h
new file mode 100644
index 0000000..1dbe33a
--- /dev/null
+++ b/yakuake/src/first_run_dialog.h
@@ -0,0 +1,42 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef FIRST_RUN_DIALOG_H
+#define FIRST_RUN_DIALOG_H
+
+
+#include "first_run_dialog_ui.h"
+
+
+class KShortcut;
+
+class FirstRunDialog : public FirstRunDialogUI
+{
+ Q_OBJECT
+
+ public:
+ explicit FirstRunDialog(QWidget* parent, const char* name=NULL);
+ ~FirstRunDialog();
+
+ KShortcut shortcut();
+
+
+ public slots:
+ void setShortcut(const KShortcut& shortcut);
+
+
+ private slots:
+ void validateShortcut(const KShortcut& shortcut);
+};
+
+
+#endif /* FIRST_RUN_DIALOG_H */
diff --git a/yakuake/src/first_run_dialog_ui.ui b/yakuake/src/first_run_dialog_ui.ui
new file mode 100644
index 0000000..4b2a111
--- /dev/null
+++ b/yakuake/src/first_run_dialog_ui.ui
@@ -0,0 +1,166 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>FirstRunDialogUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>FirstRunDialogUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>314</width>
+ <height>177</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>welcome_label</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&lt;b&gt;Welcome to Yakuake&lt;/b&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="KSeparator" row="1" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>kSeparator2</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Plain</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" row="6" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>outro_label</cstring>
+ </property>
+ <property name="text">
+ <string>You can change the shortcut later at any time via the menu.</string>
+ </property>
+ <property name="alignment">
+ <set>WordBreak|AlignVCenter</set>
+ </property>
+ </widget>
+ <spacer row="4" column="0">
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>80</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KKeyButton" row="4" column="1">
+ <property name="name">
+ <cstring>key_button</cstring>
+ </property>
+ <property name="text">
+ <string>None</string>
+ </property>
+ </widget>
+ <spacer row="4" column="2">
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>80</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="2" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>intro_label</cstring>
+ </property>
+ <property name="text">
+ <string>Before using the application, you might want to change the keyboard shortcut used to open and close the Yakuake window:</string>
+ </property>
+ <property name="alignment">
+ <set>WordBreak|AlignVCenter</set>
+ </property>
+ </widget>
+ <spacer row="3" column="1">
+ <property name="name">
+ <cstring>spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>21</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="5" column="1">
+ <property name="name">
+ <cstring>spacer7</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+<includehints>
+ <includehint>kseparator.h</includehint>
+ <includehint>kkeybutton.h</includehint>
+</includehints>
+</UI>
diff --git a/yakuake/src/general_settings.cpp b/yakuake/src/general_settings.cpp
new file mode 100644
index 0000000..9c05e8f
--- /dev/null
+++ b/yakuake/src/general_settings.cpp
@@ -0,0 +1,96 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "general_settings.h"
+#include "general_settings.moc"
+
+#include <qapplication.h>
+#include <qslider.h>
+#include <qspinbox.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+
+#include <knuminput.h>
+#include <klocale.h>
+
+
+GeneralSettings::GeneralSettings(QWidget* parent, const char* name)
+ : GeneralSettingsUI(parent, name)
+{
+ kcfg_width->setSuffix("%");
+ kcfg_height->setSuffix("%");
+ steps_spinbox->setPrefix("~");
+ steps_spinbox->setSuffix("ms");
+
+ for (int i = 2; i <= QApplication::desktop()->numScreens(); i++)
+ kcfg_screen->insertItem(i18n("Screen %1").arg(QString::number(i)));
+
+ if (QApplication::desktop()->numScreens() > 1)
+ {
+ screen_label->setEnabled(true);
+ kcfg_screen->setEnabled(true);
+ }
+
+ connect(kcfg_width, SIGNAL(valueChanged(int)), this, SLOT(updateWidthSlider(int)));
+ connect(width_slider, SIGNAL(valueChanged(int)), this, SLOT(updateWidthSpinbox(int)));
+
+ connect(kcfg_height, SIGNAL(valueChanged(int)), this, SLOT(updateHeightSlider(int)));
+ connect(height_slider, SIGNAL(valueChanged(int)), this, SLOT(updateHeightSpinbox(int)));
+
+ connect(kcfg_steps, SIGNAL(valueChanged(int)), this, SLOT(updateStepsSpinbox(int)));
+ connect(steps_spinbox, SIGNAL(valueChanged(int)), this, SLOT(updateStepsSlider(int)));
+
+ connect(kcfg_location, SIGNAL(valueChanged(int)), this, SLOT(updateLocation(int)));
+}
+
+GeneralSettings::~GeneralSettings()
+{
+}
+
+void GeneralSettings::updateWidthSlider(int width)
+{
+ width_slider->setValue(width/10);
+
+ emit updateSize(width, kcfg_height->value(), kcfg_location->value());
+}
+
+void GeneralSettings::updateWidthSpinbox(int width)
+{
+ kcfg_width->setValue(width*10);
+}
+
+void GeneralSettings::updateHeightSlider(int height)
+{
+ height_slider->setValue(height/10);
+
+ emit updateSize(kcfg_width->value(), height, kcfg_location->value());
+}
+
+void GeneralSettings::updateHeightSpinbox(int height)
+{
+ kcfg_height->setValue(height*10);
+}
+
+void GeneralSettings::updateStepsSlider(int speed)
+{
+ kcfg_steps->setValue(speed/10);
+}
+
+void GeneralSettings::updateStepsSpinbox(int speed)
+{
+ steps_spinbox->setValue(speed*10);
+}
+
+void GeneralSettings::updateLocation(int location)
+{
+ emit updateSize(kcfg_width->value(), kcfg_height->value(), location);
+}
diff --git a/yakuake/src/general_settings.h b/yakuake/src/general_settings.h
new file mode 100644
index 0000000..d05bae6
--- /dev/null
+++ b/yakuake/src/general_settings.h
@@ -0,0 +1,47 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef GENERAL_SETTINGS_H
+#define GENERAL_SETTINGS_H
+
+
+#include "general_settings_ui.h"
+
+
+class GeneralSettings : public GeneralSettingsUI
+{
+ Q_OBJECT
+
+ public:
+ explicit GeneralSettings(QWidget* parent, const char* name=NULL);
+ ~GeneralSettings();
+
+
+ signals:
+ void updateSize(int width, int height, int location);
+
+
+ private slots:
+ void updateWidthSlider(int width);
+ void updateWidthSpinbox(int width);
+
+ void updateHeightSlider(int height);
+ void updateHeightSpinbox(int height);
+
+ void updateStepsSlider(int height);
+ void updateStepsSpinbox(int height);
+
+ void updateLocation(int location);
+};
+
+
+#endif /* GENERAL_SETTINGS_H */
diff --git a/yakuake/src/general_settings_ui.ui b/yakuake/src/general_settings_ui.ui
new file mode 100644
index 0000000..66bf0ab
--- /dev/null
+++ b/yakuake/src/general_settings_ui.ui
@@ -0,0 +1,546 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>GeneralSettingsUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>GeneralSettingsUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>481</width>
+ <height>473</height>
+ </rect>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>behavior_box</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Options</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>kcfg_popup</cstring>
+ </property>
+ <property name="text">
+ <string>Show notification popup at application startup</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>kcfg_confirmquit</cstring>
+ </property>
+ <property name="text">
+ <string>Confirm quit when closing more than one session</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>kcfg_tabs</cstring>
+ </property>
+ <property name="text">
+ <string>Show the tab bar</string>
+ </property>
+ </widget>
+ <spacer row="6" column="0">
+ <property name="name">
+ <cstring>spacer10</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="5" column="0">
+ <property name="name">
+ <cstring>spacer10_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>16</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QCheckBox" row="5" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>kcfg_keepabove</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Keep window above other windows</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Enable this option if you want the Yakuake window to keep on top of other windows even when it loses focus.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>kcfg_focus</cstring>
+ </property>
+ <property name="text">
+ <string>Keep window open on focus change</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string></string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Enable this option if you want the Yakuake window to stay open when it loses focus.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="6" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>kcfg_focusontoggle</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Use Open/Retract action to focus window</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Enable this option if you want the Open/Retract shortcut to focus the Yakuake window when it is already open but lacks focus. Disable this option to have the Open/Retract shortcut retract the Yakuake window regardless of whether or not it has focus.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>kcfg_poll</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Automatically open when pointer touches screen edge</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Enable this option if you want the Yakuake window to open when the mouse pointer touches the top edge of the screen.</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>size_box</cstring>
+ </property>
+ <property name="title">
+ <string>Size and Animation</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>width_label</cstring>
+ </property>
+ <property name="text">
+ <string>Width:</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>height_label</cstring>
+ </property>
+ <property name="text">
+ <string>Height:</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>speed_label</cstring>
+ </property>
+ <property name="text">
+ <string>Speed:</string>
+ </property>
+ </widget>
+ <widget class="QSlider" row="0" column="1">
+ <property name="name">
+ <cstring>width_slider</cstring>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="lineStep">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>10</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="QSlider" row="1" column="1">
+ <property name="name">
+ <cstring>height_slider</cstring>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="lineStep">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="QSlider" row="2" column="1">
+ <property name="name">
+ <cstring>kcfg_steps</cstring>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="maxValue">
+ <number>50</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>20</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>5</number>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>This setting controls the approximate duration of the sliding animation when the Yakuake window is opening or retracting.</string>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="1" column="2">
+ <property name="name">
+ <cstring>kcfg_height</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="minValue">
+ <number>10</number>
+ </property>
+ <property name="lineStep">
+ <number>10</number>
+ </property>
+ <property name="value">
+ <number>50</number>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="2" column="2">
+ <property name="name">
+ <cstring>steps_spinbox</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maxValue">
+ <number>500</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="lineStep">
+ <number>50</number>
+ </property>
+ <property name="value">
+ <number>200</number>
+ </property>
+ </widget>
+ <widget class="KIntSpinBox" row="0" column="2">
+ <property name="name">
+ <cstring>kcfg_width</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="minValue">
+ <number>10</number>
+ </property>
+ <property name="lineStep">
+ <number>10</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>position_box</cstring>
+ </property>
+ <property name="title">
+ <string>Position</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout10</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>left_label</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Left</string>
+ </property>
+ </widget>
+ <widget class="QSlider">
+ <property name="name">
+ <cstring>kcfg_location</cstring>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>50</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>10</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>right_label</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Right</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout20</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>screen_label</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Open on screen:</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>At mouse location</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Screen 1</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>kcfg_screen</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>210</width>
+ <height>26</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer9</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>21</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+</widget>
+<customwidgets>
+</customwidgets>
+<connections>
+ <connection>
+ <sender>kcfg_focus</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>kcfg_focusontoggle</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>kcfg_focus</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>kcfg_keepabove</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>kcfg_popup</tabstop>
+ <tabstop>kcfg_confirmquit</tabstop>
+ <tabstop>kcfg_tabs</tabstop>
+ <tabstop>kcfg_poll</tabstop>
+ <tabstop>kcfg_focus</tabstop>
+ <tabstop>kcfg_keepabove</tabstop>
+ <tabstop>kcfg_focusontoggle</tabstop>
+ <tabstop>width_slider</tabstop>
+ <tabstop>kcfg_width</tabstop>
+ <tabstop>height_slider</tabstop>
+ <tabstop>kcfg_height</tabstop>
+ <tabstop>kcfg_steps</tabstop>
+ <tabstop>steps_spinbox</tabstop>
+ <tabstop>kcfg_location</tabstop>
+ <tabstop>kcfg_screen</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+<includehints>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+ <includehint>knuminput.h</includehint>
+</includehints>
+</UI>
diff --git a/yakuake/src/hi16-app-yakuake.png b/yakuake/src/hi16-app-yakuake.png
new file mode 100644
index 0000000..7893931
--- /dev/null
+++ b/yakuake/src/hi16-app-yakuake.png
Binary files differ
diff --git a/yakuake/src/hi32-app-yakuake.png b/yakuake/src/hi32-app-yakuake.png
new file mode 100644
index 0000000..91fef38
--- /dev/null
+++ b/yakuake/src/hi32-app-yakuake.png
Binary files differ
diff --git a/yakuake/src/image_button.cpp b/yakuake/src/image_button.cpp
new file mode 100644
index 0000000..f6253c8
--- /dev/null
+++ b/yakuake/src/image_button.cpp
@@ -0,0 +1,181 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "image_button.h"
+#include "image_button.moc"
+#include "settings.h"
+
+#include <qwhatsthis.h>
+#include <qtimer.h>
+
+#include <kglobalsettings.h>
+
+
+ImageButton::ImageButton(QWidget* parent, const char* name, bool translucency) : TranslucentWidget(parent, name, translucency)
+{
+ state = 0;
+ toggle = false;
+ pressed = false;
+ delay_popup = false;
+
+ popup_menu = NULL;
+ popup_timer = NULL;
+}
+
+ImageButton::~ImageButton()
+{
+}
+
+void ImageButton::setToggleButton(bool toggled)
+{
+ /* Sets the toggling ability. */
+
+ pressed = false;
+ toggle = toggled;
+}
+
+void ImageButton::setToggled(bool enable)
+{
+ if (toggle)
+ {
+ state = 0;
+
+ if (enable)
+ pressed = true;
+ else
+ pressed = false;
+
+ repaint();
+ }
+}
+
+void ImageButton::setPopupMenu(QPopupMenu* menu)
+{
+ popup_menu = menu;
+ popup_timer = new QTimer(this);
+ connect(popup_timer, SIGNAL(timeout()), this, SLOT(showPopupMenu()));
+}
+
+void ImageButton::showPopupMenu()
+{
+ popup_menu->exec(mapToGlobal(QPoint(0, height())));
+}
+
+void ImageButton::setUpPixmap(const QString& path, bool use_alpha_mask)
+{
+ up_pixmap.load(path);
+ resize(up_pixmap.size());
+
+ if (up_pixmap.hasAlphaChannel()) setMask(*up_pixmap.mask());
+
+ if (use_alpha_mask)
+ setUseTranslucency(true);
+ else
+ setMask(QRegion(up_pixmap.rect()));
+}
+
+void ImageButton::setOverPixmap(const QString& path)
+{
+ over_pixmap.load(path);
+}
+
+void ImageButton::setDownPixmap(const QString& path)
+{
+ down_pixmap.load(path);
+}
+
+void ImageButton::enterEvent(QEvent*)
+{
+ state = pressed ? 2 : 1;
+
+ repaint();
+}
+
+void ImageButton::leaveEvent(QEvent*)
+{
+ state = 0;
+
+ if (popup_timer) popup_timer->stop();
+
+ repaint();
+}
+
+void ImageButton::mousePressEvent(QMouseEvent*)
+{
+ if (QWhatsThis::inWhatsThisMode()) return;
+
+ state = 2;
+
+ if (popup_timer) popup_timer->stop();
+
+ repaint();
+
+ if (popup_menu)
+ {
+ if (delay_popup)
+ popup_timer->start(600, true);
+ else
+ popup_menu->exec(mapToGlobal(QPoint(0, height())));
+ }
+}
+
+void ImageButton::mouseReleaseEvent(QMouseEvent*)
+{
+ if (QWhatsThis::inWhatsThisMode()) return;
+
+ // Don't process event if press and release didn't
+ // occur within the button.
+ if (!state > 0) return;
+
+ state = toggle ? 0 : 1;
+ pressed = toggle ? !pressed : false;
+
+ if (popup_timer) popup_timer->stop();
+
+ repaint();
+
+ if (toggle)
+ emit toggled(pressed);
+ else
+ emit clicked();
+}
+
+void ImageButton::paintEvent(QPaintEvent*)
+{
+ QPainter painter(this);
+
+ erase();
+
+ if (!useTranslucency())
+ painter.fillRect(0, 0, width(), height(), Settings::skinbgcolor());
+
+ switch (state)
+ {
+ case 0:
+ if (pressed)
+ painter.drawPixmap(0, 0, down_pixmap);
+ else
+ painter.drawPixmap(0, 0, up_pixmap);
+ break;
+
+ case 1:
+ painter.drawPixmap(0, 0, over_pixmap);
+ break;
+
+ case 2:
+ painter.drawPixmap(0, 0, down_pixmap);
+ break;
+ }
+
+ painter.end();
+}
diff --git a/yakuake/src/image_button.h b/yakuake/src/image_button.h
new file mode 100644
index 0000000..e98a5a8
--- /dev/null
+++ b/yakuake/src/image_button.h
@@ -0,0 +1,95 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef IMAGE_BUTTON_H
+#define IMAGE_BUTTON_H
+
+
+#include "translucent_widget.h"
+
+#include <qurl.h>
+#include <qcolor.h>
+#include <qpoint.h>
+#include <qbitmap.h>
+#include <qpixmap.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+
+#include <krootpixmap.h>
+
+
+class ImageButton : public TranslucentWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit ImageButton(QWidget* parent = 0, const char* name = 0, bool translucency = false);
+ ~ImageButton();
+
+ /* Creates a toggle button */
+ void setToggleButton(bool toggled);
+ void setToggled(bool enable);
+
+ /* Sets the configuration menu */
+ void setPopupMenu(QPopupMenu* menu);
+ void setDelayedPopup(bool delay) { delay_popup = delay; }
+
+ /* Sets the widget's pixmaps */
+ void setUpPixmap(const QString& path, bool use_alpha_mask = false);
+ void setOverPixmap(const QString& path);
+ void setDownPixmap(const QString& path);
+
+
+ signals:
+ void clicked();
+ void toggled(bool toggled);
+
+
+ protected:
+ virtual void enterEvent(QEvent*);
+ virtual void leaveEvent(QEvent*);
+
+ virtual void paintEvent(QPaintEvent*);
+
+ virtual void mousePressEvent(QMouseEvent*);
+ virtual void mouseReleaseEvent(QMouseEvent*);
+
+
+ private:
+ int state;
+ bool toggle;
+ bool pressed;
+ bool delay_popup;
+
+ QTimer* popup_timer;
+
+ /* Widget's mask */
+ QRegion mask;
+
+ /* Widget's tip */
+ QString tooltip;
+
+ /* Widget's pixmaps */
+ QPixmap up_pixmap;
+ QPixmap over_pixmap;
+ QPixmap down_pixmap;
+
+ /* Widget's popup menu */
+ QPopupMenu* popup_menu;
+
+
+ private slots:
+ void showPopupMenu();
+};
+
+#endif /* IMAGE_BUTTON_H */
diff --git a/yakuake/src/main.cpp b/yakuake/src/main.cpp
new file mode 100644
index 0000000..1a1e62c
--- /dev/null
+++ b/yakuake/src/main.cpp
@@ -0,0 +1,59 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2008 Eike Hein <hein@kde.org>
+*/
+
+
+#include "main_window.h"
+
+#include <klocale.h>
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kuniqueapplication.h>
+#include <kdebug.h>
+
+
+static const char version[] = "2.8.1";
+static const char description[] = I18N_NOOP("A Quake-style terminal emulator based on KDE Konsole technology. ");
+static KCmdLineOptions options[] = { KCmdLineLastOption };
+
+int main(int argc, char ** argv)
+{
+ KAboutData about("yakuake", I18N_NOOP("Yakuake"), version, description,
+ KAboutData::License_GPL, "(C) 2005-2008 The Yakuake Team", 0, 0, 0);
+
+ about.addAuthor("Eike Hein", I18N_NOOP("Maintainer"), "hein@kde.org");
+ about.addAuthor("Francois Chazal", I18N_NOOP("Project Founder (Inactive)"), "neptune3k@free.fr");
+ about.addCredit("Frank Osterfeld", 0, "frank.osterfeld@kdemail.net");
+ about.addCredit("Martin Galpin", 0, "martin@nemohackers.org");
+ about.addCredit("Thomas Tischler", 0, "Tischler123@t-online.de");
+ about.addCredit("Stefan Bogner", 0, "bochi@kmobiletools.org");
+ about.addCredit("Georg Wittenburg", 0, "georg.wittenburg@gmx.net");
+ about.addCredit("Dominik Seichter", 0, "domseichter@web.de");
+ about.addCredit("Bert Speckels", 0, "bert@speckels.de");
+ about.addCredit("Daniel 'suslik' D.", I18N_NOOP("Plastik skin"), "dd@accentsolution.com");
+ about.addCredit("Mark Bryan Yu", I18N_NOOP("Auto-open on pointer touching screen edge"), "vafada@gmail.com");
+
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KUniqueApplication::addCmdLineOptions();
+
+ if (!KUniqueApplication::start())
+ {
+ kdDebug() << "Yakuake is already running!" << endl;
+ return(0);
+ }
+
+ KUniqueApplication app;
+ MainWindow* win = new MainWindow();
+
+ win->hide();
+ return app.exec();
+}
diff --git a/yakuake/src/main_window.cpp b/yakuake/src/main_window.cpp
new file mode 100644
index 0000000..7a15bde
--- /dev/null
+++ b/yakuake/src/main_window.cpp
@@ -0,0 +1,1339 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "main_window.h"
+#include "main_window.moc"
+#include "settings.h"
+#include "general_settings.h"
+#include "skin_settings.h"
+#include "first_run_dialog.h"
+#include "session.h"
+
+#include <qsignalmapper.h>
+#include <qwhatsthis.h>
+
+#include <kaboutapplication.h>
+#include <kaboutkde.h>
+#include <kmessagebox.h>
+#include <kconfigdialog.h>
+#include <kiconloader.h>
+#include <kwin.h>
+#include <dcopref.h>
+
+MainWindow::MainWindow(QWidget * parent, const char * name) :
+ DCOPObject("DCOPInterface"),
+ KMainWindow(parent, name, Qt::WStyle_Customize | Qt::WStyle_NoBorder),
+ step(0)
+{
+ first_run_dialog = 0;
+ about_app = 0;
+ about_kde = 0;
+ full_screen = false;
+ is_shutting_down = false;
+ background_changed = false;
+ use_translucency = false;
+
+ KConfig config(CONFIG_FILE);
+
+ back_widget = new QWidget(this);
+ widgets_stack = new QWidgetStack(this);
+
+ // Register with DCOP.
+ if (!kapp->dcopClient()->isRegistered())
+ {
+ kapp->dcopClient()->registerAs("dcopinterface");
+ kapp->dcopClient()->setDefaultObject(objId());
+ }
+
+ // KRootPixmap::isAvailable() is unreliable, so we check
+ // for kdesktop's presence ourselves to decide whether or
+ // not to disable pseudo-translucency.
+ if (Settings::translucency() && kapp->dcopClient()->isApplicationRegistered("kdesktop"))
+ use_translucency = true;
+
+ // Revert to default skin if selected skin can't be located.
+ if (!locate("appdata", Settings::skin() + "/title.skin"))
+ Settings::setSkin("default");
+
+ // Initialize access key.
+ global_key = new KGlobalAccel(this);
+ global_key->insert("AccessKey", i18n("Open/Retract Yakuake"),
+ i18n("Slides the Yakuake window in and out"),
+ Key_F12, 0, this, SLOT(slotToggleState()));
+
+ global_key->readSettings(&config);
+ global_key->updateConnections();
+
+
+
+ // Initialize shortcuts.
+ KAction* action;
+
+ KShortcut shortcut(Qt::CTRL+Qt::ALT+Qt::Key_N);
+ shortcut.append(KShortcut(Qt::CTRL+Qt::SHIFT+Qt::Key_N));
+ action = new KAction(i18n("New Session"), SmallIcon("tab_new"), shortcut,
+ this, SLOT(slotAddSession()),
+ actionCollection(), "add_tab");
+
+ action = new KAction(i18n("Two Terminals, Horizontal"), SmallIcon("tab_new"),
+ 0, this, SLOT(slotAddSessionTwoVertical()),
+ actionCollection(), "add_tab_twohorizontal");
+
+ action = new KAction(i18n("Two Terminals, Vertical"), SmallIcon("tab_new"),
+ 0, this, SLOT(slotAddSessionTwoHorizontal()),
+ actionCollection(), "add_tab_twovertical");
+
+ action = new KAction(i18n("Four Terminals, Quad"), SmallIcon("tab_new"),
+ 0, this, SLOT(slotAddSessionQuad()),
+ actionCollection(), "add_tab_quad");
+
+ action = new KAction(i18n("Go to Next Terminal"), SmallIcon("next"),
+ "Ctrl+Shift+Up", this, SLOT(slotFocusNextSplit()),
+ actionCollection(), "focus_next_terminal");
+
+ action = new KAction(i18n("Go to Previous Terminal"), SmallIcon("previous"),
+ "Ctrl+Shift+Down", this, SLOT(slotFocusPreviousSplit()),
+ actionCollection(), "focus_previous_terminal");
+
+ action = new KAction(i18n("Paste"), SmallIcon("editpaste"), SHIFT+Key_Insert,
+ this, SLOT(slotPasteClipboard()),
+ actionCollection(), "paste_clipboard");
+
+ action = new KAction(i18n("Paste Selection"), SmallIcon("editpaste"),
+ CTRL+SHIFT+Key_Insert, this, SLOT(slotPasteSelection()),
+ actionCollection(), "paste_selection");
+
+ action = new KAction(i18n("Rename Session..."), SmallIcon("edit"),
+ "Alt+Ctrl+S", this, SLOT(slotInteractiveRename()),
+ actionCollection(), "edit_name");
+
+ action = new KAction(i18n("Increase Width"), SmallIcon("viewmag+"),
+ "Alt+Shift+Right", this, SLOT(slotIncreaseSizeW()),
+ actionCollection(), "increasew");
+ action = new KAction(i18n("Decrease Width"), SmallIcon("viewmag-"),
+ "Alt+Shift+Left", this, SLOT(slotDecreaseSizeW()),
+ actionCollection(), "decreasew");
+ action = new KAction(i18n("Increase Height"), SmallIcon("viewmag+"),
+ "Alt+Shift+Down", this, SLOT(slotIncreaseSizeH()),
+ actionCollection(), "increaseh");
+ action = new KAction(i18n("Decrease Height"), SmallIcon("viewmag-"),
+ "Alt+Shift+Up", this, SLOT(slotDecreaseSizeH()),
+ actionCollection(), "decreaseh");
+
+ action = new KAction(i18n("Configure Global Shortcuts..."),
+ SmallIcon("configure_shortcuts"), 0,
+ this, SLOT(slotSetAccessKey()),
+ actionCollection(), "global_shortcuts");
+
+ action = new KAction(i18n("Quit"), SmallIcon("exit"), 0, this,
+ SLOT(close()), actionCollection(), "quit");
+
+ KStdAction::keyBindings(this, SLOT(slotSetControlKeys()), actionCollection());
+ KStdAction::preferences(this, SLOT(slotOpenSettingsDialog()), actionCollection());
+ KStdAction::aboutApp(this, SLOT(slotOpenAboutApp()), actionCollection());
+ KStdAction::aboutKDE(this, SLOT(slotOpenAboutKDE()), actionCollection());
+ KStdAction::whatsThis(this, SLOT(whatsThis()), actionCollection());
+
+ full_screen_action = KStdAction::fullScreen(this, SLOT(slotUpdateFullScreen()), actionCollection(), this);
+ connect(full_screen_action, SIGNAL(toggled(bool)), this, SLOT(slotSetFullScreen(bool)));
+
+ createMenu();
+ createSessionMenu();
+ createTitleBar();
+ createTabsBar();
+
+ action = new KAction(i18n("Go to Next Session"), SmallIcon("next"),
+ "Shift+Right", tab_bar, SLOT(slotSelectNextItem()),
+ actionCollection(), "next_tab");
+ action = new KAction(i18n("Go to Previous Session"), SmallIcon("previous"),
+ "Shift+Left", tab_bar, SLOT(slotSelectPreviousItem()),
+ actionCollection(), "previous_tab");
+
+ action = new KAction(i18n("Move Session Left"), SmallIcon("back"),
+ "Ctrl+Shift+Left", tab_bar, SLOT(slotMoveItemLeft()),
+ actionCollection(), "move_tab_left");
+
+ action = new KAction(i18n("Move Session Right"), SmallIcon("forward"),
+ "Ctrl+Shift+Right", tab_bar, SLOT(slotMoveItemRight()),
+ actionCollection(), "move_tab_right");
+
+ remove_tab_action = new KAction(i18n("Close Session"), SmallIcon("fileclose"), 0,
+ this, 0, actionCollection(), "remove_tab");
+ connect(remove_tab_action, SIGNAL(activated(KAction::ActivationReason, Qt::ButtonState)),
+ this, SLOT(slotHandleRemoveSession(KAction::ActivationReason, Qt::ButtonState)));
+
+ split_horiz_action = new KAction(i18n("Split Terminal Horizontally"), SmallIcon("view_top_bottom"),
+ CTRL+SHIFT+Key_T, this, 0, actionCollection(), "split_horizontally");
+ connect(split_horiz_action, SIGNAL(activated(KAction::ActivationReason, Qt::ButtonState)),
+ this, SLOT(slotHandleVerticalSplit(KAction::ActivationReason, Qt::ButtonState)));
+
+ split_vert_action = new KAction(i18n("Split Terminal Vertically"), SmallIcon("view_left_right"),
+ CTRL+SHIFT+Key_L, this, 0, actionCollection(), "split_vertically");
+ connect(split_vert_action, SIGNAL(activated(KAction::ActivationReason, Qt::ButtonState)),
+ this, SLOT(slotHandleHorizontalSplit(KAction::ActivationReason, Qt::ButtonState)));
+
+ remove_term_action = new KAction(i18n("Close Terminal"), SmallIcon("view_remove"),
+ CTRL+SHIFT+Key_R, this, 0, actionCollection(), "remove_terminal");
+ connect(remove_term_action, SIGNAL(activated(KAction::ActivationReason, Qt::ButtonState)),
+ this, SLOT(slotHandleRemoveTerminal(KAction::ActivationReason, Qt::ButtonState)));
+
+ QSignalMapper* tab_selection_mapper = new QSignalMapper(this);
+ connect(tab_selection_mapper, SIGNAL(mapped(int)), this, SLOT(slotSelectTabPosition(int)));
+
+ for (uint i = 1; i <= 12; ++i)
+ {
+ KAction* tab_selection_action = new KAction(i18n("Switch to Session %1").arg(i), 0, 0,
+ tab_selection_mapper, SLOT(map()), actionCollection(), QString("go_to_tab_%1").arg(i).local8Bit());
+ tab_selection_mapper->setMapping(tab_selection_action, i-1);
+ }
+
+ actionCollection()->readShortcutSettings("Shortcuts", &config);
+
+ // Initialize settings.
+ slotUpdateSettings();
+
+ // Add first session.
+ slotAddSession();
+
+ connect(kapp, SIGNAL(aboutToQuit()), this, SLOT(slotAboutToQuit()));
+
+ // No need for this if we're not going to use pseudo-translucency.
+ if (use_translucency)
+ connect(kapp, SIGNAL(backgroundChanged(int)), this, SLOT(slotUpdateBackgroundState()));
+
+ connect(tab_bar, SIGNAL(addItem()), this, SLOT(slotAddSession()));
+ connect(tab_bar, SIGNAL(removeItem()), this, SLOT(slotRemoveSession()));
+ connect(tab_bar, SIGNAL(itemSelected(int)), this, SLOT(slotSelectSession(int)));
+ connect(&desk_info, SIGNAL(workAreaChanged()), this, SLOT(slotUpdateSize()));
+
+ connect(&poller, SIGNAL(timeout()), this, SLOT(slotPollMouse()));
+
+ // Startup notification popup.
+ if (Settings::popup() && !Settings::firstrun())
+ showPopup(i18n("Application successfully started!\nPress %1 to use it...").arg(global_key->shortcut("AccessKey").toString()));
+
+ // First run dialog.
+ if (Settings::firstrun())
+ {
+ QTimer::singleShot(0, this, SLOT(slotToggleState()));
+ QTimer::singleShot(0, this, SLOT(slotOpenFirstRunDialog()));
+ }
+ else if (Settings::poll())
+ toggleMousePoll(true);
+}
+
+MainWindow::~MainWindow()
+{
+ if (!is_shutting_down) slotAboutToQuit();
+
+ delete remove_tab_action;
+ delete split_horiz_action;
+ delete split_vert_action;
+ delete remove_term_action;
+ delete full_screen_action;
+ delete screen_menu;
+ delete width_menu;
+ delete height_menu;
+ delete session_menu;
+ delete menu;
+ delete about_app;
+ delete about_kde;
+}
+
+void MainWindow::slotAboutToQuit()
+{
+ is_shutting_down = true;
+
+ Settings::writeConfig();
+
+ delete tab_bar;
+ tab_bar = 0L;
+ delete title_bar;
+ title_bar = 0L;
+ delete global_key;
+ global_key = 0L;
+ delete back_widget;
+ back_widget = 0L;
+ delete widgets_stack;
+ widgets_stack = 0L;
+}
+
+bool MainWindow::queryClose()
+{
+ /* Ask before closing with multiple open sessions. */
+
+ if (sessions_stack.size() > 1 && Settings::confirmquit())
+ {
+ if (focus_policy == false) focus_policy = true;
+
+ int result = KMessageBox::warningYesNoCancel(
+ this,
+ i18n("You have multiple open sessions. These will be killed if you continue.\n\nAre you sure you want to quit?"),
+ i18n("Really Quit?"),
+ KStdGuiItem::quit(),
+ KGuiItem(i18n("C&lose Session")));
+
+ switch (result)
+ {
+ case KMessageBox::Yes:
+ focus_policy = Settings::focus();
+ KWin::activateWindow(winId());
+ return true;
+ break;
+ case KMessageBox::No:
+ focus_policy = Settings::focus();
+ KWin::activateWindow(winId());
+ slotRemoveSession();
+ return false;
+ break;
+
+ default:
+ focus_policy = Settings::focus();
+ KWin::activateWindow(winId());
+ return false;
+ break;
+ }
+ }
+ else
+ {
+ return true;
+ }
+}
+
+void MainWindow::updateWindowMask()
+{
+ QRegion mask = title_bar->getWidgetMask();
+
+ mask.translate(0, mask_height);
+ mask += QRegion(0, 0, width(), mask_height);
+
+ setMask(mask);
+}
+
+void MainWindow::showPopup(const QString& text, int time)
+{
+ /* Show a passive popup with the given text. */
+
+ popup.setView(i18n("Yakuake Notification"), text, KApplication::kApplication()->miniIcon());
+ popup.setTimeout(time);
+ popup.show();
+}
+
+void MainWindow::slotAddSession()
+{
+ slotAddSession(Session::Single);
+}
+
+void MainWindow::slotAddSessionTwoHorizontal()
+{
+ slotAddSession(Session::TwoHorizontal);
+}
+
+void MainWindow::slotAddSessionTwoVertical()
+{
+ slotAddSession(Session::TwoVertical);
+}
+
+void MainWindow::slotAddSessionQuad()
+{
+ slotAddSession(Session::Quad);
+}
+
+void MainWindow::slotAddSession(Session::SessionType type)
+{
+ Session* session = new Session(widgets_stack, type);
+ connect(session, SIGNAL(destroyed(int)), this, SLOT(slotSessionDestroyed(int)));
+ connect(session, SIGNAL(titleChanged(const QString&)), this, SLOT(slotUpdateTitle(const QString&)));
+
+ widgets_stack->addWidget(session->widget());
+ sessions_stack.insert(session->id(), session);
+
+ selected_id = session->id();
+
+ tab_bar->addItem(selected_id);
+ widgets_stack->raiseWidget(session->widget());
+ title_bar->setTitleText(session->title());
+}
+
+void MainWindow::slotRemoveSession()
+{
+ sessions_stack[selected_id]->deleteLater();
+}
+
+void MainWindow::slotRemoveSession(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->deleteLater();
+}
+
+void MainWindow::slotHandleRemoveSession(KAction::ActivationReason reason, Qt::ButtonState /* state */)
+{
+ if (reason == KAction::PopupMenuActivation
+ && tab_bar->pressedPosition() != -1)
+ {
+ slotRemoveSession(tab_bar->sessionIdForTabPosition(tab_bar->pressedPosition()));
+ tab_bar->resetPressedPosition();
+ }
+ else
+ slotRemoveSession();
+}
+
+void MainWindow::slotRemoveTerminal()
+{
+ sessions_stack[selected_id]->removeTerminal();
+}
+
+void MainWindow::slotRemoveTerminal(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->removeTerminal();
+}
+
+void MainWindow::slotRemoveTerminal(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->removeTerminal(terminal_id);
+}
+
+void MainWindow::slotRenameSession(int session_id, const QString& name)
+{
+ tab_bar->renameItem(session_id, name);
+}
+
+void MainWindow::slotInteractiveRename()
+{
+ /* Open inline edit for the current item and show tab bar if necessary. */
+
+ if (!Settings::tabs() && tab_bar->isHidden())
+ {
+ Settings::setTabs(true);
+ tab_bar->show();
+ }
+
+ tab_bar->interactiveRename();
+}
+
+int MainWindow::selectedSession()
+{
+ return selected_id;
+}
+
+int MainWindow::selectedTerminal()
+{
+ return sessions_stack[selected_id]->activeTerminalId();
+}
+
+const QString MainWindow::sessionIdList()
+{
+ QValueList<int>::iterator it;
+ QValueList<int> key_list = sessions_stack.keys();
+ QStringList id_list;
+
+ for (it = key_list.begin(); it != key_list.end(); ++it)
+ id_list << QString::number((*it));
+
+ return id_list.join(",");
+}
+
+const QString MainWindow::terminalIdList(int session_id)
+{
+ if (!sessions_stack[session_id]) return 0;
+
+ return sessions_stack[session_id]->terminalIdList();
+}
+
+int MainWindow::tabPositionForSessionId(int session_id)
+{
+ return tab_bar->tabPositionForSessionId(session_id);
+}
+
+int MainWindow::sessionIdForTabPosition(int position)
+{
+ return tab_bar->sessionIdForTabPosition(position);
+}
+
+void MainWindow::slotSelectSession(int session_id)
+{
+ if (selected_id == session_id) return;
+ if (!sessions_stack[session_id]) return;
+ if (!sessions_stack[session_id]->widget()) return;
+
+ selected_id = session_id;
+
+ Session* session = sessions_stack[session_id];
+
+ tab_bar->selectItem(session_id);
+ widgets_stack->raiseWidget(session->widget());
+ session->widget()->setFocus();
+ title_bar->setTitleText(session->title());
+}
+
+void MainWindow::slotSelectTabPosition(int position)
+{
+ tab_bar->selectPosition(position);
+}
+
+const QString MainWindow::slotSessionName()
+{
+ return tab_bar->itemName(selected_id);
+}
+
+const QString MainWindow::slotSessionName(int session_id)
+{
+ if (!sessions_stack[session_id]) return 0;
+
+ return tab_bar->itemName(session_id);
+}
+
+const QString MainWindow::slotSessionTitle()
+{
+ return sessions_stack[selected_id]->title();
+}
+
+const QString MainWindow::slotSessionTitle(int session_id)
+{
+ if (!sessions_stack[session_id]) return 0;
+
+ return sessions_stack[session_id]->title();
+}
+
+const QString MainWindow::slotSessionTitle(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return 0;
+
+ return sessions_stack[session_id]->title(terminal_id);
+}
+
+void MainWindow::slotSetSessionTitleText(const QString& title)
+{
+ sessions_stack[selected_id]->setTitle(title);
+}
+
+void MainWindow::slotSetSessionTitleText(int session_id, const QString& title)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->setTitle(title);
+}
+
+void MainWindow::slotSetSessionTitleText(int session_id, int terminal_id, const QString& title)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->setTitle(terminal_id, title);
+}
+
+void MainWindow::slotPasteClipboard()
+{
+ sessions_stack[selected_id]->pasteClipboard();
+}
+
+void MainWindow::slotPasteClipboard(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->pasteClipboard();
+}
+
+void MainWindow::slotPasteClipboard(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->pasteClipboard(terminal_id);
+}
+
+void MainWindow::slotPasteSelection()
+{
+ sessions_stack[selected_id]->pasteSelection();
+}
+
+void MainWindow::slotPasteSelection(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->pasteSelection();
+}
+
+void MainWindow::slotPasteSelection(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->pasteSelection(terminal_id);
+}
+
+void MainWindow::slotRunCommandInSession(const QString& command)
+{
+ sessions_stack[selected_id]->runCommand(command);
+}
+
+void MainWindow::slotRunCommandInSession(int session_id, const QString& command)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->runCommand(command);
+}
+
+void MainWindow::slotRunCommandInSession(int session_id, int terminal_id, const QString& command)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->runCommand(terminal_id, command);
+}
+
+void MainWindow::slotSplitHorizontally()
+{
+ sessions_stack[selected_id]->splitHorizontally();
+}
+
+void MainWindow::slotSplitHorizontally(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->splitHorizontally();
+}
+
+void MainWindow::slotSplitHorizontally(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->splitHorizontally(terminal_id);
+}
+
+void MainWindow::slotSplitVertically()
+{
+ sessions_stack[selected_id]->splitVertically();
+}
+
+void MainWindow::slotSplitVertically(int session_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->splitVertically();
+}
+
+void MainWindow::slotSplitVertically(int session_id, int terminal_id)
+{
+ if (!sessions_stack[session_id]) return;
+
+ sessions_stack[session_id]->splitVertically(terminal_id);
+}
+
+
+void MainWindow::slotFocusNextSplit()
+{
+ sessions_stack[selected_id]->focusNextSplit();
+}
+
+void MainWindow::slotFocusPreviousSplit()
+{
+ sessions_stack[selected_id]->focusPreviousSplit();
+}
+
+void MainWindow::windowActivationChange(bool old_active)
+{
+ /* Retract the window when focus changes. */
+
+ if (!focus_policy && old_active && step)
+ slotToggleState();
+}
+
+void MainWindow::slotHandleHorizontalSplit(KAction::ActivationReason reason, Qt::ButtonState /* state */)
+{
+ if (reason == KAction::PopupMenuActivation
+ && tab_bar->pressedPosition() != -1)
+ {
+ slotSplitHorizontally(tab_bar->sessionIdForTabPosition(tab_bar->pressedPosition()));
+ tab_bar->resetPressedPosition();
+ }
+ else
+ slotSplitHorizontally();
+}
+
+void MainWindow::slotHandleVerticalSplit(KAction::ActivationReason reason, Qt::ButtonState /* state */)
+{
+ if (reason == KAction::PopupMenuActivation
+ && tab_bar->pressedPosition() != -1)
+ {
+ slotSplitVertically(tab_bar->sessionIdForTabPosition(tab_bar->pressedPosition()));
+ tab_bar->resetPressedPosition();
+ }
+ else
+ slotSplitVertically();
+}
+
+
+void MainWindow::slotHandleRemoveTerminal(KAction::ActivationReason reason, Qt::ButtonState /* state */)
+{
+ if (reason == KAction::PopupMenuActivation
+ && tab_bar->pressedPosition() != -1)
+ {
+ slotRemoveTerminal(tab_bar->sessionIdForTabPosition(tab_bar->pressedPosition()));
+ tab_bar->resetPressedPosition();
+ }
+ else
+ slotRemoveTerminal();
+}
+
+void MainWindow::initWindowProps()
+{
+ /* Initializes the window properties. */
+
+ if (Settings::focus() && !Settings::keepabove())
+ {
+ KWin::clearState(winId(), NET::KeepAbove);
+ KWin::setState(winId(), NET::Sticky | NET::SkipTaskbar | NET::SkipPager);
+ }
+ else
+ KWin::setState(winId(), NET::KeepAbove | NET::Sticky | NET::SkipTaskbar | NET::SkipPager);
+
+ KWin::setOnAllDesktops(winId(), true);
+}
+
+int MainWindow::getMouseScreen()
+{
+ /* Gets the screen where the mouse pointer is located. */
+
+ return QApplication::desktop()->screenNumber(QCursor::pos());
+}
+
+QRect MainWindow::getDesktopGeometry()
+{
+ /* Computes the desktop geometry. */
+
+ if (full_screen)
+ {
+ if (!Settings::screen())
+ return QApplication::desktop()->screenGeometry(getMouseScreen());
+ else
+ return QApplication::desktop()->screenGeometry(Settings::screen()-1);
+ }
+
+ QRect result;
+ result = desk_info.workArea();
+
+ KConfigGroup group(KGlobal::config(), "Windows");
+
+ if (QApplication::desktop()->isVirtualDesktop() &&
+ group.readBoolEntry("XineramaEnabled", true) &&
+ group.readBoolEntry("XineramaPlacementEnabled", true))
+ {
+ if (!Settings::screen())
+ return result.intersect(QApplication::desktop()->screenGeometry(getMouseScreen()));
+ else
+ return result.intersect(QApplication::desktop()->screenGeometry(Settings::screen()-1));
+ }
+
+ return result;
+}
+
+void MainWindow::createTabsBar()
+{
+ /* Creates the tabs frame. */
+
+ tab_bar = new TabBar(this, "Session tab bar", use_translucency, Settings::skin());
+ connect(this, SIGNAL(updateBackground()), tab_bar, SIGNAL(updateBackground()));
+
+ tab_bar->setSessionMenu(session_menu);
+
+ tab_bar->resize(width(), tab_bar->height());
+}
+
+void MainWindow::createTitleBar()
+{
+ /* Creates the title frame. */
+
+ title_bar = new TitleBar(this, "Application title bar", Settings::skin());
+ title_bar->setConfigurationMenu(menu);
+
+ title_bar->resize(width(), title_bar->height());
+}
+
+void MainWindow::createMenu()
+{
+ /* Creates the main menu. */
+
+ menu = new KPopupMenu();
+
+ menu->insertTitle(i18n("Help"));
+
+ actionCollection()->action(KStdAction::stdName(KStdAction::WhatsThis))->plug(menu);
+ actionCollection()->action(KStdAction::stdName(KStdAction::AboutApp))->plug(menu);
+ actionCollection()->action(KStdAction::stdName(KStdAction::AboutKDE))->plug(menu);
+
+ menu->insertTitle(i18n("Quick Options"));
+
+ actionCollection()->action(KStdAction::stdName(KStdAction::FullScreen))->plug(menu);
+
+ screen_menu = new KPopupMenu(menu);
+
+ if (QApplication::desktop()->numScreens() > 1)
+ {
+ menu->insertItem(i18n("Open on screen"), screen_menu);
+ connect(screen_menu, SIGNAL(activated(int)), this, SLOT(slotSetScreen(int)));
+ }
+
+ width_menu = new KPopupMenu(menu);
+ menu->insertItem(i18n("Width"), width_menu);
+ connect(width_menu, SIGNAL(activated(int)), this, SLOT(slotSetWidth(int)));
+
+ height_menu = new KPopupMenu(menu);
+ menu->insertItem(i18n("Height"), height_menu);
+ connect(height_menu, SIGNAL(activated(int)), this, SLOT(slotSetHeight(int)));
+
+ menu->insertItem(i18n("Keep open on focus change"), this, SLOT(slotSetFocusPolicy()), 0, Focus);
+
+ menu->insertTitle(i18n("Settings"));
+
+ actionCollection()->action("global_shortcuts")->plug(menu);
+ actionCollection()->action(KStdAction::stdName(KStdAction::KeyBindings))->plug(menu);
+ actionCollection()->action(KStdAction::stdName(KStdAction::Preferences))->plug(menu);
+}
+
+void MainWindow::updateWidthMenu()
+{
+ width_menu->clear();
+ for (int i = 10; i <= 100; i += 10) width_menu->insertItem(QString::number(i) + '%', i);
+ width_menu->setItemChecked(Settings::width(), true);
+}
+
+void MainWindow::updateHeightMenu()
+{
+ height_menu->clear();
+ for (int i = 10; i <= 100; i += 10) height_menu->insertItem(QString::number(i) + '%', i);
+ height_menu->setItemChecked(Settings::height(), true);
+}
+
+void MainWindow::updateScreenMenu()
+{
+ screen_menu->clear();
+ screen_menu->insertItem(i18n("At mouse location"), 0);
+ screen_menu->insertSeparator();
+ for (int i = 1; i <= QApplication::desktop()->numScreens(); i++)
+ screen_menu->insertItem(i18n("Screen %1").arg(QString::number(i)), i);
+ screen_menu->setItemChecked(Settings::screen(), true);
+}
+
+void MainWindow::createSessionMenu()
+{
+ session_menu = new KPopupMenu();
+
+ actionCollection()->action("add_tab")->plug(session_menu);
+ actionCollection()->action("add_tab_twohorizontal")->plug(session_menu);
+ actionCollection()->action("add_tab_twovertical")->plug(session_menu);
+ actionCollection()->action("add_tab_quad")->plug(session_menu);
+}
+
+void MainWindow::slotUpdateTitle(const QString& title)
+{
+ title_bar->setTitleText(title);
+}
+
+
+void MainWindow::slotIncreaseSizeW()
+{
+ /* Increase the window's width. */
+
+ if (Settings::width() < 100)
+ {
+ Settings::setWidth(Settings::width() + 10);
+ updateWidthMenu();
+ slotUpdateSize();
+ }
+}
+
+void MainWindow::slotDecreaseSizeW()
+{
+ /* Decrease the window's width. */
+
+ if (Settings::width() > 10)
+ {
+ Settings::setWidth(Settings::width() - 10);
+ updateWidthMenu();
+ slotUpdateSize();
+ }
+}
+
+void MainWindow::slotIncreaseSizeH()
+{
+ /* Increase the window's height. */
+
+ if (Settings::height() < 100)
+ {
+ Settings::setHeight(Settings::height() + 10);
+ updateHeightMenu();
+ slotUpdateSize();
+ }
+}
+
+void MainWindow::slotDecreaseSizeH()
+{
+ /* Decrease the window's height. */
+
+ if (Settings::height() > 10)
+ {
+ Settings::setHeight(Settings::height() - 10);
+ updateHeightMenu();
+ slotUpdateSize();
+ }
+}
+
+void MainWindow::slotSessionDestroyed(int id)
+{
+ if (is_shutting_down) return;
+
+ sessions_stack.remove(id);
+
+ if (tab_bar->removeItem(id) == -1)
+ slotAddSession();
+}
+
+void MainWindow::slotToggleState()
+{
+ /* Toggles the window's open/closed state. */
+
+ static int state = 1;
+
+ if (timer.isActive())
+ return;
+
+ KWinModule kwin(this);
+
+ if (state)
+ {
+ // Open.
+
+ initWindowProps();
+
+ slotUpdateSize();
+
+ show();
+
+ KWin::forceActiveWindow(winId());
+ connect(&timer, SIGNAL(timeout()), this, SLOT(slotIncreaseHeight()));
+ initWindowProps();
+ timer.start(10, false);
+ state = !state;
+ }
+ else
+ {
+ // Close.
+
+ if (!this->isActiveWindow() && focus_policy && Settings::focusontoggle())
+ {
+ KWin::forceActiveWindow(winId());
+ return;
+ }
+ else if (full_screen)
+ this->setWindowState( this->windowState() & ~Qt::WindowFullScreen);
+
+ connect(&timer, SIGNAL(timeout()), this, SLOT(slotDecreaseHeight()));
+ timer.start(10, false);
+ state = !state;
+ }
+}
+
+void MainWindow::slotIncreaseHeight()
+{
+ /* Increases the window's height. */
+
+ int steps = (Settings::steps() == 0) ? 1 : Settings::steps();
+
+ mask_height = (step++ * max_height) / steps;
+
+ if (step >= steps)
+ {
+ step = steps;
+ timer.stop();
+ disconnect(&timer, SIGNAL(timeout()), 0, 0);
+
+ mask_height = max_height;
+
+ if (background_changed)
+ {
+ emit updateBackground();
+ background_changed = false;
+ }
+
+ if (Settings::poll()) toggleMousePoll(false);
+ }
+
+ updateWindowMask();
+ title_bar->move(0, mask_height);
+}
+
+void MainWindow::slotDecreaseHeight()
+{
+ /* Decreases the window's height. */
+
+ int steps = (Settings::steps() == 0) ? 1 : Settings::steps();
+
+ mask_height = (--step * max_height) / steps;
+
+ if (step <= 0)
+ {
+ step = 0;
+ timer.stop();
+ disconnect(&timer, SIGNAL(timeout()), 0, 0);
+
+ hide();
+
+ if (Settings::poll()) toggleMousePoll(true);
+
+ }
+
+ updateWindowMask();
+ title_bar->move(0, mask_height);
+}
+
+void MainWindow::slotInitSkin()
+{
+ KConfig config(locate("appdata", Settings::skin() + "/title.skin"));
+
+ config.setGroup("Border");
+
+ margin = config.readNumEntry("width", 0);
+
+ back_widget->setBackgroundColor(QColor(config.readNumEntry("red", 0),
+ config.readNumEntry("green", 0),
+ config.readNumEntry("blue", 0)));
+}
+
+void MainWindow::slotUpdateSize()
+{
+ if (full_screen) full_screen_action->activate();
+ slotUpdateSize(Settings::width(), Settings::height(), Settings::location());
+}
+
+void MainWindow::slotUpdateSize(int new_width, int new_height, int new_location)
+{
+ /* Updates the window size. */
+
+ int tmp_height;
+ QRect desk_area;
+
+ // Xinerama aware work area.
+ desk_area = getDesktopGeometry();
+ max_height = desk_area.height() * new_height / 100;
+
+ // Update the size of the components.
+ setGeometry(desk_area.x() + desk_area.width() * new_location * (100 - new_width) / 10000,
+ desk_area.y(), desk_area.width() * new_width / 100, max_height);
+
+ max_height -= title_bar->height();
+ title_bar->setGeometry(0, max_height, width(), title_bar->height());
+
+ tmp_height = max_height;
+
+ if (Settings::tabs())
+ {
+ tmp_height -= tab_bar->height();
+ tab_bar->setGeometry(margin, tmp_height, width() - 2 * margin, tab_bar->height());
+ }
+
+ widgets_stack->setGeometry(margin, 0, width() - 2 * margin, tmp_height);
+
+ back_widget->setGeometry(0, 0, width(), height());
+
+ // Update the window mask.
+ mask_height = (isVisible()) ? max_height : 0;
+ updateWindowMask();
+}
+
+void MainWindow::moveEvent(QMoveEvent* e)
+{
+ // If the screen setting isn't to appear on the screen the
+ // mouse cursor is on, detect whether the screen number has
+ // changed on this move event and update the internal set-
+ // ting. Makes it play nice with the move-window-to-screen
+ // kwin shortcuts found in Lubos' Xinerama Improvements patch-
+ // set.
+
+ if (Settings::screen()
+ && QApplication::desktop()->screenNumber(this) != (Settings::screen()-1))
+ {
+ Settings::setScreen(QApplication::desktop()->screenNumber(this)+1);
+
+ updateScreenMenu();
+
+ slotUpdateSize();
+ }
+
+ KMainWindow::moveEvent(e);
+}
+
+void MainWindow::slotSetFullScreen(bool state)
+{
+ if (state)
+ {
+ full_screen = true;
+ slotUpdateSize(100, 100, Settings::location());
+ }
+ else
+ {
+ full_screen = false;
+ slotUpdateSize();
+ }
+}
+
+void MainWindow::slotUpdateFullScreen()
+{
+ if (full_screen_action->isChecked())
+ showFullScreen();
+ else
+ this->setWindowState( this->windowState() & ~Qt::WindowFullScreen);
+}
+
+void MainWindow::slotSetFocusPolicy()
+{
+ slotSetFocusPolicy(!focus_policy);
+}
+
+void MainWindow::slotSetFocusPolicy(bool focus)
+{
+ Settings::setFocus(focus);
+ focus_policy = Settings::focus();
+ menu->setItemChecked(Focus, Settings::focus());
+ title_bar->setFocusButtonEnabled(Settings::focus());
+}
+
+void MainWindow::slotSetWidth(int width)
+{
+ Settings::setWidth(width);
+ slotUpdateSettings();
+}
+
+void MainWindow::slotSetHeight(int height)
+{
+ Settings::setHeight(height);
+ slotUpdateSettings();
+}
+
+void MainWindow::slotSetScreen(int screen)
+{
+ Settings::setScreen(screen);
+ slotUpdateSettings();
+}
+
+void MainWindow::slotSetAccessKey()
+{
+ if (full_screen) full_screen_action->activate();
+
+ if (focus_policy == false) focus_policy = true;
+
+ KConfig config(CONFIG_FILE);
+
+ KKeyDialog::configure(global_key);
+
+ global_key->updateConnections();
+ global_key->writeSettings(&config);
+
+ slotDialogFinished();
+}
+
+void MainWindow::slotSetControlKeys()
+{
+ if (full_screen) full_screen_action->activate();
+
+ if (focus_policy == false) focus_policy = true;
+
+ KConfig config(CONFIG_FILE);
+
+ KKeyDialog::configure(actionCollection());
+
+ actionCollection()->writeShortcutSettings("Shortcuts", &config);
+
+ slotDialogFinished();
+}
+
+void MainWindow::slotUpdateBackgroundState()
+{
+ background_changed = true;
+}
+
+void MainWindow::slotUpdateSettings()
+{
+ slotInitSkin();
+
+ title_bar->reloadSkin(Settings::skin());
+ tab_bar->reloadSkin(Settings::skin());
+
+ step = (isVisible()) ? Settings::steps() : 0;
+
+ focus_policy = Settings::focus();
+
+ if (Settings::tabs())
+ tab_bar->show();
+ else
+ tab_bar->hide();
+
+ slotUpdateSize();
+
+ initWindowProps();
+
+ menu->setItemChecked(Focus, Settings::focus());
+ title_bar->setFocusButtonEnabled(Settings::focus());
+
+ updateWidthMenu();
+ updateHeightMenu();
+ updateScreenMenu();
+}
+
+void MainWindow::slotOpenSettingsDialog()
+{
+ if (full_screen) full_screen_action->activate();
+
+ if (focus_policy == false)
+ focus_policy = true;
+
+ if (KConfigDialog::showDialog("settings"))
+ return;
+
+ KConfigDialog* settings_dialog = new KConfigDialog(this, "settings", Settings::self());
+
+ GeneralSettings* general_settings = new GeneralSettings(settings_dialog, "General");
+ settings_dialog->addPage(general_settings, i18n("General"), "package_settings");
+ connect(general_settings, SIGNAL(updateSize(int, int, int)), this, SLOT(slotUpdateSize(int, int, int)));
+
+ SkinSettings* skin_settings = new SkinSettings(settings_dialog, "Skins", use_translucency);
+ settings_dialog->addPage(skin_settings, i18n("Skins"), "style");
+ connect(skin_settings, SIGNAL(settingsChanged()), settings_dialog, SIGNAL(settingsChanged()));
+ connect(settings_dialog, SIGNAL(closeClicked()), skin_settings, SLOT(slotResetSelection()));
+ connect(settings_dialog, SIGNAL(cancelClicked()), skin_settings, SLOT(slotResetSelection()));
+
+ connect(settings_dialog, SIGNAL(settingsChanged()), this, SLOT(slotUpdateSettings()));
+ connect(settings_dialog, SIGNAL(hidden()), this, SLOT(slotDialogFinished()));
+
+ settings_dialog->show();
+}
+
+void MainWindow::slotOpenFirstRunDialog()
+{
+ if (!first_run_dialog)
+ {
+ first_run_dialog = new KDialogBase(this,
+ "First Run Dialog", true, i18n("First Run"),
+ KDialogBase::Ok|KDialogBase::Cancel, KDialogBase::Ok, true);
+ connect(first_run_dialog, SIGNAL(okClicked()), this, SLOT(slotFirstRunDialogOK()));
+ connect(first_run_dialog, SIGNAL(cancelClicked()), this, SLOT(slotFirstRunDialogCancel()));
+ connect(first_run_dialog, SIGNAL(closeClicked()), this, SLOT(slotFirstRunDialogCancel()));
+ connect(first_run_dialog, SIGNAL(hidden()), this, SLOT(slotDialogFinished()));
+
+ FirstRunDialog* first_run_dialog_page = new FirstRunDialog(first_run_dialog);
+ first_run_dialog_page->setMinimumSize(first_run_dialog_page->sizeHint());
+ first_run_dialog_page->setShortcut(global_key->shortcut("AccessKey"));
+
+ first_run_dialog->setMainWidget(first_run_dialog_page);
+ first_run_dialog->adjustSize();
+ first_run_dialog->disableResize();
+ }
+
+ if (focus_policy == false)
+ focus_policy = true;
+
+ first_run_dialog->show();
+}
+
+void MainWindow::slotFirstRunDialogOK()
+{
+ if (!first_run_dialog)
+ return;
+
+ FirstRunDialog* first_run_dialog_page =
+ static_cast<FirstRunDialog*>(first_run_dialog->mainWidget());
+
+ if (!first_run_dialog_page)
+ return;
+
+
+ if (first_run_dialog_page->shortcut() != global_key->shortcut("AccessKey"))
+ {
+ KConfig config(CONFIG_FILE);
+ global_key->setShortcut("AccessKey", first_run_dialog_page->shortcut());
+ global_key->updateConnections();
+ global_key->writeSettings(&config);
+ }
+
+ Settings::setFirstrun(false);
+ Settings::writeConfig();
+}
+
+void MainWindow::slotFirstRunDialogCancel()
+{
+ Settings::setFirstrun(false);
+ Settings::writeConfig();
+}
+
+void MainWindow::slotOpenAboutApp()
+{
+ if (!about_app)
+ {
+ about_app = new KAboutApplication(this, "About Yakuake");
+ connect(about_app, SIGNAL(hidden()), this, SLOT(slotDialogFinished()));
+ }
+
+ if (full_screen) full_screen_action->activate();
+
+ if (focus_policy == false)
+ focus_policy = true;
+
+ about_app->show();
+}
+
+void MainWindow::slotOpenAboutKDE()
+{
+ if (!about_kde)
+ {
+ about_kde = new KAboutKDE(this, "About KDE");
+ connect(about_kde, SIGNAL(hidden()), this, SLOT(slotDialogFinished()));
+ }
+
+ if (full_screen) full_screen_action->activate();
+
+ if (focus_policy == false)
+ focus_policy = true;
+
+ about_kde->show();
+}
+
+void MainWindow::slotDialogFinished()
+{
+ slotUpdateSize();
+
+ focus_policy = Settings::focus();
+
+ KWin::activateWindow(winId());
+}
+
+void MainWindow::slotPollMouse()
+{
+ QPoint pos = QCursor::pos();
+
+ if (pos.y() == 0)
+ {
+ if (Settings::screen() == 0)
+ slotToggleState(); // no need to check x since yakuake should open where the mouse pointer is
+ else if (pos.x() >= getDesktopGeometry().x() && pos.x() <= (getDesktopGeometry().x() + getDesktopGeometry().width()))
+ slotToggleState();
+ }
+}
+
+void MainWindow::toggleMousePoll(bool poll)
+{
+ if (poll)
+ poller.start(Settings::pollinterval());
+ else
+ poller.stop();
+}
diff --git a/yakuake/src/main_window.h b/yakuake/src/main_window.h
new file mode 100644
index 0000000..edc9eeb
--- /dev/null
+++ b/yakuake/src/main_window.h
@@ -0,0 +1,267 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef MAIN_WINDOW_H
+#define MAIN_WINDOW_H
+
+
+#include "tab_bar.h"
+#include "title_bar.h"
+#include "dcop_interface.h"
+#include "session.h"
+
+#include <qmap.h>
+#include <qcolor.h>
+#include <qtimer.h>
+#include <qlayout.h>
+#include <qwidget.h>
+#include <qapplication.h>
+#include <qwidgetstack.h>
+
+#include <kwin.h>
+#include <kaction.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <dcopclient.h>
+#include <kkeydialog.h>
+#include <kpopupmenu.h>
+#include <kwinmodule.h>
+#include <kmainwindow.h>
+#include <kapplication.h>
+#include <kglobalaccel.h>
+#include <kpassivepopup.h>
+
+
+#define CONFIG_FILE "yakuakerc"
+
+
+class KAboutApplication;
+class KAboutKDE;
+
+class MainWindow : public KMainWindow, virtual public DCOPInterface
+{
+ Q_OBJECT
+
+ public:
+ explicit MainWindow(QWidget* parent = 0, const char* name = 0);
+ ~MainWindow();
+
+ int selectedSession();
+ int selectedTerminal();
+
+ const QString sessionIdList();
+ const QString terminalIdList(int session_id);
+
+ int tabPositionForSessionId(int session_id);
+ int sessionIdForTabPosition(int position);
+
+ void updateWindowMask();
+
+ void showPopup(const QString & text, int time = 5000);
+
+
+ public slots:
+ void slotAboutToQuit();
+
+ void slotToggleState();
+
+ void slotAddSession();
+ void slotAddSessionTwoHorizontal();
+ void slotAddSessionTwoVertical();
+ void slotAddSessionQuad();
+ void slotAddSession(Session::SessionType type);
+
+ void slotRemoveSession();
+ void slotRemoveSession(int session_id);
+
+ void slotRemoveTerminal();
+ void slotRemoveTerminal(int session_id);
+ void slotRemoveTerminal(int session_id, int terminal_id);
+
+ void slotSelectSession(int session_id);
+ void slotSelectTabPosition(int position);
+
+ void slotRenameSession(int session_id, const QString& name);
+ void slotInteractiveRename();
+
+ const QString slotSessionName();
+ const QString slotSessionName(int session_id);
+
+ const QString slotSessionTitle();
+ const QString slotSessionTitle(int session_id);
+ const QString slotSessionTitle(int session_id, int terminal_id);
+
+ void slotSetSessionTitleText(const QString& title);
+ void slotSetSessionTitleText(int session_id, const QString& title);
+ void slotSetSessionTitleText(int session_id, int terminal_id, const QString& title);
+
+ void slotPasteClipboard();
+ void slotPasteClipboard(int session_id);
+ void slotPasteClipboard(int session_id, int terminal_id);
+
+ void slotPasteSelection();
+ void slotPasteSelection(int session_id);
+ void slotPasteSelection(int session_id, int terminal_id);
+
+ void slotRunCommandInSession(const QString& command);
+ void slotRunCommandInSession(int session_id, const QString& command);
+ void slotRunCommandInSession(int session_id, int terminal_id, const QString& command);
+
+ void slotSplitHorizontally();
+ void slotSplitHorizontally(int session_id);
+ void slotSplitHorizontally(int session_id, int terminal_id);
+
+ void slotSplitVertically();
+ void slotSplitVertically(int session_id);
+ void slotSplitVertically(int session_id, int terminal_id);
+
+ void slotFocusNextSplit();
+ void slotFocusPreviousSplit();
+
+ void slotPollMouse();
+
+
+ signals:
+ void updateBackground();
+
+
+ protected:
+ virtual void windowActivationChange(bool old_active);
+ virtual void moveEvent(QMoveEvent* e);
+ bool queryClose();
+
+
+ private:
+ void createMenu();
+ void updateWidthMenu();
+ void updateHeightMenu();
+ void updateScreenMenu();
+ void createSessionMenu();
+ void createTabsBar();
+ void createTitleBar();
+ void toggleMousePoll(bool poll);
+
+ void initWindowProps();
+
+ int getMouseScreen();
+ QRect getDesktopGeometry();
+
+ bool full_screen;
+
+ /* Animation step. */
+ int step;
+
+ /* Focus policy. */
+ bool focus_policy;
+
+ /* Maximum height value. */
+ int max_height;
+ int mask_height;
+
+ /* Application border. */
+ int margin;
+
+ /* Interface modification timer. */
+ QTimer timer;
+ QTimer poller;
+
+ /* Passive popup window. */
+ KPassivePopup popup;
+
+ /* Desktop information. */
+ KWinModule desk_info;
+
+ /* Main menu. */
+ KPopupMenu* menu;
+ KPopupMenu* session_menu;
+ KPopupMenu* screen_menu;
+ KPopupMenu* width_menu;
+ KPopupMenu* height_menu;
+
+ /* Global Key shortcut. */
+ KGlobalAccel* global_key;
+
+ /* Background widget. */
+ QWidget* back_widget;
+
+ TabBar* tab_bar;
+ TitleBar* title_bar;
+
+ /* Inner konsole. */
+ int selected_id;
+ QWidgetStack* widgets_stack;
+ QMap<int, Session*> sessions_stack;
+
+ bool is_shutting_down;
+ bool background_changed;
+ bool use_translucency;
+
+ enum PopupIDs { Focus };
+
+ KAction* remove_tab_action;
+ KAction* split_horiz_action;
+ KAction* split_vert_action;
+ KAction* remove_term_action;
+ KToggleFullScreenAction* full_screen_action;
+
+ KDialogBase* first_run_dialog;
+
+ KAboutApplication* about_app;
+ KAboutKDE* about_kde;
+
+
+ private slots:
+ void slotHandleRemoveSession(KAction::ActivationReason, Qt::ButtonState);
+ void slotHandleHorizontalSplit(KAction::ActivationReason, Qt::ButtonState);
+ void slotHandleVerticalSplit(KAction::ActivationReason, Qt::ButtonState);
+ void slotHandleRemoveTerminal(KAction::ActivationReason, Qt::ButtonState);
+
+ void slotInitSkin();
+ void slotUpdateSize();
+ void slotUpdateSize(int new_width, int new_height, int new_location);
+ void slotUpdateTitle(const QString& title);
+
+ void slotIncreaseHeight();
+ void slotDecreaseHeight();
+ void slotSessionDestroyed(int id = -1);
+
+ void slotSetAccessKey();
+ void slotSetControlKeys();
+
+ void slotIncreaseSizeW();
+ void slotDecreaseSizeW();
+ void slotIncreaseSizeH();
+ void slotDecreaseSizeH();
+ void slotSetFocusPolicy();
+ void slotSetFocusPolicy(bool);
+ void slotSetWidth(int);
+ void slotSetHeight(int);
+ void slotSetScreen(int);
+ void slotSetFullScreen(bool state);
+ void slotUpdateFullScreen();
+
+ void slotUpdateBackgroundState();
+ void slotUpdateSettings();
+ void slotOpenSettingsDialog();
+
+ void slotOpenFirstRunDialog();
+ void slotFirstRunDialogOK();
+ void slotFirstRunDialogCancel();
+
+ void slotOpenAboutApp();
+ void slotOpenAboutKDE();
+
+ void slotDialogFinished();
+};
+
+#endif /* MAIN_WINDOW_H */
diff --git a/yakuake/src/session.cpp b/yakuake/src/session.cpp
new file mode 100644
index 0000000..c714bdb
--- /dev/null
+++ b/yakuake/src/session.cpp
@@ -0,0 +1,422 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "session.h"
+#include "session.moc"
+#include "terminal.h"
+#include "terminal_splitter.h"
+#include "terminal_focus_watcher.h"
+
+#include <qobjectlist.h>
+#include <qclipboard.h>
+#include <qtimer.h>
+
+
+int Session::available_session_id = 0;
+
+Session::Session(QWidget* parent, SessionType type, const char* name) : QObject(parent, name)
+{
+ session_id = available_session_id;
+ available_session_id++;
+
+ active_terminal = NULL;
+
+ focus_watcher = new TerminalFocusWatcher(this);
+ connect(focus_watcher, SIGNAL(focusChanged()), this, SLOT(slotFocusChanged()));
+
+ base_widget = new TerminalSplitter(TerminalSplitter::Horizontal, parent, "base");
+ connect(base_widget, SIGNAL(destroyed()), this, SLOT(slotLastTerminalClosed()));
+
+ setenv("DCOP_YAKUAKE_SESSION", QString::number(session_id).ascii(), 1);
+
+ createInitialSplits(type);
+}
+
+Session::~Session()
+{
+ if (base_widget)
+ {
+ base_widget->setPrepareShutdown(true);
+ delete base_widget;
+ }
+
+ emit destroyed(session_id);
+}
+
+void Session::slotFocusChanged()
+{
+ if (checkFocusWidget())
+ {
+ base_widget->setFocusProxy(base_widget->focusWidget());
+ active_terminal = base_widget->focusWidget();
+ int terminal_id = terminal_ids[base_widget->focusWidget()];
+ slotTitleChange(base_widget->focusWidget(),
+ terminals[terminal_id]->title());
+ }
+}
+
+int Session::activeTerminalId()
+{
+ if (checkFocusWidget())
+ return terminal_ids[base_widget->focusWidget()];
+ else
+ return -1;
+}
+
+const QString Session::terminalIdList()
+{
+ QValueList<int>::iterator it;
+ QValueList<int> key_list = terminals.keys();
+ QStringList id_list;
+
+ for (it = key_list.begin(); it != key_list.end(); ++it)
+ id_list << QString::number((*it));
+
+ return id_list.join(",");
+}
+
+const QString Session::title()
+{
+ return session_title;
+}
+
+const QString Session::title(int terminal_id)
+{
+ if (terminals[terminal_id])
+ return terminals[terminal_id]->title();
+ else
+ return 0;
+}
+
+void Session::setTitle(const QString& title)
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ setTitle(terminal_id, title);
+ }
+}
+
+void Session::setTitle(int terminal_id, const QString& title)
+{
+ if (terminals[terminal_id]) terminals[terminal_id]->setTitle(title);
+}
+
+void Session::pasteClipboard()
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ pasteClipboard(terminal_id);
+ }
+}
+
+void Session::pasteClipboard(int terminal_id)
+{
+ if (terminal_parts[terminal_id])
+ terminal_parts[terminal_id]->sendInput(QApplication::clipboard()->text(QClipboard::Clipboard));
+}
+
+void Session::pasteSelection()
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ pasteSelection(terminal_id);
+ }
+}
+
+void Session::pasteSelection(int terminal_id)
+{
+ if (terminal_parts[terminal_id])
+ terminal_parts[terminal_id]->sendInput(QApplication::clipboard()->text(QClipboard::Selection));
+}
+
+void Session::runCommand(const QString& command)
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ runCommand(terminal_id, command);
+ }
+}
+
+void Session::runCommand(int terminal_id, const QString& command)
+{
+ if (terminal_parts[terminal_id])
+ terminal_parts[terminal_id]->sendInput(command + '\n');
+}
+
+
+void Session::splitHorizontally()
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ splitHorizontally(terminal_id);
+ }
+}
+
+void Session::splitHorizontally(int terminal_id)
+{
+ if (terminal_widgets[terminal_id])
+ split(terminal_widgets[terminal_id], TerminalSplitter::Horizontal);
+}
+
+void Session::splitVertically()
+{
+ if (active_terminal)
+ {
+ int terminal_id = terminal_ids[active_terminal];
+ splitVertically(terminal_id);
+ }
+}
+
+void Session::splitVertically(int terminal_id)
+{
+ if (terminal_widgets[terminal_id])
+ split(terminal_widgets[terminal_id], TerminalSplitter::Vertical);
+}
+
+void Session::removeTerminal()
+{
+ if (active_terminal)
+ {
+ delete active_terminal;
+ active_terminal = NULL;
+ }
+}
+
+void Session::removeTerminal(int terminal_id)
+{
+ if (terminal_widgets[terminal_id])
+ delete terminal_widgets[terminal_id];
+}
+
+void Session::focusNextSplit()
+{
+ base_widget->focusNext();
+}
+
+void Session::focusPreviousSplit()
+{
+ base_widget->focusPrevious();
+}
+
+void Session::createInitialSplits(SessionType type)
+{
+ switch (type)
+ {
+ case Single:
+ {
+ addTerminal(base_widget);
+
+ break;
+ }
+
+ case TwoHorizontal:
+ {
+ int splitter_width = base_widget->width();
+
+ Terminal* terminal = addTerminal(base_widget);
+ addTerminal(base_widget);
+
+ QValueList<int> new_splitter_sizes;
+ new_splitter_sizes << (splitter_width / 2) << (splitter_width / 2);
+ base_widget->setSizes(new_splitter_sizes);
+
+ terminal->widget()->setFocus();
+
+ break;
+ }
+
+ case TwoVertical:
+ {
+ base_widget->setOrientation(TerminalSplitter::Vertical);
+
+ int splitter_height = base_widget->height();
+
+ Terminal* terminal = addTerminal(base_widget);
+ addTerminal(base_widget);
+
+ QValueList<int> new_splitter_sizes;
+ new_splitter_sizes << (splitter_height / 2) << (splitter_height / 2);
+ base_widget->setSizes(new_splitter_sizes);
+
+ terminal->widget()->setFocus();
+
+ break;
+ }
+
+ case Quad:
+ {
+ int splitter_width = base_widget->width();
+ int splitter_height = base_widget->height();
+
+
+ base_widget->setOrientation(TerminalSplitter::Vertical);
+
+ TerminalSplitter* upper_splitter = new TerminalSplitter(TerminalSplitter::Horizontal, base_widget);
+ connect(upper_splitter, SIGNAL(destroyed()), this, SLOT(cleanup()));
+
+ TerminalSplitter* lower_splitter = new TerminalSplitter(TerminalSplitter::Horizontal, base_widget);
+ connect(lower_splitter, SIGNAL(destroyed()), this, SLOT(cleanup()));
+
+ Terminal* terminal = addTerminal(upper_splitter);
+ addTerminal(upper_splitter);
+
+ addTerminal(lower_splitter);
+ addTerminal(lower_splitter);
+
+ QValueList<int> new_splitter_sizes;
+ new_splitter_sizes << (splitter_height / 2) << (splitter_height / 2);
+ base_widget->setSizes(new_splitter_sizes);
+
+ new_splitter_sizes.clear();
+ new_splitter_sizes << (splitter_width / 2) << (splitter_width / 2);
+ upper_splitter->setSizes(new_splitter_sizes);
+ lower_splitter->setSizes(new_splitter_sizes);
+
+ terminal->widget()->setFocus();
+
+ break;
+ }
+
+ default:
+ {
+ addTerminal(base_widget);
+
+ break;
+ }
+ }
+}
+
+void Session::split(QWidget* active_terminal, Orientation o)
+{
+ TerminalSplitter* splitter = static_cast<TerminalSplitter*>(active_terminal->parentWidget());
+ if (!splitter) return;
+
+ // If the parent splitter of this terminal has only this one child,
+ // add the new terminal to the same splitter, after resetting the
+ // splitter orientation as needed.
+ if (splitter->count() == 1)
+ {
+ int splitter_width = splitter->width();
+
+ if (splitter->orientation() != o)
+ splitter->setOrientation(o);
+
+ Terminal* terminal = addTerminal(splitter);
+
+ QValueList<int> new_splitter_sizes;
+ new_splitter_sizes << (splitter_width / 2) << (splitter_width / 2);
+ splitter->setSizes(new_splitter_sizes);
+
+ terminal->widget()->show();
+ }
+ // If the parent splitter of this terminal already has two children,
+ // add a new splitter to it and reparent the terminal to the new
+ // splitter.
+ else
+ {
+ // Store the old splitter sizes to re-apply them later after the
+ // add-and-remove action is done screwing with the splitter.
+ QValueList<int> splitter_sizes = splitter->sizes();
+
+ TerminalSplitter* new_splitter = new TerminalSplitter(o, splitter);
+ connect(new_splitter, SIGNAL(destroyed()), this, SLOT(cleanup()));
+
+ if (splitter->isFirst(active_terminal)) splitter->moveToFirst(new_splitter);
+
+ active_terminal->reparent(new_splitter, 0, QPoint(), true);
+
+ Terminal* terminal = addTerminal(new_splitter);
+
+ splitter->setSizes(splitter_sizes);
+ QValueList<int> new_splitter_sizes;
+ new_splitter_sizes << (splitter_sizes[1] / 2) << (splitter_sizes[1] / 2);
+ new_splitter->setSizes(new_splitter_sizes);
+
+ new_splitter->show();
+ terminal->widget()->show();
+ }
+}
+
+Terminal* Session::addTerminal(QWidget* parent)
+{
+ Terminal* terminal = new Terminal(parent);
+
+ terminals.insert(terminal->id(), terminal);
+ terminal_ids.insert(terminal->widget(), terminal->id());
+ terminal_widgets.insert(terminal->id(), terminal->widget());
+ terminal_parts.insert(terminal->id(), terminal->terminal());
+
+ terminal->widget()->installEventFilter(focus_watcher);
+
+ connect(terminal, SIGNAL(destroyed(int)), this, SLOT(cleanup(int)));
+ connect(terminal, SIGNAL(titleChanged(QWidget*, const QString&)),
+ this, SLOT(slotTitleChange(QWidget*, const QString&)));
+
+ active_terminal = terminal->widget();
+ base_widget->setFocusProxy(terminal->widget());
+
+ return terminal;
+}
+
+void Session::cleanup(int terminal_id)
+{
+ /* Clean up the id <-> terminals */
+
+ terminals.erase(terminal_id);
+ terminal_ids.erase(terminal_widgets[terminal_id]);
+ terminal_widgets.erase(terminal_id);
+ terminal_parts.erase(terminal_id);
+
+ cleanup();
+}
+
+void Session::cleanup()
+{
+ /* Clean away empty splitters after a terminal was removed */
+
+ if (!base_widget) return;
+
+ base_widget->focusLast();
+
+ base_widget->recursiveCleanup();
+}
+
+void Session::slotLastTerminalClosed()
+{
+ base_widget = NULL;
+ deleteLater();
+}
+
+void Session::slotTitleChange(QWidget* w, const QString& title)
+{
+ if (w == base_widget->focusWidget())
+ {
+ session_title = title;
+ emit titleChanged( session_title);
+ }
+}
+
+bool Session::checkFocusWidget()
+{
+ if (base_widget->focusWidget()
+ && base_widget->focusWidget()->isA(QCString("TEWidget")))
+ {
+ return true;
+ }
+ else
+ return false;
+}
diff --git a/yakuake/src/session.h b/yakuake/src/session.h
new file mode 100644
index 0000000..a663b12
--- /dev/null
+++ b/yakuake/src/session.h
@@ -0,0 +1,107 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef SESSION_H
+#define SESSION_H
+
+#include "terminal_splitter.h"
+
+#include <qobject.h>
+#include <qwidget.h>
+
+
+class Terminal;
+class TerminalInterface;
+class TerminalFocusWatcher;
+
+class Session : public QObject
+{
+ Q_OBJECT
+
+ public:
+ enum SessionType { Single, TwoHorizontal, TwoVertical, Quad };
+
+ explicit Session(QWidget* parent = 0, SessionType type = Single, const char* name = 0);
+ virtual ~Session();
+
+ int id() { return session_id; }
+
+ QWidget* widget() { return base_widget; }
+
+ int activeTerminalId();
+
+ const QString terminalIdList();
+
+ const QString title();
+ const QString title(int terminal_id);
+ void setTitle(const QString& title);
+ void setTitle(int terminal_id, const QString& title);
+
+ void pasteClipboard();
+ void pasteClipboard(int terminal_id);
+ void pasteSelection();
+ void pasteSelection(int terminal_id);
+
+ void runCommand(const QString& command);
+ void runCommand(int terminal_id, const QString& command);
+
+ void removeTerminal();
+ void removeTerminal(int terminal_id);
+
+
+ public slots:
+ void splitHorizontally();
+ void splitHorizontally(int terminal_id);
+
+ void splitVertically();
+ void splitVertically(int terminal_id);
+
+ void focusNextSplit();
+ void focusPreviousSplit();
+
+ void slotTitleChange(QWidget* w, const QString& title);
+
+
+ signals:
+ void destroyed(int id);
+ void titleChanged(const QString&);
+
+
+ private:
+ void createInitialSplits(SessionType);
+ void split(QWidget* active_terminal, Orientation o);
+ Terminal* addTerminal(QWidget* parent);
+ bool checkFocusWidget();
+
+ static int available_session_id;
+ int session_id;
+ QString session_title;
+
+ QWidget* active_terminal;
+
+ TerminalSplitter* base_widget;
+ TerminalFocusWatcher* focus_watcher;
+
+ QMap<int, Terminal*> terminals;
+ QMap<QWidget*, int> terminal_ids;
+ QMap<int, QWidget*> terminal_widgets;
+ QMap<int, TerminalInterface*> terminal_parts;
+
+
+ private slots:
+ void slotFocusChanged();
+ void slotLastTerminalClosed();
+ void cleanup(int terminal_id);
+ void cleanup();
+};
+
+#endif /* SESSION_H */
diff --git a/yakuake/src/settings.kcfgc b/yakuake/src/settings.kcfgc
new file mode 100644
index 0000000..a04465e
--- /dev/null
+++ b/yakuake/src/settings.kcfgc
@@ -0,0 +1,8 @@
+ClassName=Settings
+File=yakuake.kcfg
+GlobalEnums=true
+Mutators=true
+SetUserTexts=true
+Singleton=true
+MemberVariables=private
+ItemAccessors=true
diff --git a/yakuake/src/skin_list_item.cpp b/yakuake/src/skin_list_item.cpp
new file mode 100644
index 0000000..0771eca
--- /dev/null
+++ b/yakuake/src/skin_list_item.cpp
@@ -0,0 +1,115 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "skin_list_item.h"
+
+#include <qsimplerichtext.h>
+#include <qrect.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qpalette.h>
+
+#include <kglobalsettings.h>
+#include <klocale.h>
+
+
+SkinListItem::SkinListItem(KListView* parent, const QString& fancy_name,
+ const QString& author, const QPixmap& icon, const QString& name, const QString& dir)
+ : KListViewItem(parent, fancy_name)
+{
+ setName(name);
+ setAuthor(author);
+ setDir(dir);
+
+ QString fancy_author = i18n("by %1").arg(author);
+ QString text = QString("<qt><b>%1</b><br>%2</qt>").arg(fancy_name).arg(fancy_author);
+
+ item_text = new QSimpleRichText(text, listView()->font());
+ item_text->adjustSize();
+
+ setPixmap(0, icon);
+
+}
+
+SkinListItem::~SkinListItem()
+{
+}
+
+void SkinListItem::setName(const QString& name)
+{
+ skin_name = name;
+}
+
+QString SkinListItem::name()
+{
+ return skin_name;
+}
+
+void SkinListItem::setAuthor(const QString& author)
+{
+ skin_author = author;
+}
+
+QString SkinListItem::author()
+{
+ return skin_author;
+}
+
+void SkinListItem::setDir(const QString& dir)
+{
+ skin_dir = dir;
+}
+
+QString SkinListItem::dir()
+{
+ return skin_dir;
+}
+
+void SkinListItem::setup()
+{
+ widthChanged();
+
+ item_text->setDefaultFont(listView()->font());
+ item_text->setWidth(listView()->columnWidth(0));
+ int text_height = item_text->height()+(MARGIN*2);
+
+ if (text_height < 32)
+ setHeight(32+(MARGIN*2));
+ else
+ setHeight(text_height);
+}
+
+void SkinListItem::paintCell(QPainter* p, const QColorGroup& /* cg */, int /* column */, int width, int /* align */)
+{
+ if (width <= 0) return;
+
+ QColor textColor = isSelected() ? KGlobalSettings::highlightedTextColor() : KGlobalSettings::textColor();
+ QColor background = isSelected() ? KGlobalSettings::highlightColor() : listView()->paletteBackgroundColor();
+
+ QColorGroup colors;
+ colors.setColor(QColorGroup::Foreground, textColor);
+ colors.setColor(QColorGroup::Text, textColor);
+ colors.setColor(QColorGroup::Background, background);
+ colors.setColor(QColorGroup::Base, background);
+
+ p->fillRect(0, 0, width, height(), background);
+
+
+ if (pixmap(0))
+ {
+ int y = (height() - 32) / 2;
+ p->drawPixmap(MARGIN, y, *pixmap(0));
+ }
+
+ item_text->setWidth(width);
+ item_text->draw(p, MARGIN+32+MARGIN+MARGIN, MARGIN, QRect(0, 0, width-MARGIN-32-MARGIN, height()), colors);
+}
diff --git a/yakuake/src/skin_list_item.h b/yakuake/src/skin_list_item.h
new file mode 100644
index 0000000..c834553
--- /dev/null
+++ b/yakuake/src/skin_list_item.h
@@ -0,0 +1,53 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef SKIN_LIST_ITEM_H
+#define SKIN_LIST_ITEM_H
+
+
+#include "klistview.h"
+
+
+#define MARGIN 3
+
+
+class QSimpleRichText;
+
+class SkinListItem : public KListViewItem
+{
+ public:
+ explicit SkinListItem(KListView* parent, const QString& fancy_name,
+ const QString& author, const QPixmap& icon, const QString& name, const QString& dir);
+ ~SkinListItem();
+
+ void setAuthor(const QString& author);
+ QString author();
+
+ void setName(const QString& name);
+ QString name();
+
+ void setDir(const QString& dir);
+ QString dir();
+
+ void setup();
+ void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
+
+
+ private:
+ QSimpleRichText* item_text;
+ QString skin_name;
+ QString skin_author;
+ QString skin_dir;
+};
+
+
+#endif /* SKIN_LIST_ITEM_H */
diff --git a/yakuake/src/skin_settings.cpp b/yakuake/src/skin_settings.cpp
new file mode 100644
index 0000000..529b670
--- /dev/null
+++ b/yakuake/src/skin_settings.cpp
@@ -0,0 +1,431 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "skin_settings.h"
+#include "skin_settings.moc"
+#include "skin_list_item.h"
+#include "settings.h"
+
+#include <qurl.h>
+#include <qheader.h>
+#include <qpixmap.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qfile.h>
+
+#include <kapplication.h>
+#include <kglobal.h>
+#include <kstandarddirs.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kurl.h>
+#include <kio/global.h>
+#include <kio/job.h>
+#include <kio/netaccess.h>
+#include <kfiledialog.h>
+#include <ktar.h>
+#include <klineedit.h>
+#include <kcolorbutton.h>
+
+#include <unistd.h> // unlink()
+
+
+SkinSettings::SkinSettings(QWidget* parent, const char* name, bool translucency)
+ : SkinSettingsUI(parent, name)
+{
+ kcfg_skin->hide();
+
+ skinbgcolor_label->setEnabled(!translucency);
+ skinbgcolor_label->setHidden(translucency);
+
+ kcfg_skinbgcolor->setEnabled(!translucency);
+ kcfg_skinbgcolor->setHidden(translucency);
+
+ skinbglayout->setEnabled(!translucency);
+ skinbglayout->invalidate();
+
+ skins_list->header()->hide();
+ skins_list->setSelectionModeExt(KListView::Single);
+ skins_list->setResizeMode(KListView::LastColumn);
+ skins_list->setRootIsDecorated(false);
+ skins_list->setDragEnabled(false);
+ skins_list->setAcceptDrops(false);
+ skins_list->setDropVisualizer(false);
+ skins_list->setSortColumn(0);
+
+ connect(skins_list, SIGNAL(selectionChanged()), this, SLOT(slotUpdateRemoveButton()));
+ connect(skins_list, SIGNAL(selectionChanged()), this, SLOT(slotUpdateSkinSetting()));
+ connect(kcfg_skin, SIGNAL(textChanged(const QString&)), this, SLOT(slotUpdateSelection(const QString&)));
+ connect(install_button, SIGNAL(clicked()), this, SLOT(slotInstallSkin()));
+ connect(remove_button, SIGNAL(clicked()), this, SLOT(slotRemoveSkin()));
+
+ skins_dir = locateLocal("data", "yakuake/");
+
+ selected = Settings::skin();
+
+ slotPopulate();
+}
+
+SkinSettings::~SkinSettings()
+{
+}
+
+void SkinSettings::showEvent(QShowEvent* e)
+{
+ slotPopulate();
+ SkinSettingsUI::showEvent(e);
+}
+
+void SkinSettings::slotPopulate()
+{
+ QStringList skins_dirs;
+ QStringList titles_dirs = KGlobal::dirs()->findAllResources("data","yakuake/*/title.skin");
+ QStringList tabs_dirs = KGlobal::dirs()->findAllResources("data","yakuake/*/tabs.skin");
+
+ for (QStringList::Iterator it = titles_dirs.begin(); it != titles_dirs.end(); ++it)
+ {
+ if (tabs_dirs.contains((*it).section('/', 0, -2) + "/tabs.skin"))
+ skins_dirs << (*it).section('/', 0, -2);
+ }
+
+ if (skins_dirs.count() > 0)
+ {
+ skins_list->clear();
+
+ for (QStringList::Iterator it = skins_dirs.begin(); it != skins_dirs.end(); ++it)
+ {
+ QUrl titles_url = locate("appdata", (*it) + "/title.skin");
+ KConfig titles_config(titles_url.path());
+ titles_config.setGroup("Description");
+
+ QString titles_name(titles_config.readEntry("Skin", ""));
+ QString titles_author(titles_config.readEntry("Author", ""));
+ QString titles_icon_name(titles_config.readEntry("Icon", ""));
+
+ QUrl tabs_url = locate("appdata", (*it) + "/tabs.skin");
+ KConfig tabs_config(tabs_url.path());
+ tabs_config.setGroup("Description");
+
+ QString tabs_name(tabs_config.readEntry("Skin", ""));
+ QString tabs_author(tabs_config.readEntry("Author", ""));
+ QString tabs_icon_name(tabs_config.readEntry("Icon", ""));
+
+ QString skin_name = (*it).section('/', -1, -1);
+ QString skin_fancy_name = i18n("Unnamed");
+ QString skin_author = i18n("Unknown");
+ QString skin_icon_name;
+ QUrl skin_icon_url;
+ QPixmap skin_icon;
+
+ if (!titles_name.isEmpty())
+ skin_fancy_name = titles_name;
+ else if (!tabs_name.isEmpty())
+ skin_fancy_name = tabs_name;
+
+ if (!titles_author.isEmpty())
+ skin_author = titles_author;
+ else if (!tabs_author.isEmpty())
+ skin_author = tabs_author;
+
+ if (!titles_icon_name.isEmpty())
+ skin_icon_name = titles_icon_name;
+ else if (!tabs_icon_name.isEmpty())
+ skin_icon_name = tabs_icon_name;
+
+ skin_icon_url = locate("appdata", (*it) + skin_icon_name);
+
+ if (skin_icon_url.isValid())
+ skin_icon.load(skin_icon_url.path());
+
+ bool exists = false;
+ SkinListItem* item = 0;
+
+ QListViewItemIterator it2(skins_list);
+
+ while (it2.current())
+ {
+ item = static_cast<SkinListItem*>(it2.current());
+ if (item && item->name() == skin_name) exists = true;
+ ++it2;
+ }
+
+ if (!exists)
+ {
+ SkinListItem* skin = new SkinListItem(skins_list, skin_fancy_name, skin_author, skin_icon, skin_name, (*it));
+
+ if (skin_name == selected) skins_list->setSelected(skin, true);
+ }
+ }
+ }
+
+ slotUpdateRemoveButton();
+}
+
+void SkinSettings::slotInstallSkin()
+{
+ KURL skin_url = KFileDialog::getOpenURL(QString(),
+ i18n("*.tar.gz *.tar.bz2 *.tar *.zip|Yakuake Skins"),
+ NULL, i18n("Select Skin Archive"));
+
+ if (skin_url.isEmpty()) return;
+
+ if (!KIO::NetAccess::download(skin_url, install_skin_file, NULL))
+ {
+ KMessageBox::error(0L,
+ KIO::NetAccess::lastErrorString(),
+ i18n("Failed to Download Skin"),
+ KMessageBox::Notify
+ );
+
+ return;
+ }
+
+ QDir skin_dir(install_skin_file);
+
+ if (!skin_dir.exists())
+ {
+ KIO::ListJob* job = KIO::listRecursive("tar:" + install_skin_file, false, false);
+
+ connect(job, SIGNAL(entries(KIO::Job*, const KIO::UDSEntryList&)),
+ this, SLOT(slotListSkinArchive(KIO::Job*, const KIO::UDSEntryList&)));
+
+ connect(job, SIGNAL(result(KIO::Job*)),
+ this, SLOT(slotValidateSkinArchive(KIO::Job*)));
+ }
+ else
+ failInstall(i18n("The installer was given a directory, not a file."));
+}
+
+void SkinSettings::slotListSkinArchive(KIO::Job* /* job */, const KIO::UDSEntryList& list)
+{
+ KIO::UDSEntryList::const_iterator it = list.begin();
+
+ for(; it != list.end(); ++it)
+ {
+ KIO::UDSEntry::const_iterator itUSDEntry = (*it).begin();
+
+ for (; itUSDEntry != (*it).end(); ++itUSDEntry )
+ {
+ if((*itUSDEntry).m_uds == KIO::UDS_NAME)
+ {
+ install_skin_file_list.append((*itUSDEntry).m_str);
+ }
+ }
+ }
+}
+
+void SkinSettings::slotValidateSkinArchive(KIO::Job* job)
+{
+ if (!job->error())
+ {
+ install_skin_name = install_skin_file_list.first();
+
+ if (install_skin_file_list.contains(QString(install_skin_name + "/title.skin"))
+ && install_skin_file_list.contains(QString(install_skin_name + "/tabs.skin")))
+ {
+ checkForExistingSkin();
+ }
+ else
+ failInstall(i18n("Unable to locate required files in the skin archive.\n\n The archive appears to be invalid."));
+ }
+ else
+ failInstall(i18n("Unable to list the skin archive contents.") + QString("\n\n %1").arg(job->errorString()));
+}
+
+void SkinSettings::checkForExistingSkin()
+{
+ bool exists = false;
+ SkinListItem* item = 0;
+
+ QListViewItemIterator it(skins_list);
+
+ while (it.current())
+ {
+ item = static_cast<SkinListItem*>(it.current());
+ if (item && item->name() == install_skin_name) exists = true;
+ ++it;
+ }
+
+ if (exists)
+ {
+ QFile skin(item->dir() + "/titles.skin");
+
+ if (!skin.open(IO_ReadOnly | IO_WriteOnly))
+ {
+ failInstall(i18n("This skin appears to be already installed and you lack the required permissions to overwrite it."));
+ }
+ else
+ {
+ skin.close();
+
+ int remove = KMessageBox::warningContinueCancel(0L,
+ i18n("This skin appears to be already installed. Do you want to overwrite it?"),
+ i18n("Skin Already Exists"),
+ i18n("Reinstall Skin"));
+
+ if (remove == KMessageBox::Continue)
+ {
+ unlink(QFile::encodeName(item->dir()));
+ KIO::DeleteJob* job = KIO::del(KURL(item->dir()), false, false);
+ connect(job, SIGNAL(result(KIO::Job*)), this, SLOT(slotInstallSkinArchive(KIO::Job*)));
+ }
+ else
+ cleanupAfterInstall();
+ }
+ }
+ else
+ slotInstallSkinArchive();
+}
+
+void SkinSettings::slotInstallSkinArchive(KIO::Job* delete_job)
+{
+ if (delete_job && delete_job->error())
+ {
+ KMessageBox::error(0L,
+ delete_job->errorString(),
+ i18n("Could Not Delete Skin"),
+ KMessageBox::Notify
+ );
+
+ return;
+ }
+
+ KTar skin_archive(install_skin_file);
+
+ if (skin_archive.open(IO_ReadOnly))
+ {
+ const KArchiveDirectory* skin_dir = skin_archive.directory();
+ skin_dir->copyTo(skins_dir);
+ skin_archive.close();
+
+ slotPopulate();
+
+ if (Settings::skin() == install_skin_name)
+ emit settingsChanged();
+
+ cleanupAfterInstall();
+ }
+ else
+ failInstall(i18n("The skin archive file could not be opened."));
+}
+
+void SkinSettings::failInstall(const QString& error)
+{
+ KMessageBox::error(0L, error,
+ i18n("Cannot Install Skin"),
+ KMessageBox::Notify
+ );
+
+ cleanupAfterInstall();
+}
+
+void SkinSettings::cleanupAfterInstall()
+{
+ KIO::NetAccess::removeTempFile(install_skin_file);
+ install_skin_file = QString();
+ install_skin_name = QString();
+ install_skin_file_list.clear();
+}
+
+void SkinSettings::slotRemoveSkin()
+{
+ if (skins_list->childCount() <= 1)
+ return;
+
+ SkinListItem* selected_item = static_cast<SkinListItem*>(skins_list->selectedItem());
+
+ if (!selected_item) return;
+
+ int remove = KMessageBox::warningContinueCancel(0L,
+ i18n("Do you want to remove \"%1\" by %2?").arg(selected_item->text(0)).arg(selected_item->author()),
+ i18n("Remove Skin"),
+ KStdGuiItem::del());
+
+ if (remove == KMessageBox::Continue)
+ {
+ unlink(QFile::encodeName(selected_item->dir()));
+ KIO::DeleteJob* job = KIO::del(KURL(selected_item->dir()), false, false);
+ connect(job, SIGNAL(result(KIO::Job *)), this, SLOT(slotPopulate()));
+
+ if (selected_item->name() == Settings::skin())
+ {
+ Settings::setSkin("default");
+ Settings::writeConfig();
+ emit settingsChanged();
+ }
+
+ slotResetSelection();
+ }
+}
+
+void SkinSettings::slotUpdateRemoveButton()
+{
+ if (skins_list->childCount() <= 1)
+ {
+ remove_button->setEnabled(false);
+ return;
+ }
+
+ SkinListItem* selected_item = static_cast<SkinListItem*>(skins_list->selectedItem());
+
+ if (!selected_item) return;
+
+ if (selected_item->name() == "default")
+ {
+ remove_button->setEnabled(false);
+ return;
+ }
+
+ QFile skin(selected_item->dir() + "/title.skin");
+
+ if (!skin.open(IO_ReadOnly | IO_WriteOnly))
+ remove_button->setEnabled(false);
+ else
+ remove_button->setEnabled(true);
+
+ skin.close();
+}
+
+void SkinSettings::slotUpdateSkinSetting()
+{
+ SkinListItem* selected_item = static_cast<SkinListItem*>(skins_list->selectedItem());
+
+ if (selected_item)
+ {
+ selected = selected_item->name();
+ kcfg_skin->setText(selected_item->name());
+ }
+}
+
+void SkinSettings::slotResetSelection()
+{
+ selected = Settings::skin();
+}
+
+void SkinSettings::slotUpdateSelection(const QString& selection)
+{
+ selected = selection;
+ SkinListItem* skin = 0;
+
+ QListViewItemIterator it(skins_list);
+
+ while (it.current())
+ {
+ skin = static_cast<SkinListItem*>(it.current());
+
+ if (skin && skin->name() == selected)
+ skins_list->setSelected(skin, true);
+
+ ++it;
+ }
+}
diff --git a/yakuake/src/skin_settings.h b/yakuake/src/skin_settings.h
new file mode 100644
index 0000000..5d401af
--- /dev/null
+++ b/yakuake/src/skin_settings.h
@@ -0,0 +1,72 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef SKIN_SETTINGS_H
+#define SKIN_SETTINGS_H
+
+
+#include "skin_settings_ui.h"
+
+#include <kio/job.h>
+
+
+class SkinSettings : public SkinSettingsUI
+{
+ Q_OBJECT
+
+ public:
+ explicit SkinSettings(QWidget* parent, const char* name=NULL, bool translucency = false);
+ ~SkinSettings();
+
+
+ public slots:
+ void slotResetSelection();
+
+
+ signals:
+ void settingsChanged();
+
+
+ protected:
+ void showEvent(QShowEvent* e);
+
+
+ private:
+ void checkForExistingSkin();
+ void failInstall(const QString& error);
+ void cleanupAfterInstall();
+
+ QString selected;
+
+ QString skins_dir;
+ QString install_skin_file;
+ QString install_skin_name;
+ QStringList install_skin_file_list;
+
+
+ private slots:
+ void slotPopulate();
+
+ void slotInstallSkin();
+ void slotListSkinArchive(KIO::Job* job, const KIO::UDSEntryList& list);
+ void slotValidateSkinArchive(KIO::Job* job);
+ void slotInstallSkinArchive(KIO::Job* delete_job = 0);
+
+ void slotRemoveSkin();
+
+ void slotUpdateRemoveButton();
+ void slotUpdateSkinSetting();
+ void slotUpdateSelection(const QString&);
+};
+
+
+#endif /* SKIN_SETTINGS_H */
diff --git a/yakuake/src/skin_settings_ui.ui b/yakuake/src/skin_settings_ui.ui
new file mode 100644
index 0000000..b177e96
--- /dev/null
+++ b/yakuake/src/skin_settings_ui.ui
@@ -0,0 +1,125 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>SkinSettingsUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>SkinSettingsUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>462</width>
+ <height>545</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <widget class="KLineEdit" row="3" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>kcfg_skin</cstring>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="2" column="1">
+ <property name="name">
+ <cstring>remove_button</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Remove Skin</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="2" column="0">
+ <property name="name">
+ <cstring>install_button</cstring>
+ </property>
+ <property name="text">
+ <string>Install Skin...</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>skinbglayout</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>skinbgcolor_label</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Skin background color:</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>kcfg_skinbgcolor</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>This controls the color of the surface that translucent skin elements are composited upon. This setting is only available if Yakuake is run outside of KDE and translucency is unavailable.</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>skinbgspacer</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>290</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="KListView" row="1" column="0" rowspan="1" colspan="2">
+ <column>
+ <property name="text">
+ <string>Skin</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>skins_list</cstring>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="11"/>
+<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+<includehints>
+ <includehint>klineedit.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>klistview.h</includehint>
+</includehints>
+</UI>
diff --git a/yakuake/src/tab_bar.cpp b/yakuake/src/tab_bar.cpp
new file mode 100644
index 0000000..72347db
--- /dev/null
+++ b/yakuake/src/tab_bar.cpp
@@ -0,0 +1,242 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "tab_bar.h"
+#include "tab_bar.moc"
+#include "settings.h"
+
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+#include <klocale.h>
+#include <kpopupmenu.h>
+
+
+TabBar::TabBar(QWidget* parent, const char* name, bool translucency, const QString & skin)
+ : TranslucentWidget(parent, name, translucency)
+{
+ loadSkin(skin);
+
+ connect(plus_button, SIGNAL(clicked()), this, SIGNAL(addItem()));
+ connect(minus_button, SIGNAL(clicked()), this, SIGNAL(removeItem()));
+ connect(tabs_widget, SIGNAL(itemSelected(int)), this, SIGNAL(itemSelected(int)));
+ connect(tabs_widget, SIGNAL(addItem()), this, SIGNAL(addItem()));
+ connect(this, SIGNAL(updateBackground()), this, SLOT(slotUpdateBackground()));
+}
+
+TabBar::~TabBar()
+{
+ delete tabs_widget;
+ delete plus_button;
+ delete minus_button;
+}
+
+int TabBar::pressedPosition()
+{
+ return tabs_widget->pressedPosition();
+}
+
+
+void TabBar::resetPressedPosition()
+{
+ tabs_widget->resetPressedPosition();
+}
+
+void TabBar::addItem(int session_id)
+{
+ tabs_widget->addItem(session_id);
+ tabs_widget->selectItem(session_id);
+}
+
+int TabBar::removeItem(int session_id)
+{
+ return tabs_widget->removeItem(session_id);
+}
+
+const QString TabBar::itemName(int session_id)
+{
+ return tabs_widget->itemName(session_id);
+}
+
+void TabBar::renameItem(int session_id, const QString& name)
+{
+ tabs_widget->renameItem(session_id, name);
+}
+
+void TabBar::interactiveRename()
+{
+ tabs_widget->interactiveRename();
+}
+
+int TabBar::tabPositionForSessionId(int session_id)
+{
+ return tabs_widget->tabPositionForSessionId(session_id);
+}
+
+int TabBar::sessionIdForTabPosition(int position)
+{
+ return tabs_widget->sessionIdForTabPosition(position);
+}
+
+void TabBar::selectItem(int session_id)
+{
+ tabs_widget->selectItem(session_id);
+}
+
+void TabBar::selectPosition(int position)
+{
+ tabs_widget->selectPosition(position);
+}
+
+void TabBar::slotSelectNextItem()
+{
+ tabs_widget->selectNextItem();
+}
+
+void TabBar::slotSelectPreviousItem()
+{
+ tabs_widget->selectPreviousItem();
+}
+
+void TabBar::slotMoveItemLeft()
+{
+ tabs_widget->moveItemLeft();
+}
+
+void TabBar::slotMoveItemRight()
+{
+ tabs_widget->moveItemRight();
+}
+
+void TabBar::paintEvent(QPaintEvent*)
+{
+ QPainter painter(this);
+
+ erase();
+
+ if (!useTranslucency())
+ painter.fillRect(0, 0, width(), height(), Settings::skinbgcolor());
+
+ painter.drawPixmap(0, 0, left_corner);
+ painter.drawPixmap(width() - right_corner.width(), 0, right_corner);
+
+ painter.drawTiledPixmap(left_corner.width(), 0, width() -
+ left_corner.width() -right_corner.width(), height(), back_image);
+
+ painter.end();
+}
+
+void TabBar::resizeEvent(QResizeEvent*)
+{
+ plus_button->move(plus_position.x(), plus_position.y());
+ minus_button->move(width() - minus_position.x(), minus_position.y());
+
+ tabs_widget->move(tabs_position.x(), tabs_position.y());
+ tabs_widget->resize(width() - 2 * tabs_position.x(), tabs_widget->height());
+ tabs_widget->refreshBuffer();
+}
+
+void TabBar::loadSkin(const QString& skin)
+{
+ tabs_widget = new TabbedWidget(this, "Tabbed widget", useTranslucency());
+ QWhatsThis::add(tabs_widget, i18n("The tab bar allows you to switch between sessions."));
+ connect(this, SIGNAL(updateBackground()), tabs_widget, SLOT(slotUpdateBackground()));
+
+ plus_button = new ImageButton(this, "Plus button", useTranslucency());
+ plus_button->setDelayedPopup(true);
+ QToolTip::add(plus_button, i18n("New Session"));
+ QWhatsThis::add(plus_button, i18n("Adds a new session. Press and hold to select session type from menu."));
+ connect(this, SIGNAL(updateBackground()), plus_button, SLOT(slotUpdateBackground()));
+
+ minus_button = new ImageButton(this, "Minus button", useTranslucency());
+ QToolTip::add(minus_button, i18n("Close Session"));
+ QWhatsThis::add(minus_button, i18n("Closes the active session."));
+ connect(this, SIGNAL(updateBackground()), minus_button, SLOT(slotUpdateBackground()));
+
+ setPixmaps(skin);
+
+ resize(width(), back_image.height());
+}
+
+void TabBar::reloadSkin(const QString& skin)
+{
+ setPixmaps(skin);
+
+ resize(width(), back_image.height());
+
+ plus_button->move(plus_position.x(), plus_position.y());
+ minus_button->move(width() - minus_position.x(), minus_position.y());
+
+ tabs_widget->move(tabs_position.x(), tabs_position.y());
+ tabs_widget->resize(width() - 2 * tabs_position.x(), tabs_widget->height());
+
+ minus_button->repaint();
+ plus_button->repaint();
+ tabs_widget->refreshBuffer();
+ repaint();
+}
+
+void TabBar::setPixmaps(const QString& skin)
+{
+ QUrl url(locate("appdata", skin + "/tabs.skin"));
+ KConfig config(url.path());
+
+ config.setGroup("Tabs");
+
+ tabs_position.setX(config.readNumEntry("x", 20));
+ tabs_position.setY(config.readNumEntry("y", 0));
+
+ tabs_widget->setFontColor(QColor(config.readNumEntry("red", 255),
+ config.readNumEntry("green", 255),
+ config.readNumEntry("blue", 255)));
+
+ tabs_widget->setSeparatorPixmap(url.dirPath() + config.readEntry("separator_image", ""));
+ tabs_widget->setSelectedPixmap(url.dirPath() + config.readEntry("selected_background", ""));
+ tabs_widget->setSelectedLeftPixmap(url.dirPath() + config.readEntry("selected_left_corner", ""));
+ tabs_widget->setSelectedRightPixmap(url.dirPath() + config.readEntry("selected_right_corner", ""));
+ tabs_widget->setUnselectedPixmap(url.dirPath() + config.readEntry("unselected_background", ""));
+
+ // Load the background pixmaps.
+ config.setGroup("Background");
+
+ tabs_widget->setBackgroundPixmap(url.dirPath() + config.readEntry("back_image", ""));
+
+ back_image.load(url.dirPath() + config.readEntry("back_image", ""));
+ left_corner.load(url.dirPath() + config.readEntry("left_corner", ""));
+ right_corner.load(url.dirPath() + config.readEntry("right_corner", ""));
+
+ // Load the plus button.
+ config.setGroup("PlusButton");
+
+ plus_position.setX(config.readNumEntry("x", 2));
+ plus_position.setY(config.readNumEntry("y", 2));
+
+ plus_button->setUpPixmap(url.dirPath() + config.readEntry("up_image", ""));
+ plus_button->setOverPixmap(url.dirPath() + config.readEntry("over_image", ""));
+ plus_button->setDownPixmap(url.dirPath() + config.readEntry("down_image", ""));
+
+ // Load the minus button.
+ config.setGroup("MinusButton");
+
+ minus_position.setX(config.readNumEntry("x", 18));
+ minus_position.setY(config.readNumEntry("y", 2));
+
+ minus_button->setUpPixmap(url.dirPath() + config.readEntry("up_image", ""));
+ minus_button->setOverPixmap(url.dirPath() + config.readEntry("over_image", ""));
+ minus_button->setDownPixmap(url.dirPath() + config.readEntry("down_image", ""));
+}
+
+void TabBar::setSessionMenu(KPopupMenu* menu)
+{
+ plus_button->setPopupMenu(menu);
+}
diff --git a/yakuake/src/tab_bar.h b/yakuake/src/tab_bar.h
new file mode 100644
index 0000000..6e8f3a0
--- /dev/null
+++ b/yakuake/src/tab_bar.h
@@ -0,0 +1,108 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TAB_BAR_H
+#define TAB_BAR_H
+
+
+#include "image_button.h"
+#include "tabbed_widget.h"
+#include "translucent_widget.h"
+
+#include <qurl.h>
+#include <qcolor.h>
+#include <qpoint.h>
+#include <qpixmap.h>
+#include <qpainter.h>
+
+#include <kconfig.h>
+#include <krootpixmap.h>
+#include <kstandarddirs.h>
+
+
+class TabBar : public TranslucentWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit TabBar(QWidget* parent = 0, const char* name = 0,
+ bool translucency = false, const QString& skin = "default");
+ ~TabBar();
+
+ void setSessionMenu(KPopupMenu* menu);
+
+ int pressedPosition();
+ void resetPressedPosition();
+
+ void addItem(int session_id);
+ int removeItem(int session_id);
+
+ const QString itemName(int session_id);
+ void renameItem(int session_id, const QString& name);
+ void interactiveRename();
+
+ int tabPositionForSessionId(int session_id);
+ int sessionIdForTabPosition(int position);
+
+ void selectItem(int session_id);
+ void selectPosition(int position);
+
+ void reloadSkin(const QString& skin);
+
+
+ public slots:
+ void slotSelectNextItem();
+ void slotSelectPreviousItem();
+
+ void slotMoveItemLeft();
+ void slotMoveItemRight();
+
+
+ signals:
+ void addItem();
+ void removeItem();
+ void itemSelected(int session_id);
+ void updateBackground();
+
+
+ protected:
+ virtual void paintEvent(QPaintEvent*);
+ virtual void resizeEvent(QResizeEvent*);
+
+
+ private:
+ void setPixmaps(const QString& skin);
+ void loadSkin(const QString& skin);
+
+ /* Text properties */
+ QColor text_color;
+
+ /* Widget's pixmaps */
+ QPixmap back_image;
+ QPixmap left_corner;
+ QPixmap right_corner;
+
+ /* Plus button */
+ QPoint plus_position;
+ ImageButton* plus_button;
+
+ /* Minus button */
+ QPoint minus_position;
+ ImageButton* minus_button;
+
+ /* Tabbed widget */
+ QPoint tabs_position;
+ TabbedWidget* tabs_widget;
+};
+
+#endif /* TAB_BAR_H */
diff --git a/yakuake/src/tabbed_widget.cpp b/yakuake/src/tabbed_widget.cpp
new file mode 100644
index 0000000..c2b3961
--- /dev/null
+++ b/yakuake/src/tabbed_widget.cpp
@@ -0,0 +1,618 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "tabbed_widget.h"
+#include "tabbed_widget.moc"
+#include "settings.h"
+
+#include <qcursor.h>
+#include <qwhatsthis.h>
+
+#include <kaction.h>
+#include <kpopupmenu.h>
+#include <kmainwindow.h>
+#include <kiconloader.h>
+
+
+TabbedWidget::TabbedWidget(QWidget* parent, const char* name, bool translucency)
+ : TranslucentWidget(parent, name, translucency)
+{
+ current_position = -1;
+ pressed = false;
+ pressed_position = -1;
+ edited_position = -1;
+
+ context_menu = 0;
+
+ if (root_pixmap)
+ {
+ connect(root_pixmap, SIGNAL(backgroundUpdated(const QPixmap &)), this, SLOT(slotUpdateBuffer(const QPixmap &)));
+ root_pixmap->setCustomPainting(true);
+ }
+
+ inline_edit = new QLineEdit(this);
+ inline_edit->hide();
+
+ connect(inline_edit, SIGNAL(returnPressed()), this, SLOT(slotRenameSelected()));
+ connect(inline_edit, SIGNAL(lostFocus()), inline_edit, SLOT(hide()));
+ connect(inline_edit, SIGNAL(lostFocus()), this, SLOT(slotResetEditedPosition()));
+
+ selected_font = font();
+ unselected_font = font();
+ selected_font.setBold(true);
+
+ refreshBuffer();
+}
+
+TabbedWidget::~TabbedWidget()
+{
+ delete context_menu;
+}
+
+int TabbedWidget::pressedPosition()
+{
+ return pressed_position;
+}
+
+void TabbedWidget::createContextMenu()
+{
+ context_menu = new KPopupMenu();
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("split_horizontally")->plug(context_menu);
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("split_vertically")->plug(context_menu);
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("remove_terminal")->plug(context_menu);
+
+ context_menu->insertSeparator();
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_left")->plug(context_menu);
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_right")->plug(context_menu);
+
+ context_menu->insertSeparator();
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("edit_name")->plug(context_menu);
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("remove_tab")->plug(context_menu);
+
+}
+
+void TabbedWidget::addItem(int session_id)
+{
+ items.append(session_id);
+ areas.append(0);
+ captions.append(lowestAvailableCaption());
+
+ refreshBuffer();
+}
+
+QString TabbedWidget::defaultTabCaption(int id)
+{
+ return i18n("Shell", "Shell No. %n", id+1);
+}
+
+QString TabbedWidget::lowestAvailableCaption()
+{
+ QString newTitle = defaultTabCaption(0);
+
+ bool nameOk;
+ int count = 0;
+
+ do
+ {
+ nameOk = true;
+
+ QValueList<QString>::iterator it;
+
+ for (it = captions.begin(); it != captions.end(); ++it)
+ {
+ if (newTitle == (*it))
+ {
+ nameOk = false;
+ break;
+ }
+ }
+
+ if (!nameOk)
+ {
+ count++;
+ newTitle = newTitle = defaultTabCaption(count);
+ }
+ }
+ while (!nameOk);
+
+ return newTitle;
+}
+
+int TabbedWidget::removeItem(int session_id)
+{
+ uint position = items.findIndex(session_id);
+
+ items.remove(items.at(position));
+ areas.remove(areas.at(position));
+ captions.remove(captions.at(position));
+
+ if (position != items.count())
+ current_position = position;
+ else if (position != 0)
+ current_position = position - 1;
+ else
+ current_position = -1;
+
+ refreshBuffer();
+
+ if (current_position != -1)
+ emit itemSelected(items[current_position]);
+
+ return current_position;
+}
+
+const QString TabbedWidget::itemName(int session_id)
+{
+ int position = items.findIndex(session_id);
+
+ if (position == -1) return 0;
+
+ return captions[position];
+}
+
+void TabbedWidget::renameItem(int session_id, const QString& namep)
+{
+ int position = items.findIndex(session_id);
+
+ if (position == -1) return;
+
+ QString name = namep.stripWhiteSpace();
+ captions[position] = !name.isEmpty() ? name : captions[position];
+
+ refreshBuffer();
+}
+
+void TabbedWidget::interactiveRename()
+{
+ if (pressed_position != -1)
+ {
+ interactiveRename(pressed_position);
+ pressed_position = -1;
+ }
+ else
+ {
+ interactiveRename(current_position);
+ }
+}
+
+void TabbedWidget::interactiveRename(int position)
+{
+ if (position >= 0 && position < int(items.count()) && !items.isEmpty())
+ {
+ edited_position = position;
+
+ int index;
+ int width;
+
+ for (index = 0, width = 0; index < position; index++)
+ width += areas[index];
+
+ inline_edit->setText(captions[position]);
+ inline_edit->setGeometry(width, 0, areas[position], height());
+ inline_edit->setAlignment(Qt::AlignHCenter);
+ inline_edit->setFrame(false);
+ inline_edit->selectAll();
+ inline_edit->setFocus();
+ inline_edit->show();
+ }
+}
+
+void TabbedWidget::slotRenameSelected()
+{
+ if (edited_position >= 0 && edited_position < int(items.count()))
+ {
+ QString text = inline_edit->text().stripWhiteSpace();
+ captions[edited_position] = !text.isEmpty() ? text : captions[edited_position];
+
+ inline_edit->hide();
+
+ edited_position = -1;
+
+ refreshBuffer();
+ }
+}
+
+void TabbedWidget::slotResetEditedPosition()
+{
+ edited_position = -1;
+}
+
+int TabbedWidget::tabPositionForSessionId(int session_id)
+{
+ return items.findIndex(session_id);
+}
+
+int TabbedWidget::sessionIdForTabPosition(int position)
+{
+ if (position < int(items.count()) && !items.isEmpty())
+ return items[position];
+ else
+ return -1;
+}
+
+void TabbedWidget::selectItem(int session_id)
+{
+ int new_position = items.findIndex(session_id);
+
+ if (new_position != -1)
+ {
+ current_position = new_position;
+ refreshBuffer();
+ }
+}
+
+void TabbedWidget::selectPosition(int position)
+{
+ if (position < int(items.count()) && !items.isEmpty())
+ {
+ current_position = position;
+
+ refreshBuffer();
+
+ emit itemSelected(items[current_position]);
+ }
+}
+
+void TabbedWidget::selectNextItem()
+{
+ if (current_position != int(items.count()) - 1)
+ current_position++;
+ else
+ current_position = 0;
+
+ refreshBuffer();
+
+ emit itemSelected(items[current_position]);
+}
+
+void TabbedWidget::selectPreviousItem()
+{
+ if (current_position != 0)
+ current_position--;
+ else
+ current_position = items.count() - 1;
+
+ refreshBuffer();
+
+ emit itemSelected(items[current_position]);
+}
+
+void TabbedWidget::moveItemLeft()
+{
+ if (pressed_position != -1)
+ {
+ moveItemLeft(pressed_position);
+ pressed_position = -1;
+ }
+ else
+ moveItemLeft(current_position);
+}
+
+
+void TabbedWidget::moveItemLeft(int position)
+{
+ if (position > 0)
+ {
+ int session_id = items[position];
+ QString caption = captions[position];
+
+ int neighbor_session_id = items[position-1];
+ QString neighbor_caption = captions[position-1];
+
+ items[position-1] = session_id;
+ captions[position-1] = caption;
+
+ items[position] = neighbor_session_id;
+ captions[position] = neighbor_caption;
+
+ if (position == current_position)
+ current_position--;
+ else if (position == current_position + 1)
+ current_position++;
+
+ refreshBuffer();
+ }
+}
+
+void TabbedWidget::moveItemRight()
+{
+ if (pressed_position != -1)
+ {
+ moveItemRight(pressed_position);
+ pressed_position = -1;
+ }
+ else
+ moveItemRight(current_position);
+}
+
+void TabbedWidget::moveItemRight(int position)
+{
+ if (position < int(items.count()) - 1)
+ {
+ int session_id = items[position];
+ QString caption = captions[position];
+
+ int neighbor_session_id = items[position+1];
+ QString neighbor_caption = captions[position+1];
+
+ items[position+1] = session_id;
+ captions[position+1] = caption;
+
+ items[position] = neighbor_session_id;
+ captions[position] = neighbor_caption;
+
+ if (position == current_position)
+ current_position++;
+ else if (position == current_position - 1)
+ current_position--;
+
+ refreshBuffer();
+ }
+}
+
+void TabbedWidget::setFontColor(const QColor & color)
+{
+ font_color = color;
+}
+
+void TabbedWidget::setBackgroundPixmap(const QString & path)
+{
+ background_image.load(path);
+ resize(width(), background_image.height());
+
+ repaint();
+}
+
+void TabbedWidget::setSeparatorPixmap(const QString & path)
+{
+ separator_image.load(path);
+}
+
+void TabbedWidget::setUnselectedPixmap(const QString & path)
+{
+ unselected_image.load(path);
+}
+
+void TabbedWidget::setSelectedPixmap(const QString & path)
+{
+ selected_image.load(path);
+}
+
+void TabbedWidget::setSelectedLeftPixmap(const QString & path)
+{
+ selected_left_image.load(path);
+}
+
+void TabbedWidget::setSelectedRightPixmap(const QString & path)
+{
+ selected_right_image.load(path);
+}
+
+void TabbedWidget::keyPressEvent(QKeyEvent* e)
+{
+ if (e->key() == Key_Escape && inline_edit->isShown())
+ {
+ inline_edit->hide();
+ edited_position = -1;
+ }
+
+ QWidget::keyPressEvent(e);
+}
+
+void TabbedWidget::wheelEvent(QWheelEvent* e)
+{
+ if (e->delta() < 0)
+ selectNextItem();
+ else
+ selectPreviousItem();
+}
+
+void TabbedWidget::mousePressEvent(QMouseEvent* e)
+{
+ if (QWhatsThis::inWhatsThisMode()) return;
+
+ int position;
+ int width;
+
+ if (e->x() < 0)
+ return ;
+
+ for (position = 0, width = 0; (position < int(areas.count())) && (e->x() >= width); position++)
+ width += areas[position];
+
+ if ((e->x() <= width) && (e->button() == Qt::LeftButton) && !(current_position == position - 1))
+ {
+ pressed = true;
+ pressed_position = position - 1;
+ }
+ else if ((e->x() <= width) && (e->button() == Qt::RightButton))
+ {
+ pressed_position = position - 1;
+
+ if (!context_menu) createContextMenu();
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_left")->setEnabled((position - 1 > 0));
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_right")->setEnabled((position - 1 < int(items.count()) - 1));
+
+ context_menu->exec(QCursor::pos());
+
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_left")->setEnabled(true);
+ static_cast<KMainWindow*>(parent()->parent())->actionCollection()->
+ action("move_tab_right")->setEnabled(true);
+ }
+}
+
+void TabbedWidget::mouseReleaseEvent(QMouseEvent* e)
+{
+ if (QWhatsThis::inWhatsThisMode()) return;
+
+ int position;
+ int width;
+
+ if (e->x() < 0)
+ return ;
+
+ for (position = 0, width = 0; (position < int(areas.count())) && (e->x() >= width); position++)
+ width += areas[position];
+
+ if ((e->x() <= width) && (e->button() == Qt::LeftButton) && !(current_position == position - 1))
+ {
+ if (pressed && pressed_position == (position - 1))
+ {
+ current_position = position - 1;
+
+ refreshBuffer();
+
+ emit itemSelected(items[current_position]);
+ }
+ }
+
+ pressed = false;
+}
+
+void TabbedWidget::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ if (QWhatsThis::inWhatsThisMode()) return;
+
+ int position;
+ int width;
+
+ inline_edit->hide();
+
+ if (e->x() < 0)
+ return ;
+
+ for (position = 0, width = 0; (position < int(areas.count())) && (e->x() >= width); position++)
+ width += areas[position];
+
+ if ((e->x() <= width) && (e->button() == Qt::LeftButton) && current_position == position - 1)
+ {
+ interactiveRename(position - 1);
+ }
+ else if ((e->x() > width) && (e->button() == Qt::LeftButton))
+ emit addItem();
+}
+
+void TabbedWidget::leaveEvent(QEvent* e)
+{
+ pressed = false;
+
+ QWidget::leaveEvent(e);
+}
+
+void TabbedWidget::paintEvent(QPaintEvent*)
+{
+ bitBlt(this, 0, 0, &buffer_image);
+}
+
+void TabbedWidget::refreshBuffer()
+{
+ /* Refreshes the back buffer. */
+
+ int x = 0;
+ QPainter painter;
+
+ buffer_image.resize(size());
+ painter.begin(&buffer_image);
+
+ if (useTranslucency())
+ painter.drawTiledPixmap(0, 0, width(), height(), desktop_image);
+ else
+ buffer_image.fill(Settings::skinbgcolor());
+
+ for (uint i = 0; i < items.count(); i++)
+ x = drawButton(i, painter);
+
+ painter.drawTiledPixmap(x, 0, width() - x, height(), background_image);
+
+ painter.end();
+
+ repaint();
+}
+
+const int TabbedWidget::drawButton(int position, QPainter& painter)
+{
+ /* Draws the tab buttons. */
+
+ static int x = 0;
+ QPixmap tmp_pixmap;
+
+ areas[position] = 0;
+ x = (!position) ? 0 : x;
+
+ // Initialize the painter.
+ painter.setPen(font_color);
+ painter.setFont((position == current_position) ? selected_font : unselected_font);
+
+ // Draw the left border.
+ if (position == current_position)
+ tmp_pixmap = selected_left_image;
+ else if (position != current_position + 1)
+ tmp_pixmap = separator_image;
+
+ painter.drawPixmap(x, 0, tmp_pixmap);
+ areas[position] += tmp_pixmap.width();
+ x += tmp_pixmap.width();
+
+ // Draw the main contents.
+ int width;
+ QFontMetrics metrics(painter.font());
+
+ width = metrics.width(captions[position]) + 10;
+
+ tmp_pixmap = (position == current_position) ? selected_image : unselected_image;
+ painter.drawTiledPixmap(x, 0, width, height(), tmp_pixmap);
+
+ painter.drawText(x, 0, width + 1, height() + 1,
+ Qt::AlignHCenter | Qt::AlignVCenter, captions[position]);
+
+ areas[position] += width;
+ x += width;
+
+ // Draw the right border if needed.
+ if (position == current_position)
+ {
+ painter.drawPixmap(x, 0, selected_right_image);
+ areas[position] += selected_right_image.width();
+ x += selected_right_image.width();
+ }
+ else if (position == (int) items.count() - 1)
+ {
+ painter.drawPixmap(x, 0, separator_image);
+ areas[position] += separator_image.width();
+ x += separator_image.width();
+ }
+
+ return x;
+}
+
+void TabbedWidget::slotUpdateBuffer(const QPixmap& pixmap)
+{
+ desktop_image = pixmap;
+
+ refreshBuffer();
+}
diff --git a/yakuake/src/tabbed_widget.h b/yakuake/src/tabbed_widget.h
new file mode 100644
index 0000000..f3a42b8
--- /dev/null
+++ b/yakuake/src/tabbed_widget.h
@@ -0,0 +1,149 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TABBED_WIDGET_H
+#define TABBED_WIDGET_H
+
+
+#include "translucent_widget.h"
+
+#include <qfont.h>
+#include <qcolor.h>
+#include <qpoint.h>
+#include <qpixmap.h>
+#include <qpainter.h>
+#include <qlineedit.h>
+#include <qvaluelist.h>
+#include <qfontmetrics.h>
+
+#include <klocale.h>
+#include <krootpixmap.h>
+#include <kinputdialog.h>
+
+
+class KPopupMenu;
+
+class TabbedWidget : public TranslucentWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit TabbedWidget(QWidget* parent = 0, const char* name = 0, bool translucency = false);
+ ~TabbedWidget();
+
+ int pressedPosition();
+ void resetPressedPosition() { pressed_position = -1; }
+
+ void addItem(int session_id);
+ int removeItem(int session_id);
+
+ int tabPositionForSessionId(int session_id);
+ int sessionIdForTabPosition(int position);
+
+ void selectItem(int session_id);
+ void selectPosition(int position);
+
+ void selectNextItem();
+ void selectPreviousItem();
+
+ void moveItemLeft();
+ void moveItemLeft(int position);
+
+ void moveItemRight();
+ void moveItemRight(int position);
+
+ const QString itemName(int session_id);
+ void renameItem(int session_id, const QString& name);
+
+ void interactiveRename();
+ void interactiveRename(int position);
+
+ void setFontColor(const QColor& color);
+ void setBackgroundPixmap(const QString& path);
+ void setSeparatorPixmap(const QString& path);
+
+ void setUnselectedPixmap(const QString& path);
+
+ void setSelectedPixmap(const QString& path);
+ void setSelectedLeftPixmap(const QString& path);
+ void setSelectedRightPixmap(const QString& path);
+
+ void refreshBuffer();
+
+
+ signals:
+ void addItem();
+ void itemSelected(int session_id);
+
+
+ protected:
+ virtual void keyPressEvent(QKeyEvent*);
+
+ virtual void wheelEvent(QWheelEvent*);
+ virtual void mousePressEvent(QMouseEvent*);
+ virtual void mouseReleaseEvent(QMouseEvent*);
+ virtual void mouseDoubleClickEvent(QMouseEvent*);
+
+ virtual void leaveEvent(QEvent*);
+
+ virtual void paintEvent(QPaintEvent*);
+
+
+ private:
+ void createContextMenu();
+ const int drawButton(int position, QPainter& painter);
+ QString defaultTabCaption(int session_id);
+ QString lowestAvailableCaption();
+
+ int current_position;
+ bool pressed;
+ int pressed_position;
+ int edited_position;
+
+ /* Tabs properties */
+ QColor font_color;
+ QFont selected_font;
+ QFont unselected_font;
+
+ /* Inline renaming */
+ QLineEdit* inline_edit;
+
+ /* Widget's pixmaps */
+ QPixmap background_image;
+
+ QPixmap separator_image;
+ QPixmap unselected_image;
+
+ QPixmap selected_image;
+ QPixmap selected_left_image;
+ QPixmap selected_right_image;
+
+ /* Widget's appearance */
+ QPixmap buffer_image;
+ QPixmap desktop_image;
+
+ /* Tabs value lists */
+ QValueList<int> items;
+ QValueList<int> areas;
+ QValueList<QString> captions;
+
+ KPopupMenu* context_menu;
+
+
+ private slots:
+ void slotRenameSelected();
+ void slotUpdateBuffer(const QPixmap& pixmap);
+ void slotResetEditedPosition();
+};
+
+#endif /* TABBED_WIDGET_H */
diff --git a/yakuake/src/terminal.cpp b/yakuake/src/terminal.cpp
new file mode 100644
index 0000000..f6777e3
--- /dev/null
+++ b/yakuake/src/terminal.cpp
@@ -0,0 +1,84 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "terminal.h"
+#include "terminal.moc"
+
+
+int Terminal::available_terminal_id = 0;
+
+Terminal::Terminal(QWidget* parent, const char* name) : QObject(parent, name)
+{
+ terminal_id = available_terminal_id;
+ available_terminal_id++;
+
+ setenv("DCOP_YAKUAKE_TERMINAL", QString::number(terminal_id).ascii(), 1);
+ putenv((char*)"COLORTERM="); // Trigger mc's color detection.
+
+ KLibFactory* factory = NULL;
+
+ terminal_part = NULL;
+ terminal_title = "";
+ terminal_widget = NULL;
+ terminal_interface = NULL;
+
+ if ((factory = KLibLoader::self()->factory("libkonsolepart")) != NULL)
+ terminal_part = (KParts::Part *) (factory->create(parent));
+
+ if (terminal_part != NULL)
+ {
+ terminal_widget = terminal_part->widget();
+ terminal_widget->setFocusPolicy(QWidget::WheelFocus);
+ terminal_interface = (TerminalInterface *) (terminal_part->qt_cast("TerminalInterface"));
+
+ connect(terminal_part, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+ connect(terminal_part, SIGNAL(setWindowCaption(const QString &)), this, SLOT(slotUpdateSessionTitle(const QString &)));
+ }
+}
+
+Terminal::~Terminal()
+{
+ emit destroyed(terminal_id);
+}
+
+QWidget* Terminal::widget()
+{
+ return terminal_widget;
+}
+
+TerminalInterface* Terminal::terminal()
+{
+ return terminal_interface;
+}
+
+const QString Terminal::title()
+{
+ return terminal_title;
+}
+
+void Terminal::setTitle(const QString& title)
+{
+ slotUpdateSessionTitle(title);
+}
+
+void Terminal::slotUpdateSessionTitle(const QString& title)
+{
+ terminal_title = title;
+
+ // Remove trailing " -" from the caption. If needed this is
+ // handled later in TitleBar.
+ if (terminal_title.endsWith(" - "))
+ terminal_title.truncate(terminal_title.length() - 3);
+
+ emit titleChanged(terminal_widget, terminal_title);
+}
diff --git a/yakuake/src/terminal.h b/yakuake/src/terminal.h
new file mode 100644
index 0000000..d18411b
--- /dev/null
+++ b/yakuake/src/terminal.h
@@ -0,0 +1,65 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TERMINAL_H
+#define TERMINAL_H
+
+
+#include <stdlib.h>
+
+#include <qobject.h>
+#include <qwidget.h>
+
+#include <klibloader.h>
+#include <kparts/part.h>
+#include <kde_terminal_interface.h>
+
+
+class Terminal : public QObject
+{
+ Q_OBJECT
+
+ public:
+ explicit Terminal(QWidget* parent = 0, const char* name = 0);
+ virtual ~Terminal();
+
+ int id() { return terminal_id; }
+
+ QWidget* widget();
+ TerminalInterface* terminal();
+
+ const QString title();
+ void setTitle(const QString& title);
+
+
+
+ signals:
+ void destroyed(int);
+ void titleChanged(QWidget*, const QString&);
+
+
+ private:
+ static int available_terminal_id;
+ int terminal_id;
+
+ KParts::Part* terminal_part;
+ QString terminal_title;
+ QWidget* terminal_widget;
+ TerminalInterface* terminal_interface;
+
+
+ private slots:
+ void slotUpdateSessionTitle(const QString &);
+};
+
+#endif /* TERMINAL_H */
diff --git a/yakuake/src/terminal_focus_watcher.cpp b/yakuake/src/terminal_focus_watcher.cpp
new file mode 100644
index 0000000..30cba55
--- /dev/null
+++ b/yakuake/src/terminal_focus_watcher.cpp
@@ -0,0 +1,32 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "terminal_focus_watcher.h"
+#include "terminal_focus_watcher.moc"
+
+
+TerminalFocusWatcher::TerminalFocusWatcher(QObject* parent, const char* name)
+ : QObject(parent, name)
+{
+}
+
+TerminalFocusWatcher::~TerminalFocusWatcher()
+{
+}
+
+bool TerminalFocusWatcher::eventFilter (QObject* /* watched */, QEvent* e)
+{
+ if (e->type() == QEvent::FocusIn)
+ emit focusChanged();
+
+ return false;
+}
diff --git a/yakuake/src/terminal_focus_watcher.h b/yakuake/src/terminal_focus_watcher.h
new file mode 100644
index 0000000..f5128e7
--- /dev/null
+++ b/yakuake/src/terminal_focus_watcher.h
@@ -0,0 +1,35 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TERMINAL_FOCUS_WATCHER_H
+#define TERMINAL_FOCUS_WATCHER_H
+
+
+#include <qobject.h>
+
+
+class TerminalFocusWatcher : public QObject
+{
+ Q_OBJECT
+
+ public:
+ explicit TerminalFocusWatcher(QObject* parent = 0, const char* name = 0);
+ virtual ~TerminalFocusWatcher();
+
+ virtual bool eventFilter (QObject* watched, QEvent* e);
+
+
+ signals:
+ void focusChanged();
+};
+
+#endif /* TERMINAL_FOCUS_WATCHER_H */
diff --git a/yakuake/src/terminal_splitter.cpp b/yakuake/src/terminal_splitter.cpp
new file mode 100644
index 0000000..b789de3
--- /dev/null
+++ b/yakuake/src/terminal_splitter.cpp
@@ -0,0 +1,121 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "terminal_splitter.h"
+#include "terminal_splitter.moc"
+
+#include <qobjectlist.h>
+
+
+TerminalSplitter::TerminalSplitter(Orientation o, QWidget* parent, const char* name)
+ : QSplitter(o, parent, name)
+{
+ is_shutting_down = false;
+}
+
+TerminalSplitter::~TerminalSplitter()
+{
+}
+
+void TerminalSplitter::setPrepareShutdown(bool shutdown)
+{
+ is_shutting_down = shutdown;
+}
+
+void TerminalSplitter::focusNext()
+{
+ focusNextPrevChild(true);
+}
+
+void TerminalSplitter::focusPrevious()
+{
+ focusNextPrevChild(false);
+}
+
+void TerminalSplitter::focusLast()
+{
+ if (is_shutting_down) return;
+
+ if (terminalCount(true) == 1)
+ {
+ QWidget* w = static_cast<QWidget*>(child(0, QCString("TEWidget"), true));
+ if (w) w->setFocus();
+ }
+ else
+ {
+ focusPrevious();
+ focusNext();
+ }
+}
+
+int TerminalSplitter::count()
+{
+ return (terminalCount() + splitterCount());
+}
+
+int TerminalSplitter::terminalCount(bool recursive)
+{
+ return queryList(QCString("TEWidget"), 0, false, recursive)->count();
+}
+
+int TerminalSplitter::splitterCount(bool recursive)
+{
+ return queryList(QCString("TerminalSplitter"), 0, false, recursive)->count();
+}
+
+bool TerminalSplitter::isFirst(QWidget* w)
+{
+ /* Return whether the widget w is the first in the splitter. */
+
+ if (idAfter(w) != 0)
+ return true;
+ else
+ return false;
+}
+
+void TerminalSplitter::recursiveCleanup()
+{
+ /* Clean away empty splitters after a terminal was removed. */
+
+ QObjectList* list = queryList("TerminalSplitter", 0, false, false);
+ QObjectListIt it(*list);
+ QObject *obj;
+
+ while ((obj = it.current()) != 0)
+ {
+ ++it;
+ TerminalSplitter* splitter = static_cast<TerminalSplitter*>(obj);
+ splitter->recursiveCleanup();
+ }
+
+ if (count() == 0)
+ deleteLater();
+ else
+ {
+ // Update minimum sizes.
+ if (orientation() == TerminalSplitter::Horizontal)
+ {
+ int minimumWidth = (terminalCount() > 1) ?
+ terminalCount()*150+handleWidth() : terminalCount()*150;
+
+ setMinimumSize(QSize(minimumWidth, minimumHeight()));
+
+ }
+ else if (orientation() == TerminalSplitter::Vertical)
+ {
+ int minimumHeight = (terminalCount() > 1) ?
+ terminalCount()*70+handleWidth() : terminalCount()*70;
+
+ setMinimumSize(QSize(minimumWidth(), minimumHeight));
+ }
+ }
+}
diff --git a/yakuake/src/terminal_splitter.h b/yakuake/src/terminal_splitter.h
new file mode 100644
index 0000000..484436f
--- /dev/null
+++ b/yakuake/src/terminal_splitter.h
@@ -0,0 +1,49 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TERMINAL_SPLITTER_H
+#define TERMINAL_SPLITTER_H
+
+
+#include <qsplitter.h>
+
+
+class TerminalSplitter : public QSplitter
+{
+ Q_OBJECT
+
+ public:
+ explicit TerminalSplitter(Orientation o, QWidget* parent=0, const char* name=0);
+ ~TerminalSplitter();
+
+ void focusNext();
+ void focusPrevious();
+ void focusLast();
+
+ int count();
+ int terminalCount(bool recursive = false);
+ int splitterCount(bool recursive = false);
+
+ bool isFirst(QWidget * w);
+
+ void recursiveCleanup();
+
+ void setPrepareShutdown(bool shutdown);
+
+
+ private:
+ bool is_shutting_down;
+
+};
+
+
+#endif /* TERMINAL_SPLITTER_H */
diff --git a/yakuake/src/title_bar.cpp b/yakuake/src/title_bar.cpp
new file mode 100644
index 0000000..fb8e4f6
--- /dev/null
+++ b/yakuake/src/title_bar.cpp
@@ -0,0 +1,192 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "title_bar.h"
+#include "title_bar.moc"
+
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+#include <klocale.h>
+
+
+TitleBar::TitleBar(QWidget * parent, const char * name, const QString & skin) : QWidget(parent, name)
+{
+ QWhatsThis::add(this, i18n("The title bar displays the session title if available."));
+
+ loadSkin(skin);
+
+ connect(focus_button, SIGNAL(toggled(bool)), parent, SLOT(slotSetFocusPolicy(bool)));
+ connect(quit_button, SIGNAL(clicked()), parent, SLOT(close()));
+}
+
+TitleBar::~TitleBar()
+{
+ delete config_button;
+ delete focus_button;
+ delete quit_button;
+}
+
+QRegion& TitleBar::getWidgetMask()
+{
+ return mask;
+}
+
+void TitleBar::setTitleText(const QString& title)
+{
+ if (title == title_text)
+ return;
+
+ title_text = title;
+ repaint();
+}
+
+void TitleBar::setFocusButtonEnabled(bool enable)
+{
+ focus_button->setToggled(enable);
+}
+
+void TitleBar::setConfigurationMenu(KPopupMenu* menu)
+{
+ config_button->setPopupMenu(menu);
+}
+
+void TitleBar::paintEvent(QPaintEvent*)
+{
+ QPainter painter(this);
+ QFont font(painter.font());
+
+ painter.drawTiledPixmap(0, 0, width(), height(), back_image);
+
+ painter.drawPixmap(0, 0, left_corner);
+ painter.drawPixmap(width() - right_corner.width(), 0, right_corner);
+
+ // Add " - " divider between title and skin text.
+ QString title_postfix(skin_text);
+ if (!title_postfix.isEmpty() && !title_text.isEmpty())
+ title_postfix.prepend(" - ");
+
+ font.setBold(true);
+ painter.setFont(font);
+ painter.setPen(text_color);
+ painter.drawText(text_position, title_text + title_postfix);
+
+ painter.end();
+}
+
+void TitleBar::resizeEvent(QResizeEvent *)
+{
+ updateWidgetMask();
+
+ config_button->move(width() - config_position.x(), config_position.y());
+ focus_button->move(width() - focus_position.x(), focus_position.y());
+ quit_button->move(width() - quit_position.x(), quit_position.y());
+}
+
+void TitleBar::loadSkin(const QString& skin)
+{
+ focus_button = new ImageButton(this, "Focus button");
+ focus_button->setToggleButton(true);
+ QToolTip::add(focus_button, i18n("Keep open when focus is lost"));
+
+ config_button = new ImageButton(this, "Configuration button");
+ QToolTip::add(config_button, i18n("Open Menu"));
+
+ quit_button = new ImageButton(this, "Quit button");
+ QToolTip::add(quit_button, i18n("Quit"));
+
+ setPixmaps(skin);
+
+ resize(width(), back_image.height());
+}
+
+void TitleBar::reloadSkin(const QString& skin)
+{
+ setPixmaps(skin);
+
+ resize(width(), back_image.height());
+
+ config_button->move(width() - config_position.x(), config_position.y());
+ focus_button->move(width() - focus_position.x(), focus_position.y());
+ quit_button->move(width() - quit_position.x(), quit_position.y());
+
+ updateWidgetMask();
+
+ repaint();
+}
+
+void TitleBar::setPixmaps(const QString& skin)
+{
+ /* Initialize the skin objects. */
+
+ QUrl url(locate("appdata", skin + "/title.skin"));
+ KConfig config(url.path());
+
+ // Load the text information.
+ config.setGroup("Text");
+
+ skin_text = config.readEntry("text", 0);
+
+ text_color.setRgb(config.readNumEntry("red", 0),
+ config.readNumEntry("green", 0),
+ config.readNumEntry("blue", 0));
+
+ text_position.setX(config.readNumEntry("x", 0));
+ text_position.setY(config.readNumEntry("y", 0));
+
+ // Load the background pixmaps.
+ config.setGroup("Background");
+
+ back_image.load(url.dirPath() + config.readEntry("back_image", ""));
+ left_corner.load(url.dirPath() + config.readEntry("left_corner", ""));
+ right_corner.load(url.dirPath() + config.readEntry("right_corner", ""));
+
+ // Load the stay button.
+ config.setGroup("FocusButton");
+
+ focus_position.setX(config.readNumEntry("x", 0));
+ focus_position.setY(config.readNumEntry("y", 0));
+ focus_button->setUpPixmap(url.dirPath() + config.readEntry("up_image", ""), true);
+ focus_button->setOverPixmap(url.dirPath() + config.readEntry("over_image", ""));
+ focus_button->setDownPixmap(url.dirPath() + config.readEntry("down_image", ""));
+
+ // Load the configuration button.
+ config.setGroup("ConfigButton");
+
+ config_position.setX(config.readNumEntry("x", 0));
+ config_position.setY(config.readNumEntry("y", 0));
+ config_button->setUpPixmap(url.dirPath() + config.readEntry("up_image", ""), true);
+ config_button->setOverPixmap(url.dirPath() + config.readEntry("over_image", ""));
+ config_button->setDownPixmap(url.dirPath() + config.readEntry("down_image", ""));
+
+ // Load the quit button.
+ config.setGroup("QuitButton");
+
+ quit_position.setX(config.readNumEntry("x", 0));
+ quit_position.setY(config.readNumEntry("y", 0));
+ quit_button->setUpPixmap(url.dirPath() + config.readEntry("up_image", ""), true);
+ quit_button->setOverPixmap(url.dirPath() + config.readEntry("over_image", ""));
+ quit_button->setDownPixmap(url.dirPath() + config.readEntry("down_image", ""));
+}
+
+void TitleBar::updateWidgetMask()
+{
+ QRegion temp_mask;
+
+ mask = QRegion(*left_corner.mask());
+ mask += QRegion(QRect(QPoint(left_corner.width(), 0), QPoint(width() - right_corner.width() - 1, height() - 1)));
+
+ temp_mask = QRegion(*right_corner.mask());
+ temp_mask.translate(width() - right_corner.width(), 0);
+ mask += temp_mask;
+}
diff --git a/yakuake/src/title_bar.h b/yakuake/src/title_bar.h
new file mode 100644
index 0000000..7b74d63
--- /dev/null
+++ b/yakuake/src/title_bar.h
@@ -0,0 +1,91 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
+ Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TITLE_BAR_H
+# define TITLE_BAR_H
+
+#include "image_button.h"
+
+#include <qurl.h>
+#include <qcolor.h>
+#include <qpoint.h>
+#include <qbitmap.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+#include <qpainter.h>
+#include <qpushbutton.h>
+
+
+#include <kconfig.h>
+#include <kpopupmenu.h>
+#include <kapplication.h>
+#include <kstandarddirs.h>
+
+
+class TitleBar : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit TitleBar(QWidget * parent = 0, const char * name = 0, const QString & skin = "default");
+ ~TitleBar();
+
+ QRegion& getWidgetMask();
+
+ void setTitleText(const QString& title);
+
+ void setFocusButtonEnabled(bool enable);
+
+ void setConfigurationMenu(KPopupMenu* menu);
+
+ void reloadSkin(const QString& skin);
+
+
+ protected:
+ virtual void paintEvent(QPaintEvent*);
+ virtual void resizeEvent(QResizeEvent*);
+
+
+ private:
+ void setPixmaps(const QString& skin);
+ void loadSkin(const QString& skin);
+ void updateWidgetMask();
+
+ /* Widget's mask */
+ QRegion mask;
+
+ /* Text properties */
+ QString title_text;
+ QString skin_text;
+ QColor text_color;
+ QPoint text_position;
+
+ /* Widget's pixmaps */
+ QPixmap back_image;
+ QPixmap left_corner;
+ QPixmap right_corner;
+
+ /* Quit button */
+ QPoint quit_position;
+ ImageButton* quit_button;
+
+ /* Focus button */
+ QPoint focus_position;
+ ImageButton* focus_button;
+
+ /* Configure button */
+ QPoint config_position;
+ ImageButton* config_button;
+};
+
+#endif /* TITLE_BAR_H */
diff --git a/yakuake/src/translucent_widget.cpp b/yakuake/src/translucent_widget.cpp
new file mode 100644
index 0000000..1b67591
--- /dev/null
+++ b/yakuake/src/translucent_widget.cpp
@@ -0,0 +1,44 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#include "translucent_widget.h"
+#include "translucent_widget.moc"
+
+#include <krootpixmap.h>
+
+
+TranslucentWidget::TranslucentWidget(QWidget* parent, const char* name, bool translucency) : QWidget(parent, name)
+{
+ use_translucency = translucency;
+
+ root_pixmap = NULL;
+
+ if (use_translucency)
+ {
+ root_pixmap = new KRootPixmap(this);
+ root_pixmap->start();
+ }
+}
+
+TranslucentWidget::~TranslucentWidget()
+{
+ if (root_pixmap) delete root_pixmap;
+}
+
+void TranslucentWidget::slotUpdateBackground()
+{
+
+ // This is wired up to KApplication::backgroundChanged and needed
+ // to kick KRootPixmap into updating the background again, which
+ // it likes to forget after having been moved off-screen.
+ if (root_pixmap) root_pixmap->repaint(true);
+}
diff --git a/yakuake/src/translucent_widget.h b/yakuake/src/translucent_widget.h
new file mode 100644
index 0000000..dd2cfff
--- /dev/null
+++ b/yakuake/src/translucent_widget.h
@@ -0,0 +1,45 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2007 Eike Hein <hein@kde.org>
+*/
+
+
+#ifndef TRANSLUCENT_WIDGET_H
+#define TRANSLUCENT_WIDGET_H
+
+
+#include <qwidget.h>
+
+
+class KRootPixmap;
+
+
+class TranslucentWidget : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit TranslucentWidget(QWidget* parent = 0, const char* name = 0, bool translucency = false);
+ virtual ~TranslucentWidget();
+
+
+ public slots:
+ void slotUpdateBackground();
+
+
+ protected:
+ bool useTranslucency() { return use_translucency; }
+ void setUseTranslucency(bool translucency) { use_translucency = translucency; }
+
+ KRootPixmap* root_pixmap;
+ bool use_translucency;
+};
+
+
+#endif /* TRANSLUCENT_WIDGET_H */
diff --git a/yakuake/src/yakuake.desktop b/yakuake/src/yakuake.desktop
new file mode 100644
index 0000000..8d4afd1
--- /dev/null
+++ b/yakuake/src/yakuake.desktop
@@ -0,0 +1,34 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Yakuake
+Name[xx]=xxYakuakexx
+Exec=yakuake
+Icon=yakuake
+Type=Application
+Categories=Qt;KDE;System;TerminalEmulator;
+Comment=A Quake-style terminal emulator based on KDE Konsole technology.
+Comment[ar]=مضاهي نافذة أوامر من نوع Quake معتمد على تقنية KDE Konsole.
+Comment[bg]=Терминален емулатор в стил Quake, базиран на конзолната технология на KDE.
+Comment[da]=En Quake-lignende terminalemulator baseret på teknologi fra KDE's program Konsole.
+Comment[de]=Ein der Quake-Konsole nachempfundener Terminalemulator basierend auf KDE Konsole.
+Comment[el]=Μία εφαρμογή τερματικού σε στυλ Quake, βασισμένη στην τεχνολογία του KDE Konsole.
+Comment[es]=Un emulador de terminal tipo Quake basado en la tecnología de KDE Konsole.
+Comment[et]=Quake'i stiilis terminaliemulaator, mille aluseks on KDE Konsooli tehnoloogia.
+Comment[fr]=Un émulateur dans le style de Quake basé sur la technologie Konsole de KDE.
+Comment[ga]=Aithriseoir teirminéil de chineál Quake, bunaithe ar theicneolaíocht Konsole KDE.
+Comment[gl]=Unha terminal ao estilo de Quake baseada en Konsole.
+Comment[it]=Un emulatore di terminale sullo stile di Quake basato sulla tecnologia di KDE Konsole.
+Comment[ja]=KDE Konsole のテクノロジーに基づく Quake スタイルのターミナルエミュレータ
+Comment[mk]=Терминал во стилот на Quake базиран врз технологијата на Конзолата на KDE.
+Comment[nl]=Een Quake-achtige terminalemulator, gebaseerd op de technologie van KDE's Konsole
+Comment[pt]=Um emulador de terminal do estilo do Quake, baseado na tecnologia do Konsole do KDE.
+Comment[pt_BR]=Um emulador de terminal do estilo do Quake, baseado na tecnologia do Konsole do KDE.
+Comment[sk]=Emulátor terminálu v štýle Quake založený na KDE Konsole technológii.
+Comment[sr]=Емулатор терминала у Quake стилу базиран на KDE Konsole технологији.
+Comment[sr@Latn]=Emulator terminala u Quake stilu baziran na KDE Konsole tehnologiji.
+Comment[sv]=En Quake-liknande terminalemulator baserad på teknologi från KDE:s Terminal.
+Comment[tr]=KDE Konsole teknolojisi üzerine kurulu Quake stili bir terminal emülatörü.
+Comment[uk]=Емулятор терміналу в стилі Quake, оснований на технології консолі KDE.
+Comment[xx]=xxA Quake-style terminal emulator based on KDE Konsole technology.xx
+X-KDE-StartupNotify=false
+X-DCOP-ServiceType=Unique
diff --git a/yakuake/src/yakuake.kcfg b/yakuake/src/yakuake.kcfg
new file mode 100644
index 0000000..9d68123
--- /dev/null
+++ b/yakuake/src/yakuake.kcfg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <kcfgfile name="yakuakerc" />
+
+ <group name="Options">
+ <entry key="firstrun" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="skin" type="String">
+ <default>default</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="skinbgcolor" type="Color">
+ <default>#000000</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="steps" type="Int">
+ <default>20</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="width" type="Int">
+ <default>90</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="height" type="Int">
+ <default>50</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="screen" type="Int">
+ <default>1</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="location" type="Int">
+ <default>50</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="tabs" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="translucency" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="focus" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="focusontoggle" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="keepabove" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="popup" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="confirmquit" type="Bool">
+ <default>true</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="poll" type="Bool">
+ <default>false</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+ <entry key="pollinterval" type="Int">
+ <default>500</default>
+ <label></label>
+ <whatsthis></whatsthis>
+ </entry>
+</group>
+</kcfg>