Refine uuid checking in libc and libuuid
authorPeng Huang <shawn.p.huang@gmail.com>
Mon, 12 Apr 2010 08:19:38 +0000 (16:19 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Mon, 12 Apr 2010 08:19:38 +0000 (16:19 +0800)
configure.ac
src/Makefile.am
src/Util.h

index 1a0ac62..b0b41e8 100644 (file)
@@ -63,35 +63,29 @@ PKG_CHECK_MODULES(SQLITE, [
 AC_PATH_PROG(SQLITE3, sqlite3)
 
 # check uuid
-PKG_CHECK_MODULES(UUID, [
-    uuid
-],
-[
-    cat >>confdefs.h <<_ACEOF
-#define HAVE_UUID_UUID_H 1
-#define HAVE_UUID_GENERATE 1
-_ACEOF
-],
-[
-    uuid_revert_save_LIBS=$LIBS
-    AC_CHECK_HEADERS(uuid.h uuid/uuid.h sys/uuid.h)
-    AC_SEARCH_LIBS(uuid_create, uuid, [
-        if test "$ac_cv_search_uuid_create" != "none required"; then
-            UUID_LIBS=$ac_cv_search_uuid_create
-        fi
-        AC_CHECK_FUNCS(uuid_create)
-    ],
-    [
-        AC_SEARCH_LIBS(uuid_generate, uuid, [
-            if test "$ac_cv_search_uuid_generate" != "none required"; then
-                UUID_LIBS=$ac_cv_search_uuid_generate
-            fi
-            AC_CHECK_FUNCS(uuid_generate)
+AC_CHECK_FUNCS([uuid_create], [], [
+    PKG_CHECK_MODULES(LIBUUID, uuid, [
+        # uuid.pc exist
+        AC_DEFINE(HAVE_LIBUUID, 1, [Define if found libuuid])
+        HAVE_LIBUUID=yes
+    ], [
+        # uuid.pc does not exist
+        AC_CHECK_HEADERS(uuid/uuid.h, [
+            AC_CHECK_LIB(uuid, uuid_generate, [
+                LIBUUID_LIBS=-luuid
+                AC_DEFINE(HAVE_LIBUUID, 1, [Define if found libuuid])
+                HAVE_LIBUUID=yes
+            ], [
+                AC_MSG_ERROR([Can not find libuuid and uuid_create in libc!])
+            ])
+        ], [
+            AC_MSG_ERROR([Can not find libuuid and uuid_create in libc!])
         ])
     ])
-    LIBS=$uuid_revert_save_LIBS
 ])
 
+AM_CONDITIONAL(WITH_LIBUUID, test x"$HAVE_LIBUUID" = x"yes")
+
 # check sigc
 PKG_CHECK_MODULES(SIGC, [
     sigc++-2.0
index aadb95f..d7dc156 100644 (file)
@@ -102,7 +102,6 @@ ibus_engine_pinyin_SOURCES = \
 ibus_engine_pinyin_CXXFLAGS = \
        @IBUS_CFLAGS@ \
        @SQLITE_CFLAGS@ \
-       @UUID_CFLAGS@ \
        @SIGC_CFLAGS@ \
        -DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\" \
        -DPKGDATADIR=\"$(pkgdatadir)\" \
@@ -111,10 +110,14 @@ ibus_engine_pinyin_CXXFLAGS = \
 ibus_engine_pinyin_LDADD = \
        @IBUS_LIBS@ \
        @SQLITE_LIBS@ \
-       @UUID_LIBS@ \
        @SIGC_LIBS@ \
        $(NULL)
 
+if WITH_LIBUUID
+ibus_engine_pinyin_CXXFLAGS += $(LIBUUID_CFLAGS)
+ibus_engine_pinyin_LDADD += $(LIBUUID_LIBS)
+endif
+
 BUILT_SOURCES = \
        $(ibus_engine_built_c_sources) \
        $(ibus_engine_built_h_sources) \
index 8b0f848..7f70ebe 100644 (file)
@@ -2,16 +2,15 @@
 #define __PY_UTIL_H_
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"
+#  include "config.h"
 #endif
 
-#if defined(HAVE_UUID_H)
-#include <uuid.h>
-#elif defined(HAVE_UUID_UUID_H)
-#include <uuid/uuid.h>
-#elif defined(HAVE_SYS_UUID_H)
-#include <sys/uuid.h>
+#if defined(HAVE_UUID_CREATE)
+#  include <uuid.h>
+#elif defined(HAVE_LIBUUID)
+#  include <uuid/uuid.h>
 #endif
+
 #include <sys/utsname.h>
 #include <stdlib.h>
 #include "String.h"
@@ -28,7 +27,7 @@ public:
         uuid_to_string (&u, &uuid, 0);
         g_strlcpy (m_uuid, uuid, sizeof(m_uuid));
         free(uuid);
-#elif defined(HAVE_UUID_GENERATE)
+#elif defined(HAVE_LIBUUID)
         uuid_generate (u);
         uuid_unparse_lower (u, m_uuid);
 #endif