Fix Windows specific cmake hacks
authorRoland Schulz <roland@utk.edu>
Sat, 28 Apr 2012 15:27:23 +0000 (11:27 -0400)
committerRoland Schulz <roland@utk.edu>
Tue, 1 May 2012 15:16:13 +0000 (11:16 -0400)
MT/MD related:
- Only use MT instead of MD if GMX_PREFER_STATIC_LIBS
  Gromacs compiles fine with MD and produces smaller binaries.
- Fix that MT is also used with C++ and Intel

Workaroud for cmake 13174:
- Replace GZ with RTC1 also for C++
- Replace GX with EHsc for C++

Remove of set(GMX_EXTRA_LIBRARIES):
- This has no effect because it isn't set before.

Change-Id: I911c88e099c1faaa896b54b791a952c1265dd89e

CMakeLists.txt

index e5ebf9a10d9c334dbc4fea1fcd1a4991f2d9aca4..85d3085475598bb9d19428fc27a77185dafe02c6 100644 (file)
@@ -75,24 +75,38 @@ endif()
 # Fix stupid flags on Windows
 ########################################################################
 SET(SHARED_LIBS_DEFAULT ON) 
-IF( MSVC )
+IF( WIN32 AND NOT CYGWIN)
+  option(GMX_PREFER_STATIC_LIBS "When finding libraries prefer static system libraries (MT instead of MD)!" ON)
+  mark_as_advanced(GMX_PREFER_STATIC_LIBS)
+  SET(SHARED_LIBS_DEFAULT OFF)  #is currently not working on Windows
+
+  IF (GMX_PREFER_STATIC_LIBS)
+    #Only setting Debug and Release flags. Others configurations current not used.
     STRING(REPLACE /MD /MT CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
     SET(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} CACHE STRING "" FORCE)
     STRING(REPLACE /MD /MT CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
-    SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} CACHE STRING "" FORCE) 
-    SET(SHARED_LIBS_DEFAULT OFF)       
-ENDIF()
-
-IF( WIN32 AND NOT CYGWIN AND CMAKE_C_COMPILER_ID MATCHES "Intel" )
-    STRING(REPLACE /GZ /RTC1 CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
-    SET(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} CACHE STRING "" FORCE)
+    SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} CACHE STRING "" FORCE)
+    STRING(REPLACE /MD /MT CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
+    SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} CACHE STRING "" FORCE)
+    STRING(REPLACE /MD /MT CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
+    SET(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} CACHE STRING "" FORCE)
+  ENDIF()
+
+  #Workaround for cmake bug 13174. Replace deprecated options.
+  IF( CMAKE_C_COMPILER_ID MATCHES "Intel" )
     STRING(REPLACE /GZ /RTC1 CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
-    SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} CACHE STRING "" FORCE) 
-    SET(SHARED_LIBS_DEFAULT OFF)       
+    SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} CACHE STRING "" FORCE)
+  ENDIF()
+  IF( CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
+    STRING(REPLACE /GZ /RTC1 CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
+    STRING(REPLACE /GX /EHsc CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
+    SET(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} CACHE STRING "" FORCE)
+
+    STRING(REPLACE /GX /EHsc CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
+    SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} CACHE STRING "" FORCE)
+  ENDIF()
 ENDIF()
 
-set(GMX_EXTRA_LIBRARIES)
-
 ########################################################################
 # User input options                                                   #
 ########################################################################