#include <stdint.h>
+#ifdef __GNUC__
+#define MONO_API_EXPORT __attribute__ ((visibility ("default")))
+#else
#define MONO_API_EXPORT
+#endif
#define MONO_API_IMPORT
#endif /* end of compiler-specific stuff */
-#if !defined(MONO_STATIC_BUILD) && defined(MONO_DLL_EXPORT)
+#if defined(MONO_DLL_EXPORT)
#define MONO_API MONO_API_EXPORT
-#elif !defined(MONO_STATIC_BUILD)
+#elif defined(MONO_DLL_IMPORT)
#define MONO_API MONO_API_IMPORT
#else
#define MONO_API
#define MONO_CONST_RETURN const
+
+#if defined (MONO_INSIDE_RUNTIME)
+
+#if defined (__clang__)
+#define MONO_RT_EXTERNAL_ONLY __attribute__ ((unavailable("The mono runtime must not call this function")))
+#elif defined (__GNUC__)
+#define MONO_RT_EXTERNAL_ONLY __attribute__ ((error("The mono runtime must not call this function")))
+#else
+#define MONO_RT_EXTERNAL_ONLY
+#endif /* __clang__ */
+
+#else
+#define MONO_RT_EXTERNAL_ONLY
+#endif /* MONO_INSIDE_RUNTIME */
+
+
MONO_END_DECLS
#endif /* __MONO_PUBLIB_H__ */