Detect __declspec within JSBase.h
authordon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Nov 2017 02:48:14 +0000 (02:48 +0000)
committerdon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Nov 2017 02:48:14 +0000 (02:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179892

Reviewed by Darin Adler.

* API/JSBase.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225063 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/API/JSBase.h
Source/JavaScriptCore/ChangeLog

index 677dff1..fe00a8d 100644 (file)
@@ -68,20 +68,27 @@ typedef const struct OpaqueJSValue* JSValueRef;
 /*! @typedef JSObjectRef A JavaScript object. A JSObject is a JSValue. */
 typedef struct OpaqueJSValue* JSObjectRef;
 
+/* Clang's __has_declspec_attribute emulation */
+/* https://clang.llvm.org/docs/LanguageExtensions.html#has-declspec-attribute */
+
+#ifndef __has_declspec_attribute
+#define __has_declspec_attribute(x) 0
+#endif
+
 /* JavaScript symbol exports */
 /* These rules should stay the same as in WebKit2/Shared/API/c/WKBase.h */
 
 #undef JS_EXPORT
 #if defined(JS_NO_EXPORT)
 #define JS_EXPORT
-#elif defined(__GNUC__) && !defined(__CC_ARM) && !defined(__ARMCC__)
-#define JS_EXPORT __attribute__((visibility("default")))
-#elif defined(WIN32) || defined(_WIN32) || defined(_WIN32_WCE) || defined(__CC_ARM) || defined(__ARMCC__)
+#elif defined(WIN32) || defined(_WIN32) || defined(__CC_ARM) || defined(__ARMCC__) || (__has_declspec_attribute(dllimport) && __has_declspec_attribute(dllexport))
 #if defined(BUILDING_JavaScriptCore) || defined(STATICALLY_LINKED_WITH_JavaScriptCore)
 #define JS_EXPORT __declspec(dllexport)
 #else
 #define JS_EXPORT __declspec(dllimport)
 #endif
+#elif defined(__GNUC__)
+#define JS_EXPORT __attribute__((visibility("default")))
 #else /* !defined(JS_NO_EXPORT) */
 #define JS_EXPORT
 #endif /* defined(JS_NO_EXPORT) */
index f92f40a..4d60be4 100644 (file)
@@ -1,3 +1,12 @@
+2017-11-20  Don Olmstead  <don.olmstead@sony.com>
+
+        Detect __declspec within JSBase.h
+        https://bugs.webkit.org/show_bug.cgi?id=179892
+
+        Reviewed by Darin Adler.
+
+        * API/JSBase.h:
+
 2017-11-19  Tim Horton  <timothy_horton@apple.com>
 
         Remove unused TOUCH_ICON_LOADING feature flag