php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #75759
Patch config_func_check revision 2018-01-04 09:15 UTC by smillernl at me dot com

Patch config_func_check for uuid Bug #75759

Patch version 2018-01-04 09:15 UTC

Return to Bug #75759 | Download this patch
Patch Revisions:

Developer: smillernl@me.com

diff --git a/config.m4 b/config.m4
index f62d1a6..0aa2d53 100644
--- a/config.m4
+++ b/config.m4
@@ -22,15 +22,29 @@ if test "$PHP_UUID" != "no"; then
   PHP_CHECK_FUNC_LIB(uuid_type, uuid)
   PHP_CHECK_FUNC_LIB(uuid_variant, uuid)
 
+  PHP_CHECK_FUNC_LIB(uuid_time, uuid)
+  PHP_CHECK_FUNC_LIB(uuid_mac, uuid)
+
   export OLD_CPPFLAGS="$CPPFLAGS"
   export CPPFLAGS="$CPPFLAGS $INCLUDES -DHAVE_UUID"
   AC_CHECK_HEADER([uuid/uuid.h], [], AC_MSG_ERROR('uuid/uuid.h' header not found))
-  PHP_SUBST(UUID_SHARED_LIBADD)
 
-  PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/$PHP_LIBDIR, UUID_SHARED_LIBADD)
+  AC_MSG_CHECKING(PHP version)
+  AC_TRY_COMPILE([], [
+#ifdef __APPLE__
+#error compiling on darwin
+#endif
+],
+[],
+[export UUID_ON_MAC=true])
+
+
+  if test $UUID_ON_MAC != "true"; then
+    PHP_SUBST(UUID_SHARED_LIBADD)
+    PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/$PHP_LIBDIR, UUID_SHARED_LIBADD)
+  fi
   export CPPFLAGS="$OLD_CPPFLAGS"
 
-  PHP_SUBST(UUID_SHARED_LIBADD)
   AC_DEFINE(HAVE_UUID, 1, [ ])
 
   PHP_NEW_EXTENSION(uuid, uuid.c , $ext_shared)
diff --git a/php_uuid.h b/php_uuid.h
index c449cb3..ac57645 100644
--- a/php_uuid.h
+++ b/php_uuid.h
@@ -124,15 +124,19 @@ ZEND_BEGIN_ARG_INFO_EX(uuid_variant_arg_info, ZEND_SEND_BY_VAL, ZEND_RETURN_VALU
 ZEND_END_ARG_INFO()
 #endif /* HAVE_UUID_VARIANT */
 
+#if HAVE_UUID_TIME
 PHP_FUNCTION(uuid_time);
 ZEND_BEGIN_ARG_INFO_EX(uuid_time_arg_info, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
   ZEND_ARG_INFO(0, uuid)
 ZEND_END_ARG_INFO()
+#endif /* HAVE_UUID_TIME */
 
+#if HAVE_UUID_MAC
 PHP_FUNCTION(uuid_mac);
 ZEND_BEGIN_ARG_INFO_EX(uuid_mac_arg_info, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
   ZEND_ARG_INFO(0, uuid)
 ZEND_END_ARG_INFO()
+#endif /* HAVE_UUID_MAC */
 
 PHP_FUNCTION(uuid_parse);
 ZEND_BEGIN_ARG_INFO_EX(uuid_parse_arg_info, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
@@ -148,6 +152,14 @@ ZEND_END_ARG_INFO()
 } // extern "C" 
 #endif
 
+#ifndef UUID_TYPE_DCE_TIME
+#ifdef __APPLE__
+/* UUID Type definitions */
+#define UUID_TYPE_DCE_TIME   1
+#define UUID_TYPE_DCE_RANDOM 4
+#endif /* __APPLE__ */
+#endif /* UUID_TYPE_DCE_TIME */
+
 /* mirrored PHP Constants */
 #define UUID_TYPE_DEFAULT 0
 #define UUID_TYPE_TIME UUID_TYPE_DCE_TIME
diff --git a/tests/uuid_mac.phpt b/tests/uuid_mac.phpt
index 3d704ca..a4631de 100644
--- a/tests/uuid_mac.phpt
+++ b/tests/uuid_mac.phpt
@@ -5,6 +5,8 @@ uuid_mac() function
 
 if(!extension_loaded('uuid')) die('skip ');
 
+if(!function_exists('uuid_mac')) die('skip not compiled in (HAVE_UUID_MAC)');
+
  ?>
 --FILE--
 <?php
diff --git a/tests/uuid_time.phpt b/tests/uuid_time.phpt
index 0a4f7e0..fe37468 100644
--- a/tests/uuid_time.phpt
+++ b/tests/uuid_time.phpt
@@ -5,6 +5,8 @@ uuid_time() function
 
 if(!extension_loaded('uuid')) die('skip ');
 
+if(!function_exists('uuid_mac')) die('skip not compiled in (HAVE_UUID_TIME)');
+
  ?>
 --FILE--
 <?php
diff --git a/uuid.c b/uuid.c
index 23b3ed8..2f8bba2 100644
--- a/uuid.c
+++ b/uuid.c
@@ -40,8 +40,12 @@ zend_function_entry uuid_functions[] = {
 #if HAVE_UUID_VARIANT
 	PHP_FE(uuid_variant        , uuid_variant_arg_info)
 #endif /* HAVE_UUID_VARIANT */
+#if HAVE_UUID_TIME
 	PHP_FE(uuid_time           , uuid_time_arg_info)
+#endif /* HAVE_UUID_TIME */
+#if HAVE_UUID_MAC
 	PHP_FE(uuid_mac            , uuid_mac_arg_info)
+#endif /* HAVE_UUID_MAC */
 	PHP_FE(uuid_parse          , uuid_parse_arg_info)
 	PHP_FE(uuid_unparse        , uuid_unparse_arg_info)
 #ifdef PHP_FE_END
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Mon Jun 24 23:01:25 2019 UTC