Browse Source

Add PROTOBUF_ENABLE_TIMESTAMP to let user decide whether timestamp util
can be used at install time.

Bo Yang 7 years ago
parent
commit
9f6aceaa8c
2 changed files with 13 additions and 2 deletions
  1. 12 1
      php/ext/google/protobuf/message.c
  2. 1 1
      php/tests/test.sh

+ 12 - 1
php/ext/google/protobuf/message.c

@@ -29,9 +29,12 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #include <php.h>
-#include <ext/date/php_date.h>
 #include <stdlib.h>
 
+#ifdef PROTOBUF_ENABLE_TIMESTAMP
+#include <ext/date/php_date.h>
+#endif
+
 #include "protobuf.h"
 #include "utf8.h"
 
@@ -1121,6 +1124,7 @@ PHP_PROTO_FIELD_ACCESSORS(Timestamp, timestamp, Seconds, "seconds")
 PHP_PROTO_FIELD_ACCESSORS(Timestamp, timestamp, Nanos,   "nanos")
 
 PHP_METHOD(Timestamp, fromDateTime) {
+#ifdef PROTOBUF_ENABLE_TIMESTAMP
   zval* datetime;
   zval member;
 
@@ -1149,9 +1153,13 @@ PHP_METHOD(Timestamp, fromDateTime) {
   storage = message_data(self);
   memory = slot_memory(self->descriptor->layout, storage, field);
   *(int32_t*)memory = 0;
+#else
+  zend_error(E_USER_ERROR, "fromDateTime needs date extension.");
+#endif
 }
 
 PHP_METHOD(Timestamp, toDateTime) {
+#ifdef PROTOBUF_ENABLE_TIMESTAMP
   zval datetime;
   php_date_instantiate(php_date_get_date_ce(), &datetime TSRMLS_CC);
   php_date_obj* dateobj = UNBOX(php_date_obj, &datetime);
@@ -1184,6 +1192,9 @@ PHP_METHOD(Timestamp, toDateTime) {
 
   zval* datetime_ptr = &datetime;
   PHP_PROTO_RETVAL_ZVAL(datetime_ptr);
+#else
+  zend_error(E_USER_ERROR, "toDateTime needs date extension.");
+#endif
 }
 
 // -----------------------------------------------------------------------------

+ 1 - 1
php/tests/test.sh

@@ -5,7 +5,7 @@ pushd ../ext/google/protobuf/
 make clean || true
 set -e
 # Add following in configure for debug: --enable-debug CFLAGS='-g -O0'
-phpize && ./configure CFLAGS='-g -O0' && make
+phpize && ./configure CFLAGS='-g -O0 -DPROTOBUF_ENABLE_TIMESTAMP' && make
 popd
 
 tests=( array_test.php encode_decode_test.php generated_class_test.php generated_phpdoc_test.php map_field_test.php well_known_test.php generated_service_test.php descriptors_test.php )