upload tizen1.0 source
authorKim Kibum <kb0929.kim@samsung.com>
Sun, 29 Apr 2012 08:00:01 +0000 (17:00 +0900)
committerKim Kibum <kb0929.kim@samsung.com>
Sun, 29 Apr 2012 08:00:01 +0000 (17:00 +0900)
50 files changed:
comp-slp/src/e_mod_comp.c
comp-slp/src/e_mod_comp_animation.c
comp-slp/src/e_mod_comp_atoms.c
comp-slp/src/e_mod_comp_atoms.h
comp-slp/src/e_mod_comp_debug.c
comp-slp/src/e_mod_comp_effect_tm.c
comp-slp/src/e_mod_comp_shared_types.h
comp-slp/src/e_mod_comp_util.h
comp-slp/src/e_mod_comp_win_type.c
comp-slp/src/e_mod_config.c
comp-slp/src/e_mod_main.c
comp-slp/src/e_mod_main.h
debian/changelog
debian/control
debian/rules
illume2-slp/src/e_illume.c
illume2-slp/src/e_illume.h
illume2-slp/src/e_mod_policy.c
illume2-slp/src/e_mod_quickpanel.c
illume2-slp/src/policies/illume/policy.c
illume2-slp/src/policies/illume/policy.h
keyrouter/src/e_mod_main.c
keyrouter/src/e_mod_main.h
move-slp/AUTHORS [new file with mode: 0644]
move-slp/COPYING [new file with mode: 0644]
move-slp/ChangeLog [new file with mode: 0644]
move-slp/INSTALL [new file with mode: 0644]
move-slp/Makefile.am [new file with mode: 0644]
move-slp/NEWS [new file with mode: 0644]
move-slp/README [new file with mode: 0644]
move-slp/autogen.sh [new file with mode: 0755]
move-slp/configure.ac [new file with mode: 0755]
move-slp/m4/ac_attribute.m4 [new file with mode: 0644]
move-slp/m4/libtool.m4 [new file with mode: 0644]
move-slp/m4/ltoptions.m4 [new file with mode: 0644]
move-slp/m4/ltsugar.m4 [new file with mode: 0644]
move-slp/m4/ltversion.m4 [new file with mode: 0644]
move-slp/m4/lt~obsolete.m4 [new file with mode: 0644]
move-slp/module.desktop.in [new file with mode: 0755]
move-slp/src/Makefile.am [new file with mode: 0644]
move-slp/src/e_mod_data.h [new file with mode: 0644]
move-slp/src/e_mod_main.c [new file with mode: 0644]
move-slp/src/e_mod_main.h [new file with mode: 0644]
move-slp/src/e_mod_move.c [new file with mode: 0644]
move-slp/src/e_mod_move.h [new file with mode: 0644]
move-slp/src/e_mod_move_event.c [new file with mode: 0644]
move-slp/src/e_mod_move_event.h [new file with mode: 0644]
move-slp/src/e_mod_move_win_type.c [new file with mode: 0644]
move-slp/src/e_mod_move_win_type.h [new file with mode: 0644]
packaging/e17-extra-modules.spec

index 48d33ea..893d455 100644 (file)
@@ -51,7 +51,6 @@ static void         _e_mod_comp_win_render_queue(E_Comp_Win *cw);
 static void         _e_mod_comp_x_grab_set(E_Comp *c, Eina_Bool grab);
 static Evas_Object *_e_mod_comp_win_mirror_add(E_Comp_Win *cw);
 static void         _e_mod_comp_src_hidden_set_func(void *data, E_Manager *man, E_Manager_Comp_Source *src, Eina_Bool hidden);
-void                ecore_x_e_comp_dri_buff_flip_supported_set(Ecore_X_Window root, Eina_Bool enabled);
 
 EINTERN Eina_Bool
 e_mod_comp_comp_event_src_visibility_send(E_Comp_Win *cw)
@@ -801,6 +800,7 @@ _e_mod_comp_cb_update(E_Comp *c)
           {
              if (!cw) continue;
              ecore_x_sync_counter_inc(cw->counter, 1);
+             cw->sync_info.val++;
           }
      }
    e_mod_comp_win_shape_input_update(c);
@@ -1008,6 +1008,7 @@ _e_mod_comp_object_del(void *data,
              Ecore_X_Window _w = e_mod_comp_util_client_xid_get(cw);
              ecore_x_e_comp_sync_cancel_send(_w);
              ecore_x_sync_counter_inc(cw->counter, 1);
+             cw->sync_info.val++;
           }
         if (cw->bd) eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw);
         cw->bd = NULL;
@@ -1213,12 +1214,14 @@ _e_mod_comp_win_sync_setup(E_Comp_Win *cw,
                  client_cw->counter == cw->counter)
                {
                   ecore_x_sync_counter_inc(cw->counter, 1);
+                  cw->sync_info.val++;
                   return;
                }
           }
 
         ecore_x_e_comp_sync_begin_send(win);
         ecore_x_sync_counter_inc(cw->counter, 1);
+        cw->sync_info.val++;
      }
 }
 
@@ -2241,7 +2244,6 @@ _e_mod_comp_destroy(void *data __UNUSED__,
    Ecore_X_Event_Window_Destroy *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->win);
    if (!cw) return ECORE_CALLBACK_PASS_ON;
-   if (_e_mod_comp_win_is_border(cw)) return ECORE_CALLBACK_PASS_ON;
    L(LT_EVENT_X,
      "[COMP] ev:%15.15s w:0x%08x bd:%d c:0x%08x cw:%p\n",
      "X_DESTROY", ev->win, _e_mod_comp_win_is_border(cw),
@@ -2511,11 +2513,11 @@ _e_mod_comp_prop_illume_window_state(Ecore_X_Event_Window_Property *ev)
    state = cw->bd->client.illume.win_state.state;
    switch (state)
      {
-      case ECORE_X_ILLUME_WINDOW_STATE_INSET:
+      case E_COMP_ILLUME_WINDOW_STATE_INSET:
         e_mod_comp_effect_signal_add
           (cw, cw->shobj, "e,state,shadow,on", "e");
         break;
-      case ECORE_X_ILLUME_WINDOW_STATE_NORMAL:
+      case E_COMP_ILLUME_WINDOW_STATE_NORMAL:
       default:
         e_mod_comp_effect_signal_add
           (cw, cw->shobj, "e,state,shadow,off", "e");
@@ -2541,12 +2543,14 @@ _e_mod_comp_prop_sync_counter(Ecore_X_Event_Window_Property *ev)
                {
                   ecore_x_e_comp_sync_cancel_send(_w);
                   ecore_x_sync_counter_inc(cw->counter, 1);
+                  cw->sync_info.val++;
                }
              cw->counter = counter;
              if (cw->counter)
                {
                   ecore_x_sync_counter_inc(cw->counter, 1);
                   ecore_x_e_comp_sync_begin_send(_w);
+                  cw->sync_info.val = 1;
                }
           }
      }
@@ -2579,7 +2583,7 @@ _e_mod_comp_property(void *data __UNUSED__,
    else if (a == ATOM_WINDOW_EFFECT_ENABLE                ) _e_mod_comp_prop_window_effect_state(ev);
    else if (a == ATOM_WINDOW_EFFECT_TYPE                  ) _e_mod_comp_prop_effect_style(ev);
    else if (a == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY       ) _e_mod_comp_prop_opacity(ev);
-   else if (a == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE       ) _e_mod_comp_prop_illume_window_state(ev);
+   else if (a == ATOM_ILLUME_WINDOW_STATE                 ) _e_mod_comp_prop_illume_window_state(ev);
    else if (a == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) e_mod_comp_effect_win_rotation_handler_prop(ev);
    else if (a == ECORE_X_ATOM_WM_CLASS                    ) e_mod_comp_win_type_handler_prop(ev);
    else if (a == ATOM_NET_CM_WINDOW_BACKGROUND            ) e_mod_comp_bg_win_handler_prop(ev);
@@ -2599,6 +2603,7 @@ _e_mod_comp_msg_sync_draw_done(Ecore_X_Event_Client_Message *ev)
    h = ev->data.l[3];
    if (cw)
      {
+        cw->sync_info.version = v;
         if (!cw->bd) return EINA_FALSE;
         if ((Ecore_X_Window)(ev->data.l[0]) != cw->bd->client.win) return EINA_FALSE;
      }
@@ -2623,6 +2628,8 @@ _e_mod_comp_msg_sync_draw_done(Ecore_X_Event_Client_Message *ev)
           {
              ecore_x_sync_counter_inc(cw->counter, 1);
              ecore_x_e_comp_sync_begin_send(e_mod_comp_util_client_xid_get(cw));
+             cw->sync_info.val = 1;
+             cw->sync_info.done_count = 1;
           }
         L(LT_EVENT_X,
           "[COMP] ev:%15.15s w:0x%08x type:%s !cw->counter v%d %03dx%03d\n",
@@ -2643,6 +2650,7 @@ _e_mod_comp_msg_sync_draw_done(Ecore_X_Event_Client_Message *ev)
      }
 
    cw->drawme = 1;
+   cw->sync_info.done_count++;
 
    L(LT_EVENT_X,
      "[COMP] ev:%15.15s w:0x%08x type:%s v%d %03dx%03d\n",
@@ -2864,8 +2872,6 @@ _e_mod_comp_bd_del(void *data __UNUSED__,
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (cw->bd == ev->border) _e_mod_comp_object_del(cw, ev->border);
-   if (cw->animating) cw->delete_me = 1;
-   else _e_mod_comp_win_del(cw);
    return ECORE_CALLBACK_PASS_ON;
 }
 
@@ -3360,7 +3366,7 @@ _e_mod_comp_add(E_Manager *man)
 
    if (c->man->num == 0) e_alert_composite_win = c->win;
 
-   if (_comp_mod->conf->engine == E_EVAS_ENGINE_GL_X11)
+   if (_comp_mod->conf->engine == ENGINE_GL)
      {
         int opt[20];
         int opt_i = 0;
@@ -3399,7 +3405,7 @@ _e_mod_comp_add(E_Manager *man)
      }
    if (!c->ee)
      {
-        if (_comp_mod->conf->engine == E_EVAS_ENGINE_GL_X11)
+        if (_comp_mod->conf->engine == ENGINE_GL)
           {
              e_util_dialog_internal
                (_("Compositor Warning"),
@@ -3420,9 +3426,6 @@ _e_mod_comp_add(E_Manager *man)
    c->ee_win = ecore_evas_window_get(c->ee);
    ecore_x_screen_is_composited_set(c->man->num, c->ee_win);
 
-   ecore_x_e_comp_dri_buff_flip_supported_set
-     (c->man->root, _comp_mod->conf->dri_buff_flip);
-
    ecore_x_composite_redirect_subwindows
      (c->man->root, ECORE_X_COMPOSITE_UPDATE_MANUAL);
 
@@ -3543,6 +3546,7 @@ _e_mod_comp_del(E_Comp *c)
           {
              ecore_x_sync_counter_free(cw->counter);
              cw->counter = 0;
+             cw->sync_info.val = 0;
           }
         cw->force = 1;
         _e_mod_comp_win_hide(cw);
@@ -3559,7 +3563,6 @@ _e_mod_comp_del(E_Comp *c)
    if (c->update_job) ecore_job_del(c->update_job);
    if (c->wins_list) eina_list_free(c->wins_list);
 
-   ecore_x_e_comp_dri_buff_flip_supported_set(c->man->root, 0);
    ecore_x_window_free(c->cm_selection);
    ecore_x_screen_is_composited_set(c->man->num, 0);
    ecore_x_e_comp_sync_supported_set(c->man->root, 0);
index 0683678..fa24261 100644 (file)
@@ -21,11 +21,18 @@ e_mod_comp_animation_transfer_new(void)
 EINTERN void
 e_mod_comp_animation_transfer_free(E_Comp_Transfer *tr)
 {
+   E_Comp_Win *cw = NULL;
    E_CHECK(tr);
    transfers = eina_list_remove(transfers, tr);
    if (tr->animator)
      ecore_animator_del(tr->animator);
    tr->animator = NULL;
+   if (tr->obj)
+     {
+        cw = evas_object_data_get(tr->obj, "src");
+        if (cw) cw->transfer = NULL;
+     }
+   tr->obj = NULL;
    E_FREE(tr);
 }
 
@@ -194,6 +201,7 @@ e_mod_comp_animation_transfer_list_clear(void)
         if (!tr) continue;
         e_mod_comp_animation_transfer_free(tr);
      }
+   transfers = NULL;
    return EINA_TRUE;
 }
 
index c80b8f4..4ee670a 100644 (file)
@@ -38,6 +38,7 @@ EINTERN Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_REQUEST_DONE  = 0;
 EINTERN Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_RESIZE_PIXMAP = 0;
 EINTERN Ecore_X_Atom ATOM_CAPTURE_EFFECT                   = 0;
 EINTERN Ecore_X_Atom ATOM_NET_CM_WINDOW_BACKGROUND         = 0;
+EINTERN Ecore_X_Atom ATOM_ILLUME_WINDOW_STATE              = 0;
 
 /* local subsystem globals */
 static Eina_Hash *atoms_hash = NULL;
@@ -77,14 +78,14 @@ static const char *atom_names[] = {
   "_E_COMP_PIXMAP_ROTATION_REQUEST_DONE",
   "_E_COMP_PIXMAP_ROTATION_RESIZE_PIXMAP",
   "_E_COMP_CAPTURE_EFFECT",
-  "_NET_CM_WINDOW_BACKGROUND"
+  "_NET_CM_WINDOW_BACKGROUND",
+  "_E_ILLUME_WINDOW_STATE"
 };
 
 static const char *external_atom_names[] = {
   "SYNC_DRAW_DONE",
   "SYNC_COUNTER",
   "WIN_ROT_ANGLE",
-  "ILLUME_WIN_STATE",
   "WM_WINDOW_OPACITY",
   "WM_CLASS"
 };
@@ -141,6 +142,7 @@ e_mod_comp_atoms_init(void)
    ATOM_CM_PIXMAP_ROTATION_RESIZE_PIXMAP = atoms[i++];
    ATOM_CAPTURE_EFFECT                   = atoms[i++];
    ATOM_NET_CM_WINDOW_BACKGROUND         = atoms[i++];
+   ATOM_ILLUME_WINDOW_STATE              = atoms[i++];
 
    for (i = 0; i < n; i++)
      {
@@ -154,7 +156,6 @@ e_mod_comp_atoms_init(void)
    eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE),        external_atom_names[i++]);
    eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_COMP_SYNC_COUNTER),          external_atom_names[i++]);
    eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE), external_atom_names[i++]);
-   eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_ILLUME_WINDOW_STATE),        external_atom_names[i++]);
    eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_NET_WM_WINDOW_OPACITY),        external_atom_names[i++]);
    eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_WM_CLASS),                     external_atom_names[i++]);
 
index a04d455..2d3ae89 100644 (file)
@@ -39,6 +39,7 @@ extern EINTERN Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_REQUEST_DONE;
 extern EINTERN Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_RESIZE_PIXMAP;
 extern EINTERN Ecore_X_Atom ATOM_CAPTURE_EFFECT;
 extern EINTERN Ecore_X_Atom ATOM_NET_CM_WINDOW_BACKGROUND;
+extern EINTERN Ecore_X_Atom ATOM_ILLUME_WINDOW_STATE;
 
 EINTERN int         e_mod_comp_atoms_init(void);
 EINTERN int         e_mod_comp_atoms_shutdown(void);
index 00e3c8d..6209f7c 100644 (file)
@@ -82,7 +82,7 @@ e_mod_comp_debug_info_dump(Eina_Bool to_file,
 
    i = 1;
    fprintf(fs, "--------------------------------------------------------------------------------------------------------------------------------------\n");
-   fprintf(fs, " No     WinID      shobj        obj    found_o    x    y    w    h   ex   ey   ew   eh | W S O\n");
+   fprintf(fs, " No     WinID      shobj        obj    found_o    x    y    w    h   ex   ey   ew   eh | W S O | V SYNC  DMG DONE |\n");
    fprintf(fs, "--------------------------------------------------------------------------------------------------------------------------------------\n");
    Evas_Object *o = evas_object_top_get(c->evas);
    Eina_Bool found = 0;
@@ -109,7 +109,7 @@ e_mod_comp_debug_info_dump(Eina_Bool to_file,
         if (found && cw->visible)
           {
              fprintf(fs,
-                     " %2d 0x%07x 0x%08x 0x%08x 0x%08x %4d,%4d %4dx%4d %4d,%4d %4dx%4d | %s %s %s %4d, %s, %s\n",
+                     " %2d 0x%07x 0x%08x 0x%08x 0x%08x %4d,%4d %4dx%4d %4d,%4d %4dx%4d | %s %s %s | %d %4d %4d %4d | %4d, %s, %s\n",
                      i,
                      e_mod_comp_util_client_xid_get(cw),
                      (unsigned int)cw->shobj,
@@ -120,6 +120,10 @@ e_mod_comp_debug_info_dump(Eina_Bool to_file,
                      cw->visible ? "O" : "X",
                      evas_object_visible_get(cw->shobj) ? "O" : "X",
                      evas_object_visible_get(o) ? "O" : "X",
+                     cw->sync_info.version,
+                     cw->sync_info.val,
+                     cw->dmg_updates,
+                     cw->sync_info.done_count,
                      pid, wname, wclas);
           }
         else if (o == c->bg_img)
@@ -133,7 +137,7 @@ e_mod_comp_debug_info_dump(Eina_Bool to_file,
              if (found)
                {
                   fprintf(fs,
-                          " %2d 0x%07x 0x%08x 0x%08x 0x%08x %4d,%4d %4dx%4d %4d,%4d %4dx%4d | %s %s %s %4d, %s, %s\n",
+                          " %2d 0x%07x 0x%08x 0x%08x 0x%08x %4d,%4d %4dx%4d %4d,%4d %4dx%4d | %s %s %s | %d %4d %4d %4d | %4d, %s, %s\n",
                           i,
                           e_mod_comp_util_client_xid_get(cw),
                           (unsigned int)cw->shobj,
@@ -144,6 +148,10 @@ e_mod_comp_debug_info_dump(Eina_Bool to_file,
                           cw->visible ? "O" : "X",
                           evas_object_visible_get(cw->shobj) ? "O" : "X",
                           evas_object_visible_get(o) ? "O" : "X",
+                          cw->sync_info.version,
+                          cw->sync_info.val,
+                          cw->dmg_updates,
+                          cw->sync_info.done_count,
                           pid, wname, wclas);
                }
              else
index 91b0e34..1363838 100644 (file)
@@ -123,10 +123,10 @@ e_mod_comp_effect_tm_raise_above(E_Comp_Win *cw,
    E_CHECK_RETURN(cw, 0);
    E_CHECK_RETURN(cw->c, 0);
 
+   cw->defer_raise = EINA_TRUE;
    raise = e_mod_comp_policy_win_restack_check(cw, cw2);
    E_CHECK_RETURN(raise, 0);
 
-   cw->defer_raise = EINA_TRUE;
    cw->c->switcher_animating = EINA_TRUE;
 
    e_mod_comp_animation_transfer_list_clear();
index 4cd5a0e..e139306 100644 (file)
@@ -89,6 +89,11 @@ struct _E_Comp_Win
    E_Update                   *up; // update handler
    E_Object_Delfn             *dfn; // delete function handle for objects being tracked
    Ecore_X_Sync_Counter        counter; // sync counter for syncronised drawing
+   struct {
+      int                      version; // version of efl sync
+      int                      val; // sync value
+      int                      done_count; // draw done event count
+   } sync_info;
    Ecore_Timer                *update_timeout; // max time between damage and "done" event
    int                         dmg_updates; // num of damage event updates since a redirect
    Ecore_X_Rectangle          *rects; // shape rects... if shaped :(
@@ -141,5 +146,11 @@ struct _E_Comp_Win
    Eina_Bool                   move_lock : 1; // lock / unlock evas_object's move. evas_object represents window.
 };
 
+typedef enum _E_Comp_Illume_Window_State
+{
+   E_COMP_ILLUME_WINDOW_STATE_NORMAL = 0,
+   E_COMP_ILLUME_WINDOW_STATE_INSET
+} E_Comp_Illume_Window_State;
+
 #endif
 #endif
index a01c6ec..275a2c6 100644 (file)
@@ -15,7 +15,7 @@
 
 #define STATE_INSET_CHECK(a) \
    ((a->bd) && \
-    (a->bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_INSET))
+    (a->bd->client.illume.win_state.state == E_COMP_ILLUME_WINDOW_STATE_INSET))
 
 EINTERN void           e_mod_comp_util_set(E_Comp *c, E_Manager *man);
 EINTERN E_Comp        *e_mod_comp_util_get(void);
index 55d3dcc..30c0269 100644 (file)
@@ -6,6 +6,7 @@ typedef enum _E_Comp_Win_Class_Type
 {
    E_COMP_WIN_CLASS_TYPE_UNKNOWN = 0,
    E_COMP_WIN_CLASS_TYPE_NORMAL,
+   E_COMP_WIN_CLASS_TYPE_MENUSCREEN,
    E_COMP_WIN_CLASS_TYPE_QUICKPANEL_BASE,
    E_COMP_WIN_CLASS_TYPE_QUICKPANEL,
    E_COMP_WIN_CLASS_TYPE_TASKMANAGER,
@@ -41,6 +42,7 @@ static E_Comp_Win_Type _ecore_type_to_e_comp_type(Ecore_X_Window_Type t);
 static const char *win_class[] =
 {
    "NORMAL_WINDOW",
+   "MENU_SCREEN",
    "QUICKPANEL_BASE",
    "QUICKPANEL",
    "TASK_MANAGER",
@@ -76,6 +78,7 @@ static const char *win_name[] =
 static E_Comp_Win_Class_Type win_class_vals[] =
 {
    E_COMP_WIN_CLASS_TYPE_NORMAL,
+   E_COMP_WIN_CLASS_TYPE_MENUSCREEN,
    E_COMP_WIN_CLASS_TYPE_QUICKPANEL_BASE,
    E_COMP_WIN_CLASS_TYPE_QUICKPANEL,
    E_COMP_WIN_CLASS_TYPE_TASKMANAGER,
@@ -194,6 +197,9 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
 
    switch (ctype)
      {
+      case E_COMP_WIN_CLASS_TYPE_MENUSCREEN:
+         res = E_COMP_WIN_TYPE_MENUSCREEN;
+         break;
       case E_COMP_WIN_CLASS_TYPE_QUICKPANEL_BASE:
          res = E_COMP_WIN_TYPE_QUICKPANEL_BASE;
          break;
@@ -240,8 +246,6 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
            res = E_COMP_WIN_TYPE_BACKGROUND;
          break;
       default:
-         if (ntype == E_COMP_WIN_NAME_TYPE_MENUSCREEN)
-           res = E_COMP_WIN_TYPE_MENUSCREEN;
          break;
      }
 
index 8df43f1..0aecb3f 100644 (file)
@@ -119,9 +119,9 @@ _create_data(E_Config_Dialog *cfd)
 
    cfdata->use_shadow = _comp_mod->conf->use_shadow;
    cfdata->engine = _comp_mod->conf->engine;
-   if ((cfdata->engine != E_EVAS_ENGINE_SOFTWARE_X11) &&
-       (cfdata->engine != E_EVAS_ENGINE_GL_X11))
-     cfdata->engine = E_EVAS_ENGINE_SOFTWARE_X11;
+   if ((cfdata->engine != ENGINE_SW) &&
+       (cfdata->engine != ENGINE_GL))
+     cfdata->engine = ENGINE_SW;
    cfdata->indirect = _comp_mod->conf->indirect;
    cfdata->texture_from_pixmap = _comp_mod->conf->texture_from_pixmap;
    cfdata->smooth_windows = _comp_mod->conf->smooth_windows;
@@ -1025,11 +1025,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
 
    ol = e_widget_list_add(evas, 0, 0);
    rg = e_widget_radio_group_new(&(cfdata->engine));
-   ob = e_widget_radio_add(evas, _("Software"), E_EVAS_ENGINE_SOFTWARE_X11, rg);
+   ob = e_widget_radio_add(evas, _("Software"), ENGINE_SW, rg);
    e_widget_list_object_append(ol, ob, 1, 1, 0.5);
    if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))
      {
-        ob = e_widget_radio_add(evas, _("OpenGL"), E_EVAS_ENGINE_GL_X11, rg);
+        ob = e_widget_radio_add(evas, _("OpenGL"), ENGINE_GL, rg);
         e_widget_list_object_append(ol, ob, 1, 1, 0.5);
 
         of = e_widget_framelist_add(evas, _("OpenGL options"), 0);
index b114d31..a773ff8 100644 (file)
@@ -93,7 +93,7 @@ e_modapi_init(E_Module *m)
         mod->conf->use_shadow = 0;
         mod->conf->shadow_file = NULL;
         mod->conf->shadow_style = eina_stringshare_add("default");
-        mod->conf->engine = E_EVAS_ENGINE_GL_X11;
+        mod->conf->engine = ENGINE_GL;
         mod->conf->indirect = 0;
         mod->conf->texture_from_pixmap = 1;
         mod->conf->lock_fps = 0;
@@ -165,7 +165,7 @@ _e_mod_config_new(E_Module *m)
    mod->conf->use_shadow = 1;
    mod->conf->shadow_file = NULL;
    mod->conf->shadow_style = eina_stringshare_add("default");
-   mod->conf->engine = E_EVAS_ENGINE_SOFTWARE_X11;
+   mod->conf->engine = ENGINE_SW;
    mod->conf->indirect = 0;
    mod->conf->texture_from_pixmap = 0;
    mod->conf->lock_fps = 0;
index 4a80d86..8f006c6 100644 (file)
@@ -95,4 +95,7 @@ EAPI int   e_modapi_info     (E_Module *m);
 void _e_mod_config_new(E_Module *m);
 void _e_mod_config_free(E_Module *m);
 
+#define ENGINE_SW 1
+#define ENGINE_GL 2
+
 #endif
index 6e6858f..d319d3a 100644 (file)
+e17-extra-modules (0.3-10) unstable; urgency=low
+
+  * [COMP] fix incorrect evas_object stack 
+           - problem case
+            : task switcher show -> task switcher raise above -> task switcher show done 
+           - this patch fix upper problem.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-10
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Thu, 19 Apr 2012 17:15:13 +0900
+
+e17-extra-modules (0.3-9) unstable; urgency=low
+
+  * [COMP] fix crash problem when taskmanager effect is running.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-9
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Mon, 16 Apr 2012 19:07:48 +0900
+
+e17-extra-modules (0.3-8) unstable; urgency=low
+
+  * [ILLUME2] change code to use clipboard APIs not sliding-win APIs
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-8
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 06 Apr 2012 12:55:12 +0900
+
+e17-extra-modules (0.3-7) unstable; urgency=low
+
+  * [MOVE] Add MENU_SCREEN CLASS NAME
+           Compositor specify MENU_SCREEN application by WM_CLASS Property.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-7
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Thu, 05 Apr 2012 16:38:46 +0900
+
+e17-extra-modules (0.3-6) unstable; urgency=low
+
+  * [MOVE] Fix Move Problem with active window change.
+           (Problem Case: When Active Window Change, previous version move module moves previous active window to strange position. )
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-6
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Tue, 03 Apr 2012 11:05:48 +0900
+
+e17-extra-modules (0.3-5) unstable; urgency=low
+
+  * [ILLUME2][COMP] Change code to use internal atoms for app-in-app
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-5
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 26 Mar 2012 16:40:03 +0900
+
+e17-extra-modules (0.3-4) unstable; urgency=low
+
+  * [ILLUME2][QP] Add code to handle changing zone event
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-4
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 23 Mar 2012 15:59:27 +0900
+
+e17-extra-modules (0.3-3) unstable; urgency=low
+
+  * [ILLUME2] Add code to handle indicator's opacity
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-3
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 16 Mar 2012 20:30:30 +0900
+
+e17-extra-modules (0.3-2) unstable; urgency=low
+
+  * [COMP] Remove unused code
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-2
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 14 Mar 2012 08:58:02 +0900
+
+e17-extra-modules (0.3-1) unstable; urgency=low
+
+  * [ILLUME2][MOVE] Change code according to EFL 1.0 upgrade
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.3-1
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 12 Mar 2012 15:11:21 +0900
+
+e17-extra-modules (0.2-39) unstable; urgency=low
+
+  * [devicemgr] fix the build break
+    [ILLUME2] 1. Change code to use internal atoms
+                 (E_ILLUME_USER_CREATED_WINDOW, E_ILLUME_PARENT_BORDER_WINDOW)
+                 instead of Ecore atoms
+                 (ECORE_X_ATOM_E_USER_CREATED_WINDOW, ECORE_X_ATOM_E_PARENT_BORDER_WINDOW)
+              2. Bug fix - Restack indicator when it is restarted
+    [COMP] Add EFL sync debugging info
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-39
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 09 Mar 2012 21:09:26 +0900
+
+e17-extra-modules (0.2-38) unstable; urgency=low
+
+  * [MOVE] 1. Fix Quickpanel MiniController Hide & Delete case.
+               - details: when quickpanel mini-controller window is hided,
+                          remove this mini-controller window from quickpanel_transient window list.
+           2. Add SendMessage about Quickpanel Show or Hide.
+               - previous : send a mesage to quickpanel and quickpanel-minicontroller
+               - current : send a message to quickpanel, quickpanel-minicontroller and indicator.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-38
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Tue, 06 Mar 2012 15:15:03 +0900
+
+e17-extra-modules (0.2-37) unstable; urgency=low
+
+  * Repackaging according to upgrade e17(svn rev.68441)
+    - Change debian/rules file - doesn't build devicemgr module
+    - Change some comp-slp module codes
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-37
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 02 Mar 2012 20:03:41 +0900
+
+e17-extra-modules (0.2-36) unstable; urgency=low
+
+  * [devicemgr] add devicemgr
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-36
+
+ -- SooChan Lim <sc1.lim@samsung.com>  Fri, 24 Feb 2012 13:11:12 +0900
+
+e17-extra-modules (0.2-35) unstable; urgency=low
+
+  * [MOVE] fix Apptray Helper Window's recognizing of click
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-35
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Thu, 23 Feb 2012 19:32:34 +0900
+
+e17-extra-modules (0.2-34) unstable; urgency=low
+
+  * [ILLUME2] add checking window minimum hint value while resizing
+              app-in-app window.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-34
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Mon, 20 Feb 2012 22:22:34 +0900
+
+e17-extra-modules (0.2-33) unstable; urgency=low
+
+  * [MOVE] 1.fix event send problem
+              previous : use client window's x,y geometry
+              current : use border window's x,y geometry
+           2.fix miss handling of  EVAS_OBJECT_EVENT's event_info.
+              previous : copy event_info's pointer. ( so, data can be changed )
+              current : copy event_info's data
+           3.fix Apptray, Quickpanel Movement opacity in 180, 270 degree.
+  * Git: slp/pkgs/e/e17-extra-modules
+  * Tag: e17-extra-modules_0.2-33
+
+ -- Gwangyeong Mun <kk.moon@samsung.com>  Mon, 20 Feb 2012 20:45:27 +0900
+
 e17-extra-modules (0.2-32) unstable; urgency=low
 
-  * [MOVE] remove MOVE module
+  * [keyrouter] Add H/W key emulation feature
   * Git: slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.2-32
 
- -- Gwangyeong Mun <kk.moon@samsung.com>  Tue, 21 Feb 2012 15:50:48 +0900
+ -- Sung-Jin Park <sj76.park@samsung.com>  Fri, 17 Feb 2012 17:53:29 +0900
 
 e17-extra-modules (0.2-31) unstable; urgency=low
 
@@ -293,7 +454,7 @@ e17-extra-modules (0.2-4) unstable; urgency=low
 
 e17-extra-modules (0.2-3) unstable; urgency=low
 
-  * Add featuring - _F_FOCUS_WINDOW_IF_TOP_STACK_, _F_COMP_SCREEN_LOCK_ 
+  * Add featuring - _F_FOCUS_WINDOW_IF_TOP_STACK_, _F_COMP_SCREEN_LOCK_
   * Git: slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.2-3
 
@@ -520,7 +681,7 @@ e17-extra-modules (0.1-105) unstable; urgency=low
 
 e17-extra-modules (0.1-104) unstable; urgency=low
 
-  * [keyrouter] Fix a bug related to accessibility feature(HighContrast) 
+  * [keyrouter] Fix a bug related to accessibility feature(HighContrast)
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-104
 
@@ -1031,7 +1192,7 @@ e17-extra-modules (0.1-47) unstable; urgency=low
 
   * [ILLUME2-QP] delete codes for hiding quickpanel in mouse_move_calback func
   * [KEYROUTER] Sets PropertyNotifyMask as soon as a window is created
-  * [PACKAGING] Repackaging according to E17 patch (upstream svn rev.58622)  
+  * [PACKAGING] Repackaging according to E17 patch (upstream svn rev.58622)
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-47
 
@@ -1088,7 +1249,7 @@ e17-extra-modules (0.1-41) unstable; urgency=low
 
 e17-extra-modules (0.1-40) unstable; urgency=low
 
-  * Delete policy for indicator rotation 
+  * Delete policy for indicator rotation
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-40
 
@@ -1336,7 +1497,7 @@ e17-extra-modules (0.1-15) unstable; urgency=low
 
 e17-extra-modules (0.1-14) unstable; urgency=low
 
-  * [COMP] change fake effect's window policy 
+  * [COMP] change fake effect's window policy
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-14
 
@@ -1371,7 +1532,7 @@ e17-extra-modules (0.1-11) unstable; urgency=low
 e17-extra-modules (0.1-10) unstable; urgency=low
 
   * [keyrouter][wmready] Add COPYING and AUTHORS files
-  * [ILLUME2-QP] Bugfix - file path mismatch of startup desktop in .order file 
+  * [ILLUME2-QP] Bugfix - file path mismatch of startup desktop in .order file
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-10
 
@@ -1388,7 +1549,7 @@ e17-extra-modules (0.1-9) unstable; urgency=low
 e17-extra-modules (0.1-8) unstable; urgency=low
 
   * [ILLUME2] 1. Add feature - logger
-              2. Code cleanup 
+              2. Code cleanup
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-8
 
@@ -1426,7 +1587,7 @@ e17-extra-modules (0.1-5) unstable; urgency=low
 
 e17-extra-modules (0.1-4) unstable; urgency=low
 
-  * [COMP] add custom effect feature 
+  * [COMP] add custom effect feature
   * Git: 165.213.180.234:slp/pkgs/e/e17-extra-modules
   * Tag: e17-extra-modules_0.1-4
 
@@ -1442,7 +1603,7 @@ e17-extra-modules (0.1-3) unstable; urgency=low
 
 e17-extra-modules (0.1-2) unstable; urgency=low
 
-  * [ILLUME2-QP] quickpanel_launcher - make dependency with appcore 
+  * [ILLUME2-QP] quickpanel_launcher - make dependency with appcore
   * [COMP] fix double free problem on xlib backend
   * [e17-extra-modules] Add omitted files and add a dependency on libappcore-efl-dev
   * [ILLUME2-QP] Bugfix for H0100114260 - Add draw_done property to _E_Quickpanel_Item
index aee13c4..8fa2a9c 100644 (file)
@@ -1,6 +1,6 @@
 Source: e17-extra-modules
 Priority: extra
-Maintainer: Doyoun Kang <doyoun.kang@samsung.com>, Gwanglim Lee <gl77.lee@samsung.com>, Gwangyeong Mun <kk.moon@samsung.com>, Sangjin Lee <lsj119@samsung.com>, Sung-Jin Park <sj76.park@samsung.com>, Duna Oh <duna.oh@samsung.com>
+Maintainer: Doyoun Kang <doyoun.kang@samsung.com>, Gwanglim Lee <gl77.lee@samsung.com>, Gwangyeong Mun <kk.moon@samsung.com>, Sangjin Lee <lsj119@samsung.com>, Sung-Jin Park <sj76.park@samsung.com>, Duna Oh <duna.oh@samsung.com>, SooChan Lim <sc1.lim@samsung.com>
 Build-Depends: debhelper (>= 5), e17-dev, libslp-utilx-dev, libelm-dev, libpixman-1-dev, dlog-dev
 Standards-Version: 3.8.3
 Section: libs
@@ -9,13 +9,13 @@ Package: e17-extra-modules
 Section: libs
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: The E17 Extra Modules 
+Description: The E17 Extra Modules
  The E17 extra modules consists of modules made by SAMSUNG.
 
 Package: e17-extra-modules-dbg
 Section: libs
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: The debug version of E17 Extra Modules 
+Description: The debug version of E17 Extra Modules
  The E17 extra modules consists of modules made by SAMSUNG.
 
index 7b99967..e277e1f 100755 (executable)
@@ -15,11 +15,11 @@ PREFIX ?= /usr
 
 # This package contains multiple modules as shipped by upstream. Each module is # contained in a subdirectory in the root dir of the package. You must list each
 # subdirectory explicitly so that the build system knows what to build
-DEF_SUBDIRS=comp-slp illume2-slp keyrouter wmready
+DEF_SUBDIRS=comp-slp illume2-slp keyrouter wmready move-slp
 SUBDIRS=$(DEF_SUBDIRS)
 BUILD_STAMPS = $(addprefix $(STAMP_DIR)/build-,$(SUBDIRS))
 
-CFLAGS = -Wall -g -fPIC -rdynamic
+CFLAGS = -Wall -g -fPIC -rdynamic -D_F_ENABLE_MOUSE_POPUP
 CXXFLAGS += -fPIC
 LDFLAGS += -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=$(PREFIX)/lib
 
index 2d8805e..2e25ef4 100644 (file)
@@ -355,7 +355,7 @@ e_illume_border_is_utility (E_Border* bd)
 }
 
 EAPI Eina_Bool
-e_illume_border_is_sliding_win(E_Border *bd)
+e_illume_border_is_clipboard(E_Border *bd)
 {
    /* make sure we have a border */
    if (!bd) return EINA_FALSE;
index 7a2e3f0..2f0fd7d 100644 (file)
@@ -367,7 +367,7 @@ EAPI Eina_Bool e_illume_border_is_quickpanel(E_Border *bd);
 EAPI Eina_Bool e_illume_border_is_lock_screen(E_Border *bd);
 EAPI Eina_Bool e_illume_border_is_notification(E_Border *bd);
 EAPI Eina_Bool e_illume_border_is_utility(E_Border *bd);
-EAPI Eina_Bool e_illume_border_is_sliding_win(E_Border *bd);
+EAPI Eina_Bool e_illume_border_is_clipboard(E_Border *bd);
 
 EAPI void e_illume_border_min_get(E_Border *bd, int *w, int *h);
 EAPI E_Border *e_illume_border_at_xy_get(E_Zone *zone, int x, int y);
index ae24843..6f0ee08 100644 (file)
@@ -44,7 +44,8 @@ static Eina_List *_policy_hdls = NULL, *_policy_hooks = NULL;
 Ecore_X_Atom E_ILLUME_BORDER_WIN_RESTACK;
 static Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_RESIZE_START = 0;
 static Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_RESIZE_END   = 0;
-
+static Ecore_X_Atom E_ILLUME_USER_CREATED_WINDOW = 0;
+static Ecore_X_Atom E_ILLUME_PARENT_BORDER_WINDOW = 0;
 
 /* external variables */
 int E_ILLUME_POLICY_EVENT_CHANGE = 0;
@@ -430,7 +431,7 @@ _e_mod_policy_cb_border_del(void *data __UNUSED__, int type __UNUSED__, void *ev
 
    ev = event;
 
-   ecore_x_window_prop_property_del(ev->border->client.win, ECORE_X_ATOM_E_PARENT_BORDER_WINDOW);
+   ecore_x_window_prop_property_del(ev->border->client.win, E_ILLUME_PARENT_BORDER_WINDOW);
 
    if ((_policy) && (_policy->funcs.border_del))
      _policy->funcs.border_del(ev->border);
@@ -663,8 +664,8 @@ _e_mod_policy_cb_hook_new_border(void *data __UNUSED__, void *data2)
 
    if (!(bd = data2)) return;
 
-   ecore_x_window_prop_window_set(bd->win, ECORE_X_ATOM_E_USER_CREATED_WINDOW, &(bd->client.win), 1);
-   ecore_x_window_prop_window_set(bd->client.win, ECORE_X_ATOM_E_PARENT_BORDER_WINDOW, &(bd->win), 1);
+   ecore_x_window_prop_window_set(bd->win, E_ILLUME_USER_CREATED_WINDOW, &(bd->client.win), 1);
+   ecore_x_window_prop_window_set(bd->client.win, E_ILLUME_PARENT_BORDER_WINDOW, &(bd->win), 1);
 
    if ((_policy) && (_policy->funcs.border_new_border))
      _policy->funcs.border_new_border(bd);
@@ -754,6 +755,22 @@ _e_mod_policy_init_atom (void)
         return 0;
      }
 
+   E_ILLUME_USER_CREATED_WINDOW = ecore_x_atom_get("_E_USER_CREATED_WINDOW");
+   if (!E_ILLUME_USER_CREATED_WINDOW)
+     {
+        fprintf(stderr,
+                "[ILLUME2] cannot create _E_USER_CREATED_WINDOW atom.\n");
+        return 0;
+     }
+
+   E_ILLUME_PARENT_BORDER_WINDOW = ecore_x_atom_get("_E_PARENT_BORDER_WINDOW");
+   if (!E_ILLUME_PARENT_BORDER_WINDOW)
+     {
+        fprintf(stderr,
+                "[ILLUME2] cannot create _E_PARENT_BORDER_WINDOW atom.\n");
+        return 0;
+     }
+
    return 1;
 }
 
index 8b289f7..8208533 100644 (file)
@@ -22,6 +22,7 @@ static Eina_Bool _e_mod_quickpanel_cb_border_remove(void *data __UNUSED__, int t
 static Eina_Bool _e_mod_quickpanel_cb_border_resize(void *data __UNUSED__, int type __UNUSED__, void *event);
 static Eina_Bool _e_mod_quickpanel_cb_property (void *data __UNUSED__, int type __UNUSED__, void *event);
 static Eina_Bool _e_mod_quickpanel_cb_border_show(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool _e_mod_quickpanel_cb_border_zone_set(void *data __UNUSED__, int type __UNUSED__, void *event);
 
 static void _e_mod_quickpanel_cb_post_fetch(void *data __UNUSED__, void *data2);
 static void _e_mod_quickpanel_cb_free(E_Illume_Quickpanel *qp);
@@ -104,6 +105,11 @@ int e_mod_quickpanel_init(void)
                        ecore_event_handler_add(E_EVENT_BORDER_SHOW,
                                                _e_mod_quickpanel_cb_border_show,
                                                NULL));
+   _qp_hdls =
+      eina_list_append(_qp_hdls,
+                       ecore_event_handler_add(E_EVENT_BORDER_ZONE_SET,
+                                               _e_mod_quickpanel_cb_border_zone_set,
+                                               NULL));
 
    /* add hook for new borders so we can test for qp borders */
    _qp_hook = e_border_hook_add(E_BORDER_HOOK_EVAL_PRE_POST_FETCH,
@@ -670,6 +676,20 @@ static Eina_Bool _e_mod_quickpanel_cb_border_show(void *data __UNUSED__, int typ
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static Eina_Bool _e_mod_quickpanel_cb_border_zone_set(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Zone_Set *ev;
+
+   ev = event;
+   if (ev->border->client.illume.quickpanel.quickpanel ||
+       e_illume_border_is_quickpanel_popup(ev->border))
+     {
+        e_border_move(ev->border, -ev->border->zone->w, -ev->border->zone->h);
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
 static void _e_mod_quickpanel_cb_post_fetch(void *data __UNUSED__, void *data2)
 {
    E_Border *bd;
index 811a959..bfd4699 100644 (file)
@@ -31,6 +31,12 @@ typedef struct _E_Illume_Print_Info
    char file_name[256];
 } E_Illume_Print_Info;
 
+/* for aia */
+typedef enum _E_Illume_Window_State
+{
+   E_ILLUME_WINDOW_STATE_NORMAL = 0,
+   E_ILLUME_WINDOW_STATE_INSET
+} E_Illume_Window_State;
 
 #define COMP_MODULE_CONTROL
 
@@ -49,7 +55,7 @@ static void _policy_zone_layout_quickpanel_popup(E_Border *bd);
 static void _policy_zone_layout_keyboard(E_Border *bd, E_Illume_Config_Zone *cz);
 static void _policy_zone_layout_fullscreen(E_Border *bd);
 static void _policy_zone_layout_dialog(E_Border *bd, E_Illume_Config_Zone *cz);
-static void _policy_zone_layout_sliding_win(E_Border *bd, E_Illume_Config_Zone *cz);
+static void _policy_zone_layout_clipboard(E_Border *bd, E_Illume_Config_Zone *cz);
 
 static int _policy_window_rotation_angle_get(Ecore_X_Window win);
 static Ecore_X_Window _policy_active_window_get(Ecore_X_Window root);
@@ -84,12 +90,13 @@ static void _policy_property_window_state_change (Ecore_X_Event_Window_Property
 static void _policy_property_indicator_geometry_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_keyboard_geometry_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_virtual_keyboard_state_change (Ecore_X_Event_Window_Property *event);
-static void _policy_property_sliding_win_geometry_change (Ecore_X_Event_Window_Property *event);
-static void _policy_property_sliding_win_state_change (Ecore_X_Event_Window_Property *event);
+static void _policy_property_clipboard_geometry_change (Ecore_X_Event_Window_Property *event);
+static void _policy_property_clipboard_state_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_indicator_geometry_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_enlightenment_scale_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_rotate_win_angle_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_indicator_state_change (Ecore_X_Event_Window_Property *event);
+static void _policy_property_indicator_opacity_change(Ecore_X_Event_Window_Property *event);
 static void _policy_property_active_win_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_win_type_change (Ecore_X_Event_Window_Property *event);
 static void _policy_property_rotate_root_angle_change (Ecore_X_Event_Window_Property *event);
@@ -99,6 +106,7 @@ static void _policy_property_window_opaque_change (Ecore_X_Event_Window_Property
 static void _policy_property_illume_window_state_change(Ecore_X_Event_Window_Property *event);
 
 static void _policy_border_illume_window_state_change(E_Border *bd, unsigned int state);
+static E_Illume_Window_State _policy_window_illume_window_state_get(Ecore_X_Window win);
 static void _policy_border_illume_handlers_add(E_Border *bd);
 static void _policy_border_illume_handlers_remove(E_Border *bd);
 static Eina_Bool _policy_border_cb_mouse_down(void *data, int type __UNUSED__, void *event);
@@ -178,6 +186,11 @@ static Ecore_X_Atom E_ILLUME_ATOM_STACK_DISPLAY_DONE;
 static Ecore_X_Atom E_ILLUME_ATOM_COMP_MODULE_ENABLED;
 #endif
 
+/* for aia */
+static Ecore_X_Atom E_ILLUME_ATOM_WINDOW_STATE;
+static Ecore_X_Atom E_ILLUME_ATOM_WINDOW_STATE_NORMAL;
+static Ecore_X_Atom E_ILLUME_ATOM_WINDOW_STATE_INSET;
+
 #if 1 // for visibility
 static Eina_Hash* _e_illume_xwin_info_hash = NULL;
 static Eina_Inlist* _e_illume_xwin_info_list = NULL;
@@ -313,7 +326,7 @@ _policy_border_show_below(E_Border *bd)
              if (e_illume_border_is_keyboard(b)) continue;
              if (e_illume_border_is_quickpanel(b)) continue;
              if (e_illume_border_is_quickpanel_popup(b)) continue;
-             if (e_illume_border_is_sliding_win(b)) continue;
+             if (e_illume_border_is_clipboard(b)) continue;
 
              if ((bd->fullscreen) || (bd->need_fullscreen))
                {
@@ -553,14 +566,14 @@ _policy_zone_layout_dialog(E_Border *bd, E_Illume_Config_Zone *cz)
 }
 
 static void
-_policy_zone_layout_sliding_win(E_Border *bd, E_Illume_Config_Zone *cz)
+_policy_zone_layout_clipboard(E_Border *bd, E_Illume_Config_Zone *cz)
 {
    /* no point in adjusting size or position if it's not visible */
    if (!bd->visible) return;
 
    /* set layer if needed */
-   if (bd->layer != POL_SLIDING_WIN_LAYER)
-      e_border_layer_set(bd, POL_SLIDING_WIN_LAYER);
+   if (bd->layer != POL_CLIPBOARD_LAYER)
+      e_border_layer_set(bd, POL_CLIPBOARD_LAYER);
 }
 
 /* policy functions */
@@ -661,6 +674,11 @@ _policy_border_add(E_Border *bd)
                        L (LT_NOTIFICATION, "[ILLUME2][NOTIFICATION]  %s(%d)... Update indicator's layer to NOTIFICATON.. level = %d\n", __func__, __LINE__, level);
                        _policy_change_indicator_layer (bd, POL_NOTIFICATION_LAYER, level);
                     }
+                  else
+                    {
+                       L (LT_NOTIFICATION, "[ILLUME2][NOTIFICATION]  %s(%d)... Update indicator's layer to NOTIFICATON.. level = %d\n", __func__, __LINE__, bd_info->level);
+                       _policy_change_indicator_layer(bd, POL_INDICATOR_LAYER, bd_info->level);
+                    }
                }
           }
 
@@ -695,9 +713,9 @@ _policy_border_del(E_Border *bd)
           }
      }
 
-   if (e_illume_border_is_sliding_win(bd))
+   if (e_illume_border_is_clipboard(bd))
      {
-        ecore_x_e_illume_sliding_win_state_set (bd->zone->black_win, 0);
+        ecore_x_e_illume_clipboard_state_set(bd->zone->black_win, ECORE_X_ILLUME_CLIPBOARD_STATE_OFF);
      }
 
    /* remove from our focus stack */
@@ -829,6 +847,11 @@ _policy_border_activate(E_Border *bd)
    if ((e_illume_border_is_notification(bd)) ||
        (bd->layer == POL_NOTIFICATION_LAYER))
      {
+        if (e_illume_border_is_indicator(bd)) return;
+        if (e_illume_border_is_quickpanel(bd)) return;
+        if (e_illume_border_is_quickpanel_popup(bd)) return;
+        if (e_illume_border_is_keyboard(bd)) return;
+
         // create border_info
         bd_info = _policy_get_border_info(bd);
         if (bd_info == NULL) return;
@@ -902,7 +925,7 @@ _policy_border_post_new_border(E_Border *bd)
              _policy_border_update_notification_stack (bd, level, EINA_TRUE);
           }
 
-        state = ecore_x_e_illume_window_state_get(bd->client.win);
+        state = _policy_window_illume_window_state_get(bd->client.win);
         _policy_border_illume_window_state_change(bd, state);
      }
 }
@@ -1068,10 +1091,10 @@ _policy_border_show(E_Border *bd)
    if (e_illume_border_is_quickpanel(bd)) return;
    if (e_illume_border_is_quickpanel_popup(bd)) return;
    if (e_illume_border_is_keyboard(bd)) return;
-   if (e_illume_border_is_sliding_win(bd))
+   if (e_illume_border_is_clipboard(bd))
      {
-        ecore_x_e_illume_sliding_win_state_set (bd->zone->black_win, 1);
-        ecore_x_e_illume_sliding_win_geometry_set (bd->zone->black_win, bd->x, bd->y, bd->w, bd->h);
+        ecore_x_e_illume_clipboard_state_set(bd->zone->black_win, ECORE_X_ILLUME_CLIPBOARD_STATE_ON);
+        ecore_x_e_illume_clipboard_geometry_set(bd->zone->black_win, bd->x, bd->y, bd->w, bd->h);
         return;
      }
 }
@@ -1135,8 +1158,8 @@ _policy_zone_layout(E_Zone *zone)
         else if (e_illume_border_is_dialog(bd))
            _policy_zone_layout_dialog(bd, cz);
 
-        else if (e_illume_border_is_sliding_win(bd))
-           _policy_zone_layout_sliding_win(bd, cz);
+        else if (e_illume_border_is_clipboard(bd))
+           _policy_zone_layout_clipboard(bd, cz);
 
         /* must be an app */
         else
@@ -1620,7 +1643,7 @@ static void _policy_property_virtual_keyboard_state_change (Ecore_X_Event_Window
      }
 }
 
-static void _policy_property_sliding_win_geometry_change (Ecore_X_Event_Window_Property *event)
+static void _policy_property_clipboard_geometry_change (Ecore_X_Event_Window_Property *event)
 {
    Eina_List *l;
    E_Zone *zone;
@@ -1630,7 +1653,7 @@ static void _policy_property_sliding_win_geometry_change (Ecore_X_Event_Window_P
    /* make sure this property changed on a zone */
    if (!(zone = e_util_zone_window_find(event->win))) return;
 
-   ecore_x_e_illume_sliding_win_geometry_get(zone->black_win, &x, &y, &w, &h);
+   ecore_x_e_illume_clipboard_geometry_get(zone->black_win, &x, &y, &w, &h);
 
    /* look for conformant borders */
    EINA_LIST_FOREACH(e_border_client_list(), l, bd)
@@ -1642,21 +1665,21 @@ static void _policy_property_sliding_win_geometry_change (Ecore_X_Event_Window_P
         if (e_illume_border_is_quickpanel(bd)) continue;
         if (e_illume_border_is_quickpanel_popup(bd)) continue;
 
-        ecore_x_e_illume_sliding_win_geometry_set(bd->client.win, x, y, w, h);
+        ecore_x_e_illume_clipboard_geometry_set(bd->client.win, x, y, w, h);
      }
 }
 
-static void _policy_property_sliding_win_state_change (Ecore_X_Event_Window_Property *event)
+static void _policy_property_clipboard_state_change (Ecore_X_Event_Window_Property *event)
 {
    Eina_List *l;
    E_Zone *zone;
    E_Border *bd;
-   int is_visible;
+   Ecore_X_Illume_Clipboard_State state;
 
    /* make sure this property changed on a zone */
    if (!(zone = e_util_zone_window_find(event->win))) return;
 
-   is_visible = ecore_x_e_illume_sliding_win_state_get (zone->black_win);
+   state = ecore_x_e_illume_clipboard_state_get(zone->black_win);
 
    /* look for conformant borders */
    EINA_LIST_FOREACH(e_border_client_list(), l, bd)
@@ -1668,7 +1691,7 @@ static void _policy_property_sliding_win_state_change (Ecore_X_Event_Window_Prop
         if (e_illume_border_is_quickpanel(bd)) continue;
         if (e_illume_border_is_quickpanel_popup(bd)) continue;
 
-        ecore_x_e_illume_sliding_win_state_set (bd->client.win, is_visible);
+        ecore_x_e_illume_clipboard_state_set(bd->client.win, state);
      }
 }
 
@@ -1764,12 +1787,32 @@ static void _policy_property_indicator_state_change (Ecore_X_Event_Window_Proper
      }
 }
 
+static void _policy_property_indicator_opacity_change(Ecore_X_Event_Window_Property *event)
+{
+   E_Border *bd, *indi_bd;
+   Ecore_X_Window active_win;
+   Ecore_X_Illume_Indicator_Opacity_Mode mode;
+
+   if (!(bd = e_border_find_by_client_window(event->win))) return;
+
+   indi_bd = e_illume_border_indicator_get(bd->zone);
+   if (!indi_bd) return;
+
+   active_win = _policy_active_window_get(bd->zone->container->manager->root);
+   if (active_win == bd->client.win)
+     {
+        mode = ecore_x_e_illume_indicator_opacity_get(bd->client.win);
+        ecore_x_e_illume_indicator_opacity_send(indi_bd->client.win, mode);
+     }
+}
+
 static void _policy_property_active_win_change (Ecore_X_Event_Window_Property *event)
 {
    Ecore_X_Window active_win;
    int indi_show;
    E_Border* active_border;
    E_Border* indi_bd;
+   Ecore_X_Illume_Indicator_Opacity_Mode mode;
 
    active_win = _policy_active_window_get(event->win);
    if (active_win)
@@ -1864,6 +1907,9 @@ static void _policy_property_active_win_change (Ecore_X_Event_Window_Property *e
                   ILLUME2_TRACE ("[ILLUME2] Get ECORE_X_ATOM_NET_ACTIVE_WINDOW (%d)  HIDE Indicator... bd = 0x%07x\n", __LINE__, active_win);
                   e_border_hide(indi_bd, 2);
                }
+
+             mode = ecore_x_e_illume_indicator_opacity_get(active_border->client.win);
+             ecore_x_e_illume_indicator_opacity_send(indi_bd->client.win, mode);
           }
 
         ILLUME2_TRACE ("[ILLUME2] ACTIVE WINDOW... (%d) active win = 0x%07x HIDE quickpanel\n", __LINE__, active_win);
@@ -2113,7 +2159,7 @@ _policy_property_illume_window_state_change(Ecore_X_Event_Window_Property *event
    if (!(bd = e_border_find_by_client_window(event->win))) return;
    if ((bd->stolen) || (!bd->visible)) return;
 
-   unsigned int state = ecore_x_e_illume_window_state_get(event->win);
+   unsigned int state = _policy_window_illume_window_state_get(event->win);
    _policy_border_illume_window_state_change(bd, state);
 }
 
@@ -2128,7 +2174,7 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state)
    bd->client.illume.win_state.state = state;
    switch (state)
      {
-      case ECORE_X_ILLUME_WINDOW_STATE_INSET:
+      case E_ILLUME_WINDOW_STATE_INSET:
          _policy_border_illume_handlers_add(bd);
          ecore_x_window_raise(bd->event_win);
          e_hints_window_state_update(bd, ECORE_X_WINDOW_STATE_ABOVE, ECORE_X_WINDOW_STATE_ACTION_ADD);
@@ -2139,7 +2185,7 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state)
          _policy_border_focus_top_stack_set(bd);
          break;
 
-      case ECORE_X_ILLUME_WINDOW_STATE_NORMAL:
+      case E_ILLUME_WINDOW_STATE_NORMAL:
          _policy_border_illume_handlers_remove(bd);
          ecore_x_window_raise(bd->client.shell_win);
          e_hints_window_state_update(bd, ECORE_X_WINDOW_STATE_ABOVE, ECORE_X_WINDOW_STATE_ACTION_REMOVE);
@@ -2166,6 +2212,24 @@ _policy_border_illume_window_state_change(E_Border *bd, unsigned int state)
    bd->changed = 1;
 }
 
+static E_Illume_Window_State
+_policy_window_illume_window_state_get(Ecore_X_Window win)
+{
+   Ecore_X_Atom atom;
+
+   if (!ecore_x_window_prop_atom_get(win,
+                                     E_ILLUME_ATOM_WINDOW_STATE,
+                                     &atom, 1))
+     return E_ILLUME_WINDOW_STATE_NORMAL;
+
+   if (atom == E_ILLUME_ATOM_WINDOW_STATE_NORMAL)
+     return E_ILLUME_WINDOW_STATE_NORMAL;
+   else if (atom == E_ILLUME_ATOM_WINDOW_STATE_INSET)
+     return E_ILLUME_WINDOW_STATE_INSET;
+   else
+     return E_ILLUME_WINDOW_STATE_NORMAL;
+}
+
 static void
 _policy_border_illume_handlers_add(E_Border *bd)
 {
@@ -2233,15 +2297,43 @@ _resize_rect_geometry_get(E_Border             *bd,
                           int                   ev_x,
                           int                   ev_y)
 {
-   int x, y, w, h;
+   int x = 0, y = 0, w = 0, h = 0;
+   int mw = 0, mh = 0;
+   int cx = 0, cy = 0;
+
+   e_illume_border_min_get(bd, &mw, &mh);
+
    switch (bd->client.illume.win_state.angle)
      {
-      case   0: x = bd->x; y = bd->y; w = ev_x - bd->x;        h = ev_y - bd->y;        break;
-      case  90: x = bd->x; y = ev_y;  w = ev_x - x;            h = (bd->y + bd->h) - y; break;
-      case 180: x = ev_x;  y = ev_y;  w = (bd->x + bd->w) - x; h = (bd->y + bd->h) - y; break;
-      case 270: x = ev_x;  y = bd->y; w = (bd->x + bd->w) - x; h = ev_y - y;            break;
-      default: break;
+      case 0:
+        cx = bd->x;               cy = bd->y;
+        x = bd->x;                 y = bd->y;
+        w = ev_x - bd->x;          h = ev_y - bd->y;
+        break;
+      case 90:
+        cx = bd->x;               cy = bd->y + bd->h;
+        x = bd->x;                 y = ev_y;
+        w = ev_x - x;              h = (bd->y + bd->h) - y;
+        break;
+      case 180:
+        cx = bd->x + bd->w;       cy = bd->y + bd->h;
+        x = ev_x;                  y = ev_y;
+        w = (bd->x + bd->w) - x;   h = (bd->y + bd->h) - y;
+        break;
+      case 270:
+        cx = bd->x + bd->w;       cy = bd->y;
+        x  = ev_x;                 y = bd->y;
+        w  = (bd->x + bd->w) - x;  h = ev_y - y;
+        break;
+      default:
+        break;
      }
+
+   if (w < mw) w = mw;
+   if (h < mh) h = mh;
+   if ((x + w) > (bd->x + w)) x = cx - w;
+   if ((y + h) > (bd->y + h)) y = cy - h;
+
    r->x = x;
    r->y = y;
    r->w = w;
@@ -2371,13 +2463,13 @@ _policy_property_change(Ecore_X_Event_Window_Property *event)
      {
         _policy_property_virtual_keyboard_state_change (event);
      }
-   else if (event->atom == ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY)
+   else if (event->atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY)
      {
-        _policy_property_sliding_win_geometry_change (event);
+        _policy_property_clipboard_geometry_change (event);
      }
-   else if (event->atom == ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE)
+   else if (event->atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE)
      {
-        _policy_property_sliding_win_state_change (event);
+        _policy_property_clipboard_state_change (event);
      }
    else if (event->atom == ATM_ENLIGHTENMENT_SCALE)
      {
@@ -2391,6 +2483,10 @@ _policy_property_change(Ecore_X_Event_Window_Property *event)
      {
         _policy_property_indicator_state_change (event);
      }
+   else if (event->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE)
+     {
+        _policy_property_indicator_opacity_change(event);
+     }
    else if (event->atom == ECORE_X_ATOM_NET_ACTIVE_WINDOW)
      {
         _policy_property_active_win_change (event);
@@ -2420,7 +2516,7 @@ _policy_property_change(Ecore_X_Event_Window_Property *event)
      {
         _policy_property_window_opaque_change (event);
      }
-   else if (event->atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE)
+   else if (event->atom == E_ILLUME_ATOM_WINDOW_STATE)
      {
         _policy_property_illume_window_state_change(event);
      }
@@ -2635,16 +2731,16 @@ _policy_active_window_get(Ecore_X_Window root)
 static int
 _policy_border_indicator_state_get(E_Border *bd)
 {
-   int ret;
-   int count;
-   int show = -1;
-   unsigned char* prop_data = NULL;
-
-   ret = ecore_x_window_prop_property_get (bd->client.win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE, ECORE_X_ATOM_CARDINAL, 32, &prop_data, &count);
-   if( ret && prop_data )
-      memcpy (&show, prop_data, sizeof (int));
-
-   if (prop_data) free (prop_data);
+   Ecore_X_Illume_Indicator_State state;
+   int show;
+
+   state = ecore_x_e_illume_indicator_state_get(bd->client.win);
+   if (state == ECORE_X_ILLUME_INDICATOR_STATE_ON)
+     show = 1;
+   else if (state == ECORE_X_ILLUME_INDICATOR_STATE_OFF)
+     show = 0;
+   else
+     show = -1;
 
    return show;
 }
@@ -2853,6 +2949,26 @@ int _policy_atom_init (void)
         return 0;
      }
 
+   // for aia
+   E_ILLUME_ATOM_WINDOW_STATE = ecore_x_atom_get("_E_ILLUME_WINDOW_STATE");
+   if(!E_ILLUME_ATOM_WINDOW_STATE)
+     {
+        fprintf (stderr, "[ILLUME2] Critical Error!!! Cannot create _E_ILLUME_WINDOW_STATE Atom...\n");
+        return 0;
+     }
+   E_ILLUME_ATOM_WINDOW_STATE_NORMAL = ecore_x_atom_get("_E_ILLUME_WINDOW_STATE_NORMAL");
+   if(!E_ILLUME_ATOM_WINDOW_STATE_NORMAL)
+     {
+        fprintf (stderr, "[ILLUME2] Critical Error!!! Cannot create _E_ILLUME_WINDOW_STATE_NORMAL Atom...\n");
+        return 0;
+     }
+   E_ILLUME_ATOM_WINDOW_STATE_INSET = ecore_x_atom_get("_E_ILLUME_WINDOW_STATE_INSET");
+   if(!E_ILLUME_ATOM_WINDOW_STATE_INSET)
+     {
+        fprintf (stderr, "[ILLUME2] Critical Error!!! Cannot create _E_ILLUME_WINDOW_STATE_INSET Atom...\n");
+        return 0;
+     }
+
    return 1;
 }
 
index c6934bf..e22e1e2 100644 (file)
@@ -18,7 +18,7 @@
 # define POL_SOFTKEY_LAYER 110
 
 /* layer level 2 (51~100) */
-# define POL_SLIDING_WIN_LAYER 100
+# define POL_CLIPBOARD_LAYER 100
 # define POL_KEYBOARD_LAYER 100
 # define POL_CONFORMANT_LAYER 100
 # define POL_APP_LAYER 100
index 8bfadbf..5cf4e32 100755 (executable)
@@ -38,6 +38,7 @@ e_modapi_init (E_Module* m)
        keyrouter.e_window_destroy_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, (Ecore_Event_Handler_Cb)_e_keyrouter_cb_window_destroy, NULL);
        keyrouter.e_window_configure_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE,(Ecore_Event_Handler_Cb)_e_keyrouter_cb_window_configure, NULL);
        keyrouter.e_window_stack_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_STACK, (Ecore_Event_Handler_Cb)_e_keyrouter_cb_window_stack, NULL);
+       keyrouter.e_client_message_handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, (Ecore_Event_Handler_Cb)_e_keyrouter_cb_client_message, NULL);
 
        if( !keyrouter.e_window_stack_handler )                 printf("[keyrouter][%s] Failed to add ECORE_X_EVENT_WINDOW_STACK handler\n", __FUNCTION__);
        if( !keyrouter.e_window_configure_handler )             printf("[keyrouter][%s] Failed to add ECORE_X_EVENT_WINDOW_CONFIGURE handler\n", __FUNCTION__);
@@ -132,8 +133,10 @@ _e_keyrouter_x_input_init(void)
        XISetMask(keyrouter.eventmask_all.mask, XI_DeviceChanged);
        XISetMask(keyrouter.eventmask_all.mask, XI_HierarchyChanged);
        XISetMask(keyrouter.eventmask_all.mask, XI_PropertyEvent);
+#ifdef _F_ENABLE_MOUSE_POPUP
        XISetMask(keyrouter.eventmask_all.mask, XI_ButtonPress);
        XISetMask(keyrouter.eventmask_all.mask, XI_ButtonRelease);
+#endif//_F_ENABLE_MOUSE_POPUP
 
        /* Events we want to listen for a part */
        XISetMask(keyrouter.eventmask_part.mask, XI_DeviceChanged);
@@ -193,6 +196,7 @@ _e_keyrouter_cb_event_any(void *data, int ev_type, void *event)
 #endif
                ev->type = KeyRelease;
        }
+#ifdef _F_ENABLE_MOUSE_POPUP
        else if( type == ButtonPress && ev->xbutton.button == 3)
        {
 #ifdef __DEBUG__
@@ -209,6 +213,7 @@ _e_keyrouter_cb_event_any(void *data, int ev_type, void *event)
 
                return 1;
        }
+#endif//_F_ENABLE_MOUSE_POPUP
        else
                return 1;
 
@@ -402,6 +407,7 @@ _e_keyrouter_cb_event_generic(void *data, int ev_type, void *event)
                        _e_keyrouter_xi2_device_hierarchy_handler((XIHierarchyEvent *)evData);
                        break;
 
+#ifdef _F_ENABLE_MOUSE_POPUP
                case XI_ButtonRelease:
                        if( evData->detail != 1 && evData->detail != 3 )
                                break;
@@ -414,6 +420,7 @@ _e_keyrouter_cb_event_generic(void *data, int ev_type, void *event)
                                        keyrouter.rbutton_pressed_on_popup = 0;
                        }
                        break;
+#endif//_F_ENABLE_MOUSE_POPUP
        }
 
        return 1;
@@ -483,6 +490,7 @@ _e_keyrouter_cb_window_property(void *data, int ev_type, void *ev)
        int res = -1;
        unsigned int ret_val = 0;
 
+#ifdef _F_ENABLE_MOUSE_POPUP
        //check and rotate popup menu
        if( e->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE && e->win == keyrouter.rootWin )
        {
@@ -500,6 +508,7 @@ _e_keyrouter_cb_window_property(void *data, int ev_type, void *ev)
 
                goto out;
        }
+#endif // _F_ENABLE_MOUSE_POPUP
 
        //check and enable/disable mouse cursor
        if( e->atom == keyrouter.atomXMouseCursorEnable && e->win == keyrouter.rootWin )
@@ -733,6 +742,37 @@ _e_keyrouter_cb_window_configure(void *data, int ev_type, void *ev)
 }
 
 static int
+_e_keyrouter_cb_client_message (void* data, int type, void* event)
+{
+       int event_type = 0;
+       int keycode;
+       Ecore_X_Event_Client_Message* ev;
+
+       ev = event;
+       if(ev->message_type != keyrouter.atomHWKeyEmulation) return 1;
+       if(ev->format != 8) return 1;
+
+       if( ev->data.b[0] == 'P' )
+               event_type = KeyPress;
+       else if( ev->data.b[0] == 'R' )
+               event_type = KeyRelease;
+
+       switch(event_type)
+       {
+               case KeyPress:
+               case KeyRelease:
+                       keycode = XKeysymToKeycode(keyrouter.disp, XStringToKeysym(&ev->data.b[2]));
+                       _e_keyrouter_do_hardkey_emulation(NULL, event_type, 0, keycode);
+                       break;
+
+               default:
+                       fprintf(stderr, "[keyrouter][cb_client_message] Unknown event type ! (type=%d)\n", event_type);
+       }
+
+       return 1;
+}
+
+static int
 _e_keyrouter_cb_window_stack(void *data, int ev_type, void *ev)
 {
        E_Border *bd;
@@ -1225,6 +1265,18 @@ int _e_keyrouter_init()
        keyrouter.atomXExtKeyboardExist = ecore_x_atom_get(PROP_X_EXT_KEYBOARD_EXIST);
        keyrouter.atomPointerType = ecore_x_atom_get(PROP_X_EVDEV_AXIS_LABELS);
        keyrouter.atomRROutput = ecore_x_atom_get(PROP_XRROUTPUT);
+       keyrouter.atomHWKeyEmulation = ecore_x_atom_get(PROP_HWKEY_EMULATION);
+
+       keyrouter.input_window = ecore_x_window_input_new(keyrouter.rootWin, -1, -1, 1, 1);
+
+       if(!keyrouter.input_window)
+       {
+               fprintf(stderr, "[keyrouter] Failed to create input_window !\n");
+       }
+       else
+       {
+               ecore_x_window_prop_property_set(keyrouter.rootWin, keyrouter.atomHWKeyEmulation, ECORE_X_ATOM_WINDOW, 32, &keyrouter.input_window, 1);
+       }
 
        keyrouter.zone = _e_keyrouter_get_zone();
        if( !keyrouter.zone )
@@ -1234,9 +1286,11 @@ int _e_keyrouter_init()
                goto out;
        }
 
+#ifdef _F_ENABLE_MOUSE_POPUP
        ecore_x_window_button_grab(keyrouter.rootWin, 3, ECORE_X_EVENT_MASK_MOUSE_DOWN |
                                 ECORE_X_EVENT_MASK_MOUSE_UP |
                                 ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
+#endif//_F_ENABLE_MOUSE_POPUP
 
 #ifndef _F_USE_XI_GRABDEVICE_
        grab_result = GrabKeyDevices(keyrouter.rootWin);
@@ -1263,8 +1317,9 @@ int _e_keyrouter_init()
 
        memset(&keyrouter.modkey, 0L, sizeof(keyrouter.modkey));
        InitModKeys();
+#ifdef _F_ENABLE_MOUSE_POPUP
        InitHardKeyCodes();
-
+#endif//_F_ENABLE_MOUSE_POPUP
        BuildKeyGrabList(keyrouter.rootWin);
 
 out:
@@ -1289,8 +1344,10 @@ static void _e_keyrouter_structure_init()
        keyrouter.DeviceKeyRelease = -1;
        keyrouter.xi2_opcode = -1;
        keyrouter.isWindowStackChanged = 1;
+#ifdef _F_ENABLE_MOUSE_POPUP
        keyrouter.popup_angle = 0;
        keyrouter.toggle = 0;
+#endif//_F_ENABLE_MOUSE_POPUP
        keyrouter.device_list = NULL;
        keyrouter.num_pointer_devices = 0;
        keyrouter.num_keyboard_devices = 0;
@@ -2825,29 +2882,48 @@ shared_delivery:
 }
 #endif//_F_USE_XI_GRABDEVICE_
 
+#ifdef _F_ENABLE_MOUSE_POPUP
 static void _e_keyrouter_popup_btn_down_cb(void *data)
 {
        char *label = (char*)data;
        keyrouter.rbutton_pressed_on_popup = 1;
-       _e_keyrouter_do_hardkey_emulation(label, KeyPress, 0);
+       _e_keyrouter_do_hardkey_emulation(label, KeyPress, 0, 0);
 }
 
 static void _e_keyrouter_popup_btn_up_cb(void *data)
 {
        char *label = (char*)data;
        keyrouter.rbutton_pressed_on_popup = 0;
-       _e_keyrouter_do_hardkey_emulation(label, KeyRelease, 1);
+       _e_keyrouter_do_hardkey_emulation(label, KeyRelease, 1, 0);
 }
+#endif//_F_ENABLE_MOUSE_POPUP
 
-static void _e_keyrouter_do_hardkey_emulation(const char *label, unsigned int key_event, unsigned int on_release)
+static void _e_keyrouter_do_hardkey_emulation(const char *label, unsigned int key_event, unsigned int on_release, int keycode)
 {
-       if( !label )
-               return;
-
+#ifdef _F_ENABLE_MOUSE_POPUP
        int i;
        char buf[128];
+#endif//_F_ENABLE_MOUSE_POPUP
        XEvent xev;
 
+       if( !label )
+               goto normal_hardkey_handler;
+       else
+               goto reserved_hardkey_handler;
+
+normal_hardkey_handler:
+       xev.xkey.display = keyrouter.disp;
+       xev.xkey.root = keyrouter.rootWin;
+       xev.xkey.keycode = keycode;
+       xev.xkey.time = CurrentTime;
+       xev.xkey.type = key_event;
+       fprintf(stderr, "[keyrouter][do_hardkey_emulation] HWKeyEmulation (keycode=%d, type=%s)\n",
+                                       xev.xkey.keycode, (xev.xkey.type==KeyPress) ? "KeyPress" : "KeyRelease");
+       DeliverDeviceKeyEvents(&xev, 0);
+       return;
+
+reserved_hardkey_handler:
+#ifdef _F_ENABLE_MOUSE_POPUP
        for( i = 0 ; i < 3 ; i++ )
        {
                if( !strcmp(label, btns_label[i]) )
@@ -2869,11 +2945,13 @@ static void _e_keyrouter_do_hardkey_emulation(const char *label, unsigned int ke
                fprintf(stderr, "[keyrouter][rotation] %s\n", buf);
                system (buf);
        }
+#endif//_F_ENABLE_MOUSE_POPUP
 
 out:
        return;
 }
 
+#ifdef _F_ENABLE_MOUSE_POPUP
 static void InitHardKeyCodes()
 {
        keyrouter.btn_keys[0] = XKeysymToKeycode(keyrouter.disp, XStringToKeysym(KEY_VOLUMEUP));
@@ -3021,6 +3099,7 @@ static void popup_show()
 
        return;
 }
+#endif//_F_ENABLE_MOUSE_POPUP
 
 static void Device_Status(unsigned int val)
 {
index a015ed8..3e21881 100755 (executable)
 //maximum number of hardkeys
 #define MAX_HARDKEYS   255
 
+#ifdef _F_ENABLE_MOUSE_POPUP
 #define POPUP_MENU_WIDTH       95
 #define POPUP_MENU_HEIGHT      120
+#endif//_F_ENABLE_MOUSE_POPUP
 
 //grab modes
 #define NONE_GRAB_MODE 0
@@ -32,6 +34,7 @@
 #define PROP_X_EXT_KEYBOARD_EXIST              "X External Keyboard Exist"
 #define PROP_X_EVDEV_AXIS_LABELS               "Axis Labels"
 #define PROP_XRROUTPUT                                 "X_RR_PROPERTY_REMOTE_CONTROLLER"
+#define PROP_HWKEY_EMULATION                   "_HWKEY_EMULATION"
 
 //key composition for screen capture
 #define NUM_COMPOSITION_KEY    2
@@ -87,12 +90,14 @@ typedef struct _ModifierKey
        kinfo keys[NUM_COMPOSITION_KEY];
 } ModifierKey;
 
+#ifdef _F_ENABLE_MOUSE_POPUP
 const char *btns_label[] = {
        "Volume Up",
        "Volume Down",
        "Go Home",
        "Rotate"
 };
+#endif//_F_ENABLE_MOUSE_POPUP
 
 #define NUM_HWKEYS             18
 const char *HWKeys[] = {
@@ -138,10 +143,14 @@ typedef struct _tag_keyrouter
 {
        Ecore_X_Display* disp;
        Ecore_X_Window rootWin;
+       Ecore_X_Window input_window;
 
        //screen capture related variables
        ModifierKey modkey;
 
+       E_Zone *zone;
+
+#ifdef _F_ENABLE_MOUSE_POPUP
        //mouse rbutton popup related variables
        int toggle;
        int rbutton_pressed_on_popup;
@@ -149,11 +158,11 @@ typedef struct _tag_keyrouter
        int popup_rootx;
        int popup_rooty;
 
-       E_Zone *zone;
        E_Popup     *popup;
        Evas_Object *popup_btns[4];
        Evas_Object* popup_bg;
        unsigned int btn_keys[3];
+#endif//_F_ENABLE_MOUSE_POPUP
 
        //number of connected pointer and keyboard devices
        int num_pointer_devices;
@@ -184,6 +193,7 @@ typedef struct _tag_keyrouter
        struct FILE *fplog;
 
        //atoms
+       Atom atomHWKeyEmulation;
        Atom atomRROutput;
        Atom atomPointerType;
        Atom atomXMouseExist;
@@ -201,6 +211,7 @@ typedef struct _tag_keyrouter
 #endif
 
        //event handlers
+       Ecore_Event_Handler *e_client_message_handler;
        Ecore_Event_Handler *e_window_property_handler;
        Ecore_Event_Handler *e_border_stack_handler;
        Ecore_Event_Handler *e_border_remove_handler;
@@ -243,6 +254,7 @@ static int _e_keyrouter_cb_window_create(void *data, int ev_type, void *ev);
 static int _e_keyrouter_cb_window_destroy(void *data, int ev_type, void *ev);
 static int _e_keyrouter_cb_window_configure(void *data, int ev_type, void *ev);
 static int _e_keyrouter_cb_window_stack(void *data, int ev_type, void *ev);
+static int _e_keyrouter_cb_client_message (void* data, int type, void* event);
 static void _e_keyrouter_xi2_device_hierarchy_handler(XIHierarchyEvent *event);
 static int _e_keyrouter_is_relative_device(int deviceid);
 static void _e_keyrouter_device_add(int id, int type);
@@ -274,12 +286,14 @@ static void UngrabKeyDevices();
 #endif//_F_USE_XI_GRABDEVICE_
 
 //functions related to mouse rbutton popup
-static void InitHardKeyCodes();
 static E_Zone* _e_keyrouter_get_zone();
+#ifdef _F_ENABLE_MOUSE_POPUP
+static void InitHardKeyCodes();
 static void popup_update();
 static void popup_show();
 static void popup_destroy();
-static void _e_keyrouter_do_hardkey_emulation(const char *label, unsigned int key_event, unsigned int on_release);
+#endif//_F_ENABLE_MOUSE_POPUP
+static void _e_keyrouter_do_hardkey_emulation(const char *label, unsigned int key_event, unsigned int on_release, int keycode);
 
 //functions related to key composition for screen capture
 static void InitModKeys();
diff --git a/move-slp/AUTHORS b/move-slp/AUTHORS
new file mode 100644 (file)
index 0000000..0b36768
--- /dev/null
@@ -0,0 +1 @@
+Gwangyeong Mun <kk.moon@samsung.com>
diff --git a/move-slp/COPYING b/move-slp/COPYING
new file mode 100644 (file)
index 0000000..7625f00
--- /dev/null
@@ -0,0 +1,25 @@
+Copyright notice for Enlightenment:
+
+Copyright (C) 2000-2011 Carsten Haitzler and various contributors (see AUTHORS)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/move-slp/ChangeLog b/move-slp/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/move-slp/INSTALL b/move-slp/INSTALL
new file mode 100644 (file)
index 0000000..8b82ade
--- /dev/null
@@ -0,0 +1,291 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008 Free Software Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+   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, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   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 you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' 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.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+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 can use 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 `..'.
+
+   With a non-GNU `make', it is safer 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.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   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.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   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 machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+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.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *Note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/move-slp/Makefile.am b/move-slp/Makefile.am
new file mode 100644 (file)
index 0000000..1d96c03
--- /dev/null
@@ -0,0 +1,18 @@
+ACLOCAL_AMFLAGS = -I m4
+MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \
+                      config.sub configure depcomp install-sh ltmain.sh \
+                      missing module.desktop config.rpath mkinstalldirs
+
+SUBDIRS = src
+
+filesdir = $(datadir)
+files_DATA = module.desktop
+
+EXTRA_DIST = module.desktop.in 
+
+clean-local:
+       rm -rf module.desktop *~ 
+
+uninstall:
+       rm -rf $(DESTDIR)$(datadir)
+
diff --git a/move-slp/NEWS b/move-slp/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/move-slp/README b/move-slp/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/move-slp/autogen.sh b/move-slp/autogen.sh
new file mode 100755 (executable)
index 0000000..67a19c2
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
+#echo "Running autopoint..." ; autopoint -f || :
+echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+
+       
diff --git a/move-slp/configure.ac b/move-slp/configure.ac
new file mode 100755 (executable)
index 0000000..090ced5
--- /dev/null
@@ -0,0 +1,68 @@
+dnl Process this file with autoconf to produce a configure script.
+
+# get rid of that stupid cache mechanism
+rm -f config.cache
+
+AC_INIT(move-slp, 0.1, kk.moon@samsung.com)
+AC_PREREQ(2.52)
+AC_CONFIG_SRCDIR(configure.ac)
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_ISC_POSIX
+
+AM_INIT_AUTOMAKE(1.8)
+AM_CONFIG_HEADER(config.h)
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+AC_PROG_CC
+AM_PROG_CC_STDC
+AM_PROG_CC_C_O
+AC_HEADER_STDC
+AC_C_CONST
+AC_C___ATTRIBUTE__
+
+define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
+define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
+AC_PROG_LIBTOOL
+
+#AM_GNU_GETTEXT([external])
+#AM_GNU_GETTEXT_VERSION(0.14)
+
+PKG_CHECK_MODULES(ENLIGHTENMENT, [enlightenment,utilX])
+AC_SUBST(ENLIGHTENMENT_CFLAGS)
+AC_SUBST(ENLIGHTENMENT_LIBS)
+
+AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
+AC_SUBST(dlopen_libs)
+
+release=$(pkg-config --variable=release enlightenment)
+MODULE_ARCH="$host_os-$host_cpu-$release"
+AC_SUBST(MODULE_ARCH)
+AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
+
+# Find edje_cc
+PKG_CHECK_MODULES(EDJE, [edje >= 1.0.0])
+AC_ARG_WITH(edje-cc,
+  AC_HELP_STRING([--with-edje-cc=PATH], [specify a specific path to edje_cc]),
+  [
+    v=$withval;
+    EDJE_CC=$v
+  ],[
+    EDJE_CC=$(pkg-config --variable=prefix edje)/bin/edje_cc
+  ]
+)
+AC_SUBST(EDJE_CC)
+AC_MSG_CHECKING([Which edje_cc to use])
+AC_MSG_RESULT(${EDJE_CC})
+
+datadir=$(pkg-config --variable=modules enlightenment)/${PACKAGE}
+AC_ARG_ENABLE(homedir-install,
+  AS_HELP_STRING([--enable-homedir-install], [Install module in homedir]),
+  [ datadir="${HOME}/.e/e/modules/${PACKAGE}" ]
+)
+
+AC_CONFIG_FILES([Makefile
+                module.desktop
+                src/Makefile])
+AC_OUTPUT
+
diff --git a/move-slp/m4/ac_attribute.m4 b/move-slp/m4/ac_attribute.m4
new file mode 100644 (file)
index 0000000..23479a9
--- /dev/null
@@ -0,0 +1,47 @@
+dnl Copyright (C) 2004-2008 Kim Woelders
+dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
+dnl That code is public domain and can be freely used or copied.
+dnl Originally snatched from somewhere...
+
+dnl Macro for checking if the compiler supports __attribute__
+
+dnl Usage: AC_C___ATTRIBUTE__
+dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__
+dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is
+dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused))
+dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is
+dnl defined to nothing.
+
+AC_DEFUN([AC_C___ATTRIBUTE__],
+[
+
+AC_MSG_CHECKING([for __attribute__])
+
+AC_CACHE_VAL([ac_cv___attribute__],
+   [AC_TRY_COMPILE(
+       [
+#include <stdlib.h>
+
+int func(int x);
+int foo(int x __attribute__ ((unused)))
+{
+   exit(1);
+}
+       ],
+       [],
+       [ac_cv___attribute__="yes"],
+       [ac_cv___attribute__="no"]
+    )])
+
+AC_MSG_RESULT($ac_cv___attribute__)
+
+if test "x${ac_cv___attribute__}" = "xyes" ; then
+   AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__])
+   AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused])
+  else
+    AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused])
+fi
+
+])
+
+dnl End of ac_attribute.m4
diff --git a/move-slp/m4/libtool.m4 b/move-slp/m4/libtool.m4
new file mode 100644 (file)
index 0000000..4ceb7f1
--- /dev/null
@@ -0,0 +1,7309 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+                  [m4_fatal([Libtool version $1 or higher is required],
+                            63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_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.
+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 delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+       [m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+       [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_quote(m4_if([$2], [],
+                    m4_quote(lt_decl_tag_varnames),
+                 m4_quote(m4_shift($@)))),
+     m4_split(m4_normalize(m4_quote(_LT_TAGS))))])
+m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+          m4_quote(lt_decl_varnames),
+       m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+                                          [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+       dnl If the libtool generation code has been placed in $CONFIG_LT,
+       dnl instead of duplicating it all over again into config.status,
+       dnl then we will have config.status run $CONFIG_LT later, so it
+       dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+  ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+  lt_cl_success=:
+  test "$silent" = yes &&
+    lt_config_lt_args="$lt_config_lt_args --quiet"
+  exec AS_MESSAGE_LOG_FD>/dev/null
+  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+  exec AS_MESSAGE_LOG_FD>>config.log
+  $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, 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 TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # 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
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_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
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_XSI_SHELLFNS
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],                 [_LT_LANG(C)],
+  [C++],               [_LT_LANG(CXX)],
+  [Java],              [_LT_LANG(GCJ)],
+  [Fortran 77],                [_LT_LANG(F77)],
+  [Fortran],           [_LT_LANG(FC)],
+  [Windows Resource],  [_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on 
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it? 
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  if test "$GCC" = "yes"; then
+    output_verbose_link_cmd=echo
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_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.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# 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 "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+        [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_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.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+ECHO=${lt_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 <<_LT_EOF
+[$]*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_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 &&
+        { 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.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+    [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_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-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|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*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*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*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           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_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[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
+  ;;
+sparc*-*solaris*)
+  # 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
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$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}\{0,1\} :&$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 other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker 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
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# 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
+  teststring="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;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # 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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+                = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # 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`
+    fi
+    ;;
+  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
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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 <<_LT_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); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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="-ldld"],
+       [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="-ldld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  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"
+    wl=$lt_prog_compiler_wl 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_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
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_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
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+        [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+        [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+        [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   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}\{0,1\} :&$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
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+       [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_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
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_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
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_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_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+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"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".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"
+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'
+  ;;
+
+aix[[4-9]]*)
+  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*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    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'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  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_cmds=".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~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    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}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  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
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  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
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    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_cmds='.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_cmds='.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_cmds='.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'
+  ;;
+
+interix[[3-9]]*)
+  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'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+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* | k*bsd*-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'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+       [shlibpath_overrides_runpath=yes])])
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # 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
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # 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}${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=qnx
+  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='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  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_cmds=".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"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+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.3*)
+  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
+      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
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+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
+
+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
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[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]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_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="m4_if([$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 <<_LT_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
+
+_LT_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
+_LT_DECL([], [MAGIC_CMD], [0],
+        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_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
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_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])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 variants of GNU ld 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])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[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 lds 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
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[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'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+AC_CACHE_CHECK([how to recognize 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
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  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*)
+  # func_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='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  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|DragonFly)/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
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+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=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  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
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  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
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_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"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[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_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+       [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# 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]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# 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
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_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 <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_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_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 -rf 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
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | 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).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       else
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+           fi
+           ;;
+         aCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         xlc* | xlC*)
+           # IBM XL 8.0 on PPC
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           _LT_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_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+       ;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | 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).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    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_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_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_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | 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).
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc* | ifort*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl*)
+       # IBM XL C 8.0/Fortran 10.1 on PPC
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+       [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+       [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+       [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[[4-9]]*)
+    # 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_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_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_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_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # 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.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  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
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_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}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_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.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_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 $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       xl[[cC]]*)                      # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+         _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_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.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       _LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      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_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_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
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       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_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      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
+         :
+         else
+         # We have old collect2
+         _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      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='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      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_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX
+        _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         # Exported symbols can be pulled into shared objects from archives
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_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_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         _LT_TAGVAR(hardcode_direct, $1)=no
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         ;;
+       *)
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        AC_LINK_IFELSE(int foo(void) {},
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+        )
+        LDFLAGS="$save_LDFLAGS"
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_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 $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_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}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_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'
+         ;;
+       *)
+         wlarc='${wl}'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_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} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      _LT_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_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+         _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+       motorola)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       _LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_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*
+      echo "$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_TAGVAR(lt_prog_compiler_wl, $1)
+       pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+        _LT_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+        then
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [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]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+    [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+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_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## 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...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will 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
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=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])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # 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
+    $as_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
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -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_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        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
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          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_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        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
+           :
+         else
+           # We have old collect2
+           _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        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='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        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_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           _LT_SYS_MODULE_PATH_AIX
+           _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         _LT_TAGVAR(ld_shlibs, $1)=no
+         ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+        # as there is no search path for DLLs.
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+        _LT_TAGVAR(always_export_symbols, $1)=no
+        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+          # If the export-symbols file already is a .def file (1st line
+          # is EXPORTS), use it as is; otherwise, prepend...
+          _LT_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        else
+          _LT_TAGVAR(ld_shlibs, $1)=no
+        fi
+        ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+       ;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_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_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~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 "X$list" | $Xsed'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_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_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           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 "X$list" | $Xsed'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+       _LT_TAGVAR(hardcode_direct, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_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_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+             fi
+           fi
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+           ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu)
+        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_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --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 "X$list" | $Xsed'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_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_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+               $RANLIB $oldlib'
+             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 will use weak symbols
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+           runpath_var=LD_RUN_PATH
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+           _LT_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 "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
+           ;;
+         xl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+             _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='echo'
+
+             # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+       esac
+       ;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_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::"'
+       ;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+       ;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=echo
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      osf3* | 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_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+               ;;
+           esac
+
+           _LT_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 "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+             _LT_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_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_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} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+           case $host_os in
+             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+           output_verbose_link_cmd='echo'
+
+           # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+           # The C++ compiler must be used to create the archive.
+           _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$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_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+               *)
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+       _LT_TAGVAR(link_all_deplibs, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
+
+       case $cc_basename in
+          CC*)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+         *)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_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...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  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
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([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.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+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...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_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
+
+  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_TAGVAR(compiler_lib_search_path, $1)"; then
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+          else
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_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_TAGVAR(postdeps, $1)"; then
+          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+        else
+          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+        fi
+       fi
+       ;;
+
+    *.$objext)
+       # 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_TAGVAR(predep_objects, $1)"; then
+          _LT_TAGVAR(predep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+        fi
+       else
+        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+          _LT_TAGVAR(postdep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(postdep_objects, $1)="$_LT_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
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_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_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${F77-"f77"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    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
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=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])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_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...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${FC-"f95"}
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    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
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=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])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_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...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## 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...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# 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_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# 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.                               #
+############################################################
+
+m4_defun([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
+IFS=$as_save_IFS
+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 && continue
+  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_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]+=\$[2]"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+    ;;
+  esac
+])
diff --git a/move-slp/m4/ltoptions.m4 b/move-slp/m4/ltoptions.m4
new file mode 100644 (file)
index 0000000..e970119
--- /dev/null
@@ -0,0 +1,368 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+                     [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+                  [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+       [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+       [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+        [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+                [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+                [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+                [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+                [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/move-slp/m4/ltsugar.m4 b/move-slp/m4/ltsugar.m4
new file mode 100644 (file)
index 0000000..9000a05
--- /dev/null
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+            [m4_foreach([_Lt_suffix],
+               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+                [lt_append([$1], [$2], [$3])$4],
+                [$5])],
+         [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+       [$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/move-slp/m4/ltversion.m4 b/move-slp/m4/ltversion.m4
new file mode 100644 (file)
index 0000000..f3c5309
--- /dev/null
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers                      -*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3017 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/move-slp/m4/lt~obsolete.m4 b/move-slp/m4/lt~obsolete.m4
new file mode 100644 (file)
index 0000000..637bb20
--- /dev/null
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC],             [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/move-slp/module.desktop.in b/move-slp/module.desktop.in
new file mode 100755 (executable)
index 0000000..99d6384
--- /dev/null
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Link
+Name=move-slp
+Icon=e-module-move-slp
+X-Enlightenment-ModuleType=system
+Comment=
+Comment[fr]=
+Comment[it]=
diff --git a/move-slp/src/Makefile.am b/move-slp/src/Makefile.am
new file mode 100644 (file)
index 0000000..9cf5446
--- /dev/null
@@ -0,0 +1,20 @@
+MAINTAINERCLEANFILES = Makefile.in
+MODULE = move-slp
+
+LDFLAGS +=
+
+pkgdir                 = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
+pkg_LTLIBRARIES        = module.la
+module_la_SOURCES      = e_mod_main.c \
+                         e_mod_main.h \
+                         e_mod_move.c \
+                         e_mod_move.h \
+                         e_mod_move_event.c \
+                         e_mod_move_event.h \
+                         e_mod_move_win_type.c \
+                         e_mod_move_win_type.h \
+                         e_mod_data.h
+module_la_LIBADD       =
+module_la_CFLAGS       = @ENLIGHTENMENT_CFLAGS@
+module_la_LDFLAGS      = -module -avoid-version @ENLIGHTENMENT_LIBS@
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/move-slp/src/e_mod_data.h b/move-slp/src/e_mod_data.h
new file mode 100644 (file)
index 0000000..337ca81
--- /dev/null
@@ -0,0 +1,193 @@
+#ifndef E_MOD_DATA_H
+#define E_MOD_DATA_H
+
+#include "e_mod_move_event.h"
+#include "e_mod_move_win_type.h"
+
+typedef struct _E_Move_Win E_Move_Win;
+typedef struct _E_Move E_Move;
+typedef struct _E_Move_AppTray_Helper E_Move_AppTray_Helper;
+typedef struct _E_Move_Key_Helper E_Move_Key_Helper;
+typedef struct _E_Move_Block_Helper E_Move_Block_Helper;
+typedef struct _E_Move_Border E_Move_Border;
+typedef struct _E_Move_TP_Indi E_Move_TP_Indi;
+typedef struct _E_Move_Active_Win E_Move_Active_Win;
+
+typedef enum
+        {
+           MOVE_OFF_STAGE = 0,
+           MOVE_ON_STAGE  = 1,
+           MOVE_WORK      = 2,
+        } E_Move_State;
+
+typedef enum
+        {
+           LAYOUT_POSITION_X,
+           LAYOUT_POSITION_Y
+        } QuickPanel_Layout_Position;
+
+struct _E_Move_AppTray_Helper
+{
+   Ecore_X_Window win;
+   Eina_Bool visible;  // app_tray_helper window's state ( show or hide )
+
+   struct geometry
+   {
+      int x;
+      int y;
+      int w;
+      int h;
+   } geo;
+
+   struct _ecore_event
+   {
+      Ecore_Event_Handler_Cb up; // mouse up callback function
+      Ecore_Event_Handler_Cb down; // mouse move callback function
+      Ecore_Event_Handler_Cb move; // mouse down callback function
+      Eina_Bool              click;
+      Eina_Bool              enable;
+      Ecore_Event_Handler   *up_handler;
+      Ecore_Event_Handler   *down_handler;
+      Ecore_Event_Handler   *move_handler;
+   } event;
+
+   Evas_Object *obj;
+};
+
+struct _E_Move_Key_Helper
+{
+   Eina_Bool state;  // enable or disable
+   Ecore_X_Window win;
+   Ecore_Event_Handler *key_down_handler;
+};
+
+struct _E_Move_Block_Helper
+{
+   Eina_Bool state;  // enable or disable
+   Ecore_X_Window win;
+   Evas_Object  *obj;
+};
+
+struct _E_Move_Border
+{
+    EINA_INLIST;
+    E_Border       *bd;
+    E_Move_Win_Type win_type;
+};
+
+struct _E_Move_TP_Indi
+{
+   Evas_Object  *obj;
+   E_Move_Event *event;
+   E_Border     *target_bd;
+
+   Eina_Bool    mouse_clicked;
+   struct _input_shape
+   {
+      int x;
+      int y;
+      int w;
+      int h;
+   } input_shape;
+   struct _touch
+   {
+      Eina_Bool visible;
+      Ecore_X_Window win;
+      Ecore_Event_Handler_Cb ev_up;
+      Ecore_Event_Handler   *ev_up_handler;
+      Evas_Object *obj;
+   } touch;
+};
+
+struct _E_Move_Active_Win {
+   Ecore_X_Window win;
+   E_Border *bd;
+   Evas_Object *obj;
+   Eina_Bool animatable;
+};
+
+struct _E_Move_Win
+{
+   EINA_INLIST;
+
+   E_Move *m;
+
+   struct _quickpanel_layout
+   {
+      int position_x;
+      int position_y;
+   } quickpanel_layout;
+
+   struct _indicator_layout
+   {
+      int portrait_apptray_input_region_width;
+      int landscape_apptray_input_region_height;
+   } indicator_layout;
+
+   struct _event_handler
+   {
+      Evas_Object_Event_Cb  win_mouse_up_cb;
+      Evas_Object_Event_Cb  win_mouse_move_cb;
+      Evas_Object_Event_Cb  win_mouse_down_cb;
+      Evas_Object_Event_Cb  obj_restack_cb;
+      Evas_Object_Event_Cb  obj_del_cb;
+      Eina_Bool             mouse_clicked;
+      int                   window_rotation_angle;
+   } event_handler;
+
+   struct _shape_input_mask
+   {
+      int input_region_x;
+      int input_region_y;
+      int input_region_w;
+      int input_region_h;
+   } shape_input_region;
+
+   Evas_Object  *move_object;
+   E_Border     *border;
+
+   E_Move_Win_Type win_type;
+
+   struct _window_geometry
+   {
+      int x;
+      int y;
+      int w;
+      int h;
+   } window_geometry;
+
+   E_Move_State state;
+   E_Move_Event *event;
+   Eina_Bool move_lock;
+   Eina_Bool can_unlock;
+};
+
+struct _E_Move
+{
+   Eina_Inlist *wins;
+   Eina_Inlist *borders;
+   E_Manager   *man;
+   E_Move_Win  *quickpanel;
+   Eina_Bool   rotation_lock;
+
+   struct _quickpanel_child
+   {
+      Eina_List *quickpanel_transients;
+   } quickpanel_child;
+
+   E_Move_AppTray_Helper *apptray_helper;
+   E_Move_Win            *app_tray;
+
+   E_Move_Win            *indicator;
+
+   E_Move_Key_Helper *key_helper;
+
+   E_Move_Block_Helper *block_helper;
+
+   E_Move_State state;
+
+   E_Move_Active_Win active_win;
+
+   E_Move_TP_Indi *tp_indi;
+};
+#endif // E_MOD_DATA_H
diff --git a/move-slp/src/e_mod_main.c b/move-slp/src/e_mod_main.c
new file mode 100644 (file)
index 0000000..b20627a
--- /dev/null
@@ -0,0 +1,54 @@
+#include "e.h"
+#include "e_mod_main.h"
+#include "e_mod_move_win_type.h"
+
+static Eina_Bool _e_move_init(void);
+static void _e_move_shutdown(void);
+
+EAPI E_Module_Api e_modapi =
+{
+   E_MODULE_API_VERSION, "Window Move Helper"
+};
+
+EAPI void*
+e_modapi_init(E_Module* m)
+{
+   if (!_e_move_init())
+     {
+        printf("[move][%s] Failed @ _e_move_init()..!\n", __FUNCTION__);
+        return NULL;
+     }
+
+   return m;
+}
+
+EAPI int
+e_modapi_shutdown(E_Module* m)
+{
+   _e_move_shutdown();
+
+   return 1;
+}
+
+EAPI int
+e_modapi_save(E_Module* m)
+{
+   return 1;
+}
+
+static Eina_Bool
+_e_move_init(void)
+{
+   if (!e_mod_move_init())
+     {
+        return EINA_FALSE;
+     }
+
+   return EINA_TRUE;
+}
+
+static void
+_e_move_shutdown(void)
+{
+   e_mod_move_shutdown();
+}
diff --git a/move-slp/src/e_mod_main.h b/move-slp/src/e_mod_main.h
new file mode 100644 (file)
index 0000000..0c41bc8
--- /dev/null
@@ -0,0 +1,12 @@
+
+#ifndef __E_MOD_MAIN_H__
+#define __E_MOD_MAIN_H__
+
+EAPI extern E_Module_Api e_modapi;
+
+EAPI void *e_modapi_init(E_Module* m);
+EAPI int e_modapi_shutdown(E_Module* m);
+EAPI int e_modapi_save(E_Module* m);
+
+#endif//__E_MOD_MAIN_H__
+
diff --git a/move-slp/src/e_mod_move.c b/move-slp/src/e_mod_move.c
new file mode 100644 (file)
index 0000000..a31bbbc
--- /dev/null
@@ -0,0 +1,3693 @@
+#include "e.h"
+#include "e_mod_main.h"
+#include "e_mod_move.h"
+#include "e_mod_data.h"
+#include "config.h"
+#include "utilX.h"
+
+#define QP_ANI
+#define AT_ANI
+#define _WND_REQUEST_ANGLE_IDX 0
+#define _WND_CURR_ANGLE_IDX    1
+#define MAX_OPACITY            128
+#define MIN_OPACITY            0
+
+#define STR_ATOM_CM_QUICKPANEL_LAYOUT_POSITION     "_E_COMP_QUICKPANEL_LAYOUT_POSITION"
+#define STR_ATOM_CM_WINDOW_INPUT_REGION            "_E_COMP_WINDOW_INPUT_REGION"
+#define STR_ATOM_ILLUME_MINI_CONTROLLER_WINDOW     "_E_ILLUME_MINI_CONTROLLER_WINDOW"
+#define STR_ATOM_NET_WM_WINDOW_SHOW                "_NET_WM_WINDOW_SHOW"
+#define STR_ATOM_ROTATION_LOCK                     "_E_ROTATION_LOCK"
+
+#ifdef  _MAKE_ATOM
+# undef _MAKE_ATOM
+#endif
+
+#define _MAKE_ATOM(a, s)                              \
+   do {                                               \
+        a = ecore_x_atom_get(s);                      \
+        if (!a)                                       \
+          fprintf(stderr,                             \
+                  "[E-move] ##s creation failed.\n"); \
+   } while(0)
+
+#define E_CHECK(x)           do {if (!(x)) return;    } while(0)
+#define E_CHECK_RETURN(x, r) do {if (!(x)) return (r);} while(0)
+
+typedef struct _Anim_Data
+{
+   E_Move    *m;
+   int        start_x;
+   int        start_y;
+   int        end_x;
+   int        end_y;
+   int        dist_x;
+   int        dist_y;
+   int        start_opacity;
+   int        end_opacity;
+   int        diff_opacity;
+   Eina_Bool  is_on_screen;
+   Eina_List *qp_transients;
+} Anim_Data;
+
+static Anim_Data qp_anim_data;
+static Anim_Data apptray_anim_data;
+
+Ecore_X_Atom      ATOM_QUICKPANEL_LAYOUT_POSITION      = 0;
+Ecore_X_Atom      ATOM_WINDOW_INPUT_REGION             = 0;
+Ecore_X_Atom      ATOM_MINI_CONTROLLER_WINDOW          = 0;
+Ecore_X_Atom      ATOM_NET_WM_WINDOW_SHOW              = 0;
+Ecore_X_Atom      ATOM_ROTATION_LOCK                   = 0;
+
+static int        APP_TRAY_CHECK_REGION = 0;
+static Evas*      e_move_comp_evas;
+static E_Move*    _move = NULL;
+static Eina_Hash* windows = NULL;
+static Eina_Hash* borders = NULL;
+static Eina_Hash* move_borders = NULL;
+
+static void _e_mod_move_comp_evas_get(E_Manager* man);
+static Eina_Bool      _e_mod_move_property(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__);
+static Eina_Bool      _e_mod_move_message(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__);
+static Eina_Bool      _e_mod_move_bd_add(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_bd_del(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_bd_show(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_bd_hide(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_bd_move(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_bd_resize(void *data __UNUSED__, int type __UNUSED__, void *event);
+static E_Move_Win*    _e_mod_move_win_find(Ecore_X_Window win);
+static E_Move_Win*    _e_mod_move_border_client_find(Ecore_X_Window win);
+static E_Move_Border* _e_mod_move_border_find(Ecore_X_Window win);
+static void           _e_mod_move_set(E_Move *m);
+static E_Move*        _e_mod_move_add(E_Manager *man);
+static Evas_Object*   _e_mod_move_comp_window_object_get(E_Manager* man, E_Border *bd);
+static Evas_Object*   _e_mod_move_comp_input_window_object_get(E_Manager* man, Ecore_X_Window win);
+static Eina_Bool      _e_mod_move_comp_window_input_region_set(E_Manager* man, E_Border *bd, int x, int y, int w, int h);
+static Eina_Bool      _e_mod_move_comp_window_move_lock(E_Manager* man, E_Border *bd);
+static Eina_Bool      _e_mod_move_comp_window_move_unlock(E_Manager* man, E_Border *bd);
+static Eina_Bool      _e_mod_move_win_get_prop_angle(Ecore_X_Window win, int *req, int *curr);
+static Eina_Bool      _e_mod_move_quickpanel_transients_find(E_Move *m);
+static Eina_Bool      _e_mod_move_quickpanel_transients_release(E_Move *m);
+static Eina_Bool      _e_mod_move_quickpanel_transients_remove(E_Move_Win *mw);
+static Eina_Bool      _e_mod_move_quickpanel_move(E_Move *m, int quickpanel_move_x, int quickpanel_move_y,
+                                                  int quickpanel_child_move_x, int quickpanel_child_move_y,
+                                                  QuickPanel_Layout_Position layout_position,
+                                                  Eina_Bool window_move);
+static Eina_Bool      _e_mod_move_app_tray_move(E_Move *m, int app_tray_move_x, int app_tray_move_y, Eina_Bool window_move);
+static Eina_Bool      _e_mod_move_prop_window_rotation(Ecore_X_Event_Window_Property *ev);
+static Ecore_X_Window _e_mod_move_win_get_client_xid(E_Move_Win *mw);
+static Eina_Bool      _e_mod_move_prop_quickpanel_layout(Ecore_X_Event_Window_Property *ev);
+static Eina_Bool      _e_mod_move_prop_window_input_region(Ecore_X_Event_Window_Property *ev);
+static Eina_Bool      _e_mod_move_set_window_input_region(E_Move_Win *mw);
+static Eina_Bool      _e_mod_move_set_quickpanel_layout(E_Move_Win *mw);
+static void           _e_mod_move_bd_show_internal(E_Border *bd);
+static void           _e_mod_move_win_del(E_Move_Win *mw);
+static Eina_Bool      e_mod_move_apptray_helper_mouse_up_callback(void *data, int type __UNUSED__, void *event);
+static Eina_Bool      e_mod_move_apptray_helper_mouse_down_callback(void *data, int type __UNUSED__, void *event);
+static Eina_Bool      e_mod_move_apptray_helper_mouse_move_callback(void *data, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_prop_active_window_change(Ecore_X_Event_Window_Property *ev);
+static Eina_Bool      _e_mod_move_prop_indicator_state_change(Ecore_X_Event_Window_Property *ev);
+static Eina_Bool      _e_mod_move_hw_key_down_cb (void *data, int type __UNUSED__, void *event);
+static Eina_Bool      _e_mod_move_quickpanel_move_animation(E_Move *m, int quickpanel_move_x, int quickpanel_move_y, Eina_Bool is_on_screen);
+static Eina_Bool      _qp_anim_frame(void *data, double pos);
+static Eina_Bool      _e_mod_move_apptray_move_animation(E_Move *m, int apptray_move_x, int apptray_move_y, Eina_Bool is_on_screen);
+static Eina_Bool      _apptray_anim_frame(void *data, double pos);
+static E_Border*      _e_mod_move_bd_find_by_indicator (E_Move *m);
+static Eina_Bool      _e_mod_move_lock_screen_check(E_Move *m);
+static Eina_Bool      _e_mod_move_mini_controller_check(E_Move *m);
+static Eina_Bool      _animator_move(E_Move_Win *mw, int dst_x, int dst_y, double duration, Eina_Bool after_show);
+static Eina_Bool      _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev);
+static Eina_Bool      _e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev);
+static Eina_Bool      e_mod_move_active_win_state_update(E_Move *m);
+static Eina_Bool      _e_mod_move_quickpanel_transients_move_lock(E_Move *m, Eina_Bool move_offscreen);
+
+/* indicator mouse callbacks */
+static E_Move_Event_State _indicator_cb_motion_check(E_Move_Event *ev, void *data);
+static Eina_Bool          _indicator_cb_motion_start(void *data, void *event_info);
+static Eina_Bool          _indicator_cb_motion_move(void *data, void *event_info);
+static Eina_Bool          _indicator_cb_motion_end(void *data, void *event_info);
+
+static int                _e_mod_move_prop_indicator_state_get(Ecore_X_Window win);
+static Eina_Bool          _e_mod_move_tp_indi_show(E_Move *m, E_Border *target);
+static Eina_Bool          _e_mod_move_tp_indi_hide(E_Move *m);
+static void               _e_mod_move_tp_indi_touch_win_show(E_Move *m);
+static void               _e_mod_move_tp_indi_touch_win_hide(E_Move *m);
+static void               _e_mod_move_tp_indi_touch_win_stack_update(E_Move *m);
+static Eina_Bool          e_mod_move_tp_indi_touch_win_mouse_up_callback(void *data, int type __UNUSED__, void *event);
+
+E_Move* _e_mod_move_get(void);
+void    e_mod_move_win_quickpanel_mouse_down_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_quickpanel_mouse_move_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_quickpanel_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_app_tray_mouse_down_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_app_tray_mouse_move_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_app_tray_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_app_tray_restack_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_quickpanel_mini_del_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_win_del_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void    e_mod_move_show_apptray_helper(E_Move *m);
+void    e_mod_move_hide_apptray_helper(E_Move *m);
+void    _e_mod_move_key_handler_enable(E_Move *m);
+void    _e_mod_move_key_handler_disable(E_Move *m);
+void    _e_mod_move_illume_quickpanel_state_on(E_Move *m);
+void    _e_mod_move_illume_quickpanel_state_off(E_Move *m);
+void    _e_mod_move_rotate_block_enable(E_Move *m);
+void    _e_mod_move_rotate_block_disable(E_Move *m);
+void    _e_mod_move_rotation_lock(E_Move *m);
+void    _e_mod_move_rotation_unlock(E_Move *m);
+
+static Eina_Bool
+_e_mod_move_quickpanel_transients_find(E_Move *m)
+{
+   E_Move_Win *find_mw = NULL;
+   Eina_List *l = NULL;
+   E_Border *child_bd = NULL;
+
+   if (!m) return EINA_FALSE;
+
+   if (m->quickpanel)
+     {
+        EINA_LIST_FOREACH(m->quickpanel->border->transients, l, child_bd)
+          {
+             if (!child_bd) continue;
+
+             find_mw = _e_mod_move_win_find(child_bd->win);
+             if (find_mw)
+               {
+                  m->quickpanel_child.quickpanel_transients = eina_list_append(m->quickpanel_child.quickpanel_transients, find_mw );
+                  find_mw = NULL;
+               }
+          }
+     }
+   else
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_quickpanel_transients_release(E_Move *m)
+{
+   if (!m) return EINA_FALSE;
+
+   m->quickpanel_child.quickpanel_transients = eina_list_free(m->quickpanel_child.quickpanel_transients);
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_quickpanel_move(E_Move *m, int quickpanel_move_x, int quickpanel_move_y,
+                                       int quickpanel_child_move_x, int quickpanel_child_move_y,
+                                       QuickPanel_Layout_Position layout_position,
+                                       Eina_Bool window_move)
+{
+   Eina_List *l = NULL;
+   E_Move_Win *find_mw = NULL;
+
+   if (!m) return EINA_FALSE;
+   if (!m->quickpanel) return EINA_FALSE;
+
+   if (window_move)
+     {
+        evas_object_move(m->quickpanel->move_object, quickpanel_move_x, quickpanel_move_y);
+        e_border_move(m->quickpanel->border, quickpanel_move_x, quickpanel_move_y);
+     }
+   else evas_object_move(m->quickpanel->move_object, quickpanel_move_x, quickpanel_move_y);
+
+   if (m->quickpanel_child.quickpanel_transients)
+     {
+        EINA_LIST_FOREACH(m->quickpanel_child.quickpanel_transients, l, find_mw)
+          {
+             if (find_mw)
+               {
+                 if (layout_position == LAYOUT_POSITION_X)
+                   {
+                      if (window_move)
+                        {
+                           evas_object_move(find_mw->move_object, find_mw->quickpanel_layout.position_x + quickpanel_child_move_x , quickpanel_child_move_y);
+                           e_border_move(find_mw->border, find_mw->quickpanel_layout.position_x + quickpanel_child_move_x , quickpanel_child_move_y);
+                        }
+                      else evas_object_move(find_mw->move_object, find_mw->quickpanel_layout.position_x + quickpanel_child_move_x , quickpanel_child_move_y);
+                   }
+                 else
+                   {
+                      if (window_move)
+                        {
+                           evas_object_move(find_mw->move_object, quickpanel_child_move_x, find_mw->quickpanel_layout.position_y + quickpanel_child_move_y);
+                           e_border_move(find_mw->border, quickpanel_child_move_x, find_mw->quickpanel_layout.position_y + quickpanel_child_move_y);
+                        }
+                      else evas_object_move(find_mw->move_object, quickpanel_child_move_x, find_mw->quickpanel_layout.position_y + quickpanel_child_move_y);
+                   }
+               }
+          }
+     }
+
+   if (m->active_win.animatable)
+     {
+        int move_x = 0;
+        int move_y = 0;
+        if (layout_position == LAYOUT_POSITION_X)
+          {
+             if (m->quickpanel->event_handler.window_rotation_angle == 90)
+               move_x = quickpanel_move_x + m->quickpanel->border->w;
+             else
+                move_x = quickpanel_move_x - m->quickpanel->border->w;
+
+             move_y = quickpanel_move_y;
+          }
+        else
+          {
+             move_x = quickpanel_move_x;
+
+             if (m->quickpanel->event_handler.window_rotation_angle == 0)
+                move_y = quickpanel_move_y + m->quickpanel->border->h;
+             else
+                move_y = quickpanel_move_y - m->quickpanel->border->h;
+          }
+        evas_object_move(m->active_win.obj, move_x , move_y);
+     }
+
+   if (m->block_helper)
+     {
+        int opacity = MAX_OPACITY;
+        int move_x = 0;
+        int move_y = 0;
+        int angle = 0;
+
+        angle = m->quickpanel->event_handler.window_rotation_angle;
+        angle %= 360;
+
+        switch (angle)
+          {
+           case  90:
+             move_x = quickpanel_move_x + m->quickpanel->border->w;
+             opacity = MAX_OPACITY * move_x / m->quickpanel->border->w;
+             break;
+           case 180:
+             move_y = m->man->h - quickpanel_move_y;
+             opacity = MAX_OPACITY * move_y / m->quickpanel->border->h;
+             break;
+           case 270:
+             move_x = m->man->w - quickpanel_move_x;
+             opacity = MAX_OPACITY * move_x / m->quickpanel->border->w;
+             break;
+           case   0:
+           default :
+             move_y = quickpanel_move_y + m->quickpanel->border->h;
+             opacity = MAX_OPACITY * move_y / m->quickpanel->border->h;
+             break;
+          }
+        evas_object_color_set(m->block_helper->obj, 0, 0, 0, opacity);
+     }
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_app_tray_move(E_Move *m, int app_tray_move_x, int app_tray_move_y, Eina_Bool window_move)
+{
+   if (!m) return EINA_FALSE;
+   if (!m->app_tray) return EINA_FALSE;
+
+   if (window_move)
+     {
+        evas_object_move(m->app_tray->move_object, app_tray_move_x, app_tray_move_y);
+        e_border_move(m->app_tray->border, app_tray_move_x, app_tray_move_y);
+     }
+   else evas_object_move(m->app_tray->move_object, app_tray_move_x, app_tray_move_y);
+
+   if (m->apptray_helper)
+     {
+        int opacity = MAX_OPACITY;
+        int move_x = 0;
+        int move_y = 0;
+        int angle = 0;
+
+        angle = m->app_tray->event_handler.window_rotation_angle;
+        angle %= 360;
+
+        switch (angle)
+          {
+           case  90:
+             move_x = app_tray_move_x + m->app_tray->border->w;
+             opacity = MAX_OPACITY * move_x / m->app_tray->border->w;
+             break;
+           case 180:
+             move_y = m->man->h - app_tray_move_y;
+             opacity = MAX_OPACITY * move_y / m->app_tray->border->h;
+             break;
+           case 270:
+             move_x = m->man->w - app_tray_move_x;
+             opacity = MAX_OPACITY * move_x / m->app_tray->border->w;
+             break;
+           case   0:
+           default :
+             move_y = app_tray_move_y  + m->app_tray->border->h;
+             opacity = MAX_OPACITY * move_y / m->app_tray->border->h;
+             break;
+          }
+       evas_object_color_set(m->apptray_helper->obj, 0, 0, 0, opacity);
+     }
+
+   return EINA_TRUE;
+}
+
+static Evas_Object *
+_e_mod_move_comp_window_object_get(E_Manager* man, E_Border *bd)
+{
+   E_Manager_Comp_Source *comp_data = NULL;
+   if (!man) return NULL;
+   if (!bd) return NULL;
+
+   if (man->comp)
+     {
+        comp_data = e_manager_comp_src_get(man, bd->win);
+        if (!comp_data) return NULL;
+        return e_manager_comp_src_shadow_get(man, comp_data);
+     }
+   return NULL;
+}
+
+static Evas_Object *
+_e_mod_move_comp_input_window_object_get(E_Manager* man, Ecore_X_Window win)
+{
+   E_Manager_Comp_Source *comp_data = NULL;
+   if (!man) return NULL;
+
+   if (man->comp)
+     {
+        comp_data = e_manager_comp_src_get(man, win);
+        if (!comp_data) return NULL;
+        return e_manager_comp_src_shadow_get(man, comp_data);
+     }
+   return NULL;
+}
+
+static Eina_Bool
+_e_mod_move_comp_window_input_region_set(E_Manager* man, E_Border *bd, int x, int y, int w, int h)
+{
+   E_Manager_Comp_Source *comp_data = NULL;
+   if (!man) return EINA_FALSE;
+   if (!bd) return EINA_FALSE;
+
+   if (man->comp)
+     {
+        comp_data = e_manager_comp_src_get(man, bd->win);
+        if (!comp_data) return EINA_FALSE;
+        return e_manager_comp_src_input_region_set(man, comp_data, x, y, w, h);
+     }
+   return EINA_FALSE;
+}
+
+static Eina_Bool
+_e_mod_move_comp_window_move_lock(E_Manager* man, E_Border *bd)
+{
+   E_Manager_Comp_Source *comp_data = NULL;
+   if (!man) return EINA_FALSE;
+   if (!bd) return EINA_FALSE;
+
+   if (man->comp)
+     {
+        comp_data = e_manager_comp_src_get(man, bd->win);
+        if (!comp_data) return EINA_FALSE;
+        return e_manager_comp_src_move_lock(man, comp_data);
+     }
+   return EINA_FALSE;
+}
+
+static Eina_Bool
+_e_mod_move_comp_window_move_unlock(E_Manager* man, E_Border *bd)
+{
+   E_Manager_Comp_Source *comp_data = NULL;
+   if (!man) return EINA_FALSE;
+   if (!bd) return EINA_FALSE;
+
+   if (man->comp)
+     {
+        comp_data = e_manager_comp_src_get(man, bd->win);
+        if (!comp_data) return EINA_FALSE;
+        return e_manager_comp_src_move_unlock(man, comp_data);
+     }
+   return EINA_FALSE;
+}
+
+static E_Move *
+_e_mod_move_add(E_Manager *man)
+{
+   E_Move *m;
+   m = calloc(1, sizeof(E_Move));
+   if (!m) return NULL;
+
+   m->man = man;
+
+   return m;
+}
+
+E_Move *
+_e_mod_move_get(void)
+{
+   return _move;
+}
+
+static void
+_e_mod_move_set(E_Move *m)
+{
+   if (_move)
+     {
+        fprintf(stderr,
+                "[E17-move] %s(%d) E_Move setup failed.\n",
+                __func__, __LINE__);
+        return;
+     }
+   _move = m;
+}
+
+static E_Move_Win *
+_e_mod_move_win_find(Ecore_X_Window win)
+{
+   return eina_hash_find(windows, e_util_winid_str_get(win));
+}
+
+static E_Move_Win *
+_e_mod_move_border_client_find(Ecore_X_Window win)
+{
+   return eina_hash_find(borders, e_util_winid_str_get(win));
+}
+
+static E_Move_Border*
+_e_mod_move_border_find(Ecore_X_Window win)
+{
+   return eina_hash_find(move_borders, e_util_winid_str_get(win));
+}
+
+static Eina_Bool
+_e_mod_move_bd_add(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Add *ev = event;
+   E_Border *bd = NULL;
+   E_Move_Border *m_bd = NULL;
+   E_Move_Win_Type win_type = WIN_NORMAL;
+   E_Move *m = _e_mod_move_get();
+
+   bd = e_border_find_by_window(ev->border->win);
+   if ((win_type = e_mod_move_win_type_get(bd)) == WIN_NORMAL)
+     {
+       return ECORE_CALLBACK_PASS_ON;
+     }
+
+   m_bd = calloc(1, sizeof(E_Move_Border));
+   if (!m_bd)
+     {
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   m_bd->bd = bd;
+   m_bd->win_type = win_type;
+
+   m->borders = eina_inlist_append(m->borders, EINA_INLIST_GET(m_bd));
+   eina_hash_add(move_borders, e_util_winid_str_get(bd->win), m_bd);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_bd_del(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Remove *ev = event;
+   E_Move *m = _e_mod_move_get();
+   E_Move_Border *m_bd = NULL;
+   m_bd = _e_mod_move_border_find(ev->border->win);
+   if (!m_bd) return ECORE_CALLBACK_PASS_ON;
+
+   m->borders = eina_inlist_remove(m->borders, EINA_INLIST_GET(m_bd));
+   eina_hash_del(move_borders, e_util_winid_str_get(m_bd->bd->win), m_bd);
+   free(m_bd);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+void
+_e_mod_move_bd_show_internal(E_Border *bd)
+{
+   int req_angle = -1;
+   int cur_angle = -1;
+   E_Move_Win *mw = NULL;
+
+   E_Move_Win_Type win_type = WIN_NORMAL;
+   E_Move *m = _e_mod_move_get();
+
+   if (!bd)
+     {
+        return;
+     }
+
+   if (!m)
+     {
+        return;
+     }
+
+   if ((win_type = e_mod_move_win_type_get(bd)) == WIN_NORMAL)
+     {
+        return;
+     }
+
+   mw = calloc(1, sizeof(E_Move_Win));
+   if (!mw)
+     {
+        return;
+     }
+
+   mw->m = m;
+   mw->border = bd;
+   mw->win_type = win_type;
+   mw->move_object = _e_mod_move_comp_window_object_get(m->man, bd);
+
+   if (!(mw->move_object))
+     {
+        free(mw);
+        return;
+     }
+
+   if (mw->win_type == WIN_INDICATOR)
+     {
+        mw->event = e_mod_move_event_new(mw->border->client.win,
+                                         mw->move_object);
+        if (!mw->event)
+          {
+             E_FREE(mw);
+             return;
+          }
+
+        e_mod_move_event_angle_cb_set
+          (mw->event, _e_mod_move_win_get_prop_angle);
+
+        e_mod_move_event_check_cb_set
+          (mw->event, _indicator_cb_motion_check, mw);
+
+        e_mod_move_event_cb_set(mw->event, E_MOVE_EVENT_TYPE_MOTION_START,
+                                _indicator_cb_motion_start, mw);
+        e_mod_move_event_cb_set(mw->event, E_MOVE_EVENT_TYPE_MOTION_MOVE,
+                                _indicator_cb_motion_move, mw);
+        e_mod_move_event_cb_set(mw->event, E_MOVE_EVENT_TYPE_MOTION_END,
+                                _indicator_cb_motion_end, mw);
+     }
+   if (mw->win_type == WIN_QUICKPANEL_BASE)
+     {
+        mw->event_handler.win_mouse_down_cb = e_mod_move_win_quickpanel_mouse_down_callback;
+        mw->event_handler.win_mouse_move_cb = e_mod_move_win_quickpanel_mouse_move_callback;
+        mw->event_handler.win_mouse_up_cb = e_mod_move_win_quickpanel_mouse_up_callback;
+     }
+   if (mw->win_type == WIN_APP_TRAY)
+     {
+        mw->event_handler.win_mouse_down_cb = e_mod_move_win_app_tray_mouse_down_callback;
+        mw->event_handler.win_mouse_move_cb = e_mod_move_win_app_tray_mouse_move_callback;
+        mw->event_handler.win_mouse_up_cb = e_mod_move_win_app_tray_mouse_up_callback;
+        mw->event_handler.obj_restack_cb = e_mod_move_win_app_tray_restack_callback;
+     }
+   if (mw->win_type == WIN_QUICKPANEL_MINICONTROLLER)
+     mw->event_handler.obj_del_cb = e_mod_move_win_quickpanel_mini_del_callback;
+   else
+     mw->event_handler.obj_del_cb = e_mod_move_win_del_callback;
+
+   evas_object_data_set(mw->move_object, "move", mw);
+
+   if (mw->event_handler.win_mouse_down_cb)
+     {
+        evas_object_event_callback_add( mw->move_object, EVAS_CALLBACK_MOUSE_DOWN, mw->event_handler.win_mouse_down_cb, NULL);
+        if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) fprintf(stderr, "[MOVE] ERROR: Callback registering failed! Aborting. %s():%d\n",__func__, __LINE__ );
+     }
+   if (mw->event_handler.win_mouse_up_cb)
+     {
+        evas_object_event_callback_add( mw->move_object, EVAS_CALLBACK_MOUSE_UP, mw->event_handler.win_mouse_up_cb , NULL);
+        if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) fprintf(stderr, "[MOVE] ERROR: Callback registering failed! Aborting. %s():%d\n",__func__, __LINE__ );
+     }
+   if (mw->event_handler.win_mouse_move_cb)
+     {
+        evas_object_event_callback_add( mw->move_object, EVAS_CALLBACK_MOUSE_MOVE, mw->event_handler.win_mouse_move_cb, NULL);
+        if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) fprintf(stderr, "[MOVE] ERROR: Callback registering failed! Aborting. %s():%d\n",__func__, __LINE__ );
+     }
+   if (mw->event_handler.obj_restack_cb)
+     {
+        evas_object_event_callback_add( mw->move_object, EVAS_CALLBACK_RESTACK, mw->event_handler.obj_restack_cb , NULL);
+        if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) fprintf(stderr, "[MOVE] ERROR: Callback registering failed! Aborting. %s():%d\n",__func__, __LINE__ );
+     }
+   if (mw->event_handler.obj_del_cb)
+     {
+        evas_object_event_callback_add( mw->move_object, EVAS_CALLBACK_DEL, mw->event_handler.obj_del_cb , NULL);
+        if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) fprintf(stderr, "[MOVE] ERROR: Callback registering failed! Aborting. %s():%d\n",__func__, __LINE__ );
+     }
+
+   mw->window_geometry.x = bd->x;
+   mw->window_geometry.y = bd->y;
+   mw->window_geometry.w = bd->w;
+   mw->window_geometry.h = bd->h;
+
+   // set input_region
+   _e_mod_move_set_window_input_region(mw);
+
+  _e_mod_move_comp_window_input_region_set(mw->m->man, mw->border, mw->shape_input_region.input_region_x,
+                                                                   mw->shape_input_region.input_region_y,
+                                                                   mw->shape_input_region.input_region_w,
+                                                                   mw->shape_input_region.input_region_h);
+
+   if (mw->win_type == WIN_QUICKPANEL_MINICONTROLLER)
+     {
+        _e_mod_move_set_quickpanel_layout(mw);
+   }
+
+
+   if (_e_mod_move_win_get_prop_angle(_e_mod_move_win_get_client_xid(mw),
+                                      &req_angle,
+                                      &cur_angle))
+     {
+        mw->event_handler.window_rotation_angle = req_angle;
+     }
+
+   if (mw->win_type == WIN_INDICATOR) m->indicator = mw;
+   if (mw->win_type == WIN_QUICKPANEL_BASE) m->quickpanel = mw;
+   if (mw->win_type == WIN_APP_TRAY) m->app_tray = mw;
+
+   mw->state = MOVE_OFF_STAGE;
+
+
+   if (mw->win_type == WIN_INDICATOR)
+     {
+        _e_mod_move_comp_window_input_region_set(mw->m->man, mw->border,
+                                                 0,
+                                                 0,
+                                                 mw->window_geometry.w,
+                                                 mw->window_geometry.h);
+     }
+
+   if (mw->win_type == WIN_APP_TRAY)
+     e_border_move(mw->border, -10000, -10000);
+
+   m->wins = eina_inlist_append(m->wins, EINA_INLIST_GET(mw));
+   eina_hash_add(borders, e_util_winid_str_get(mw->border->client.win), mw);
+   eina_hash_add(windows, e_util_winid_str_get(mw->border->win), mw);
+}
+
+static void
+_e_mod_move_win_del(E_Move_Win *mw)
+{
+   if (!mw) return;
+
+   Eina_List *l;
+   E_Move_Win *_mw;
+   EINA_LIST_FOREACH(qp_anim_data.qp_transients, l, _mw)
+     {
+        if (!_mw) continue;
+        if (mw == _mw)
+          {
+             qp_anim_data.qp_transients = eina_list_remove(qp_anim_data.qp_transients, mw);
+          }
+     }
+
+   if ((mw->win_type == WIN_INDICATOR) &&
+       (mw->state == MOVE_WORK))
+     {
+        if ((mw->m->quickpanel) &&
+            (mw->m->quickpanel->state == MOVE_WORK))
+          {
+            int dest_x = 0, dest_y = 0;
+            switch (mw->m->quickpanel->event_handler.window_rotation_angle)
+              {
+               case  90:
+                 dest_x = -(mw->m->quickpanel->window_geometry.w);
+                 break;
+               case 180:
+                 dest_y = mw->m->quickpanel->window_geometry.h;
+                 break;
+               case 270:
+                 dest_x = mw->m->quickpanel->window_geometry.w;
+                 break;
+               case   0:
+               default :
+                 dest_y = -(mw->m->quickpanel->window_geometry.h);
+                 break;
+              }
+            _e_mod_move_quickpanel_move_animation(mw->m, dest_x, dest_y, EINA_FALSE);
+            mw->m->quickpanel->state = MOVE_OFF_STAGE;
+            _e_mod_move_illume_quickpanel_state_off(mw->m);
+            _e_mod_move_key_handler_disable(mw->m);
+          }
+
+        if((mw->m->app_tray) &&
+           (mw->m->app_tray->state == MOVE_WORK))
+          {
+            int dest_x = 0, dest_y = 0;
+            switch (mw->m->app_tray->event_handler.window_rotation_angle)
+              {
+               case  90:
+                 dest_x = -(mw->m->app_tray->window_geometry.w);
+                 break;
+               case 180:
+                 dest_y = mw->m->man->h;
+                 break;
+               case 270:
+                 dest_x = mw->m->man->w;
+                 break;
+               case   0:
+               default :
+                 dest_y = -(mw->m->app_tray->window_geometry.h);
+                 break;
+              }
+            _e_mod_move_apptray_move_animation(mw->m, dest_x, dest_y, EINA_FALSE);
+            mw->m->app_tray->state = MOVE_OFF_STAGE;
+            _e_mod_move_key_handler_disable(mw->m);
+          }
+     }
+
+   if (mw->event)
+     {
+        e_mod_move_event_free(mw->event);
+        mw->event = NULL;
+     }
+
+   evas_object_data_del(mw->move_object,"move");
+
+   if (mw->event_handler.win_mouse_down_cb)
+     evas_object_event_callback_del(mw->move_object,
+                                    EVAS_CALLBACK_MOUSE_DOWN,
+                                    mw->event_handler.win_mouse_down_cb);
+
+   if (mw->event_handler.win_mouse_up_cb)
+     evas_object_event_callback_del(mw->move_object,
+                                    EVAS_CALLBACK_MOUSE_UP,
+                                    mw->event_handler.win_mouse_up_cb);
+
+   if (mw->event_handler.win_mouse_move_cb)
+     evas_object_event_callback_del(mw->move_object,
+                                    EVAS_CALLBACK_MOUSE_MOVE,
+                                    mw->event_handler.win_mouse_move_cb);
+
+   if (mw->event_handler.obj_restack_cb)
+     evas_object_event_callback_del(mw->move_object,
+                                    EVAS_CALLBACK_RESTACK,
+                                    mw->event_handler.obj_restack_cb);
+
+   if (mw->event_handler.obj_del_cb)
+     evas_object_event_callback_del(mw->move_object,
+                                    EVAS_CALLBACK_DEL,
+                                    mw->event_handler.obj_del_cb);
+
+   if (mw->win_type == WIN_INDICATOR)
+     {
+        _e_mod_move_tp_indi_touch_win_hide(mw->m);
+        mw->m->indicator = NULL;
+     }
+
+   if (mw->win_type == WIN_QUICKPANEL_BASE)
+     {
+        if (mw->m->quickpanel->state == MOVE_ON_STAGE)
+          _e_mod_move_illume_quickpanel_state_off(mw->m);
+        mw->m->quickpanel->state = MOVE_OFF_STAGE;
+        _e_mod_move_key_handler_disable(mw->m);
+        _e_mod_move_rotate_block_disable(mw->m);
+        mw->m->quickpanel = NULL;
+     }
+
+   if (mw->win_type == WIN_APP_TRAY)
+     {
+        mw->m->app_tray->state = MOVE_OFF_STAGE;
+        e_mod_move_hide_apptray_helper(mw->m);
+        _e_mod_move_key_handler_disable(mw->m);
+        mw->m->app_tray = NULL;
+     }
+
+   if (mw->win_type == WIN_QUICKPANEL_MINICONTROLLER)
+     {
+        _e_mod_move_quickpanel_transients_remove(mw);
+     }
+
+   eina_hash_del(borders, e_util_winid_str_get(mw->border->client.win), mw);
+   eina_hash_del(windows, e_util_winid_str_get(mw->border->win), mw);
+   mw->m->wins = eina_inlist_remove(mw->m->wins, EINA_INLIST_GET(mw));
+   free(mw);
+}
+
+static Eina_Bool
+_e_mod_move_bd_show(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Show *ev = event;
+   E_Border *bd = e_border_find_by_window(ev->border->win);
+   if (!bd) return ECORE_CALLBACK_PASS_ON;
+   _e_mod_move_bd_show_internal(bd);
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_bd_hide(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Move_Win *mw = NULL;
+   E_Event_Border_Hide *ev = event;
+   mw = _e_mod_move_win_find(ev->border->win);
+   if (!mw) return ECORE_CALLBACK_PASS_ON;
+   _e_mod_move_win_del(mw);
+   mw = NULL;
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_bd_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Move *ev = event;
+   E_Border *bd = NULL;
+   E_Move_Win *mw = NULL;
+   E_Move *m = NULL;
+   m = _e_mod_move_get();
+   if (!m) return ECORE_CALLBACK_PASS_ON;
+
+   if (m->tp_indi)
+     {
+        E_Border *indi = _e_mod_move_bd_find_by_indicator(m);
+        if (indi)
+          {
+             evas_object_move(m->tp_indi->obj, indi->x, indi->y);
+             evas_object_resize(m->tp_indi->obj, indi->w, indi->h);
+             m->tp_indi->input_shape.x = indi->x;
+             m->tp_indi->input_shape.y = indi->y;
+             m->tp_indi->input_shape.w = indi->w;
+             m->tp_indi->input_shape.h = indi->h;
+             _e_mod_move_comp_window_input_region_set(m->man, m->tp_indi->target_bd,
+                                                      m->tp_indi->input_shape.x,
+                                                      m->tp_indi->input_shape.y,
+                                                      m->tp_indi->input_shape.w,
+                                                      m->tp_indi->input_shape.h);
+          }
+        else
+          _e_mod_move_tp_indi_hide(m);
+     }
+
+   bd = e_border_find_by_window(ev->border->win);
+   if (!bd)
+     {
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   mw = _e_mod_move_win_find(ev->border->win);
+   if (!mw)
+     {
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   mw->window_geometry.x = bd->x;
+   mw->window_geometry.y = bd->y;
+
+   if (mw->win_type == WIN_INDICATOR)
+     {
+         _e_mod_move_comp_window_input_region_set(mw->m->man, mw->border,
+                                                  0,
+                                                  0,
+                                                  mw->window_geometry.w,
+                                                  mw->window_geometry.h);
+     }
+
+   if ((mw->move_lock == EINA_TRUE)
+       && (mw->can_unlock == EINA_TRUE))
+     {
+        mw->move_lock = EINA_FALSE;
+        mw->can_unlock = EINA_FALSE;
+        _e_mod_move_comp_window_move_unlock(m->man, mw->border);
+     }
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_bd_resize(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Border_Resize *ev = event;
+
+   E_Border *bd = NULL;
+   E_Move_Win *mw = NULL;
+   E_Move *m = NULL;
+   m = _e_mod_move_get();
+   if (!m) return ECORE_CALLBACK_PASS_ON;
+   if (m->tp_indi)
+     {
+        E_Border *indi = _e_mod_move_bd_find_by_indicator(m);
+        if (indi)
+          {
+             evas_object_move(m->tp_indi->obj, indi->x, indi->y);
+             evas_object_resize(m->tp_indi->obj, indi->w, indi->h);
+             m->tp_indi->input_shape.x = indi->x;
+             m->tp_indi->input_shape.y = indi->y;
+             m->tp_indi->input_shape.w = indi->w;
+             m->tp_indi->input_shape.h = indi->h;
+             _e_mod_move_comp_window_input_region_set(m->man, m->tp_indi->target_bd,
+                                                      m->tp_indi->input_shape.x,
+                                                      m->tp_indi->input_shape.y,
+                                                      m->tp_indi->input_shape.w,
+                                                      m->tp_indi->input_shape.h);
+          }
+        else
+          _e_mod_move_tp_indi_hide(m);
+     }
+
+   bd = e_border_find_by_window(ev->border->win);
+   if (!bd)
+     {
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   mw = _e_mod_move_win_find(ev->border->win);
+   if (!mw)
+     {
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   mw->window_geometry.w = bd->w;
+   mw->window_geometry.h = bd->h;
+
+   if (mw->win_type == WIN_INDICATOR)
+     {
+         _e_mod_move_comp_window_input_region_set(mw->m->man, mw->border,
+                                                  0,
+                                                  0,
+                                                  mw->window_geometry.w,
+                                                  mw->window_geometry.h);
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+Eina_Bool
+e_mod_move_init(void)
+{
+   Eina_List *l = NULL;
+   E_Manager *man = NULL;
+   E_Move *m = NULL;
+   Ecore_X_Window *wins = NULL;
+   int i = 0, num = 0;
+
+   if (!e_module_find("comp-slp"))
+     {
+        printf("[MOVE_MODULE] Error. There is no compositor. Enable 'comp-slp' module first!!!\n");
+        return EINA_FALSE;
+     }
+
+   EINA_LIST_FOREACH(e_manager_list(), l, man)
+     {
+       _e_mod_move_comp_evas_get(man);
+       m = _e_mod_move_add(man);
+       if (m) _e_mod_move_set(m);
+     }
+
+   if (!e_move_comp_evas)
+     {
+       printf("[MOVE_MODULE] Error. There is no evas of compositor. \n");
+       return EINA_FALSE;
+     }
+
+   m = _e_mod_move_get();
+   if (!m)
+     {
+        printf("[MOVE_MODULE] Error. There is no E_Move. \n");
+        return EINA_FALSE;
+     }
+
+   APP_TRAY_CHECK_REGION = (m->man->w)/4;
+
+   windows = eina_hash_string_superfast_new(NULL);
+   borders = eina_hash_string_superfast_new(NULL);
+   move_borders = eina_hash_string_superfast_new(NULL);
+
+   ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,  _e_mod_move_property,         NULL);
+   ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,   _e_mod_move_message,          NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_ADD,             _e_mod_move_bd_add,           NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_REMOVE,          _e_mod_move_bd_del,           NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_SHOW,            _e_mod_move_bd_show,          NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_HIDE,            _e_mod_move_bd_hide,          NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_MOVE,            _e_mod_move_bd_move,          NULL);
+   ecore_event_handler_add(E_EVENT_BORDER_RESIZE,          _e_mod_move_bd_resize,        NULL);
+
+   _MAKE_ATOM(ATOM_QUICKPANEL_LAYOUT_POSITION,       STR_ATOM_CM_QUICKPANEL_LAYOUT_POSITION    );
+   _MAKE_ATOM(ATOM_WINDOW_INPUT_REGION,              STR_ATOM_CM_WINDOW_INPUT_REGION           );
+   _MAKE_ATOM(ATOM_MINI_CONTROLLER_WINDOW,           STR_ATOM_ILLUME_MINI_CONTROLLER_WINDOW    );
+   _MAKE_ATOM(ATOM_NET_WM_WINDOW_SHOW,               STR_ATOM_NET_WM_WINDOW_SHOW               );
+   _MAKE_ATOM(ATOM_ROTATION_LOCK,                    STR_ATOM_ROTATION_LOCK );
+
+   wins = ecore_x_window_children_get(m->man->root, &num);
+
+   if (wins)
+     {
+        for (i = 0; i < num; i++)
+          {
+             E_Border *bd;
+             if ((bd = e_border_find_by_window(wins[i])))
+               {
+                  if (bd->visible)
+                    {
+                       _e_mod_move_bd_show_internal(bd);
+                    }
+               }
+          }
+        free(wins);
+      }
+
+   //load active window
+   ecore_x_window_prop_window_get(m->man->root, ECORE_X_ATOM_NET_ACTIVE_WINDOW, &(m->active_win.win), 1);
+
+   return EINA_TRUE;
+}
+
+void
+e_mod_move_shutdown(void)
+{
+    if (windows) eina_hash_free(windows);
+    if (borders) eina_hash_free(borders);
+    if (move_borders) eina_hash_free(move_borders);
+}
+
+static void
+_e_mod_move_comp_evas_get(E_Manager* man)
+{
+   if (!man) return;
+   if (e_move_comp_evas) return;
+
+   if (man->comp && man->comp->func.evas_get)
+     {
+        e_move_comp_evas = man->comp->func.evas_get (man->comp->data, man);
+     }
+}
+
+static Eina_Bool
+_e_mod_move_win_get_prop_angle(Ecore_X_Window win,
+                               int *req,
+                               int *curr)
+{
+   Eina_Bool res = EINA_FALSE;
+   int ret, count;
+   int angle[2] = {-1, -1};
+   unsigned char* prop_data = NULL;
+
+   ret = ecore_x_window_prop_property_get(win,
+                                          ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+                                          ECORE_X_ATOM_CARDINAL,
+                                          32,
+                                          &prop_data,
+                                          &count);
+   if (ret <= 0)
+     {
+        if (prop_data) free(prop_data);
+        return res;
+     }
+   if (ret && prop_data)
+     {
+        memcpy (&angle, prop_data, sizeof (int)*count);
+        if (count == 2) res = EINA_TRUE;
+     }
+
+   if (prop_data) free(prop_data);
+
+   *req  = angle[_WND_REQUEST_ANGLE_IDX];
+   *curr = angle[_WND_CURR_ANGLE_IDX];
+
+   if (angle[0] == -1 && angle[1] == -1) res = EINA_FALSE;
+
+   return res;
+}
+
+/* indicator mouse motion callbacks */
+static E_Move_Event_State
+_indicator_cb_motion_check(E_Move_Event *ev,
+                           void         *data)
+{
+   E_Move_Win *mw = (E_Move_Win *)data;
+   Eina_List *l, *ll;
+   E_Move_Event_Motion_Info *m0, *m1;
+   unsigned int cnt = 0;
+   E_Move_Event_State res = E_MOVE_EVENT_STATE_PASS;
+   int w, h, angle, min_len, min_cnt = 2;
+
+   if (!ev || !mw) goto finish;
+
+   res = e_mod_move_event_state_get(ev);
+   angle = e_mod_move_event_angle_get(ev);
+
+   l = e_mod_move_event_ev_queue_get(ev);
+   if (!l) goto finish;
+
+   cnt = eina_list_count(l);
+   if (cnt < min_cnt) goto finish;
+
+   m0 = eina_list_data_get(l);
+   if (!m0) goto finish;
+
+   ll = eina_list_last(l);
+   if (!ll) goto finish;
+
+   m1 = eina_list_data_get(ll);
+   if (!m1) goto finish;
+
+   if ((m1->cb_type == EVAS_CALLBACK_MOUSE_UP) &&
+       (res == E_MOVE_EVENT_STATE_CHECK))
+     {
+        return E_MOVE_EVENT_STATE_PASS;
+     }
+
+   w = abs(m1->coord.x - m0->coord.x);
+   h = abs(m1->coord.y - m0->coord.y);
+   min_len =
+     (mw->window_geometry.w > mw->window_geometry.h) ?
+     (mw->window_geometry.h * 2) :
+     (mw->window_geometry.w * 2);
+
+   if ((w < min_len) && (h < min_len))
+     {
+        goto finish;
+     }
+
+   switch (angle)
+     {
+      case  90:
+      case 270:
+        if (w < h) res = E_MOVE_EVENT_STATE_PASS;
+        else res = E_MOVE_EVENT_STATE_HOLD;
+        break;
+      case 180:
+      case   0:
+      default :
+        if (w > h) res = E_MOVE_EVENT_STATE_PASS;
+        else res = E_MOVE_EVENT_STATE_HOLD;
+        break;
+     }
+
+finish:
+   return res;
+}
+
+static Eina_Bool
+_indicator_cb_motion_start(void *data,
+                           void *event_info)
+{
+   E_Move_Win *mw = (E_Move_Win *)data;
+   E_Move_Event_Motion_Info *info;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+   if (!mw || !info) return EINA_FALSE;
+
+   Eina_Bool qp_off_stage = EINA_TRUE;
+   Eina_Bool at_off_stage = EINA_TRUE;
+   Eina_Bool lock_scrren_enable = EINA_FALSE;
+   Eina_Bool mini_control_enable = EINA_FALSE;
+   Eina_Bool qp_lock_screen_check = EINA_FALSE;
+
+   mw->event_handler.mouse_clicked = EINA_TRUE;
+   mw->state=MOVE_WORK;
+
+   mw->event_handler.window_rotation_angle = e_mod_move_event_angle_get(mw->event);
+
+   if (mw->m->quickpanel)
+     if (mw->m->quickpanel->state != MOVE_OFF_STAGE) qp_off_stage = EINA_FALSE;
+   if (mw->m->app_tray)
+     if (mw->m->app_tray->state != MOVE_OFF_STAGE) at_off_stage = EINA_FALSE;
+
+   lock_scrren_enable = _e_mod_move_lock_screen_check(mw->m);
+   mini_control_enable = _e_mod_move_mini_controller_check(mw->m);
+
+   if (lock_scrren_enable)
+     if (mini_control_enable) qp_lock_screen_check = EINA_TRUE;
+     else qp_lock_screen_check = EINA_FALSE;
+   else qp_lock_screen_check = EINA_TRUE;
+
+
+   if (mw->event_handler.window_rotation_angle == 0)
+     {
+        if (info->coord.x > APP_TRAY_CHECK_REGION)
+          {
+             if (mw->m->quickpanel)
+               if ((mw->m->quickpanel->state == MOVE_OFF_STAGE) && at_off_stage
+                   && qp_lock_screen_check)
+                 {
+                    mw->m->quickpanel->state=MOVE_WORK;
+                    _e_mod_move_quickpanel_transients_find(mw->m);
+                    _e_mod_move_quickpanel_transients_move_lock(mw->m, EINA_TRUE);
+                    _e_mod_move_rotate_block_enable(mw->m);
+                    e_mod_move_active_win_state_update(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+        else
+          {
+             if (mw->m->app_tray)
+               if ((mw->m->app_tray->state == MOVE_OFF_STAGE) && qp_off_stage
+                   && !lock_scrren_enable)
+                 {
+                    mw->m->app_tray->state=MOVE_WORK;
+                    e_border_raise(mw->m->app_tray->border);
+                    e_mod_move_show_apptray_helper(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+     }
+   else if (mw->event_handler.window_rotation_angle == 90)
+     {
+        if (info->coord.y < mw->m->indicator->window_geometry.h - APP_TRAY_CHECK_REGION)
+          {
+             if (mw->m->quickpanel)
+               if ((mw->m->quickpanel->state == MOVE_OFF_STAGE) && at_off_stage
+                   && qp_lock_screen_check)
+                 {
+                    mw->m->quickpanel->state=MOVE_WORK;
+                    _e_mod_move_quickpanel_transients_find(mw->m);
+                    _e_mod_move_quickpanel_transients_move_lock(mw->m, EINA_TRUE);
+                    _e_mod_move_rotate_block_enable(mw->m);
+                    e_mod_move_active_win_state_update(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+        else
+          {
+             if (mw->m->app_tray)
+               if ((mw->m->app_tray->state == MOVE_OFF_STAGE) && qp_off_stage
+                   && !lock_scrren_enable)
+                 {
+                    mw->m->app_tray->state=MOVE_WORK;
+                    e_border_raise(mw->m->app_tray->border);
+                    e_mod_move_show_apptray_helper(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+     }
+   else if (mw->event_handler.window_rotation_angle == 180)
+     {
+        if (info->coord.x < mw->m->indicator->window_geometry.w - APP_TRAY_CHECK_REGION)
+          {
+             if (mw->m->quickpanel)
+               if ((mw->m->quickpanel->state == MOVE_OFF_STAGE) && at_off_stage
+                   && qp_lock_screen_check)
+                 {
+                    mw->m->quickpanel->state=MOVE_WORK;
+                    _e_mod_move_quickpanel_transients_find(mw->m);
+                    _e_mod_move_quickpanel_transients_move_lock(mw->m, EINA_TRUE);
+                    _e_mod_move_rotate_block_enable(mw->m);
+                    e_mod_move_active_win_state_update(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+        else
+          {
+             if (mw->m->app_tray)
+               if ((mw->m->app_tray->state == MOVE_OFF_STAGE) && qp_off_stage
+                   && !lock_scrren_enable)
+                 {
+                    mw->m->app_tray->state=MOVE_WORK;
+                    e_border_raise(mw->m->app_tray->border);
+                    e_mod_move_show_apptray_helper(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+     }
+   else if (mw->event_handler.window_rotation_angle == 270)
+     {
+        if (info->coord.y > APP_TRAY_CHECK_REGION)
+          {
+             if (mw->m->quickpanel)
+               if ((mw->m->quickpanel->state == MOVE_OFF_STAGE) && at_off_stage
+                   && qp_lock_screen_check)
+                 {
+                    mw->m->quickpanel->state=MOVE_WORK;
+                    _e_mod_move_quickpanel_transients_find(mw->m);
+                    _e_mod_move_quickpanel_transients_move_lock(mw->m,EINA_TRUE);
+                    _e_mod_move_rotate_block_enable(mw->m);
+                    e_mod_move_active_win_state_update(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+        else
+          {
+             if (mw->m->app_tray)
+               if ((mw->m->app_tray->state == MOVE_OFF_STAGE) && qp_off_stage
+                   && !lock_scrren_enable)
+                 {
+                    mw->m->app_tray->state=MOVE_WORK;
+                    e_border_raise(mw->m->app_tray->border);
+                    e_mod_move_show_apptray_helper(mw->m);
+                    _e_mod_move_tp_indi_touch_win_stack_update(mw->m);
+                 }
+          }
+     }
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_indicator_cb_motion_move(void *data,
+                          void *event_info)
+{
+   E_Move_Win *mw = (E_Move_Win *)data;
+   E_Move_Event_Motion_Info *info;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+   if (!mw || !info) return EINA_FALSE;
+   if (!mw->event_handler.mouse_clicked) return EINA_FALSE;
+
+   if (mw->event_handler.window_rotation_angle == 0)
+     {
+       if (mw->m->quickpanel)
+         if (mw->m->quickpanel->state == MOVE_WORK)
+           {
+              if (info->coord.y < (mw->m->quickpanel->window_geometry.h - mw->m->indicator->window_geometry.h))
+                {
+                   _e_mod_move_quickpanel_move(mw->m, 0, info->coord.y - (mw->m->quickpanel->window_geometry.h - mw->m->indicator->window_geometry.h),
+                                               0, info->coord.y - (mw->m->quickpanel->window_geometry.h - mw->m->indicator->window_geometry.h), LAYOUT_POSITION_Y,
+                                               EINA_FALSE);
+                }
+          }
+       if (mw->m->app_tray)
+         if (mw->m->app_tray->state == MOVE_WORK)
+           {
+             if (info->coord.y < (mw->m->app_tray->window_geometry.h - mw->m->indicator->window_geometry.h))
+               {
+                 _e_mod_move_app_tray_move(mw->m, 0, info->coord.y - (mw->m->app_tray->window_geometry.h - mw->m->indicator->window_geometry.h), EINA_FALSE);
+               }
+           }
+     }
+   else if (mw->event_handler.window_rotation_angle == 90)
+     {
+       if (mw->m->quickpanel)
+         if (mw->m->quickpanel->state == MOVE_WORK)
+           {
+             if (info->coord.x < (mw->m->quickpanel->window_geometry.w - mw->m->indicator->window_geometry.w))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, info->coord.x - (mw->m->quickpanel->window_geometry.w - mw->m->indicator->window_geometry.w), 0,
+                                              info->coord.x - (mw->m->quickpanel->window_geometry.w - mw->m->indicator->window_geometry.w), 0, LAYOUT_POSITION_X,
+                                              EINA_FALSE);
+               }
+           }
+       if (mw->m->app_tray)
+         if (mw->m->app_tray->state == MOVE_WORK)
+           {
+             if (info->coord.x < (mw->m->app_tray->window_geometry.w - mw->m->indicator->window_geometry.w))
+               {
+                 _e_mod_move_app_tray_move(mw->m, info->coord.x - (mw->m->app_tray->window_geometry.w - mw->m->indicator->window_geometry.w), 0, EINA_FALSE);
+               }
+           }
+     }
+   else if (mw->event_handler.window_rotation_angle == 180)
+     {
+       if (mw->m->quickpanel)
+         if (mw->m->quickpanel->state == MOVE_WORK)
+           {
+             if (info->coord.y > (mw->m->man->h) - (mw->m->quickpanel->window_geometry.h - mw->m->indicator->window_geometry.h))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, 0, info->coord.y - mw->m->indicator->window_geometry.h,
+                                              0, info->coord.y - mw->m->indicator->window_geometry.h, LAYOUT_POSITION_Y,
+                                              EINA_FALSE);
+               }
+           }
+       if (mw->m->app_tray)
+         if (mw->m->app_tray->state == MOVE_WORK)
+           {
+             if (info->coord.y > (mw->m->man->h) - (mw->m->app_tray->window_geometry.h - mw->m->indicator->window_geometry.h))
+               {
+                 _e_mod_move_app_tray_move(mw->m, 0, info->coord.y - mw->m->indicator->window_geometry.h, EINA_FALSE);
+               }
+           }
+     }
+   else if (mw->event_handler.window_rotation_angle == 270)
+     {
+       if (mw->m->quickpanel)
+         if (mw->m->quickpanel->state == MOVE_WORK)
+           {
+             if (info->coord.x > (mw->m->man->w) - (mw->m->quickpanel->window_geometry.w - mw->m->indicator->window_geometry.w))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, info->coord.x - mw->m->indicator->window_geometry.w, 0,
+                                              info->coord.x - mw->m->indicator->window_geometry.w, 0, LAYOUT_POSITION_X,
+                                              EINA_FALSE);
+               }
+           }
+       if (mw->m->app_tray)
+         if (mw->m->app_tray->state == MOVE_WORK)
+           {
+             if (info->coord.x > (mw->m->man->w) - (mw->m->app_tray->window_geometry.w - mw->m->indicator->window_geometry.w))
+               {
+                 _e_mod_move_app_tray_move(mw->m, info->coord.x - mw->m->indicator->window_geometry.w, 0, EINA_FALSE);
+               }
+           }
+     }
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_indicator_cb_motion_end(void *data,
+                         void *event_info)
+{
+   E_Move_Win *mw = (E_Move_Win *)data;
+   E_Move_Event_Motion_Info *info;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+   int v0, v1, x0, y0, x1, y1;
+   if (!mw || !info) return EINA_FALSE;
+   if (!mw->event_handler.mouse_clicked)
+     {
+        goto finish;
+     }
+
+   if ((mw->m->quickpanel) &&
+       (mw->m->quickpanel->state == MOVE_WORK))
+     {
+        v0 = v1 = x0 = y0 = x1 = y1 = 0;
+        switch (mw->event_handler.window_rotation_angle)
+          {
+           case  90:
+             v0 = info->coord.x;
+             v1 = (mw->m->quickpanel->window_geometry.w)/2;
+             x1 = -(mw->m->quickpanel->window_geometry.w);
+             break;
+           case 180:
+             v0 = mw->m->man->h - ((mw->m->quickpanel->window_geometry.h)/2);
+             v1 = info->coord.y;
+             y1 = mw->m->quickpanel->window_geometry.h;
+             break;
+           case 270:
+             v0 = mw->m->man->w - ((mw->m->quickpanel->window_geometry.w)/2);
+             v1 = info->coord.x;
+             x1 = mw->m->quickpanel->window_geometry.w;
+             break;
+           case   0:
+           default :
+             v0 = info->coord.y;
+             v1 = (mw->m->quickpanel->window_geometry.h)/2;
+             y1 = -(mw->m->quickpanel->window_geometry.h);
+             break;
+          }
+
+        if (v0 > v1)
+          {
+             _e_mod_move_quickpanel_move_animation(mw->m, x0, y0, EINA_TRUE);
+             mw->m->quickpanel->state = MOVE_ON_STAGE;
+             _e_mod_move_illume_quickpanel_state_on(mw->m);
+             _e_mod_move_key_handler_enable(mw->m);
+          }
+        else
+          {
+             _e_mod_move_quickpanel_move_animation(mw->m, x1, y1, EINA_FALSE);
+             mw->m->quickpanel->state = MOVE_OFF_STAGE;
+             _e_mod_move_illume_quickpanel_state_off(mw->m);
+             _e_mod_move_key_handler_disable(mw->m);
+          }
+     }
+
+   if ((mw->m->app_tray) &&
+       (mw->m->app_tray->state == MOVE_WORK))
+     {
+        if (mw->m->apptray_helper)
+          {
+             mw->m->apptray_helper->event.enable = EINA_TRUE;
+             mw->m->apptray_helper->event.click = EINA_FALSE;
+          }
+        v0 = v1 = x0 = y0 = x1 = y1 = 0;
+        switch (mw->event_handler.window_rotation_angle)
+          {
+           case  90:
+             v0 = info->coord.x;
+             v1 = (mw->m->app_tray->window_geometry.w)/2;
+             x1 = -(mw->m->app_tray->window_geometry.w);
+             break;
+           case 180:
+             v0 = mw->m->man->h - ((mw->m->app_tray->window_geometry.h)/2);
+             v1 = info->coord.y;
+             y0 = mw->m->man->h - mw->m->app_tray->window_geometry.h;
+             y1 = mw->m->man->h;
+             break;
+           case 270:
+             v0 = mw->m->man->w - ((mw->m->app_tray->window_geometry.w)/2);
+             v1 = info->coord.x;
+             x0 = mw->m->man->w - mw->m->app_tray->window_geometry.w;
+             x1 = mw->m->man->w;
+             break;
+           case   0:
+           default :
+             v0 = info->coord.y;
+             v1 = (mw->m->app_tray->window_geometry.h)/2;
+             y1 = -(mw->m->app_tray->window_geometry.h);
+             break;
+          }
+
+        if (v0 > v1)
+          {
+             _e_mod_move_apptray_move_animation(mw->m, x0, y0, EINA_TRUE);
+             mw->m->app_tray->state = MOVE_ON_STAGE;
+             _e_mod_move_key_handler_enable(mw->m);
+          }
+        else
+          {
+             _e_mod_move_apptray_move_animation(mw->m, x1, y1, EINA_FALSE);
+             mw->m->app_tray->state = MOVE_OFF_STAGE;
+             _e_mod_move_key_handler_disable(mw->m);
+          }
+     }
+
+finish:
+   mw->event_handler.mouse_clicked = EINA_FALSE;
+
+   if (mw->m->indicator) mw->m->indicator->state = MOVE_ON_STAGE;
+   if (mw->m->quickpanel)
+     {
+        _e_mod_move_quickpanel_transients_release(mw->m);
+     }
+
+   return EINA_TRUE;
+}
+
+void
+e_mod_move_win_quickpanel_mouse_down_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   mw->event_handler.mouse_clicked = EINA_TRUE;
+   mw->state=MOVE_WORK;
+   _e_mod_move_quickpanel_transients_find(mw->m);
+   _e_mod_move_quickpanel_transients_move_lock(mw->m,EINA_FALSE);
+   e_mod_move_active_win_state_update(mw->m);
+}
+
+void
+e_mod_move_win_quickpanel_mouse_move_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Move *mouse_move_info = event_info;
+   E_Move_Win *mw = NULL;
+   int indi_w = 0;
+   int indi_h = 0;
+
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   if (mw->m->indicator)
+     {
+        indi_w = mw->m->indicator->window_geometry.w;
+        indi_h = mw->m->indicator->window_geometry.h;
+     }
+
+   if ((mw->event_handler.mouse_clicked == EINA_TRUE) && (mw->state == MOVE_WORK))
+     {
+        if (mw->event_handler.window_rotation_angle == 0)
+          {
+             if (mouse_move_info->cur.output.y < (mw->m->quickpanel->window_geometry.h - indi_h))
+               {
+                   _e_mod_move_quickpanel_move(mw->m, 0, mouse_move_info->cur.output.y - (mw->m->quickpanel->window_geometry.h - indi_h),
+                                               0, mouse_move_info->cur.output.y - (mw->m->quickpanel->window_geometry.h - indi_h), LAYOUT_POSITION_Y,
+                                               EINA_FALSE);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 90)
+          {
+             if (mouse_move_info->cur.output.x < (mw->m->quickpanel->window_geometry.w - indi_w))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, mouse_move_info->cur.output.x - (mw->m->quickpanel->window_geometry.w - indi_w), 0,
+                                              mouse_move_info->cur.output.x - (mw->m->quickpanel->window_geometry.w - indi_w), 0, LAYOUT_POSITION_X,
+                                              EINA_FALSE);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 180)
+          {
+             if (mouse_move_info->cur.output.y > (mw->m->man->h) - (mw->m->quickpanel->window_geometry.h - indi_h))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, 0, mouse_move_info->cur.output.y - indi_h,
+                                              0, mouse_move_info->cur.output.y - indi_h, LAYOUT_POSITION_Y,
+                                              EINA_FALSE);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 270)
+          {
+             if (mouse_move_info->cur.output.x > (mw->m->man->w) - (mw->m->quickpanel->window_geometry.w - indi_w))
+               {
+                  _e_mod_move_quickpanel_move(mw->m, mouse_move_info->cur.output.x - indi_w, 0,
+                                              mouse_move_info->cur.output.x - indi_w, 0, LAYOUT_POSITION_X,
+                                              EINA_FALSE);
+               }
+          }
+     }
+}
+
+void
+e_mod_move_win_quickpanel_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Up *mouse_up_info = event_info;
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   if ((mw->event_handler.mouse_clicked == EINA_TRUE) && (mw->state == MOVE_WORK))
+     {
+        if (mw->event_handler.window_rotation_angle == 0)
+          {
+             if (mouse_up_info->output.y > (mw->m->quickpanel->window_geometry.h)/2)
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, 0, 0, 0, 0, LAYOUT_POSITION_Y, EINA_TRUE);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0,0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_illume_quickpanel_state_on(mw->m);
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_Y, EINA_TRUE);
+                  _e_mod_move_rotate_block_disable(mw->m);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0, (mw->m->quickpanel->window_geometry.h)*-1, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_illume_quickpanel_state_off(mw->m);
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 90)
+          {
+             if (mouse_up_info->output.x > (mw->m->quickpanel->window_geometry.w)/2)
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, 0, 0, 0, 0, LAYOUT_POSITION_X, EINA_TRUE);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0,0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_illume_quickpanel_state_on(mw->m);
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_X, EINA_TRUE);
+                  _e_mod_move_rotate_block_disable(mw->m);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, (mw->m->quickpanel->window_geometry.w)*-1, 0, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_illume_quickpanel_state_off(mw->m);
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 180)
+          {
+             if (mouse_up_info->output.y < mw->m->man->h - (mw->m->quickpanel->window_geometry.h)/2)
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, 0, mw->m->man->h - (mw->m->quickpanel->window_geometry.h),
+                                              0, 0, LAYOUT_POSITION_Y, EINA_TRUE);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0,0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_illume_quickpanel_state_on(mw->m);
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_Y, EINA_TRUE);
+                  _e_mod_move_rotate_block_disable(mw->m);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0, mw->m->quickpanel->window_geometry.h, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_illume_quickpanel_state_off(mw->m);
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 270)
+          {
+             if (mouse_up_info->output.x < mw->m->man->w - (mw->m->quickpanel->window_geometry.w)/2)
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, mw->m->man->w - (mw->m->quickpanel->window_geometry.w), 0,
+                                              0, 0, LAYOUT_POSITION_X, EINA_TRUE);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, 0,0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_illume_quickpanel_state_on(mw->m);
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef QP_ANI
+                  _e_mod_move_quickpanel_move(mw->m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_X, EINA_TRUE);
+                  _e_mod_move_rotate_block_disable(mw->m);
+#else
+                  _e_mod_move_quickpanel_move_animation(mw->m, mw->m->quickpanel->window_geometry.w, 0, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_illume_quickpanel_state_off(mw->m);
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+     }
+   mw->event_handler.mouse_clicked = EINA_FALSE;
+   _e_mod_move_quickpanel_transients_release(mw->m);
+}
+
+void
+e_mod_move_win_app_tray_mouse_down_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   mw->event_handler.mouse_clicked = EINA_TRUE;
+   mw->state=MOVE_WORK;
+}
+
+void
+e_mod_move_win_app_tray_mouse_move_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Move *mouse_move_info = event_info;
+   E_Move_Win *mw = NULL;
+   int indi_w = 0;
+   int indi_h = 0;
+
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   if (mw->m->indicator)
+     {
+        indi_w = mw->m->indicator->window_geometry.w;
+        indi_h = mw->m->indicator->window_geometry.h;
+     }
+
+   if ((mw->event_handler.mouse_clicked == EINA_TRUE) && (mw->state == MOVE_WORK))
+     {
+        if (mw->event_handler.window_rotation_angle == 0)
+          {
+             if (mouse_move_info->cur.output.y < (mw->m->app_tray->window_geometry.h - indi_h))
+               _e_mod_move_app_tray_move(mw->m, 0, mouse_move_info->cur.output.y - (mw->m->app_tray->window_geometry.h - indi_h), EINA_FALSE);
+          }
+        if (mw->event_handler.window_rotation_angle == 90)
+          {
+             if (mouse_move_info->cur.output.x < (mw->m->app_tray->window_geometry.w - indi_w))
+               _e_mod_move_app_tray_move(mw->m, mouse_move_info->cur.output.x - (mw->m->app_tray->window_geometry.w - indi_w), 0, EINA_FALSE);
+          }
+        if (mw->event_handler.window_rotation_angle == 180)
+          {
+             if (mouse_move_info->cur.output.y > (mw->m->man->h) - (mw->m->app_tray->window_geometry.h - indi_h))
+               _e_mod_move_app_tray_move(mw->m, 0, mouse_move_info->cur.output.y - indi_h, EINA_FALSE);
+          }
+        if (mw->event_handler.window_rotation_angle == 270)
+          {
+             if (mouse_move_info->cur.output.x > (mw->m->man->w) - (mw->m->app_tray->window_geometry.w - indi_w))
+               _e_mod_move_app_tray_move(mw->m, mouse_move_info->cur.output.x - indi_w, 0, EINA_FALSE);
+          }
+     }
+}
+
+void
+e_mod_move_win_app_tray_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Up *mouse_up_info = event_info;
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get( obj, "move");
+   if ( mw == NULL ) return;
+
+   if ((mw->event_handler.mouse_clicked == EINA_TRUE) && (mw->state == MOVE_WORK))
+     {
+        if (mw->event_handler.window_rotation_angle == 0)
+          {
+             if (mouse_up_info->output.y > (mw->m->app_tray->window_geometry.h)/2)
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  0, 0, EINA_TRUE);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, 0, 0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  -10000, -10000, EINA_TRUE);
+                  e_mod_move_hide_apptray_helper(mw->m);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, 0, (mw->m->app_tray->window_geometry.h)*-1, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 90)
+          {
+             if (mouse_up_info->output.x > (mw->m->app_tray->window_geometry.w)/2)
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  0, 0, EINA_TRUE);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, 0, 0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  -10000, -10000, EINA_TRUE);
+                  e_mod_move_hide_apptray_helper(mw->m);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, (mw->m->app_tray->window_geometry.w)*-1, 0, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 180)
+          {
+             if (mouse_up_info->output.y < mw->m->man->h - (mw->m->app_tray->window_geometry.h)/2)
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  0, mw->m->man->h - (mw->m->app_tray->window_geometry.h), EINA_TRUE);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, 0, mw->m->man->h - (mw->m->app_tray->window_geometry.h), EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  -10000, -10000, EINA_TRUE);
+                  e_mod_move_hide_apptray_helper(mw->m);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, 0, mw->m->man->h, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+        if (mw->event_handler.window_rotation_angle == 270)
+          {
+             if (mouse_up_info->output.x < mw->m->man->w - (mw->m->app_tray->window_geometry.w)/2)
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m, mw->m->man->w - mw->m->app_tray->window_geometry.w , 0, EINA_TRUE);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, mw->m->man->w - mw->m->app_tray->window_geometry.w, 0, EINA_TRUE);
+#endif
+                  mw->state = MOVE_ON_STAGE;
+                  _e_mod_move_key_handler_enable(mw->m);
+               }
+             else
+               {
+#ifndef AT_ANI
+                  _e_mod_move_app_tray_move(mw->m,  -10000, -10000, EINA_TRUE);
+                  e_mod_move_hide_apptray_helper(mw->m);
+#else
+                  _e_mod_move_apptray_move_animation(mw->m, mw->m->man->w, 0, EINA_FALSE);
+#endif
+                  mw->state = MOVE_OFF_STAGE;
+                  _e_mod_move_key_handler_disable(mw->m);
+               }
+          }
+     }
+   mw->event_handler.mouse_clicked = EINA_FALSE;
+}
+
+void
+e_mod_move_win_app_tray_restack_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get(obj, "move");
+   if ( mw == NULL ) return;
+   if (mw->m->apptray_helper)
+     {
+        if (mw->m->tp_indi)
+          {
+            if (mw->m->tp_indi->touch.obj) evas_object_stack_below(mw->m->tp_indi->touch.obj, mw->m->app_tray->move_object);
+            evas_object_stack_below(mw->m->apptray_helper->obj, mw->m->app_tray->move_object);
+          }
+        else
+          evas_object_stack_below(mw->m->apptray_helper->obj, mw->m->app_tray->move_object);
+     }
+}
+
+static Ecore_X_Window
+_e_mod_move_win_get_client_xid(E_Move_Win *mw)
+{
+   if (!mw) return 0;
+   if (mw->border) return mw->border->client.win;
+   else return 0; // do not care E_borderless window
+}
+static Eina_Bool
+_e_mod_move_prop_window_rotation(Ecore_X_Event_Window_Property *ev)
+{
+   E_Move_Win *mw = NULL;
+   E_Move *m = NULL;
+   int req_angle = -1;
+   int cur_angle = -1;
+
+   m = _e_mod_move_get();
+   if (!m)
+     {
+        return EINA_FALSE;
+     }
+   if (m->tp_indi)
+     {
+        E_Border *indi = _e_mod_move_bd_find_by_indicator(m);
+        if (indi)
+          {
+             evas_object_move(m->tp_indi->obj, indi->x, indi->y);
+             evas_object_resize(m->tp_indi->obj, indi->w, indi->h);
+             m->tp_indi->input_shape.x = indi->x;
+             m->tp_indi->input_shape.y = indi->y;
+             m->tp_indi->input_shape.w = indi->w;
+             m->tp_indi->input_shape.h = indi->h;
+             _e_mod_move_comp_window_input_region_set(m->man, m->tp_indi->target_bd,
+                                                      m->tp_indi->input_shape.x,
+                                                      m->tp_indi->input_shape.y,
+                                                      m->tp_indi->input_shape.w,
+                                                      m->tp_indi->input_shape.h);
+          }
+        else
+          _e_mod_move_tp_indi_hide(m);
+     }
+   mw = _e_mod_move_border_client_find(ev->win);
+   if (!mw)
+     {
+        return EINA_FALSE;
+     }
+
+   if (!_e_mod_move_win_get_prop_angle(_e_mod_move_win_get_client_xid(mw),
+                                       &req_angle,
+                                       &cur_angle))
+     {
+         return EINA_FALSE;
+     }
+
+   mw->event_handler.window_rotation_angle = req_angle;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_set_quickpanel_layout(E_Move_Win *mw)
+{
+   unsigned int val[2] = { 0, 0 };
+   int ret = -1;
+
+   if (!mw) return EINA_FALSE;
+
+   ret = ecore_x_window_prop_card32_get(_e_mod_move_win_get_client_xid(mw),
+                                        ATOM_QUICKPANEL_LAYOUT_POSITION,
+                                        val, 2);
+   if (ret == -1) return EINA_FALSE;
+
+   mw->quickpanel_layout.position_x = val[0];
+   mw->quickpanel_layout.position_y = val[1];
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_prop_quickpanel_layout(Ecore_X_Event_Window_Property *ev)
+{
+   E_Move_Win *mw = NULL;
+
+   mw = _e_mod_move_border_client_find(ev->win);
+   if (!mw) return EINA_FALSE;
+
+   if (!_e_mod_move_set_quickpanel_layout(mw)) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_set_window_input_region(E_Move_Win *mw)
+{
+   int ret = -1;
+   unsigned int val[4] = { 0, 0, 0, 0};
+
+   if (!mw) return EINA_FALSE;
+
+   ret = ecore_x_window_prop_card32_get(_e_mod_move_win_get_client_xid(mw),
+                                        ATOM_WINDOW_INPUT_REGION,
+                                        val, 4);
+   if (ret == -1) return EINA_FALSE;
+
+   mw->shape_input_region.input_region_x = val[0];
+   mw->shape_input_region.input_region_y = val[1];
+   mw->shape_input_region.input_region_w = val[2];
+   mw->shape_input_region.input_region_h = val[3];
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_prop_window_input_region(Ecore_X_Event_Window_Property *ev)
+{
+   E_Move_Win *mw = NULL;
+
+   mw = _e_mod_move_border_client_find(ev->win);
+   if (!mw) return EINA_FALSE;
+
+  if (!_e_mod_move_set_window_input_region(mw)) return EINA_FALSE;
+
+  _e_mod_move_comp_window_input_region_set(mw->m->man, mw->border, mw->shape_input_region.input_region_x,
+                                                                   mw->shape_input_region.input_region_y,
+                                                                   mw->shape_input_region.input_region_w,
+                                                                   mw->shape_input_region.input_region_h);
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_message(void *data  __UNUSED__,
+                    int type    __UNUSED__,
+                    void       *event)
+{
+   Ecore_X_Event_Client_Message *ev;
+   Ecore_X_Atom t;
+   ev = (Ecore_X_Event_Client_Message *)event;
+
+   E_CHECK_RETURN(ev, 0);
+   E_CHECK_RETURN((ev->format == 32), 0);
+
+   t = ev->message_type;
+
+   if      (t == ATOM_NET_WM_WINDOW_SHOW) _e_mod_move_msg_window_show(ev);
+   else if (t == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) _e_mod_move_msg_qp_state(ev);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_property(void *data __UNUSED__,
+                     int type __UNUSED__,
+                     void *event __UNUSED__)
+{
+   Ecore_X_Event_Window_Property *ev = event;
+   E_Move *m = NULL;
+   if (!(m=_e_mod_move_get())) return ECORE_CALLBACK_PASS_ON;
+
+   if (!ev) return ECORE_CALLBACK_PASS_ON;
+
+   if (ev->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE)
+     {
+        _e_mod_move_prop_window_rotation(ev);
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   if (ATOM_QUICKPANEL_LAYOUT_POSITION
+       && ev->atom == ATOM_QUICKPANEL_LAYOUT_POSITION)
+     {
+        _e_mod_move_prop_quickpanel_layout(ev);
+
+        if (m->quickpanel)
+          if (m->quickpanel->state == MOVE_ON_STAGE)
+            {
+               _e_mod_move_quickpanel_transients_release(m);
+               _e_mod_move_quickpanel_transients_find(m);
+
+               if (m->quickpanel->event_handler.window_rotation_angle == 0)
+                 _e_mod_move_quickpanel_move(m, 0, 0, 0, 0, LAYOUT_POSITION_Y, EINA_TRUE);
+               else if (m->quickpanel->event_handler.window_rotation_angle == 90)
+                 _e_mod_move_quickpanel_move(m, 0, 0, 0, 0, LAYOUT_POSITION_X, EINA_TRUE);
+              else if (m->quickpanel->event_handler.window_rotation_angle == 180)
+                {
+                   _e_mod_move_quickpanel_move(m, 0, m->man->h - (m->quickpanel->window_geometry.h),
+                                               0, 0, LAYOUT_POSITION_Y, EINA_TRUE);
+                }
+              else if (m->quickpanel->event_handler.window_rotation_angle == 270)
+                {
+                   _e_mod_move_quickpanel_move(m, m->man->w - (m->quickpanel->window_geometry.w), 0,
+                                               0, 0, LAYOUT_POSITION_X, EINA_TRUE);
+                }
+            }
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   if (ATOM_WINDOW_INPUT_REGION
+       && ev->atom == ATOM_WINDOW_INPUT_REGION)
+     {
+        _e_mod_move_prop_window_input_region(ev);
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   if (ev->atom == ECORE_X_ATOM_NET_ACTIVE_WINDOW)
+     {
+        _e_mod_move_prop_active_window_change(ev);
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE)
+     {
+        _e_mod_move_prop_indicator_state_change(ev);
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+void
+e_mod_move_show_apptray_helper(E_Move *m)
+{
+   E_Move_AppTray_Helper *apptray_helper = NULL;
+   if (!m) return;
+   if (!m->app_tray) return;
+   apptray_helper = calloc(1, sizeof(E_Move_AppTray_Helper));
+   if (!apptray_helper) return;
+
+   apptray_helper->geo.x = 0;
+   apptray_helper->geo.y = 0;
+   apptray_helper->geo.w = m->man->w;
+   apptray_helper->geo.h = m->man->h;
+
+
+   apptray_helper->event.up = e_mod_move_apptray_helper_mouse_up_callback;
+   apptray_helper->event.down = e_mod_move_apptray_helper_mouse_down_callback;
+   apptray_helper->event.move = e_mod_move_apptray_helper_mouse_move_callback;
+   apptray_helper->event.click = EINA_FALSE;
+   apptray_helper->event.enable = EINA_FALSE;
+
+   apptray_helper->win = ecore_x_window_input_new(0, 0, 0,
+                                                  apptray_helper->geo.w,
+                                                  apptray_helper->geo.h);
+   ecore_x_icccm_title_set(apptray_helper->win, "E MOVE ApptrayHelper");
+
+   m->apptray_helper = apptray_helper;
+
+   ecore_x_window_show(apptray_helper->win);
+   apptray_helper->visible = EINA_TRUE;
+
+   apptray_helper->event.up_handler =  ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, apptray_helper->event.up, apptray_helper);
+   apptray_helper->event.down_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, apptray_helper->event.down, apptray_helper);
+   apptray_helper->event.move_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, apptray_helper->event.move, apptray_helper);
+
+   ecore_x_window_configure(apptray_helper->win,
+                            ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                            ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                            apptray_helper->geo.x, apptray_helper->geo.y,
+                            apptray_helper->geo.w, apptray_helper->geo.h, 0,
+                            m->app_tray->border->win, ECORE_X_WINDOW_STACK_BELOW);
+
+   apptray_helper->obj = evas_object_rectangle_add(e_move_comp_evas);
+   evas_object_color_set(apptray_helper->obj, 0,0,0,MIN_OPACITY);
+   evas_object_move(apptray_helper->obj, 0, 0);
+   evas_object_resize(apptray_helper->obj, m->man->w, m->man->h);
+   evas_object_show(apptray_helper->obj);
+   evas_object_stack_below(apptray_helper->obj, m->app_tray->move_object);
+   _e_mod_move_rotation_lock(m);
+}
+
+void
+e_mod_move_hide_apptray_helper(E_Move *m)
+{
+   if (!m) return;
+   if (!m->apptray_helper) return;
+
+   evas_object_hide(m->apptray_helper->obj);
+   evas_object_del(m->apptray_helper->obj);
+
+   if (m->apptray_helper->event.up_handler)
+     {
+        ecore_event_handler_del(m->apptray_helper->event.up_handler);
+        m->apptray_helper->event.up_handler = NULL;
+     }
+   if (m->apptray_helper->event.down_handler)
+     {
+        ecore_event_handler_del(m->apptray_helper->event.down_handler);
+        m->apptray_helper->event.down_handler = NULL;
+     }
+   if (m->apptray_helper->event.move_handler)
+     {
+        ecore_event_handler_del(m->apptray_helper->event.move_handler);
+        m->apptray_helper->event.move_handler = NULL;
+     }
+
+   ecore_x_window_hide(m->apptray_helper->win);
+   ecore_x_window_free(m->apptray_helper->win);
+   free(m->apptray_helper);
+   m->apptray_helper = NULL;
+   _e_mod_move_rotation_unlock(m);
+}
+
+static Eina_Bool
+e_mod_move_apptray_helper_mouse_up_callback(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Event_Mouse_Button *ev;
+   E_Move_AppTray_Helper *apptray_helper;
+
+   ev = event;
+   E_Move *m = NULL;
+
+   if (!(apptray_helper = data)) return ECORE_CALLBACK_PASS_ON;
+   if (ev->event_window != apptray_helper->win) return ECORE_CALLBACK_PASS_ON;
+   if (!(m=_e_mod_move_get())) return ECORE_CALLBACK_PASS_ON;
+   if (apptray_helper->event.click == EINA_FALSE) return ECORE_CALLBACK_PASS_ON;
+   apptray_helper->event.click = EINA_FALSE;
+   if (m->app_tray)
+     if (m->app_tray->state == MOVE_ON_STAGE)
+       {
+#ifndef AT_ANI
+          _e_mod_move_app_tray_move(m, -10000, -10000, EINA_TRUE);
+          e_mod_move_hide_apptray_helper(m);
+#else
+          if (m->app_tray->event_handler.window_rotation_angle == 0)
+            _e_mod_move_apptray_move_animation(m, 0, (m->app_tray->window_geometry.h)*-1, EINA_FALSE);
+          else if (m->app_tray->event_handler.window_rotation_angle == 90)
+            _e_mod_move_apptray_move_animation(m, (m->app_tray->window_geometry.w)*-1, 0, EINA_FALSE);
+          else if (m->app_tray->event_handler.window_rotation_angle == 180)
+            _e_mod_move_apptray_move_animation(m, 0, m->man->h, EINA_FALSE);
+          else if (m->app_tray->event_handler.window_rotation_angle == 270)
+            _e_mod_move_apptray_move_animation(m, m->man->w, 0, EINA_FALSE);
+#endif
+          m->app_tray->state = MOVE_OFF_STAGE;
+       }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+e_mod_move_apptray_helper_mouse_down_callback(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Event_Mouse_Button *ev;
+   E_Move_AppTray_Helper *apptray_helper;
+
+   ev = event;
+   if (!(apptray_helper = data)) return ECORE_CALLBACK_PASS_ON;
+
+   if (ev->event_window != apptray_helper->win) return ECORE_CALLBACK_PASS_ON;
+   if (apptray_helper->event.enable) apptray_helper->event.click = EINA_TRUE;
+   else apptray_helper->event.click = EINA_FALSE;
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+e_mod_move_apptray_helper_mouse_move_callback(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Event_Mouse_Move *ev;
+   E_Move_AppTray_Helper *apptray_helper;
+
+   ev = event;
+   if (!(apptray_helper = data)) return ECORE_CALLBACK_PASS_ON;
+
+   if (ev->event_window != apptray_helper->win) return ECORE_CALLBACK_PASS_ON;
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_prop_active_window_change(Ecore_X_Event_Window_Property *ev)
+{
+   E_Move *m = NULL;
+   E_Border *bd;
+   Ecore_X_Window active_win;
+   int indicator_state = 0;
+
+   if (!(m=_e_mod_move_get())) return EINA_FALSE;
+   if (ev->win != m->man->root) return EINA_FALSE;
+
+   if (!ecore_x_window_prop_window_get(m->man->root, ECORE_X_ATOM_NET_ACTIVE_WINDOW, &active_win, 1)) return EINA_FALSE;
+
+   if (m->tp_indi) _e_mod_move_tp_indi_hide(m);
+
+   if (m->app_tray)
+     if (m->app_tray->border->client.win == active_win) m->active_win.win = active_win;
+
+   if (m->active_win.win != active_win)
+     {
+        m->active_win.win = active_win;
+        indicator_state = _e_mod_move_prop_indicator_state_get(active_win);
+
+        if (m->quickpanel)
+          if (m->quickpanel->state == MOVE_ON_STAGE)
+            {
+               _e_mod_move_quickpanel_transients_find(m);
+               m->active_win.animatable = EINA_FALSE;
+               _e_mod_move_quickpanel_move(m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_Y, EINA_TRUE);
+               _e_mod_move_quickpanel_transients_release(m);
+               m->quickpanel->state = MOVE_OFF_STAGE;
+               _e_mod_move_illume_quickpanel_state_off(m);
+               _e_mod_move_rotate_block_disable(m);
+            }
+
+        if (m->app_tray)
+          if (m->app_tray->state == MOVE_ON_STAGE)
+            {
+               _e_mod_move_app_tray_move(m, -10000, -10000, EINA_TRUE);
+               m->app_tray->state = MOVE_OFF_STAGE;
+               e_mod_move_hide_apptray_helper(m);
+               if (indicator_state)
+                 if ((bd = _e_mod_move_bd_find_by_indicator(m)))
+                   e_border_show(bd);
+               e_border_lower(m->app_tray->border);
+            }
+
+        _e_mod_move_key_handler_disable(m);
+
+        if (!indicator_state)
+          {
+             E_Border *target = e_border_find_all_by_client_window(active_win);
+             if (target)
+               {
+                  if ((target->x == 0) && (target->y == 0)
+                     && (target->w == m->man->w) && (target->h == m->man->h))
+                    _e_mod_move_tp_indi_show(m, target);
+               }
+           }
+     }
+
+   return EINA_TRUE;
+}
+
+void
+_e_mod_move_key_handler_enable(E_Move *m)
+{
+   E_Move_Key_Helper *key_helper = NULL;
+   if (!m) return;
+
+   if (m->key_helper)
+     if (m->key_helper->state) return;
+
+   key_helper = calloc(1, sizeof(E_Move_Key_Helper));
+
+   if (!key_helper) return;
+
+   key_helper->win = ecore_x_window_input_new(0, -1, -1, 1, 1);
+   ecore_x_icccm_title_set(key_helper->win, "E MOVE KeyHandler");
+   ecore_x_window_show(key_helper->win);
+   key_helper->key_down_handler = ecore_event_handler_add (ECORE_EVENT_KEY_DOWN, _e_mod_move_hw_key_down_cb, key_helper);
+
+   utilx_grab_key (ecore_x_display_get(), key_helper->win, KEY_END, TOP_POSITION_GRAB);
+   utilx_grab_key (ecore_x_display_get(), key_helper->win, KEY_SELECT, TOP_POSITION_GRAB);
+
+   key_helper->state = EINA_TRUE;
+   m->key_helper = key_helper;
+}
+
+void
+_e_mod_move_key_handler_disable(E_Move *m)
+{
+   if (!m) return;
+   if (!m->key_helper) return;
+
+   if (m->quickpanel)
+     if (m->quickpanel->state == MOVE_ON_STAGE) return;
+
+   if (m->app_tray)
+     if (m->app_tray->state == MOVE_ON_STAGE) return;
+
+   utilx_ungrab_key (ecore_x_display_get(), m->key_helper->win, KEY_END);
+   utilx_ungrab_key (ecore_x_display_get(), m->key_helper->win, KEY_SELECT);
+
+   if (m->key_helper->key_down_handler)
+     {
+        ecore_event_handler_del(m->key_helper->key_down_handler);
+        m->key_helper->key_down_handler = NULL;
+     }
+
+   ecore_x_window_hide(m->key_helper->win);
+   ecore_x_window_free(m->key_helper->win);
+
+   free(m->key_helper);
+   m->key_helper = NULL;
+}
+
+static Eina_Bool
+_e_mod_move_hw_key_down_cb (void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Event_Key *ev;
+   E_Move *m = NULL;
+   E_Move_Key_Helper *key_helper = NULL;
+
+   ev = event;
+
+   if (!(key_helper = data)) return ECORE_CALLBACK_PASS_ON;
+
+   if (!(m=_e_mod_move_get())) return ECORE_CALLBACK_PASS_ON;
+
+   if ((strcmp (ev->keyname, KEY_END) == 0) ||
+       (strcmp (ev->keyname, KEY_SELECT) == 0))
+     {
+        if (m->key_helper)
+          if (m->key_helper->state == EINA_TRUE)
+            {
+               if (m->quickpanel)
+                 if (m->quickpanel->state == MOVE_ON_STAGE)
+                   {
+                      _e_mod_move_quickpanel_transients_find(m);
+                      _e_mod_move_quickpanel_transients_move_lock(m, EINA_FALSE);
+#ifndef QP_ANI
+                      _e_mod_move_quickpanel_move(m, -10000, -10000, -10000, -10000, LAYOUT_POSITION_Y, EINA_TRUE);
+                      _e_mod_move_rotate_block_disable(m);
+#else
+                      if (m->quickpanel->event_handler.window_rotation_angle == 0)
+                        _e_mod_move_quickpanel_move_animation(m, 0, (m->quickpanel->window_geometry.h)*-1, EINA_FALSE);
+                     else if (m->quickpanel->event_handler.window_rotation_angle == 90)
+                        _e_mod_move_quickpanel_move_animation(m, (m->quickpanel->window_geometry.w)*-1, 0, EINA_FALSE);
+                     else if (m->quickpanel->event_handler.window_rotation_angle == 180)
+                        _e_mod_move_quickpanel_move_animation(m, 0, m->quickpanel->window_geometry.h, EINA_FALSE);
+                     else if (m->quickpanel->event_handler.window_rotation_angle == 270)
+                        _e_mod_move_quickpanel_move_animation(m, m->quickpanel->window_geometry.w, 0, EINA_FALSE);
+#endif
+                      m->quickpanel->state = MOVE_OFF_STAGE;
+                      _e_mod_move_illume_quickpanel_state_off(m);
+                      _e_mod_move_quickpanel_transients_release(m);
+                   }
+
+               if (m->app_tray)
+                 if (m->app_tray->state == MOVE_ON_STAGE)
+                   {
+#ifndef AT_ANI
+                      _e_mod_move_app_tray_move(m, -10000, -10000, EINA_TRUE);
+                      e_mod_move_hide_apptray_helper(m);
+#else
+                     if (m->app_tray->event_handler.window_rotation_angle == 0)
+                        _e_mod_move_apptray_move_animation(m, 0, (m->app_tray->window_geometry.h)*-1, EINA_FALSE);
+                     else if (m->app_tray->event_handler.window_rotation_angle == 90)
+                        _e_mod_move_apptray_move_animation(m, (m->app_tray->window_geometry.w)*-1, 0, EINA_FALSE);
+                     else if (m->app_tray->event_handler.window_rotation_angle == 180)
+                        _e_mod_move_apptray_move_animation(m, 0, m->man->h, EINA_FALSE);
+                     else if (m->app_tray->event_handler.window_rotation_angle == 270)
+                        _e_mod_move_apptray_move_animation(m, m->man->w, 0, EINA_FALSE);
+#endif
+                      m->app_tray->state = MOVE_OFF_STAGE;
+                   }
+
+               _e_mod_move_key_handler_disable(m);
+            }
+     }
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+void
+_e_mod_move_illume_quickpanel_state_on(E_Move *m)
+{
+   Eina_List *l = NULL;
+   E_Move_Win *find_mw = NULL;
+   if (!m) return;
+   if (!m->quickpanel) return;
+   ecore_x_e_illume_quickpanel_state_send(m->quickpanel->border->client.win,
+                                          ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+
+   _e_mod_move_quickpanel_transients_find(m);
+   if (m->quickpanel_child.quickpanel_transients)
+     {
+        EINA_LIST_FOREACH(m->quickpanel_child.quickpanel_transients, l, find_mw)
+          {
+             if (find_mw)
+               {
+                  ecore_x_e_illume_quickpanel_state_send(find_mw->border->client.win,ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+               }
+           }
+     }
+   _e_mod_move_quickpanel_transients_release(m);
+   if (m->indicator)
+     if (m->indicator->border)
+       ecore_x_e_illume_quickpanel_state_send(m->indicator->border->client.win, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+}
+
+void
+_e_mod_move_illume_quickpanel_state_off(E_Move *m)
+{
+   Eina_List *l = NULL;
+   E_Move_Win *find_mw = NULL;
+   if (!m) return;
+   if (!m->quickpanel) return;
+   ecore_x_e_illume_quickpanel_state_send(m->quickpanel->border->client.win,
+                                          ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+   _e_mod_move_quickpanel_transients_find(m);
+   if (m->quickpanel_child.quickpanel_transients)
+     {
+        EINA_LIST_FOREACH(m->quickpanel_child.quickpanel_transients, l, find_mw)
+          {
+             if (find_mw)
+               {
+                  ecore_x_e_illume_quickpanel_state_send(find_mw->border->client.win,ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+               }
+           }
+     }
+   _e_mod_move_quickpanel_transients_release(m);
+   if (m->indicator)
+     if (m->indicator->border)
+       ecore_x_e_illume_quickpanel_state_send(m->indicator->border->client.win, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+}
+
+void
+_e_mod_move_rotate_block_enable(E_Move *m)
+{
+   E_Move_Block_Helper *block_helper = NULL;
+   if (!m) return;
+
+   if (m->block_helper)
+     if (m->block_helper->state) return;
+
+   block_helper = calloc(1, sizeof(E_Move_Block_Helper));
+
+   if (!block_helper) return;
+
+   block_helper->win = ecore_x_window_input_new(0, 0, 0, m->man->w, m->man->h);
+   ecore_x_icccm_title_set(block_helper->win, "E MOVE RotationBlock");
+   ecore_x_window_show(block_helper->win);
+
+   ecore_x_window_configure(block_helper->win,
+                            ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                            ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                            0, 0,
+                            m->man->w,m->man->h, 0,
+                            m->quickpanel->border->win, ECORE_X_WINDOW_STACK_BELOW);
+
+   block_helper->obj = evas_object_rectangle_add(e_move_comp_evas);
+   evas_object_color_set(block_helper->obj, 0,0,0,MIN_OPACITY);
+   evas_object_move(block_helper->obj, 0, 0);
+   evas_object_resize(block_helper->obj, m->man->w, m->man->h);
+   evas_object_show(block_helper->obj);
+   evas_object_stack_below(block_helper->obj, m->quickpanel->move_object);
+
+   block_helper->state = EINA_TRUE;
+   m->block_helper = block_helper;
+   _e_mod_move_rotation_lock(m);
+}
+
+void
+_e_mod_move_rotate_block_disable(E_Move *m)
+{
+   if (!m) return;
+   if (!m->block_helper) return;
+
+   evas_object_hide(m->block_helper->obj);
+   evas_object_del(m->block_helper->obj);
+   ecore_x_window_hide(m->block_helper->win);
+   ecore_x_window_free(m->block_helper->win);
+
+   free(m->block_helper);
+   m->block_helper = NULL;
+   _e_mod_move_rotation_unlock(m);
+}
+
+static Eina_Bool
+_e_mod_move_quickpanel_move_animation(E_Move *m, int quickpanel_move_x, int quickpanel_move_y, Eina_Bool is_on_screen)
+{
+   Eina_List *l = NULL;
+   E_Move_Win *find_mw = NULL;
+   E_Border *child_bd = NULL;
+
+   double anim_time = 0.4;
+   int x,y,w,h;
+   int a,r,g,b;
+
+   if (!m) return EINA_FALSE;
+   if (!m->quickpanel) return EINA_FALSE;
+
+   evas_object_geometry_get(m->quickpanel->move_object, &x, &y, &w, &h);
+   qp_anim_data.m = m;
+   qp_anim_data.start_x = x;
+   qp_anim_data.start_y = y;
+   qp_anim_data.end_x = quickpanel_move_x;
+   qp_anim_data.end_y = quickpanel_move_y;
+   qp_anim_data.dist_x = quickpanel_move_x - x;
+   qp_anim_data.dist_y = quickpanel_move_y - y;
+   qp_anim_data.is_on_screen = is_on_screen;
+
+   if (m->block_helper)
+     {
+        evas_object_color_get(m->block_helper->obj, &r, &g, &b, &a);
+        qp_anim_data.start_opacity = a;
+        if (is_on_screen)
+          {
+             qp_anim_data.end_opacity = MAX_OPACITY;
+             qp_anim_data.diff_opacity = MAX_OPACITY - a;
+          }
+        else
+          {
+             qp_anim_data.end_opacity = MIN_OPACITY;
+             qp_anim_data.diff_opacity = MIN_OPACITY - a;
+          }
+     }
+
+   EINA_LIST_FOREACH(m->quickpanel->border->transients, l, child_bd)
+     {
+        if (!child_bd) continue;
+
+        find_mw = _e_mod_move_win_find(child_bd->win);
+        if (find_mw)
+          {
+            qp_anim_data.qp_transients = eina_list_append(qp_anim_data.qp_transients, find_mw );
+            find_mw = NULL;
+          }
+     }
+
+   ecore_animator_timeline_add(anim_time, _qp_anim_frame, &qp_anim_data);
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_qp_anim_frame(void *data, double pos)
+{
+   double frame = pos;
+   Anim_Data *anim_data = (Anim_Data *)data;
+   Eina_List *l = NULL;
+   E_Move_Win *find_mw = NULL;
+   E_Move *m = _e_mod_move_get();
+
+   int move_x;
+   int move_y;
+
+   if (!anim_data->m) return EINA_FALSE;
+   if (!anim_data->m->quickpanel) return EINA_FALSE;
+
+   frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0);
+
+   move_x = anim_data->start_x + anim_data->dist_x * frame;
+   move_y = anim_data->start_y + anim_data->dist_y * frame;
+
+   evas_object_move(anim_data->m->quickpanel->move_object, move_x, move_y);
+
+   if (anim_data->m->block_helper)
+     {
+        int opacity;
+        opacity =  anim_data->start_opacity + anim_data->diff_opacity * frame;
+        evas_object_color_set(anim_data->m->block_helper->obj, 0, 0, 0, opacity);
+        if (pos == 1.0)
+          evas_object_color_set(anim_data->m->block_helper->obj, 0, 0, 0, anim_data->end_opacity);
+     }
+
+   if (pos == 1.0)
+     {
+        if (anim_data->is_on_screen)
+          e_border_move(anim_data->m->quickpanel->border, anim_data->end_x, anim_data->end_y);
+        else
+          {
+             e_border_move(anim_data->m->quickpanel->border, -10000, -10000);
+             _e_mod_move_rotate_block_disable(m);
+          }
+     }
+
+   if (anim_data->qp_transients)
+     {
+        EINA_LIST_FOREACH(anim_data->qp_transients, l, find_mw)
+          {
+             if (find_mw)
+               {
+                 if (pos == 1.0)
+                   {
+                     evas_object_move(find_mw->move_object, find_mw->quickpanel_layout.position_x + anim_data->end_x , find_mw->quickpanel_layout.position_y + anim_data->end_y);
+                     find_mw->can_unlock = EINA_TRUE;
+                     if (anim_data->is_on_screen)
+                       e_border_move(find_mw->border, find_mw->quickpanel_layout.position_x + anim_data->end_x , find_mw->quickpanel_layout.position_y + anim_data->end_y);
+                     else
+                       e_border_move(find_mw->border, -10000 , -10000);
+                     //_e_mod_move_comp_window_move_unlock(anim_data->m->man, find_mw->border);
+                   }
+                 else evas_object_move(find_mw->move_object, find_mw->quickpanel_layout.position_x + move_x , find_mw->quickpanel_layout.position_y + move_y);
+               }
+          }
+     }
+
+   if (anim_data->m->active_win.animatable)
+     {
+        int x = 0;
+        int y = 0;
+        if (anim_data->dist_x)
+          {
+             if (anim_data->m->quickpanel->event_handler.window_rotation_angle == 90)
+               x = move_x + anim_data->m->quickpanel->border->w;
+             else
+               x = move_x - anim_data->m->quickpanel->border->w;
+             y = move_y;
+          }
+        else
+          {
+             x = move_x;
+             if (anim_data->m->quickpanel->event_handler.window_rotation_angle == 0)
+               y = move_y + anim_data->m->quickpanel->border->h;
+             else
+               y = move_y - anim_data->m->quickpanel->border->h;
+          }
+        evas_object_move(anim_data->m->active_win.obj, x, y);
+        if (pos == 1.0)
+          {
+             evas_object_move(anim_data->m->active_win.obj,
+                              anim_data->m->active_win.bd->x,
+                              anim_data->m->active_win.bd->y);
+             _e_mod_move_comp_window_move_unlock(anim_data->m->man, anim_data->m->active_win.bd);
+          }
+     }
+
+   if (pos == 1.0)
+     {
+        anim_data->qp_transients = eina_list_free(anim_data->qp_transients);
+        return EINA_FALSE;
+     }
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_apptray_move_animation(E_Move *m, int apptray_move_x, int apptray_move_y, Eina_Bool is_on_screen)
+{
+   double anim_time = 0.4;
+   int x,y,w,h;
+   int a,r,g,b;
+
+   if (!m) return EINA_FALSE;
+   if (!m->app_tray) return EINA_FALSE;
+
+   evas_object_geometry_get(m->app_tray->move_object, &x, &y, &w, &h);
+   apptray_anim_data.m = m;
+   apptray_anim_data.start_x = x;
+   apptray_anim_data.start_y = y;
+   apptray_anim_data.end_x = apptray_move_x;
+   apptray_anim_data.end_y = apptray_move_y;
+   apptray_anim_data.dist_x = apptray_move_x - x;
+   apptray_anim_data.dist_y = apptray_move_y - y;
+   apptray_anim_data.is_on_screen = is_on_screen;
+
+   if (m->apptray_helper)
+     {
+        evas_object_color_get(m->apptray_helper->obj, &r, &g, &b, &a);
+        apptray_anim_data.start_opacity = a;
+
+        if (is_on_screen)
+          {
+             apptray_anim_data.end_opacity = MAX_OPACITY;
+             apptray_anim_data.diff_opacity = MAX_OPACITY - a;
+          }
+        else
+          {
+             apptray_anim_data.end_opacity = MIN_OPACITY;
+             apptray_anim_data.diff_opacity = MIN_OPACITY - a;
+          }
+     }
+
+   ecore_animator_timeline_add(anim_time, _apptray_anim_frame, &apptray_anim_data);
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_apptray_anim_frame(void *data, double pos)
+{
+   double frame = pos;
+   Anim_Data *anim_data = (Anim_Data *)data;
+   E_Border *bd;
+
+   int move_x;
+   int move_y;
+
+   if (!anim_data->m) return EINA_FALSE;
+   if (!anim_data->m->app_tray) return EINA_FALSE;
+
+   frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0);
+
+   move_x = anim_data->start_x + anim_data->dist_x * frame;
+   move_y = anim_data->start_y + anim_data->dist_y * frame;
+
+   evas_object_move(anim_data->m->app_tray->move_object, move_x, move_y);
+
+   if (anim_data->m->apptray_helper)
+     {
+        int opacity = MAX_OPACITY;
+        opacity =  anim_data->start_opacity + anim_data->diff_opacity * frame;
+        evas_object_color_set(anim_data->m->apptray_helper->obj, 0, 0, 0, opacity);
+        if (pos == 1.0)
+          evas_object_color_set(anim_data->m->apptray_helper->obj, 0, 0, 0, anim_data->end_opacity);
+     }
+
+   if (pos == 1.0)
+     {
+        if (anim_data->is_on_screen)
+          {
+             e_border_move(anim_data->m->app_tray->border, anim_data->end_x, anim_data->end_y);
+             if (anim_data->m->indicator) e_border_hide(anim_data->m->indicator->border,2);
+
+             e_border_focus_set(anim_data->m->app_tray->border, 1, 1);
+          }
+        else
+          {
+             e_border_move(anim_data->m->app_tray->border, -10000, -10000);
+             e_mod_move_hide_apptray_helper(anim_data->m);
+             if ((bd = _e_mod_move_bd_find_by_indicator(anim_data->m))) e_border_show(bd);
+             e_border_lower(anim_data->m->app_tray->border);
+
+             e_border_focus_set(anim_data->m->app_tray->border, 0, 0);
+          }
+     }
+
+   return EINA_TRUE;
+}
+
+E_Border *
+_e_mod_move_bd_find_by_indicator(E_Move *m)
+{
+   E_Move_Border *m_bd = NULL;
+   EINA_INLIST_FOREACH(m->borders, m_bd)
+     {
+        if (m_bd->win_type == WIN_INDICATOR) return m_bd->bd;
+     }
+   return NULL;
+}
+
+static Eina_Bool
+_e_mod_move_lock_screen_check(E_Move *m)
+{
+   E_Border *active_bd = NULL;
+   Ecore_X_Window active_win = 0;
+   const char *name = NULL;
+   const char *clas = NULL;
+
+   if (!m) return EINA_FALSE;
+   if (ecore_x_window_prop_window_get(m->man->root, ECORE_X_ATOM_NET_ACTIVE_WINDOW, &active_win, 1) == -1)
+     return EINA_FALSE;
+
+   active_bd = e_border_find_by_client_window(active_win);
+   if (!active_bd) return EINA_FALSE;
+
+   name = active_bd->client.icccm.name;
+   clas = active_bd->client.icccm.class;
+
+   if (clas == NULL) return EINA_FALSE;
+   if (strncmp(clas,"LOCK_SCREEN",strlen("LOCK_SCREEN")) != 0) return EINA_FALSE;
+   if (name == NULL) return EINA_FALSE;
+   if (strncmp(name,"LOCK_SCREEN",strlen("LOCK_SCREEN")) != 0) return EINA_FALSE;
+   if (active_bd->client.netwm.type != ECORE_X_WINDOW_TYPE_NOTIFICATION) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_mini_controller_check(E_Move *m)
+{
+   Ecore_X_Window mini_control_win = 0;
+   Eina_Bool ret = EINA_FALSE;
+   if (!ATOM_MINI_CONTROLLER_WINDOW) return EINA_FALSE;
+   if (ecore_x_window_prop_window_get(m->man->root, ATOM_MINI_CONTROLLER_WINDOW, &mini_control_win, 1) == -1)
+     return EINA_FALSE;
+   if (mini_control_win) ret = EINA_TRUE;
+   return ret;
+}
+
+static Eina_Bool
+_animator_move(E_Move_Win *mw,
+               int         dst_x,
+               int         dst_y,
+               double      duration,
+               Eina_Bool   after_show)
+{
+   Ecore_Timeline_Cb time_cb = NULL;
+   Anim_Data *data = NULL;
+   int x, y, w, h;
+
+   if (!mw || !mw->m) return EINA_FALSE;
+
+   evas_object_geometry_get(mw->move_object,
+                            &x, &y, &w, &h);
+
+   if (mw->win_type == WIN_QUICKPANEL_BASE)
+     {
+        Eina_List *l;
+        E_Move_Win *_mw;
+        E_Border *_bd;
+
+        data = &qp_anim_data;
+        time_cb = _qp_anim_frame;
+
+        EINA_LIST_FOREACH(mw->border->transients, l, _bd)
+          {
+             if (!_bd) continue;
+             _mw = _e_mod_move_win_find(_bd->win);
+             if (!_mw) continue;
+             data->qp_transients = eina_list_append(data->qp_transients, _mw);
+          }
+     }
+   else if (mw->win_type == WIN_APP_TRAY)
+     {
+        data = &apptray_anim_data;
+        time_cb = _apptray_anim_frame;
+     }
+   else
+     {
+        return EINA_FALSE;
+     }
+
+   data->m = mw->m;
+   data->start_x = x;
+   data->start_y = y;
+   data->end_x = dst_x;
+   data->end_y = dst_y;
+   data->dist_x = dst_x - x;
+   data->dist_y = dst_y - y;
+   data->is_on_screen = after_show;
+
+   if (mw->m->block_helper || mw->m->apptray_helper)
+     {
+        int a,r,g,b;
+
+        if (mw->m->block_helper)
+          evas_object_color_get(mw->m->block_helper->obj, &r, &g, &b, &a);
+        if (mw->m->apptray_helper)
+          evas_object_color_get(mw->m->apptray_helper->obj, &r, &g, &b, &a);
+
+        data->start_opacity = a;
+
+        if (after_show)
+          {
+             data->end_opacity = MAX_OPACITY;
+             data->diff_opacity = MAX_OPACITY - a;
+          }
+        else
+          {
+             data->end_opacity = MIN_OPACITY;
+             data->diff_opacity = MIN_OPACITY - a;
+          }
+     }
+
+   ecore_animator_timeline_add(duration, time_cb, data);
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
+{
+   E_Move *m = NULL;
+   E_Move_Win *mw = NULL;
+   int open, angle;
+   int sx, sy, ex, ey, w, h, rw, rh;
+
+   E_CHECK_RETURN(ev, 0);
+   open = !(!(ev->data.l[1]));
+   mw = _e_mod_move_border_client_find(ev->data.l[0]);
+   m = _e_mod_move_get();
+
+   if (!mw || !m)
+     {
+        return EINA_FALSE;
+     }
+
+   angle = mw->event_handler.window_rotation_angle;
+   angle %= 360;
+
+   w = mw->window_geometry.w;
+   h = mw->window_geometry.h;
+   rw = m->man->w;
+   rh = m->man->h;
+
+   if ((open) && (mw->state == MOVE_OFF_STAGE))
+     {
+        Eina_Bool qp_on = EINA_FALSE;
+        Eina_Bool at_on = EINA_FALSE;
+        Eina_Bool res, lock_on, mini_on;
+        int angles[2];
+
+        if ((m->quickpanel) && (m->quickpanel->state != MOVE_OFF_STAGE)) qp_on = EINA_TRUE;
+        if ((m->app_tray)   && (m->app_tray->state   != MOVE_OFF_STAGE)) at_on = EINA_TRUE;
+
+
+        lock_on = _e_mod_move_lock_screen_check(m);
+        mini_on = _e_mod_move_mini_controller_check(m);
+
+        res = _e_mod_move_win_get_prop_angle(mw->border->client.win,
+                                             &angles[0], &angles[1]);
+        if ((res) && (angles[0] != angle))
+          {
+             mw->event_handler.window_rotation_angle = angles[0];
+             angle = angles[0];
+             angle %= 360;
+          }
+
+        if (m->quickpanel == mw)
+          {
+             int cx, cy;
+             QuickPanel_Layout_Position lay;
+             if ((lock_on) && (!mini_on)) return EINA_FALSE;
+             ex = ey = 0;
+
+             switch (angle)
+               {
+                case  90: sx = -(w); sy =    0; cx = -(w); cy =    0; lay = LAYOUT_POSITION_X; break;
+                case 180: sx =    0; sy =   rh; cx =    0; cy =   rh; lay = LAYOUT_POSITION_Y; break;
+                case 270: sx =   rw; sy =    0; cx =   rw; cy =    0; lay = LAYOUT_POSITION_X; break;
+                case   0:
+                default : sx =    0; sy = -(h); cx =    0; cy = -(h); lay = LAYOUT_POSITION_Y; break;
+               }
+
+             _e_mod_move_quickpanel_transients_find(m);
+             _e_mod_move_quickpanel_transients_move_lock(m, EINA_FALSE);
+             _e_mod_move_rotate_block_enable(m);
+             mw->state = MOVE_WORK;
+             _e_mod_move_tp_indi_touch_win_stack_update(m);
+             m->active_win.animatable = EINA_FALSE;
+             _e_mod_move_quickpanel_move(m, sx, sy, cx, cy, lay, EINA_FALSE);
+             _e_mod_move_app_tray_move(m, sx, sy, EINA_FALSE);
+             e_mod_move_active_win_state_update(m);
+             _e_mod_move_illume_quickpanel_state_on(m);
+             _e_mod_move_key_handler_enable(m);
+             mw->event_handler.mouse_clicked = EINA_FALSE;
+             _animator_move(mw, ex, ey, 0.5, EINA_TRUE);
+             mw->state = MOVE_ON_STAGE;
+             _e_mod_move_quickpanel_transients_release(m);
+
+          }
+        else if (m->app_tray == mw)
+          {
+             if (lock_on) return EINA_FALSE;
+
+             switch (angle)
+               {
+                case  90: sx = -(w); sy =    0; ex =      0; ey =      0; break;
+                case 180: sx =    0; sy =   rh; ex =      0; ey = rh - h; break;
+                case 270: sx =   rw; sy =    0; ex = rw - w; ey =      0; break;
+                case   0:
+                default : sx =    0; sy = -(h); ex =      0; ey =      0; break;
+               }
+
+             _e_mod_move_app_tray_move(m, sx, sy, EINA_FALSE);
+             e_border_raise(mw->border);
+             e_mod_move_show_apptray_helper(m);
+             _e_mod_move_key_handler_enable(m);
+             _animator_move(mw, ex, ey, 0.5, EINA_TRUE);
+             mw->event_handler.mouse_clicked = EINA_FALSE;
+             if (m->apptray_helper) m->apptray_helper->event.enable = EINA_TRUE;
+             mw->state = MOVE_ON_STAGE;
+          }
+     }
+   else if ((!open) && (mw->state == MOVE_ON_STAGE))
+     {
+        if (m->quickpanel == mw)
+          {
+             switch (angle)
+               {
+                case  90: ex = -(w); ey =    0; break;
+                case 180: ex =    0; ey =    h; break;
+                case 270: ex =    w; ey =    0; break;
+                case   0:
+                default : ex =    0; ey = -(h); break;
+               }
+
+             _animator_move(mw, ex, ey, 0.4, EINA_FALSE);
+             mw->state = MOVE_OFF_STAGE;
+             _e_mod_move_illume_quickpanel_state_off(m);
+             _e_mod_move_key_handler_disable(m);
+             mw->event_handler.mouse_clicked = EINA_FALSE;
+             _e_mod_move_quickpanel_transients_release(m);
+          }
+
+        else if (m->app_tray == mw)
+          {
+             switch (angle)
+               {
+                case  90: ex = -(w); ey =    0; break;
+                case 180: ex =    0; ey =   rh; break;
+                case 270: ex =   rw; ey =    0; break;
+                case   0:
+                default : ex =    0; ey = -(h); break;
+               }
+             _animator_move(mw, ex, ey, 0.4, EINA_FALSE);
+             mw->event_handler.mouse_clicked = EINA_FALSE;
+             mw->state = MOVE_OFF_STAGE;
+             _e_mod_move_key_handler_disable(m);
+
+          }
+     }
+   else
+     {
+        fprintf(stderr,
+                "[MOVE_MODULE] _NET_WM_WINDOW_SHOW error."
+                " w:0x%07x(state:%d) request:%d\n",
+                mw->border->client.win, mw->state, open);
+     }
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_msg_qp_state(Ecore_X_Event_Client_Message *ev)
+{
+   Ecore_X_Atom qp_state;
+   Ecore_X_Window zone_win;
+   E_Move *m = NULL;
+   E_Move_Win *qp = NULL;
+   int open, angle;
+   int sx, sy, ex, ey, w, h, rw, rh;
+
+   m = _e_mod_move_get();
+
+   E_CHECK_RETURN(m, 0);
+   E_CHECK_RETURN(m->quickpanel, 0);
+   qp = m->quickpanel;
+
+   zone_win = ev->win;
+   if (zone_win != ecore_x_e_illume_zone_get(qp->border->client.win))
+     return EINA_FALSE;
+
+   qp_state = ev->data.l[0];
+   if (qp_state == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) open = 0;
+   else open = 1;
+
+   angle = qp->event_handler.window_rotation_angle;
+   angle %= 360;
+   w = qp->window_geometry.w;
+   h = qp->window_geometry.h;
+   rw = m->man->w;
+   rh = m->man->h;
+
+   if ((open) && (qp->state == MOVE_OFF_STAGE))
+     {
+        Eina_Bool res, lock_on, mini_on;
+        int angles[2];
+        int cx, cy;
+        QuickPanel_Layout_Position lay;
+
+        lock_on = _e_mod_move_lock_screen_check(m);
+        mini_on = _e_mod_move_mini_controller_check(m);
+
+        res = _e_mod_move_win_get_prop_angle(qp->border->client.win,
+                                             &angles[0], &angles[1]);
+        if ((res) && (angles[0] != angle))
+          {
+             qp->event_handler.window_rotation_angle = angles[0];
+             angle = angles[0];
+             angle %= 360;
+          }
+
+        if ((lock_on) && (!mini_on)) return EINA_FALSE;
+
+        ex = ey = 0;
+
+        switch (angle)
+          {
+           case  90: sx = -(w); sy =    0; cx = -(w); cy =    0; lay = LAYOUT_POSITION_X; break;
+           case 180: sx =    0; sy =   rh; cx =    0; cy =   rh; lay = LAYOUT_POSITION_Y; break;
+           case 270: sx =   rw; sy =    0; cx =   rw; cy =    0; lay = LAYOUT_POSITION_X; break;
+           case   0:
+           default : sx =    0; sy = -(h); cx =    0; cy = -(h); lay = LAYOUT_POSITION_Y; break;
+          }
+
+        _e_mod_move_quickpanel_transients_find(m);
+        _e_mod_move_quickpanel_transients_move_lock(m, EINA_FALSE);
+        _e_mod_move_rotate_block_enable(m);
+        qp->state = MOVE_WORK;
+        _e_mod_move_tp_indi_touch_win_stack_update(m);
+        m->active_win.animatable = EINA_FALSE;
+        _e_mod_move_quickpanel_move(m, sx, sy, cx, cy, lay, EINA_FALSE);
+        _e_mod_move_app_tray_move(m, sx, sy, EINA_FALSE);
+        e_mod_move_active_win_state_update(m);
+        _e_mod_move_illume_quickpanel_state_on(m);
+        _e_mod_move_key_handler_enable(m);
+        qp->event_handler.mouse_clicked = EINA_FALSE;
+        _animator_move(qp, ex, ey, 0.5, EINA_TRUE);
+        qp->state = MOVE_ON_STAGE;
+        _e_mod_move_quickpanel_transients_release(m);
+
+     }
+   else if ((!open) && (qp->state == MOVE_ON_STAGE))
+     {
+        switch (angle)
+          {
+           case  90: ex = -(w); ey =    0; break;
+           case 180: ex =    0; ey =    h; break;
+           case 270: ex =    w; ey =    0; break;
+           case   0:
+           default : ex =    0; ey = -(h); break;
+          }
+
+        _animator_move(qp, ex, ey, 0.4, EINA_FALSE);
+        qp->state = MOVE_OFF_STAGE;
+        _e_mod_move_illume_quickpanel_state_off(m);
+        _e_mod_move_key_handler_disable(m);
+        qp->event_handler.mouse_clicked = EINA_FALSE;
+        _e_mod_move_quickpanel_transients_release(m);
+     }
+
+   return EINA_TRUE;
+}
+
+static E_Move_Event_State
+_tp_indi_cb_motion_check(E_Move_Event *ev,
+                         void         *data)
+{
+   E_Move *m = NULL;
+   E_Move_TP_Indi *tp_indi = (E_Move_TP_Indi *)data;
+   Eina_List *l, *ll;
+   E_Move_Event_Motion_Info *m0, *m1;
+   unsigned int cnt = 0;
+   E_Move_Event_State res = E_MOVE_EVENT_STATE_PASS;
+   int w, h, angle, min_len, min_cnt = 2;
+   E_Border *indi = NULL;
+
+   m = _e_mod_move_get();
+   if (!m || !ev || !tp_indi) goto finish;
+   indi = _e_mod_move_bd_find_by_indicator(m);
+   if (!indi) goto finish;
+
+   res = e_mod_move_event_state_get(ev);
+   angle = e_mod_move_event_angle_get(ev);
+
+   l = e_mod_move_event_ev_queue_get(ev);
+   if (!l) goto finish;
+
+   cnt = eina_list_count(l);
+   if (cnt < min_cnt) goto finish;
+
+   m0 = eina_list_data_get(l);
+   if (!m0) goto finish;
+
+   ll = eina_list_last(l);
+   if (!ll) goto finish;
+
+   m1 = eina_list_data_get(ll);
+   if (!m1) goto finish;
+
+   if ((m1->cb_type == EVAS_CALLBACK_MOUSE_UP) &&
+       (res == E_MOVE_EVENT_STATE_CHECK))
+     {
+        return E_MOVE_EVENT_STATE_PASS;
+     }
+
+   w = abs(m1->coord.x - m0->coord.x);
+   h = abs(m1->coord.y - m0->coord.y);
+   min_len = (indi->w > indi->h) ? (indi->h * 2) : (indi->w * 2);
+
+   if ((w < min_len) && (h < min_len))
+     {
+        goto finish;
+     }
+
+   switch (angle)
+     {
+      case  90:
+      case 270:
+        if (w < h) res = E_MOVE_EVENT_STATE_PASS;
+        else res = E_MOVE_EVENT_STATE_HOLD;
+        break;
+      case 180:
+      case   0:
+      default :
+        if (w > h) res = E_MOVE_EVENT_STATE_PASS;
+        else res = E_MOVE_EVENT_STATE_HOLD;
+        break;
+     }
+
+finish:
+   return res;
+}
+
+static Eina_Bool
+_tp_indi_cb_motion_start(void *data,
+                         void *event_info)
+{
+   E_Move_TP_Indi *tp_indi = (E_Move_TP_Indi *)data;
+   E_Move_Event_Motion_Info *info;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+
+   if(!tp_indi || !info) return EINA_FALSE;
+
+   tp_indi->mouse_clicked = EINA_TRUE;
+   return EINA_TRUE;
+}
+
+
+static Eina_Bool
+_tp_indi_cb_motion_move(void *data,
+                        void *event_info)
+{
+   E_Move_TP_Indi *tp_indi = (E_Move_TP_Indi *)data;
+   E_Move_Event_Motion_Info *info;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+   if(!tp_indi || !info) return EINA_FALSE;
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_tp_indi_cb_motion_end(void *data,
+                       void *event_info)
+{
+   E_Move_TP_Indi *tp_indi = (E_Move_TP_Indi *)data;
+   E_Move_Event_Motion_Info *info;
+   E_Border *indi = NULL;
+   E_Move *m = NULL;
+   int angle;
+   int d0, d1;
+
+   m = _e_mod_move_get();
+   info  = (E_Move_Event_Motion_Info *)event_info;
+   if(!m || !tp_indi || !info) return EINA_FALSE;
+
+   indi = _e_mod_move_bd_find_by_indicator(m);
+   if (!indi) return EINA_FALSE;
+
+   if (!tp_indi->mouse_clicked)
+     {
+        goto finish;
+     }
+   angle = e_mod_move_event_angle_get(tp_indi->event);
+   d0 = d1 = 0;
+   switch (angle)
+     {
+      case  90:
+        d0 = info->coord.x;
+        d1 = indi->w/2;
+        break;
+      case 180:
+        d0 = m->man->h - (indi->h/2);
+        d1 = info->coord.y;
+        break;
+      case 270:
+        d0 =  m->man->w - (indi->w/2);
+        d1 = info->coord.x;
+        break;
+      case   0:
+      default :
+        d0 = info->coord.y;
+        d1 = indi->h/2;
+        break;
+     }
+
+   if (d0 > d1)
+     {
+        e_border_show(indi);
+        _e_mod_move_tp_indi_touch_win_show(m);
+     }
+
+finish:
+   tp_indi->mouse_clicked = EINA_FALSE;
+   return EINA_TRUE;
+}
+
+static int
+_e_mod_move_prop_indicator_state_get(Ecore_X_Window win)
+{
+   Ecore_X_Illume_Indicator_State state;
+   int show;
+
+   state = ecore_x_e_illume_indicator_state_get(win);
+   if (state == ECORE_X_ILLUME_INDICATOR_STATE_ON)
+     show = 1;
+   else if (state == ECORE_X_ILLUME_INDICATOR_STATE_OFF)
+     show = 0;
+   else
+     show = -1;
+
+   return show;
+}
+
+static Eina_Bool
+_e_mod_move_tp_indi_show(E_Move *m, E_Border *target)
+{
+   E_Border *indi;
+   Evas_Object *indi_obj = NULL;
+   Evas_Object *obj = NULL;
+   E_Move_TP_Indi *tp_indi = NULL;
+   E_CHECK_RETURN(m, 0);
+   E_CHECK_RETURN(target, 0);
+   if (m->tp_indi) return EINA_FALSE;
+   tp_indi = calloc(1, sizeof(E_Move_TP_Indi));
+   if (!tp_indi) return EINA_FALSE;
+   indi = _e_mod_move_bd_find_by_indicator(m);
+   E_CHECK_RETURN(indi, 0);
+   indi_obj = _e_mod_move_comp_window_object_get(m->man, indi);
+   E_CHECK_RETURN(indi_obj, 0);
+   obj = evas_object_rectangle_add(e_move_comp_evas);
+   //evas_object_color_set(obj, 255,255,255,128); // white
+   evas_object_color_set(obj, 0,0,0,0); // transparent
+   evas_object_move(obj, indi->x, indi->y);
+   evas_object_resize(obj, indi->w, indi->h);
+   evas_object_show(obj);
+   evas_object_stack_below(obj, indi_obj);
+   tp_indi->obj = obj;
+   tp_indi->input_shape.x = indi->x;
+   tp_indi->input_shape.y = indi->y;
+   tp_indi->input_shape.w = indi->w;
+   tp_indi->input_shape.h = indi->h;
+
+   tp_indi->target_bd = target;
+   _e_mod_move_comp_window_input_region_set(m->man, target,
+                                            tp_indi->input_shape.x,
+                                            tp_indi->input_shape.y,
+                                            tp_indi->input_shape.w,
+                                            tp_indi->input_shape.h);
+
+   tp_indi->event = e_mod_move_event_new(target->client.win, obj);
+   e_mod_move_event_angle_cb_set(tp_indi->event, _e_mod_move_win_get_prop_angle);
+   e_mod_move_event_check_cb_set(tp_indi->event, _tp_indi_cb_motion_check, tp_indi);
+   e_mod_move_event_cb_set(tp_indi->event, E_MOVE_EVENT_TYPE_MOTION_START,
+                           _tp_indi_cb_motion_start, tp_indi);
+   e_mod_move_event_cb_set(tp_indi->event, E_MOVE_EVENT_TYPE_MOTION_MOVE,
+                           _tp_indi_cb_motion_move, tp_indi);
+   e_mod_move_event_cb_set(tp_indi->event, E_MOVE_EVENT_TYPE_MOTION_END,
+                           _tp_indi_cb_motion_end, tp_indi);
+
+   m->tp_indi = tp_indi;
+}
+
+static Eina_Bool
+_e_mod_move_tp_indi_hide(E_Move *m)
+{
+   E_CHECK_RETURN(m, 0);
+   E_CHECK_RETURN(m->tp_indi, 0);
+
+   e_mod_move_event_free(m->tp_indi->event);
+   evas_object_del(m->tp_indi->obj);
+
+   _e_mod_move_comp_window_input_region_set(m->man, m->tp_indi->target_bd,
+                                            0, 0, 0, 0);
+   _e_mod_move_tp_indi_touch_win_hide(m);
+   free(m->tp_indi);
+   m->tp_indi = NULL;
+}
+
+static Eina_Bool
+e_mod_move_active_win_state_update(E_Move *m)
+{
+   E_Border *bd = NULL;
+   E_CHECK_RETURN(m, 0);
+
+   m->active_win.bd = NULL;
+   m->active_win.obj = NULL;
+   m->active_win.animatable = EINA_FALSE;
+
+   ecore_x_window_prop_window_get(m->man->root, ECORE_X_ATOM_NET_ACTIVE_WINDOW, &(m->active_win.win), 1);
+   m->active_win.bd = e_border_find_all_by_client_window(m->active_win.win);
+   E_CHECK_RETURN(m->active_win.bd, 0);
+
+   bd = m->active_win.bd;
+   m->active_win.obj = _e_mod_move_comp_window_object_get(m->man, bd); ;
+   E_CHECK_RETURN(m->active_win.obj, 0);
+   _e_mod_move_comp_window_move_lock(m->man,bd);
+   if ( (bd->x == 0) && (bd->y == 0) && (bd->w == m->man->w) && (bd->h == m->man->h))
+     m->active_win.animatable = EINA_TRUE;
+   return EINA_TRUE;
+}
+
+static void
+_e_mod_move_tp_indi_touch_win_show(E_Move *m)
+{
+   E_Border *indi;
+   E_Move_TP_Indi *tp_indi = NULL;
+   E_CHECK(m);
+   E_CHECK(m->tp_indi);
+   tp_indi = m->tp_indi;
+   E_CHECK(!tp_indi->touch.visible);
+   tp_indi->touch.visible = EINA_TRUE;
+   tp_indi->touch.ev_up = e_mod_move_tp_indi_touch_win_mouse_up_callback;
+   tp_indi->touch.win = ecore_x_window_input_new(0, 0, 0,
+                                                 m->man->w,
+                                                 m->man->h);
+   ecore_x_icccm_title_set(tp_indi->touch.win, "E MOVE TP_INDI_TOUCH");
+   ecore_x_window_show(tp_indi->touch.win);
+   tp_indi->touch.ev_up_handler =  ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, tp_indi->touch.ev_up, tp_indi);
+   indi = _e_mod_move_bd_find_by_indicator(m);
+   ecore_x_window_configure(tp_indi->touch.win,
+                            ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                            ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                            0, 0,
+                            m->man->w, m->man->h, 0,
+                            indi->win, ECORE_X_WINDOW_STACK_BELOW);
+   tp_indi->touch.obj = evas_object_rectangle_add(e_move_comp_evas);
+   evas_object_color_set(tp_indi->touch.obj, 0,0,0,MAX_OPACITY);
+   evas_object_move(tp_indi->touch.obj, 0, 0);
+   evas_object_resize(tp_indi->touch.obj, m->man->w, m->man->h);
+   evas_object_show(tp_indi->touch.obj);
+   evas_object_stack_below(tp_indi->touch.obj, tp_indi->obj);
+}
+
+static void
+_e_mod_move_tp_indi_touch_win_hide(E_Move *m)
+{
+   E_Move_TP_Indi *tp_indi = NULL;
+   E_CHECK(m);
+   E_CHECK(m->tp_indi);
+   tp_indi = m->tp_indi;
+   E_CHECK(tp_indi->touch.visible);
+   evas_object_hide(tp_indi->touch.obj);
+   evas_object_del(tp_indi->touch.obj);
+   tp_indi->touch.obj = NULL;
+   if (tp_indi->touch.ev_up_handler)
+     {
+        ecore_event_handler_del(tp_indi->touch.ev_up_handler);
+        tp_indi->touch.ev_up_handler = NULL;
+     }
+   ecore_x_window_hide(tp_indi->touch.win);
+   ecore_x_window_free(tp_indi->touch.win);
+   tp_indi->touch.visible = EINA_FALSE;
+}
+
+static void
+_e_mod_move_tp_indi_touch_win_stack_update(E_Move *m)
+{
+   E_Move_TP_Indi *tp_indi = NULL;
+   E_CHECK(m);
+   E_CHECK(m->tp_indi);
+   tp_indi = m->tp_indi;
+   E_CHECK(tp_indi->touch.visible);
+   E_CHECK(tp_indi->touch.obj);
+   E_CHECK(tp_indi->touch.win);
+
+   if (m->quickpanel)
+     if (m->quickpanel->state == MOVE_WORK)
+       {
+          evas_object_stack_below(tp_indi->touch.obj, m->quickpanel->move_object);
+          ecore_x_window_configure(tp_indi->touch.win,
+                                   ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                                   ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                                   0, 0,
+                                   m->man->w, m->man->h, 0,
+                                   m->quickpanel->border->win, ECORE_X_WINDOW_STACK_BELOW);
+       }
+   if (m->app_tray)
+     if (m->app_tray->state == MOVE_WORK)
+       {
+          ecore_x_window_configure(tp_indi->touch.win,
+                                   ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                                   ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                                   0, 0,
+                                   m->man->w, m->man->h, 0,
+                                   m->app_tray->border->win, ECORE_X_WINDOW_STACK_BELOW);
+       }
+}
+
+static Eina_Bool
+e_mod_move_tp_indi_touch_win_mouse_up_callback(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Event_Mouse_Button *ev;
+   E_Move_TP_Indi *tp_indi = NULL;
+   E_Border *indi;
+   ev = event;
+   E_Move *m = NULL;
+
+   if (!(tp_indi = data)) return ECORE_CALLBACK_PASS_ON;
+   if (ev->event_window != tp_indi->touch.win) return ECORE_CALLBACK_PASS_ON;
+   if (!(m=_e_mod_move_get())) return ECORE_CALLBACK_PASS_ON;
+
+   indi = _e_mod_move_bd_find_by_indicator(m);
+   if (indi) e_border_hide(indi,2);
+   else _e_mod_move_tp_indi_touch_win_hide(m);
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_mod_move_prop_indicator_state_change(Ecore_X_Event_Window_Property *ev)
+{
+   E_Move *m = NULL;
+   Ecore_X_Window active_win;
+   E_Border *target = NULL;
+   int indicator_state = -1;
+
+   if (!(m=_e_mod_move_get())) return EINA_FALSE;
+   if (!ecore_x_window_prop_window_get(m->man->root, ECORE_X_ATOM_NET_ACTIVE_WINDOW, &active_win, 1)) return EINA_FALSE;\
+
+   if (ev->win != active_win) return EINA_FALSE;
+
+   if (_e_mod_move_prop_indicator_state_get(active_win) == 0)
+     {
+        target = e_border_find_all_by_client_window(active_win);
+        if (target)
+          {
+            if ((target->x == 0) && (target->y == 0)
+                 && (target->w == m->man->w) && (target->h == m->man->h))
+                 _e_mod_move_tp_indi_show(m, target);
+          }
+     }
+   else
+     _e_mod_move_tp_indi_hide(m);
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_mod_move_quickpanel_transients_move_lock(E_Move *m, Eina_Bool move_offscreen)
+{
+   E_Move_Win *find_mw = NULL;
+   Eina_List *l = NULL;
+
+   if (!m) return EINA_FALSE;
+
+   if (!m->quickpanel) return EINA_FALSE;
+
+   if (m->quickpanel_child.quickpanel_transients)
+     {
+        EINA_LIST_FOREACH(m->quickpanel_child.quickpanel_transients, l, find_mw)
+          {
+             if (find_mw)
+               {
+                  if (move_offscreen) e_border_move(find_mw->border, -15000, -15000);
+                  find_mw->move_lock = EINA_TRUE;
+                  _e_mod_move_comp_window_move_lock(m->man, find_mw->border);
+               }
+          }
+     }
+   else
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+void
+_e_mod_move_rotation_lock(E_Move *m)
+{
+   unsigned int val = 1;
+   if (!m) return;
+   if (m->rotation_lock) return;
+   ecore_x_window_prop_card32_set(m->man->root, ATOM_ROTATION_LOCK, &val, 1);
+   m->rotation_lock = EINA_TRUE;
+}
+
+void
+_e_mod_move_rotation_unlock(E_Move *m)
+{
+   unsigned int val = 0;
+   if (!m) return;
+   if (!m->rotation_lock) return;
+   ecore_x_window_prop_card32_set(m->man->root, ATOM_ROTATION_LOCK, &val, 1);
+   m->rotation_lock = EINA_FALSE;
+}
+
+void
+e_mod_move_win_quickpanel_mini_del_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get(obj, "move");
+   if (mw == NULL) return;
+   _e_mod_move_quickpanel_transients_remove(mw);
+}
+
+void
+e_mod_move_win_del_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Move_Win *mw = NULL;
+   mw = evas_object_data_get(obj, "move");
+   if (mw == NULL) return;
+}
+
+static Eina_Bool
+_e_mod_move_quickpanel_transients_remove(E_Move_Win *mw)
+{
+   Eina_List *qp_transients = NULL;
+   if (!mw) return EINA_FALSE;
+
+   if (mw->m->quickpanel)
+     {
+        qp_transients = mw->m->quickpanel_child.quickpanel_transients;
+        if (qp_transients)
+          {
+             mw->m->quickpanel_child.quickpanel_transients = eina_list_remove(qp_transients, mw);
+          }
+        else
+          return EINA_FALSE;
+     }
+   else
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
diff --git a/move-slp/src/e_mod_move.h b/move-slp/src/e_mod_move.h
new file mode 100644 (file)
index 0000000..ade281c
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef E_MOD_MOVE_H\r
+#define E_MOD_MOVE_H\r
+\r
+Eina_Bool e_mod_move_init(void);\r
+void e_mod_move_shutdown(void);\r
+\r
+#endif // E_MOD_MOVE_H\r
+\r
diff --git a/move-slp/src/e_mod_move_event.c b/move-slp/src/e_mod_move_event.c
new file mode 100644 (file)
index 0000000..8448711
--- /dev/null
@@ -0,0 +1,522 @@
+#include "e.h"
+#include "e_mod_move_event.h"
+
+struct _E_Move_Event
+{
+   E_Move_Event_State       state;
+   Evas_Object             *obj;
+   Eina_List               *queue;
+
+   struct {
+     Ecore_X_Window         id;
+     int                    angle;
+     E_Move_Event_Angle_Cb  fn_angle_get;
+   } win;
+
+   struct {
+     E_Move_Event_Cb        cb;
+     void                  *data;
+   } fn[E_MOVE_EVENT_TYPE_LAST];
+
+   struct {
+     E_Move_Event_Check_Cb  cb;
+     void                  *data;
+   } ev_check;
+};
+
+/* local subsystem functions */
+static E_Move_Event_Motion_Info *_motion_info_new(void *event_info, Evas_Callback_Type type);
+static void                      _motion_info_free(E_Move_Event_Motion_Info *motion);
+static void                      _ev_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void                      _ev_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void                      _ev_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static Eina_Bool                 _ev_cb_call(E_Move_Event *ev, E_Move_Event_Motion_Info *motion);
+static void                      _event_pass(Ecore_X_Window id, Evas_Object *obj, void *event_info, Evas_Callback_Type type);
+
+/* externally accessible functions */
+EINTERN E_Move_Event *
+e_mod_move_event_new(Ecore_X_Window  win,
+                     Evas_Object    *obj)
+{
+   E_Move_Event *ev;
+   if (!win || !obj) return NULL;
+
+   ev = E_NEW(E_Move_Event, 1);
+   if (!ev) return NULL;
+
+   ev->obj = obj;
+   ev->win.id = win;
+
+   evas_object_event_callback_add
+     (obj, EVAS_CALLBACK_MOUSE_DOWN, _ev_cb_mouse_down, ev);
+   if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE)
+     {
+        fprintf(stderr,
+                "[E17-MOVE-ERR] %20.20s(%04d) Callback registering failed! "
+                "w:0x%07x obj:%p EVAS_CALLBACK_MOUSE_DOWN\n",
+                __func__, __LINE__, win, obj);
+        E_FREE(ev);
+        return NULL;
+     }
+
+   evas_object_event_callback_add
+     (obj, EVAS_CALLBACK_MOUSE_MOVE, _ev_cb_mouse_move, ev);
+   if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE)
+     {
+        evas_object_event_callback_del
+          (obj, EVAS_CALLBACK_MOUSE_DOWN, _ev_cb_mouse_down);
+        fprintf(stderr,
+                "[E17-MOVE-ERR] %20.20s(%04d) Callback registering failed! "
+                "w:0x%07x obj:%p EVAS_CALLBACK_MOUSE_MOVE\n",
+                __func__, __LINE__, win, obj);
+        E_FREE(ev);
+        return NULL;
+     }
+
+   evas_object_event_callback_add
+     (obj, EVAS_CALLBACK_MOUSE_UP, _ev_cb_mouse_up, ev);
+   if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE)
+     {
+        evas_object_event_callback_del
+          (obj, EVAS_CALLBACK_MOUSE_DOWN, _ev_cb_mouse_down);
+        evas_object_event_callback_del
+          (obj, EVAS_CALLBACK_MOUSE_MOVE, _ev_cb_mouse_move);
+        fprintf(stderr,
+                "[E17-MOVE-ERR] %20.20s(%04d) Callback registering failed! "
+                "w:0x%07x obj:%p EVAS_CALLBACK_MOUSE_UP\n",
+                __func__, __LINE__, win, obj);
+        E_FREE(ev);
+        return NULL;
+     }
+
+   return ev;
+}
+
+EINTERN void
+e_mod_move_event_free(E_Move_Event *ev)
+{
+   int i;
+   if (!ev) return;
+
+   e_mod_move_event_data_clear(ev);
+
+   if (ev->obj)
+     {
+        evas_object_event_callback_del
+          (ev->obj, EVAS_CALLBACK_MOUSE_DOWN,
+          _ev_cb_mouse_down);
+
+        evas_object_event_callback_del
+          (ev->obj, EVAS_CALLBACK_MOUSE_MOVE,
+          _ev_cb_mouse_move);
+
+        evas_object_event_callback_del
+          (ev->obj, EVAS_CALLBACK_MOUSE_UP,
+          _ev_cb_mouse_up);
+     }
+
+   for (i = 0; i < E_MOVE_EVENT_TYPE_LAST; i++)
+     {
+        ev->fn[i].cb = NULL;
+        ev->fn[i].data = NULL;
+     }
+
+   ev->state = E_MOVE_EVENT_STATE_UNKOWN;
+   ev->win.id = 0;
+   ev->win.angle = 0;
+   ev->win.fn_angle_get = NULL;
+   ev->ev_check.cb = NULL;
+   ev->ev_check.data = NULL;
+   ev->obj = NULL;
+
+   E_FREE(ev);
+}
+
+EINTERN Eina_Bool
+e_mod_move_event_cb_set(E_Move_Event      *ev,
+                        E_Move_Event_Type  type,
+                        E_Move_Event_Cb    cb,
+                        void              *data)
+{
+   if (!ev) return EINA_FALSE;
+   ev->fn[type].cb = cb;
+   ev->fn[type].data = data;
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_event_angle_cb_set(E_Move_Event          *ev,
+                              E_Move_Event_Angle_Cb  cb)
+{
+   if (!ev) return EINA_FALSE;
+   ev->win.fn_angle_get = cb;
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_event_check_cb_set(E_Move_Event          *ev,
+                              E_Move_Event_Check_Cb  cb,
+                              void                  *data)
+{
+   if (!ev) return EINA_FALSE;
+   ev->ev_check.cb = cb;
+   ev->ev_check.data = data;
+   return EINA_TRUE;
+}
+
+EINTERN Eina_List *
+e_mod_move_event_ev_queue_get(E_Move_Event *ev)
+{
+   if (!ev) return NULL;
+   return ev->queue;
+}
+
+EINTERN E_Move_Event_State
+e_mod_move_event_state_get(E_Move_Event *ev)
+{
+   if (!ev) return E_MOVE_EVENT_STATE_PASS;
+   return ev->state;
+}
+
+EINTERN Eina_Bool
+e_mod_move_event_angle_set(E_Move_Event *ev,
+                           int           angle)
+{
+   if (!ev) return EINA_FALSE;
+   ev->win.angle = ((angle % 360) / 90) * 90;
+   return EINA_TRUE;
+}
+
+EINTERN int
+e_mod_move_event_angle_get(E_Move_Event *ev)
+{
+   if (!ev) return 0;
+   return ev->win.angle;
+}
+
+EINTERN Eina_Bool
+e_mod_move_event_data_clear(E_Move_Event *ev)
+{
+   if (!ev) return EINA_FALSE;
+   if (!ev->queue) return EINA_TRUE;
+
+   E_Move_Event_Motion_Info *info;
+   EINA_LIST_FREE(ev->queue, info)
+     {
+        if (!info) continue;
+        if (ev->state == E_MOVE_EVENT_STATE_PASS)
+          {
+             _event_pass(ev->win.id,
+                         ev->obj,
+                         info->event_info,
+                         info->cb_type);
+          }
+        else if (ev->state == E_MOVE_EVENT_STATE_HOLD)
+          {
+             _ev_cb_call(ev, info);
+          }
+        _motion_info_free(info);
+     }
+
+   ev->queue = NULL;
+   return EINA_TRUE;
+}
+
+/* local subsystem functions */
+#ifdef _EV_COPY
+# undef _EV_COPY
+#endif
+
+#define _EV_COPY(d, t, e)      \
+   {                           \
+      d = (void *)E_NEW(t, 1); \
+      if (!d) {                \
+        E_FREE(motion);        \
+        return NULL;           \
+      }                        \
+      memcpy(d, e, sizeof(t)); \
+   }
+
+static E_Move_Event_Motion_Info *
+_motion_info_new(void               *event_info,
+                 Evas_Callback_Type  type)
+{
+   E_Move_Event_Motion_Info *motion = NULL;
+   void                     *data    = NULL;
+   Evas_Event_Mouse_Down    *down = NULL;
+   Evas_Event_Mouse_Up      *up   = NULL;
+   Evas_Event_Mouse_Move    *move = NULL;
+
+   motion = E_NEW(E_Move_Event_Motion_Info, 1);
+   if (!motion) return NULL;
+
+   motion->cb_type = type;
+
+   switch (type)
+     {
+      case EVAS_CALLBACK_MOUSE_DOWN:
+        _EV_COPY(data, Evas_Event_Mouse_Down, event_info);
+        down = data;
+        motion->coord.x = down->output.x;
+        motion->coord.y = down->output.y;
+        motion->ev_type = E_MOVE_EVENT_TYPE_MOTION_START;
+        break;
+
+      case EVAS_CALLBACK_MOUSE_UP:
+        _EV_COPY(data, Evas_Event_Mouse_Up, event_info);
+        up = data;
+        motion->coord.x = up->output.x;
+        motion->coord.y = up->output.y;
+        motion->ev_type = E_MOVE_EVENT_TYPE_MOTION_END;
+        break;
+
+      case EVAS_CALLBACK_MOUSE_MOVE:
+        _EV_COPY(data, Evas_Event_Mouse_Move, event_info);
+        move = data;
+        motion->coord.x = move->cur.output.x;
+        motion->coord.y = move->cur.output.y;
+        motion->ev_type = E_MOVE_EVENT_TYPE_MOTION_MOVE;
+        break;
+
+      default:
+        break;
+     }
+
+   if (!data)
+     {
+        E_FREE(motion);
+        motion = NULL;
+     }
+   else
+     motion->event_info = data;
+
+   return motion;
+}
+
+static void
+_motion_info_free(E_Move_Event_Motion_Info *motion)
+{
+   if (!motion) return;
+   if (motion->event_info) E_FREE(motion->event_info);
+   E_FREE(motion);
+}
+
+static void
+_ev_cb_mouse_down(void             *data,
+                  Evas *e           __UNUSED__,
+                  Evas_Object *obj  __UNUSED__,
+                  void             *event_info)
+{
+   E_Move_Event *ev;
+   E_Move_Event_Motion_Info *motion;
+
+   ev = (E_Move_Event *)data;
+   if (!event_info || !ev) return;
+
+   e_mod_move_event_data_clear(ev);
+   ev->state = E_MOVE_EVENT_STATE_CHECK;
+
+   motion = _motion_info_new(event_info,
+                             EVAS_CALLBACK_MOUSE_DOWN);
+   if (!motion) goto event_pass;
+
+   if (ev->win.fn_angle_get)
+     {
+        Eina_Bool res;
+        int angles[2];
+        res = ev->win.fn_angle_get(ev->win.id,
+                                   &angles[0],
+                                   &angles[1]);
+        if (res)
+          e_mod_move_event_angle_set(ev, angles[0]);
+     }
+
+   if (!ev->ev_check.cb)
+     {
+        ev->state = E_MOVE_EVENT_STATE_HOLD;
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+     }
+
+   if (motion)
+     ev->queue = eina_list_append(ev->queue, motion);
+
+   return;
+
+event_pass:
+   ev->state = E_MOVE_EVENT_STATE_PASS;
+   _event_pass(ev->win.id,
+               ev->obj,
+               event_info,
+               EVAS_CALLBACK_MOUSE_DOWN);
+}
+
+static void
+_ev_cb_mouse_move(void             *data,
+                  Evas *e           __UNUSED__,
+                  Evas_Object *obj  __UNUSED__,
+                  void             *event_info)
+{
+   E_Move_Event *ev;
+   E_Move_Event_Motion_Info *motion = NULL;
+
+   ev = (E_Move_Event *)data;
+   if (!event_info || !ev) return;
+
+   switch (ev->state)
+     {
+      case E_MOVE_EVENT_STATE_CHECK:
+        if (!ev->ev_check.cb) goto event_pass;
+        motion = _motion_info_new(event_info,
+                                  EVAS_CALLBACK_MOUSE_MOVE);
+        if (!motion) goto event_pass;
+
+        ev->queue = eina_list_append(ev->queue, motion);
+        ev->state = ev->ev_check.cb(ev, ev->ev_check.data);
+        if ((ev->state == E_MOVE_EVENT_STATE_PASS) ||
+            (ev->state == E_MOVE_EVENT_STATE_HOLD))
+          {
+             e_mod_move_event_data_clear(ev);
+          }
+        break;
+
+      case E_MOVE_EVENT_STATE_HOLD:
+        motion = _motion_info_new(event_info,
+                                  EVAS_CALLBACK_MOUSE_MOVE);
+        if (!motion) return;
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+        break;
+
+      case E_MOVE_EVENT_STATE_PASS:
+      default:
+        _event_pass(ev->win.id,
+                    ev->obj,
+                    event_info,
+                    EVAS_CALLBACK_MOUSE_MOVE);
+        break;
+     }
+
+   return;
+
+event_pass:
+   ev->state = E_MOVE_EVENT_STATE_PASS;
+   e_mod_move_event_data_clear(ev);
+   _event_pass(ev->win.id,
+               ev->obj,
+               event_info,
+               EVAS_CALLBACK_MOUSE_MOVE);
+}
+
+static void
+_ev_cb_mouse_up(void             *data,
+                Evas *e           __UNUSED__,
+                Evas_Object *obj  __UNUSED__,
+                void             *event_info)
+{
+   E_Move_Event *ev;
+   E_Move_Event_Motion_Info *motion = NULL;
+
+   ev = (E_Move_Event *)data;
+   if (!event_info || !ev) return;
+
+   switch (ev->state)
+     {
+      case E_MOVE_EVENT_STATE_CHECK:
+        ev->state = E_MOVE_EVENT_STATE_PASS;
+        e_mod_move_event_data_clear(ev);
+        _event_pass(ev->win.id,
+                    ev->obj,
+                    event_info,
+                    EVAS_CALLBACK_MOUSE_UP);
+        break;
+
+      case E_MOVE_EVENT_STATE_HOLD:
+        motion = _motion_info_new(event_info,
+                                  EVAS_CALLBACK_MOUSE_UP);
+        if (!motion) return;
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+        break;
+
+      case E_MOVE_EVENT_STATE_PASS:
+      default:
+        _event_pass(ev->win.id,
+                    ev->obj,
+                    event_info,
+                    EVAS_CALLBACK_MOUSE_UP);
+        break;
+     }
+
+   ev->state = E_MOVE_EVENT_STATE_UNKOWN;
+}
+
+static Eina_Bool
+_ev_cb_call(E_Move_Event             *ev,
+            E_Move_Event_Motion_Info *motion)
+{
+   E_Move_Event_Type type = motion->ev_type;
+
+   if (!ev->fn[type].cb)
+     return EINA_FALSE;
+
+   return ev->fn[type].cb(ev->fn[type].data,
+                          motion);
+}
+
+static void
+_event_pass(Ecore_X_Window      id,
+            Evas_Object        *obj,
+            void               *event_info,
+            Evas_Callback_Type  type)
+{
+   Evas_Event_Mouse_Down *down = NULL;
+   Evas_Event_Mouse_Up   *up   = NULL;
+   Evas_Event_Mouse_Move *move = NULL;
+   Evas_Coord x = 0, y =0, w, h;
+   E_Border *bd = NULL;
+
+   if (!id || !event_info) return;
+
+   bd = e_border_find_all_by_client_window(id);
+   if (bd)
+     {
+        x = bd->x;
+        y = bd->y;
+        w = bd->w;
+        h = bd->h;
+     }
+   else ecore_x_window_geometry_get(id, &x, &y, &w, &h);
+
+   switch (type)
+     {
+      case EVAS_CALLBACK_MOUSE_DOWN:
+        down = event_info;
+        ecore_x_mouse_down_send(id,
+                                down->canvas.x -x,
+                                down->canvas.y -y,
+                                down->button);
+        break;
+
+      case EVAS_CALLBACK_MOUSE_UP:
+        up = event_info;
+        ecore_x_mouse_up_send(id,
+                              up->canvas.x -x,
+                              up->canvas.y -y,
+                              up->button);
+        break;
+
+      case EVAS_CALLBACK_MOUSE_MOVE:
+        move = event_info;
+        ecore_x_mouse_move_send(id,
+                                move->cur.output.x -x,
+                                move->cur.output.y -y);
+        break;
+
+      default:
+        break;
+     }
+}
diff --git a/move-slp/src/e_mod_move_event.h b/move-slp/src/e_mod_move_event.h
new file mode 100644 (file)
index 0000000..f8db356
--- /dev/null
@@ -0,0 +1,54 @@
+#ifdef E_TYPEDEFS
+#else
+#ifndef E_MOD_MOVE_EVENT_H
+#define E_MOD_MOVE_EVENT_H
+
+typedef struct _E_Move_Event             E_Move_Event;
+typedef struct _E_Move_Event_Motion_Info E_Move_Event_Motion_Info;
+
+typedef enum   _E_Move_Event_Type        E_Move_Event_Type;
+typedef enum   _E_Move_Event_State       E_Move_Event_State;
+
+typedef Eina_Bool          (*E_Move_Event_Cb)       (void *, void *);
+typedef Eina_Bool          (*E_Move_Event_Angle_Cb) (Ecore_X_Window, int *, int *);
+typedef E_Move_Event_State (*E_Move_Event_Check_Cb) (E_Move_Event *, void *);
+
+enum _E_Move_Event_Type
+{
+   E_MOVE_EVENT_TYPE_FIRST = 0,
+   E_MOVE_EVENT_TYPE_MOTION_START,
+   E_MOVE_EVENT_TYPE_MOTION_MOVE,
+   E_MOVE_EVENT_TYPE_MOTION_END,
+   E_MOVE_EVENT_TYPE_LAST
+};
+
+enum _E_Move_Event_State
+{
+   E_MOVE_EVENT_STATE_UNKOWN = 0,
+   E_MOVE_EVENT_STATE_CHECK,
+   E_MOVE_EVENT_STATE_PASS,
+   E_MOVE_EVENT_STATE_HOLD
+};
+
+struct _E_Move_Event_Motion_Info
+{
+   Evas_Callback_Type  cb_type;
+   E_Move_Event_Type   ev_type;
+   void               *event_info;
+   Evas_Point          coord;
+};
+
+/* event management functions */
+EINTERN E_Move_Event       *e_mod_move_event_new(Ecore_X_Window win, Evas_Object *obj);
+EINTERN void                e_mod_move_event_free(E_Move_Event *ev);
+EINTERN Eina_Bool           e_mod_move_event_cb_set(E_Move_Event *ev, E_Move_Event_Type type, E_Move_Event_Cb cb, void *data);
+EINTERN Eina_Bool           e_mod_move_event_angle_cb_set(E_Move_Event *ev, E_Move_Event_Angle_Cb cb);
+EINTERN Eina_Bool           e_mod_move_event_check_cb_set(E_Move_Event *ev, E_Move_Event_Check_Cb cb, void *data);
+EINTERN Eina_List          *e_mod_move_event_ev_queue_get(E_Move_Event *ev);
+EINTERN E_Move_Event_State  e_mod_move_event_state_get(E_Move_Event *ev);
+EINTERN Eina_Bool           e_mod_move_event_angle_set(E_Move_Event *ev, int angle);
+EINTERN int                 e_mod_move_event_angle_get(E_Move_Event *ev);
+EINTERN Eina_Bool           e_mod_move_event_data_clear(E_Move_Event *ev);
+
+#endif
+#endif
diff --git a/move-slp/src/e_mod_move_win_type.c b/move-slp/src/e_mod_move_win_type.c
new file mode 100644 (file)
index 0000000..2d9b00b
--- /dev/null
@@ -0,0 +1,90 @@
+#include "e.h"
+#include "e_mod_data.h"
+#include "e_mod_move_win_type.h"
+
+Eina_Bool _e_mod_move_is_app_tray_window(E_Border *bd);
+Eina_Bool _e_mod_move_is_indicator_window(E_Border *bd);
+Eina_Bool _e_mod_move_is_quickpanel_window(E_Border *bd);
+Eina_Bool _e_mod_move_is_quickpanel_minicontroller_window(E_Border *bd);
+
+E_Move_Win_Type
+e_mod_move_win_type_get(E_Border *bd)
+{
+   if (!bd) return WIN_NORMAL;
+   if (_e_mod_move_is_app_tray_window(bd)) return WIN_APP_TRAY;
+   else if (_e_mod_move_is_indicator_window(bd)) return WIN_INDICATOR;
+   else if (_e_mod_move_is_quickpanel_window(bd)) return WIN_QUICKPANEL_BASE;
+   else if (_e_mod_move_is_quickpanel_minicontroller_window(bd)) return WIN_QUICKPANEL_MINICONTROLLER;
+   else return WIN_NORMAL;
+}
+
+Eina_Bool
+_e_mod_move_is_app_tray_window(E_Border *bd)
+{
+   const char *name = NULL;
+   const char *clas = NULL;
+
+   if (!bd) return EINA_FALSE;
+
+   name = bd->client.icccm.name;
+   clas = bd->client.icccm.class;
+
+   if (clas == NULL) return EINA_FALSE;
+   if (strncmp(clas,"APP_TRAY",strlen("APP_TRAY"))!= 0) return EINA_FALSE;
+   if (name == NULL) return EINA_FALSE;
+   if (strncmp(name,"APP_TRAY",strlen("APP_TRAY"))!= 0) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+Eina_Bool
+_e_mod_move_is_indicator_window(E_Border *bd)
+{
+   const char *name = NULL;
+   const char *clas = NULL;
+
+   if (!bd) return EINA_FALSE;
+
+   name = bd->client.icccm.name;
+   clas = bd->client.icccm.class;
+
+   if (clas == NULL) return EINA_FALSE;
+   if (strncmp(clas,"INDICATOR",strlen("INDICATOR")) != 0) return EINA_FALSE;
+   if (name == NULL) return EINA_FALSE;
+   if (strncmp(name,"INDICATOR",strlen("INDICATOR")) != 0) return EINA_FALSE;
+   if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+Eina_Bool
+_e_mod_move_is_quickpanel_window(E_Border *bd)
+{
+   const char *name = NULL;
+   const char *clas = NULL;
+
+   if (!bd) return EINA_FALSE;
+
+   name = bd->client.icccm.name;
+   clas = bd->client.icccm.class;
+   if (clas == NULL) return EINA_FALSE;
+   if (strncmp(clas,"QUICKPANEL_BASE",strlen("QUICKPANEL_BASE")) != 0) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+Eina_Bool
+_e_mod_move_is_quickpanel_minicontroller_window(E_Border *bd)
+{
+   const char *name = NULL;
+   const char *clas = NULL;
+
+   if (!bd) return EINA_FALSE;
+
+   name = bd->client.icccm.name;
+   clas = bd->client.icccm.class;
+   if (clas == NULL) return EINA_FALSE;
+   if (strncmp(clas,"QUICKPANEL",strlen("QUICKPANEL")) != 0) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
diff --git a/move-slp/src/e_mod_move_win_type.h b/move-slp/src/e_mod_move_win_type.h
new file mode 100644 (file)
index 0000000..ecf2844
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef E_MOD_WIN_TYPE_H
+#define E_MOD_WIN_TYPE_H
+
+typedef enum _E_Move_Win_Type E_Move_Win_Type;
+
+enum _E_Move_Win_Type
+{
+   WIN_NORMAL,
+   WIN_QUICKPANEL_BASE,
+   WIN_QUICKPANEL_MINICONTROLLER,
+   WIN_INDICATOR,
+   WIN_APP_TRAY
+};
+
+E_Move_Win_Type e_mod_move_win_type_get(E_Border *bd);
+
+#endif // E_MOD_WIN_TYPE_H
index f749803..c8eec8b 100644 (file)
@@ -2,8 +2,8 @@ Name:       e17-extra-modules
 Summary:    The E17 Extra Modules The E17 extra modules consists of modules made by SAMSUNG
 Version:    0.2
 Release:    1
-Group:      TO_BE/FILLED_IN
-License:    TO BE FILLED IN
+Group:      System/GUI/Other                                                  
+License:    BSD                                                               
 Source0:    %{name}-%{version}.tar.gz
 BuildRequires:  pkgconfig(enlightenment)
 BuildRequires:  pkgconfig(utilX)
@@ -19,9 +19,8 @@ BuildRequires:  pkgconfig(evas)
 BuildRequires:  pkgconfig(xi)
 BuildRequires:  pkgconfig(xtst)
 BuildRequires:  pkgconfig(pixman-1)
-BuildRequires:  embryo-bin
-BuildRequires:  edje-bin
-Requires: libX11
+BuildRequires:  edje-tools
+Requires: libx11
 
 %description
 The E17 Extra Modules  The E17 extra modules consists of modules made by SAMSUNG.
@@ -32,8 +31,9 @@ The E17 Extra Modules  The E17 extra modules consists of modules made by SAMSUNG
 
 %build
 
-export CFLAGS+=" -Wall -g -fPIC -rdynamic -D_F_COMP_SCREEN_LOCK_ -D_F_FOCUS_WINDOW_IF_TOP_STACK_"
-export CXXFLAGS+=" -fPIC"
+%define DEF_SUBDIRS comp-slp illume2-slp keyrouter wmready
+
+export CFLAGS+=" -Wall -g -fPIC -rdynamic -D_F_ENABLE_MOUSE_POPUP"
 export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib"
 
 %ifarch %{arm}
@@ -41,7 +41,7 @@ export CFLAGS+=" -D_ENV_ARM"
 %endif
 
 
-for FILE in comp-slp illume2-slp keyrouter wmready
+for FILE in %{DEF_SUBDIRS}
 do 
         (cd $FILE && ./autogen.sh && ./configure --prefix=/usr && make )
 done
@@ -50,7 +50,7 @@ done
 %install
 rm -rf %{buildroot}
 
-for FILE in comp-slp illume2-slp keyrouter wmready
+for FILE in %{DEF_SUBDIRS}
 do 
         (cd $FILE && make install DESTDIR=%{buildroot} )
 done