]> granicus.if.org Git - php/commitdiff
fix wars about importing of locally defined symbols
authorAnatol Belski <ab@php.net>
Wed, 4 Feb 2015 16:13:52 +0000 (17:13 +0100)
committerAnatol Belski <ab@php.net>
Wed, 4 Feb 2015 17:13:25 +0000 (18:13 +0100)
ext/dom/xml_common.h
ext/xmlreader/php_xmlreader.h

index a52ced773fd9dd07587c4f44914873bf75afa6ab..eb7b7e8909ca9e5d6c18b9fb943d49055a616a95 100644 (file)
@@ -40,22 +40,20 @@ static inline dom_object *php_dom_obj_from_obj(zend_object *obj) {
 #define Z_DOMOBJ_P(zv)  php_dom_obj_from_obj(Z_OBJ_P((zv)))
 
 #ifdef PHP_WIN32
-#      ifdef PHPAPI
-#              undef PHPAPI
-#      endif
 #      ifdef DOM_EXPORTS
-#              define PHPAPI __declspec(dllexport)
-#      else
-#              define PHPAPI __declspec(dllimport)
+#              define PHP_DOM_EXPORT __declspec(dllexport)
+#      elif !defined(DOM_LOCAL_DEFINES) /* Allow to counteract LNK4049 warning. */
+#              define PHP_DOM_EXPORT __declspec(dllimport)
+#   else
+#              define PHP_DOM_EXPORT
 #      endif /* DOM_EXPORTS */
 #elif defined(__GNUC__) && __GNUC__ >= 4
-#      ifdef PHPAPI
-#              undef PHPAPI
-#      endif
-#      define PHPAPI __attribute__ ((visibility("default")))
-#endif /* PHP_WIN32 */
-
-#define PHP_DOM_EXPORT PHPAPI
+#      define PHP_DOM_EXPORT __attribute__ ((visibility("default")))
+#elif defined(PHPAPI)
+#   define PHP_DOM_EXPORT PHPAPI
+#else
+#   define PHP_DOM_EXPORT
+#endif
 
 PHP_DOM_EXPORT extern zend_class_entry *dom_node_class_entry;
 PHP_DOM_EXPORT dom_object *php_dom_object_get_data(xmlNodePtr obj);
index 47fbccf4881cd71891dc839d9bc030404d2237e9..e07c126c8ee84a5a0d1fac5a4f2cf2b80dcbab0e 100644 (file)
@@ -31,6 +31,14 @@ extern zend_module_entry xmlreader_module_entry;
 #include "ext/libxml/php_libxml.h"
 #include <libxml/xmlreader.h>
 
+/* If xmlreader and dom both are compiled statically,
+   no DLL import should be used in xmlreader for dom symbols. */
+#ifdef PHP_WIN32
+# if defined(HAVE_DOM) && !defined(COMPILE_DL_DOM)
+#  define DOM_LOCAL_DEFINES 1
+# endif
+#endif
+
 typedef struct _xmlreader_object {
        xmlTextReaderPtr ptr;
        /* strings must be set in input buffer as copy is required */