# HG changeset patch # User Markus Mützel # Date 1608973652 -3600 # Sat Dec 26 10:07:32 2020 +0100 # Node ID 3e2a56ea84fe022eb5a307041837ebad3a494923 # Parent 7cfc9b239974f7b1f6d8d4086de765eba0ba0d10 Visibility: Compile with visibility attributes for Windows (patch #8919). * configure.ac: Remove flag for exporting all symbols. * m4/acinclude.m4: Define macro for exporting symbols for all compilers for Windows platform. * oct-conf-post.in.h: Set attribute for visibility according to compiler. diff -r 7cfc9b239974 -r 3e2a56ea84fe configure.ac --- a/configure.ac Sat Dec 26 10:07:25 2020 +0100 +++ b/configure.ac Sat Dec 26 10:07:32 2020 +0100 @@ -2488,7 +2488,6 @@ else JAVA_CPPFLAGS="-I\"${JAVA_HOME}/include\" -I\"${JAVA_HOME}/include/win32\"" fi - LDFLAGS="$LDFLAGS -Wl,--export-all-symbols" fi AC_DEFINE(HAVE_JAVA, 1, [Define to 1 if Java is available and is at least version 1.5]) diff -r 7cfc9b239974 -r 3e2a56ea84fe m4/acinclude.m4 --- a/m4/acinclude.m4 Sat Dec 26 10:07:25 2020 +0100 +++ b/m4/acinclude.m4 Sat Dec 26 10:07:32 2020 +0100 @@ -2955,12 +2955,6 @@ fi NO_OCT_FILE_STRIP=true library_path_var=PATH - ## Extra compilation flags. - EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" - OCTAVE_DLL_DEFS="-DOCTAVE_DLL" - OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" - OCTGUI_DLL_DEFS="-DOCTGUI_DLL" - OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" else CPICFLAG= CXXPICFLAG= @@ -2969,6 +2963,12 @@ SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base" library_path_var=PATH fi + ## Extra compilation flags. + EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" + OCTAVE_DLL_DEFS="-DOCTAVE_DLL" + OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" + OCTGUI_DLL_DEFS="-DOCTGUI_DLL" + OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" ;; *-*-msdosmsvc) DL_LDFLAGS="-shared" diff -r 7cfc9b239974 -r 3e2a56ea84fe oct-conf-post.in.h --- a/oct-conf-post.in.h Sat Dec 26 10:07:25 2020 +0100 +++ b/oct-conf-post.in.h Sat Dec 26 10:07:32 2020 +0100 @@ -170,14 +170,18 @@ /* oct-dlldefs.h */ -/* FIXME: GCC supports visibility attributes as well, even using the - same __declspec declaration if desired. The build system should be - extended to support GCC and visibility attributes. */ -#if defined (_MSC_VER) -# define OCTAVE_EXPORT __declspec(dllexport) -# define OCTAVE_IMPORT __declspec(dllimport) +#if defined (_WIN32) || defined (__CYGWIN__) +# if defined (__GNUC__) +/* GCC */ +# define OCTAVE_EXPORT __attribute__ ((dllexport)) +# define OCTAVE_IMPORT __attribute__ ((dllimport)) +# else +/* MSVC */ +# define OCTAVE_EXPORT __declspec(dllexport) +# define OCTAVE_IMPORT __declspec(dllimport) +# endif #else - /* All other compilers, at least for now. */ + /* All other platforms. */ # define OCTAVE_EXPORT __attribute__ ((visibility ("default"))) # define OCTAVE_IMPORT #endif