/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright 2018,2020 Thomas E. Dickey *
+ * Copyright 2009,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************/
-/* $Id: ncurses_dll.h.in,v 1.8 2009/04/04 22:26:27 tom Exp $ */
+/* $Id: ncurses_dll.h.in,v 1.15 2020/04/04 23:37:36 tom Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
+/*
+ * MinGW gcc (unlike MSYS2 and Cygwin) should define _WIN32 and possibly _WIN64.
+ */
+#if defined(__MINGW64__)
+
+#ifndef _WIN64
+#define _WIN64 1
+#endif
+
+#elif defined(__MINGW32__)
+
+#ifndef _WIN32
+#define _WIN32 1
+#endif
+
+/* 2014-08-02 workaround for broken MinGW compiler.
+ * Oddly, only TRACE is mapped to trace - the other -D's are okay.
+ * suggest TDM as an alternative.
+ */
+#if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
+
+#ifdef trace
+#undef trace
+#define TRACE
+#endif
+
+#endif /* broken compiler */
+
+#endif /* MingW */
+
/*
* For reentrant code, we map the various global variables into SCREEN by
* using functions to access them.
*/
#define NCURSES_PUBLIC_VAR(name) @NCURSES_WRAP_PREFIX@##name
-#define NCURSES_WRAPPED_VAR(type,name) extern type NCURSES_PUBLIC_VAR(name)(void)
+#define NCURSES_WRAPPED_VAR(type,name) extern NCURSES_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
/* no longer needed on cygwin or mingw, thanks to auto-import */
/* but this structure may be useful at some point for an MSVC build */
#undef NCURSES_DLL
#define NCURSES_STATIC
-#if defined(__CYGWIN__) || defined(__MINGW32__)
+/*
+ * These are configurable:
+ */
+#undef NCURSES_API
+#undef NCURSES_CXX_IMPEXP
+#undef NCURSES_EXPORT
+#undef NCURSES_EXPORT_VAR
+#undef NCURSES_IMPEXP
+
+#if defined(__CYGWIN__) || defined(_WIN32)
# if defined(NCURSES_DLL)
# if defined(NCURSES_STATIC)
# undef NCURSES_STATIC
# endif
# endif
-# undef NCURSES_IMPEXP
-# undef NCURSES_API
-# undef NCURSES_EXPORT
-# undef NCURSES_EXPORT_VAR
# if defined(NCURSES_DLL)
/* building a DLL */
# define NCURSES_IMPEXP __declspec(dllexport)
# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
#endif
-/* Take care of non-cygwin platforms */
+/* Take care of non-Windows platforms */
#if !defined(NCURSES_IMPEXP)
-# define NCURSES_IMPEXP /* nothing */
+# define NCURSES_IMPEXP @NCURSES_IMPEXP@
+#endif
+#if !defined(NCURSES_CXX_IMPEXP)
+# define NCURSES_CXX_IMPEXP @NCURSES_CXX_IMPEXP@
#endif
#if !defined(NCURSES_API)
# define NCURSES_API /* nothing */