Author: damjan
Date: Tue Mar 22 17:52:05 2016
New Revision: 1736221

URL: http://svn.apache.org/viewvc?rev=1736221&view=rev
Log:
As per https://support.microsoft.com/en-us/kb/140584
on Windows, MSVC's compiler (cl.exe) takes command-line parameters
such as /MD[d] and /MT[d] to determine whether to link the C
runtime library:
* statically or dynamically
* singly or multi threaded
* debug or release

All that /MD[d] and /MT[d] do is define or undefine the _MT,
_DLL and _DEBUG macros that do the real work, and the compiler then
uses those macros to decide what to do when building the object
file.

Our build systems do not use the compiler command-line
parameters, but define the macros directly.

Of our 2 build systems, dmake always defines _MT and _DLL to get
MSVCRT.DLL linked dynamically, but while gbuild defines _MT for
all binary types, it only defines _DLL for dynamic libraries. This
means executables trying to use the C++ standard library fail to
link, as they get multiply defined symbols!!! This was first caught
in basegfx GoogleTests which #include <iostream> and create classes
from it.

This patch changes Windows and OS/2 to define  _DLL_ for dynamic
libaries instead of _DLL as that has a special meaning, and define
_DLL for all binary types on Windows so MSVCRT.DLL is always linked
dynamically like it is with dmake.

With this patch, Windows finally builds.

Patch by: me


Modified:
    
openoffice/branches/gbuild-reintegration/main/basegfx/StaticLibrary_basegfx_s.mk
    openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/os2.mk
    
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/windows.mk
    
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/winmingw.mk

Modified: 
openoffice/branches/gbuild-reintegration/main/basegfx/StaticLibrary_basegfx_s.mk
URL: 
http://svn.apache.org/viewvc/openoffice/branches/gbuild-reintegration/main/basegfx/StaticLibrary_basegfx_s.mk?rev=1736221&r1=1736220&r2=1736221&view=diff
==============================================================================
--- 
openoffice/branches/gbuild-reintegration/main/basegfx/StaticLibrary_basegfx_s.mk
 (original)
+++ 
openoffice/branches/gbuild-reintegration/main/basegfx/StaticLibrary_basegfx_s.mk
 Tue Mar 22 17:52:05 2016
@@ -42,11 +42,9 @@ $(eval $(call gb_StaticLibrary_set_inclu
 # the whole library is a hack
 # we only build it to prevent the pdfimporter shared lib from linking to the 
basegfx shared lib
 # this means that all code of this static library will end in a dll
-# thus the _DLL define must be set to avoid link problems with stlport symbols
 # the BASEGFX_STATICLIBRARY define will expand all BASEGFX_DLLPRIVATE/PUBLIC 
macros to nothing
 $(eval $(call gb_StaticLibrary_add_defs,basegfx_s,\
        -DBASEGFX_STATICLIBRARY \
-       -D_DLL \
 ))
 
 # as we have to build all sources a second time, we must copy them to the 
workdir and build from there

Modified: 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/os2.mk
URL: 
http://svn.apache.org/viewvc/openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/os2.mk?rev=1736221&r1=1736220&r2=1736221&view=diff
==============================================================================
--- openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/os2.mk 
(original)
+++ openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/os2.mk 
Tue Mar 22 17:52:05 2016
@@ -353,7 +353,7 @@ endef
 
 # Library class
 
-gb_Library_DEFS := -D_DLL
+gb_Library_DEFS := -D_DLL_
 gb_Library_TARGETTYPEFLAGS := -Zdll
 gb_Library_get_rpath :=
 

Modified: 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/windows.mk
URL: 
http://svn.apache.org/viewvc/openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/windows.mk?rev=1736221&r1=1736220&r2=1736221&view=diff
==============================================================================
--- 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/windows.mk 
(original)
+++ 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/windows.mk 
Tue Mar 22 17:52:05 2016
@@ -57,6 +57,7 @@ gb_COMPILERDEFS := \
        -D_CRT_NONSTDC_NO_DEPRECATE \
        -D_CRT_SECURE_NO_DEPRECATE \
        -D_MT \
+       -D_DLL \
        -DBOOST_MEM_FN_ENABLE_CDECL \
        -DCPPU_ENV=msci \
        -DFULL_DESK \
@@ -429,7 +430,7 @@ endef
 
 # Library class
 
-gb_Library_DEFS := -D_DLL
+gb_Library_DEFS := -D_DLL_
 gb_Library_TARGETTYPEFLAGS := -DLL -OPT:NOREF -SAFESEH -NXCOMPAT -DYNAMICBASE
 gb_Library_get_rpath :=
 

Modified: 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/winmingw.mk
URL: 
http://svn.apache.org/viewvc/openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/winmingw.mk?rev=1736221&r1=1736220&r2=1736221&view=diff
==============================================================================
--- 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/winmingw.mk
 (original)
+++ 
openoffice/branches/gbuild-reintegration/main/solenv/gbuild/platform/winmingw.mk
 Tue Mar 22 17:52:05 2016
@@ -446,7 +446,7 @@ endef
 
 # Library class
 
-gb_Library_DEFS := -D_DLL
+gb_Library_DEFS := -D_DLL_
 gb_Library_TARGETTYPEFLAGS := -shared
 gb_Library_get_rpath :=
 


Reply via email to