From 3e6a602dd1529685ef4ba64a384d7e6b2edc8f09 Mon Sep 17 00:00:00 2001 From: lateralusX Date: Fri, 30 Sep 2016 08:48:00 +0200 Subject: [PATCH] Build libgcmonosgen under none desktop Windows API family. Initial work to build libgcmonosgen under none desktop Windows API families. Changes are mainly related to header files included by libgcmonosgen sources and shared by other libraries. --- mono/io-layer/io-layer.h | 11 +++++++++-- mono/metadata/cominterop.c | 4 ++++ mono/metadata/marshal.c | 4 ++++ mono/metadata/threads.c | 4 ++++ mono/sgen/sgen-layout-stats.c | 5 +++++ mono/utils/mono-os-semaphore.h | 5 +++++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/mono/io-layer/io-layer.h b/mono/io-layer/io-layer.h index a3cbe2abfee..e9096e25580 100755 --- a/mono/io-layer/io-layer.h +++ b/mono/io-layer/io-layer.h @@ -11,6 +11,9 @@ #ifndef _MONO_IOLAYER_IOLAYER_H_ #define _MONO_IOLAYER_IOLAYER_H_ +#include +#include + #if defined(__WIN32__) || defined(_WIN32) /* Native win32 */ #define __USE_W32_SOCKETS @@ -25,8 +28,8 @@ #include #endif #include -#include -/* + + /* * Workaround for missing WSAPOLLFD typedef in mingw's winsock2.h that is required for mswsock.h below. * Remove once http://sourceforge.net/p/mingw/bugs/1980/ is fixed. */ @@ -37,7 +40,11 @@ typedef struct pollfd { short revents; } WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD; #endif + +#if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) #include +#endif + #else /* EVERYONE ELSE */ #include "mono/io-layer/wapi.h" #include "mono/io-layer/uglify.h" diff --git a/mono/metadata/cominterop.c b/mono/metadata/cominterop.c index bedd740079b..5f7d15560aa 100644 --- a/mono/metadata/cominterop.c +++ b/mono/metadata/cominterop.c @@ -40,6 +40,10 @@ #include #include +#if defined(HOST_WIN32) +#include +#endif + /* Code shared between the DISABLE_COM and !DISABLE_COM */ diff --git a/mono/metadata/marshal.c b/mono/metadata/marshal.c index d12e345ca26..162702a3d7c 100644 --- a/mono/metadata/marshal.c +++ b/mono/metadata/marshal.c @@ -52,6 +52,10 @@ #include #include +#if defined(HOST_WIN32) +#include +#endif + /* #define DEBUG_RUNTIME_CODE */ #define OPDEF(a,b,c,d,e,f,g,h,i,j) \ diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c index 7a237962880..fdb6934036b 100644 --- a/mono/metadata/threads.c +++ b/mono/metadata/threads.c @@ -56,6 +56,10 @@ #include #endif +#if defined(HOST_WIN32) +#include +#endif + #if defined(PLATFORM_ANDROID) && !defined(TARGET_ARM64) && !defined(TARGET_AMD64) #define USE_TKILL_ON_ANDROID 1 #endif diff --git a/mono/sgen/sgen-layout-stats.c b/mono/sgen/sgen-layout-stats.c index 74c5c02a027..44ddf94b24d 100644 --- a/mono/sgen/sgen-layout-stats.c +++ b/mono/sgen/sgen-layout-stats.c @@ -58,6 +58,11 @@ sgen_object_layout_dump (FILE *out) fprintf (out, "ref-array %lu\n", count_ref_array); fprintf (out, "vtype-array %lu\n", count_vtype_array); } +#else +#ifdef _MSC_VER +// Quiet Visual Studio linker warning, LNK4221, in cases when this source file intentional ends up empty. +void __mono_win32_sgen_layout_stats_quiet_lnk4221(void) {} #endif +#endif /* SGEN_OBJECT_LAYOUT_STATISTICS */ #endif diff --git a/mono/utils/mono-os-semaphore.h b/mono/utils/mono-os-semaphore.h index 9f59ce1ea82..c4bfe620f98 100644 --- a/mono/utils/mono-os-semaphore.h +++ b/mono/utils/mono-os-semaphore.h @@ -291,7 +291,12 @@ typedef HANDLE MonoSemType; static inline void mono_os_sem_init (MonoSemType *sem, int value) { +#if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) *sem = CreateSemaphore (NULL, value, 0x7FFFFFFF, NULL); +#else + *sem = CreateSemaphoreEx (NULL, value, 0x7FFFFFFF, NULL, 0, SEMAPHORE_ALL_ACCESS); +#endif + if (G_UNLIKELY (*sem == NULL)) g_error ("%s: CreateSemaphore failed with error %d", __func__, GetLastError ()); } -- 2.25.1