fixed: auto_ptr -> unique_ptr
[opensg.git] / CMake / OSGSetupCompiler.cmake
blob6ca2b9d91dc9fad5b2537a70b30ba4f4601ef261
2 MESSAGE(STATUS "Applying Compiler Defaults")
4 SET(OSG_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DOSG_DEBUG")
5 SET(OSG_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} -DOSG_DEBUG")
7 IF(UNIX)
8   SET(OSG_CXX_FLAGS_DEBUG "${OSG_CXX_FLAGS_DEBUG} -D_DEBUG")
9   SET(OSG_C_FLAGS_DEBUG   "${OSG_C_FLAGS_DEBUG} -D_DEBUG")
10 ENDIF(UNIX)
12 IF(APPLE AND IOS)
13   SET(OSG_CXX_FLAGS_DEBUG "${OSG_CXX_FLAGS_DEBUG} -g")
14   SET(OSG_C_FLAGS_DEBUG   "${OSG_C_FLAGS_DEBUG} -g")
15 ENDIF(APPLE AND IOS)
17 SET(OSG_CXX_FLAGS ${CMAKE_CXX_FLAGS})
18 SET(OSG_C_FLAGS   ${CMAKE_C_FLAGS})
20 SET(OSG_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
21 SET(OSG_C_FLAGS_RELEASE   ${CMAKE_C_FLAGS_RELEASE})
23 IF(APPLE AND IOS)
24   SET(OSG_CXX_FLAGS_RELEASE "${OSG_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
25   SET(OSG_C_FLAGS_RELEASE   "${OSG_C_FLAGS_RELEASE} -O3 -DNDEBUG")
26 ENDIF(APPLE AND IOS)
28 SET(OSG_EXE_LINKER_FLAGS    ${CMAKE_EXE_LINKER_FLAGS})
29 SET(OSG_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
31 IF(MSVC)
33     MESSAGE(STATUS "Setup MSVC")
35     # Hide unused cmake targets
37     SET(CMAKE_CXX_FLAGS_MINSIZEREL
38         "${CMAKE_CXX_FLAGS_MINSIZEREL}" 
39         CACHE INTERNAL "")
41     SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO
42         "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" 
43         CACHE INTERNAL "")
46     SET(CMAKE_C_FLAGS_MINSIZEREL
47         "${CMAKE_C_FLAGS_MINSIZEREL}" 
48         CACHE INTERNAL "")
50     SET(CMAKE_C_FLAGS_RELWITHDEBINFO
51         "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
52         CACHE INTERNAL "")
55     # ReleaseNoOpt
57     SET(OSG_CXX_FLAGS_RELEASENOOPT "${OSG_CXX_FLAGS_DEBUG} /MP${OSG_NUM_COMPILE_PROC}")
58     SET(OSG_C_FLAGS_RELEASENOOPT   "${OSG_C_FLAGS_DEBUG} /MP${OSG_NUM_COMPILE_PROC}")
60     STRING(REPLACE "MDd" "MD" OSG_CXX_FLAGS_RELEASENOOPT ${OSG_CXX_FLAGS_RELEASENOOPT})
61     STRING(REPLACE "MDd" "MD" OSG_C_FLAGS_RELEASENOOPT   ${OSG_C_FLAGS_RELEASENOOPT})
63     STRING(REPLACE "/RTC1" "" OSG_CXX_FLAGS_RELEASENOOPT ${OSG_CXX_FLAGS_RELEASENOOPT})
64     STRING(REPLACE "/RTC1" "" OSG_C_FLAGS_RELEASENOOPT   ${OSG_C_FLAGS_RELEASENOOPT})
66     STRING(REPLACE "/D_DEBUG" "" OSG_CXX_FLAGS_RELEASENOOPT ${OSG_CXX_FLAGS_RELEASENOOPT})
67     STRING(REPLACE "/D_DEBUG" "" OSG_C_FLAGS_RELEASENOOPT   ${OSG_C_FLAGS_RELEASENOOPT})
69     # Debug
71     SET(OSG_CXX_FLAGS_DEBUG "${OSG_CXX_FLAGS_DEBUG} -DOSG_DEBUGRT /MP${OSG_NUM_COMPILE_PROC}")
72     SET(OSG_C_FLAGS_DEBUG   "${OSG_C_FLAGS_DEBUG} -DOSG_DEBUGRT /MP${OSG_NUM_COMPILE_PROC}")
73     
74     # Debug Opt
76     SET(OSG_CXX_FLAGS_DEBUGOPT "${OSG_CXX_FLAGS_RELEASE} -DOSG_DEBUGRT /Zi /MP${OSG_NUM_COMPILE_PROC}")
77     SET(OSG_C_FLAGS_DEBUGOPT   "${OSG_C_FLAGS_RELEASE} -DOSG_DEBUGRT /Zi /MP${OSG_NUM_COMPILE_PROC}")
78     
79     STRING(REPLACE "MD" "MDd" OSG_CXX_FLAGS_DEBUGOPT ${OSG_CXX_FLAGS_DEBUGOPT})
80     STRING(REPLACE "MD" "MDd" OSG_C_FLAGS_DEBUGOPT   ${OSG_C_FLAGS_DEBUGOPT})
82 #    STRING(REPLACE "/D NDEBUG " "" OSG_CXX_FLAGS_DEBUGOPT ${OSG_CXX_FLAGS_DEBUGOPT})
83 #    STRING(REPLACE "/D NDEBUG " "" OSG_C_FLAGS_DEBUGOPT   ${OSG_C_FLAGS_DEBUGOPT})
85     # Release
87     SET(OSG_CXX_FLAGS_RELEASE "${OSG_CXX_FLAGS_RELEASE} /Zi /MP${OSG_NUM_COMPILE_PROC}")
88     SET(OSG_C_FLAGS_RELEASE   "${OSG_C_FLAGS_RELEASE} /Zi /MP${OSG_NUM_COMPILE_PROC}")
90     # Push to CMAKE
92     SET(CMAKE_CXX_FLAGS_DEBUGOPT 
93         "${OSG_CXX_FLAGS_DEBUGOPT}" 
94         CACHE STRING "Flags used by the C++ compiler during maintainer builds."
95         FORCE)
97     SET(CMAKE_C_FLAGS_DEBUGOPT 
98         "${OSG_C_FLAGS_DEBUGOPT}" 
99         CACHE STRING "Flags used by the C compiler during maintainer builds."
100         FORCE)
102     SET(CMAKE_CXX_FLAGS_RELEASENOOPT 
103         "${OSG_CXX_FLAGS_RELEASENOOPT}" 
104         CACHE STRING "Flags used by the C++ compiler during maintainer builds."
105         FORCE)
107     SET(CMAKE_C_FLAGS_RELEASENOOPT 
108         "${OSG_C_FLAGS_RELEASENOOPT}" 
109         CACHE STRING "Flags used by the C compiler during maintainer builds."
110         FORCE)
115     # General Flags
117 #    STRING(REPLACE "W3"  "W1" OSG_CXX_FLAGS       ${OSG_CXX_FLAGS})
118 #    STRING(REPLACE "W3"  "W1" OSG_C_FLAGS         ${OSG_C_FLAGS})
120     # 4290 exception spec
121     # 4251 dll export
122     # 4275 derived from not exported
123     # 4661 template class mem func not defined
124     # 4351 member init array handling
125     # 4996 deprecated
126     # 4231 non standard ext
128     # 4244 smaller type assign
129     # 4355 this before constructed
130     #
131     # /wd4244 /wd4355
133     STRING(REPLACE "W3"  "W3 /wd4244 /wd4290 /wd4251 /wd4275 /wd4661 /wd4351 /wd4996 /wd4231" OSG_CXX_FLAGS ${OSG_CXX_FLAGS})
134     STRING(REPLACE "W3"  "W3 /wd4244 /wd4290 /wd4251 /wd4275 /wd4351 /wd4996" OSG_C_FLAGS ${OSG_C_FLAGS})
136     IF(NOT OSG_WIN_VERSION)
137       SET(OSG_WIN_VERSION "0x0601" CACHE STRING "" FORCE)
138     ENDIF()
139     
140     SET(OSG_CXX_FLAGS "/bigobj ${OSG_CXX_FLAGS} ${OSG_ADD_CXX_FLAGS} /D_WIN32_WINNT=${OSG_WIN_VERSION} /DWINVER=${OSG_WIN_VERSION}")
141     SET(OSG_C_FLAGS   "/bigobj ${OSG_C_FLAGS} ${OSG_ADD_CXX_FLAGS} /D_WIN32_WINNT=${OSG_WIN_VERSION} /DWINVER=${OSG_WIN_VERSION}")
144     # Libs
145     IF(NOT OSG_WITH_DEFAULTLIBS)
146       SET(OSG_EXE_LINKER_FLAGS    "${OSG_EXE_LINKER_FLAGS} /nodefaultlib") 
147       SET(OSG_SHARED_LINKER_FLAGS "${OSG_SHARED_LINKER_FLAGS} /nodefaultlib") 
149       SET(OSG_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} winmm.lib wsock32.lib oldnames.lib")
150       SET(OSG_C_STANDARD_LIBRARIES   "${CMAKE_C_STANDARD_LIBRARIES} winmm.lib wsock32.lib oldnames.lib")
152       SET(OSG_CLEAR_STD_LIBS winspool.lib shell32.lib ole32.lib oleaut32.lib
153                              uuid.lib comdlg32.lib msvcprt.lib msvcrt.lib)
155       FOREACH(STD_LIB ${OSG_CLEAR_STD_LIBS})
156         STRING(REPLACE ${STD_LIB} "" OSG_CXX_STANDARD_LIBRARIES ${OSG_CXX_STANDARD_LIBRARIES})
157         STRING(REPLACE ${STD_LIB} "" OSG_C_STANDARD_LIBRARIES   ${OSG_C_STANDARD_LIBRARIES})
158       ENDFOREACH()
160       SET(CMAKE_CXX_STANDARD_LIBRARIES ${OSG_CXX_STANDARD_LIBRARIES} 
161                                      CACHE STRING "OpenSG defaults" FORCE )
162       SET(CMAKE_C_STANDARD_LIBRARIES   ${OSG_C_STANDARD_LIBRARIES} 
163                                      CACHE STRING "OpenSG defaults" FORCE )
165 #      SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo;DebugRT" 
166 #                                    CACHE STRING "OpenSG Build Types" FORCE )
168       SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;DebugOpt;ReleaseNoOpt" 
169                                     CACHE STRING "OpenSG Build Types" FORCE )
171       IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "19")
172        SET(OSG_ADD_MSVC_STD_LIBS_DEBUG   "vcruntimed.lib ucrtd.lib")
173        SET(OSG_ADD_MSVC_STD_LIBS_RELEASE "vcruntime.lib ucrt.lib")
174       ENDIF()
176       IF(OSG_WINDOWS_LINK_OPTIMIZE)
177           SET(windows_link_optimization "/OPT:REF /OPT:ICF")
178       ENDIF()
180       # Shared Linker Flags
181       SET(CMAKE_SHARED_LINKER_FLAGS_RELEASENOOPT 
182           "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
183           CACHE STRING "OpenSG defaults" FORCE )
185       SET(CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT 
186           "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug ${windows_link_optimization} msvcprtd.lib msvcrtd.lib ${OSG_ADD_MSVC_STD_LIBS_DEBUG}"
187           CACHE STRING "OpenSG defaults" FORCE )
189       SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE 
190           "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug ${windows_link_optimization} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
191           CACHE STRING "OpenSG defaults" FORCE )
193       SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL 
194           "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
195           CACHE INTERNAL "OpenSG defaults" FORCE )
197       SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO 
198           "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
199           CACHE INTERNAL "OpenSG defaults" FORCE )
200     
201 #      STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
202 #      SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/INCREMENTAL:NO ${replacementFlags}" )
203     
204       SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG 
205           "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} msvcprtd.lib msvcrtd.lib ${OSG_ADD_MSVC_STD_LIBS_DEBUG}"
206           CACHE STRING "OpenSG defaults" FORCE )
210       # Exe Linker Flags
211       SET(CMAKE_EXE_LINKER_FLAGS_RELEASENOOPT 
212           "${CMAKE_EXE_LINKER_FLAGS_DEBUG} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
213           CACHE STRING "OpenSG defaults" FORCE )
215       SET(CMAKE_EXE_LINKER_FLAGS_DEBUGOPT 
216           "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /debug ${windows_link_optimization} msvcprtd.lib msvcrtd.lib ${OSG_ADD_MSVC_STD_LIBS_DEBUG}"
217           CACHE STRING "OpenSG defaults" FORCE )
219       SET(CMAKE_EXE_LINKER_FLAGS_RELEASE 
220           "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /debug ${windows_link_optimization} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
221           CACHE STRING "OpenSG defaults" FORCE )
223       SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL 
224           "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
225           CACHE INTERNAL "OpenSG defaults" FORCE )
227       SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO 
228           "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} msvcprt.lib msvcrt.lib ${OSG_ADD_MSVC_STD_LIBS_RELEASE}"
229           CACHE INTERNAL "OpenSG defaults" FORCE )
231       SET(CMAKE_EXE_LINKER_FLAGS_DEBUG 
232           "${CMAKE_EXE_LINKER_FLAGS_DEBUG} msvcprtd.lib msvcrtd.lib ${OSG_ADD_MSVC_STD_LIBS_DEBUG}"
233           CACHE STRING "OpenSG defaults" FORCE )
234     ELSE()
236 #      MESSAGE(STATUS "foo ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${CMAKE_SHARED_LINKER_FLAGS_RELEASENOOPT} ${CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT}")
238       SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}       ${OSG_ADD_EXE_LIB_REL} /debug"    CACHE INTERNAL "OpenSG defaults" FORCE)
239       SET(CMAKE_EXE_LINKER_FLAGS_DEBUG   "${CMAKE_EXE_LINKER_FLAGS_DEBUG}         ${OSG_ADD_EXE_LIB_DEBUG}"         CACHE INTERNAL "OpenSG defaults" FORCE)
241       SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${OSG_ADD_SHARED_LIB_REL} /debug" CACHE INTERNAL "OpenSG defaults" FORCE)
242       SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG   "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}   ${OSG_ADD_SHARED_LIB_DEBUG}"      CACHE INTERNAL "OpenSG defaults" FORCE)
244       SET(CMAKE_EXE_LINKER_FLAGS_RELEASENOOPT    "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /debug"    CACHE INTERNAL "OpenSG defaults" FORCE)
245       SET(CMAKE_EXE_LINKER_FLAGS_DEBUGOPT        "${CMAKE_EXE_LINKER_FLAGS_DEBUG}"             CACHE INTERNAL "OpenSG defaults" FORCE)
247       SET(CMAKE_SHARED_LINKER_FLAGS_RELEASENOOPT "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug" CACHE INTERNAL "OpenSG defaults" FORCE)
248       SET(CMAKE_SHARED_LINKER_FLAGS_DEBUGOPT     "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}"          CACHE INTERNAL "OpenSG defaults" FORCE)
249       
250       SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" 
251                                     CACHE STRING "OpenSG Build Types" FORCE )
252     ENDIF()
254     # Hide unused vars
256     SET(CMAKE_MODULE_LINKER_FLAGS 
257         "${CMAKE_MODULE_LINKER_FLAGS}"
258         CACHE INTERNAL "OpenSG defaults" FORCE )
260     SET(CMAKE_MODULE_LINKER_FLAGS_DEBUG 
261         "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}"
262         CACHE INTERNAL "OpenSG defaults" FORCE )
264     SET(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL 
265         "${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL}"
266         CACHE INTERNAL "OpenSG defaults" FORCE )
268     SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE 
269         "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}"
270         CACHE INTERNAL "OpenSG defaults" FORCE )
272     SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO 
273         "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}"
274         CACHE INTERNAL "OpenSG defaults" FORCE )
277 ENDIF(MSVC)
279 IF(CMAKE_COMPILER_IS_GNUCC)
281     EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion
282                     OUTPUT_VARIABLE GCC_VERSION)
283     SET(OSG_GCC_VERSION ${GCC_VERSION} CACHE STRING "" FORCE)
285     MESSAGE("GOT gcc ${GCC_VERSION}")
287     IF(OSG_PLATFORM_64 AND LINUX)
288         SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -m64")
289         SET(OSG_C_FLAGS   "${OSG_C_FLAGS} -m64")
291         SET(OSG_EXE_LINKER_FLAGS    "${OSG_EXE_LINKER_FLAGS} -m64")
292         SET(OSG_SHARED_LINKER_FLAGS "${OSG_SHARED_LINKER_FLAGS} -m64")
294     ENDIF(OSG_PLATFORM_64 AND LINUX)
296     SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -D__STDC_FORMAT_MACROS -fPIC")
297     SET(OSG_C_FLAGS   "${OSG_C_FLAGS} -D__STDC_FORMAT_MACROS -fPIC")
299     IF(OSG_ENABLE_C++11)
300       IF(${GCC_VERSION} VERSION_LESS "4.7")
301         SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -std=c++0x")
302       ELSE()
303         SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -std=c++11")
304       ENDIF()
305     ENDIF()
306 ENDIF(CMAKE_COMPILER_IS_GNUCC)
309 IF(APPLE AND NOT IOS)
310   IF(OSG_ENABLE_C++11)
311 #    SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -std=c++11 -stdlib=libstdc++")
312     SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -std=c++11 -stdlib=libc++ -Wno-deprecated-register")
313 #    SET(OSG_CXX_FLAGS "${OSG_CXX_FLAGS} -std=c++11")
314   ENDIF()
315 ENDIF()
320 SET(CMAKE_CXX_FLAGS         ${OSG_CXX_FLAGS} 
321                             CACHE STRING "OpenSG defaults" FORCE )
322 SET(CMAKE_C_FLAGS           ${OSG_C_FLAGS} 
323                             CACHE STRING "OpenSG defaults" FORCE )
325 SET(CMAKE_CXX_FLAGS_DEBUG   ${OSG_CXX_FLAGS_DEBUG} 
326                             CACHE STRING "OpenSG defaults" FORCE )
327 SET(CMAKE_C_FLAGS_DEBUG     ${OSG_C_FLAGS_DEBUG} 
328                             CACHE STRING "OpenSG defaults" FORCE )
330 SET(CMAKE_CXX_FLAGS_RELEASE ${OSG_CXX_FLAGS_RELEASE} 
331                             CACHE STRING "OpenSG defaults" FORCE )
332 SET(CMAKE_C_FLAGS_RELEASE   ${OSG_C_FLAGS_RELEASE} 
333                             CACHE STRING "OpenSG defaults" FORCE )
336 SET(CMAKE_EXE_LINKER_FLAGS    ${OSG_EXE_LINKER_FLAGS} 
337                               CACHE STRING "OpenSG defaults" FORCE )
338 SET(CMAKE_SHARED_LINKER_FLAGS ${OSG_SHARED_LINKER_FLAGS} 
339                               CACHE STRING "OpenSG defaults" FORCE )
341    
343 ###########
344 # GV stuff
345 ###########
347 IF(CMAKE_COMPILER_IS_GNUCC)
349     IF(${GCC_VERSION} VERSION_LESS "4.8")
350       SET(OSG_GCC_PEDANTIC_OPTION ""          )
351       SET(OSG_GCC_EFFCPP_OPTION   ""          )
352     ELSE()
353       SET(OSG_GCC_PEDANTIC_OPTION "-Wpedantic")
354       SET(OSG_GCC_EFFCPP_OPTION   "-Weffc++"  )
355     ENDIF()
358     SET(OSG_CXX_FLAGS_GV " -Wall -Wextra -Wshadow ${OSG_GCC_PEDANTIC_OPTION} -Werror ${OSG_GCC_EFFCPP_OPTION}")
360     SET(OSG_CXX_FLAGS_GV "${OSG_CXX_FLAGS_GV} -Wreturn-type -Wold-style-cast -Wno-unused-parameter -Wwrite-strings")
361     SET(OSG_CXX_FLAGS_GV "${OSG_CXX_FLAGS_GV} -DOSG_DEBUG_OLD_C_CASTS -DOSG_CLEAN_FCFIELDS -DOSG_CHECK_CONST_CORRECT_FIELD_USAGE")
363     SET(OSG_C_FLAGS_GV " -Wall -Wextra -Wshadow ${OSG_GCC_PEDANTIC_OPTION} -Werror ${OSG_GCC_EFFCPP_OPTION}")
364     SET(OSG_C_FLAGS_GV "${OSG_C_FLAGS_GV} -Wreturn-type -Wold-style-cast -Wno-unused-parameter -Wwrite-strings ")
365     SET(OSG_C_FLAGS_GV "${OSG_C_FLAGS_GV} -DOSG_DEBUG_OLD_C_CASTS -DOSG_CLEAN_FCFIELDS -DOSG_CHECK_CONST_CORRECT_FIELD_USAGE")
368     SET(OSG_ADD_CXX_FLAGS_GV "")
369     SET(OSG_ADD_C_FLAGS_GV "")
371     SET(OSG_SHARED_LINKER_FLAGS_GV " -Wl,--no-undefined")
374 ##########
375 # Debug
376 ##########
378     SET(CMAKE_CXX_FLAGS_DEBUGGV 
379         "${CMAKE_CXX_FLAGS_DEBUG}${OSG_CXX_FLAGS_GV}" 
380         CACHE STRING "Flags used by the C++ compiler during maintainer builds."
381         FORCE)
383     SET(CMAKE_C_FLAGS_DEBUGGV 
384         "${CMAKE_C_FLAGS_DEBUG}${OSG_C_FLAGS_GV}" 
385         CACHE STRING "Flags used by the C compiler during maintainer builds."
386         FORCE)
388     SET(CMAKE_EXE_LINKER_FLAGS_DEBUGGV
389         "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" 
390         CACHE STRING "Flags used for linking binaries during maintainer builds."
391         FORCE)
393     SET(CMAKE_MODULE_LINKER_FLAGS_DEBUGGV
394         "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}" 
395         CACHE STRING "Flags used for linking binaries during maintainer builds."
396         FORCE)
398     SET(CMAKE_SHARED_LINKER_FLAGS_DEBUGGV
399         "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}${OSG_SHARED_LINKER_FLAGS_GV}" 
400         CACHE STRING
401         "Flags used by the shared libraries linker during maintainer builds."
402         FORCE)
404     ##########
405     # Release
406     ##########
408     SET(CMAKE_CXX_FLAGS_RELEASEGV 
409         "${CMAKE_CXX_FLAGS_RELEASE}${OSG_CXX_FLAGS_GV}" 
410         CACHE STRING "Flags used by the C++ compiler during gv builds."
411         FORCE)
413     SET(CMAKE_C_FLAGS_RELEASEGV 
414         "${CMAKE_C_FLAGS_RELEASE}${OSG_C_FLAGS_GV}"
415         CACHE STRING "Flags used by the C compiler during gv builds."
416         FORCE)
418     SET(CMAKE_EXE_LINKER_FLAGS_RELEASEGV
419         "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" 
420         CACHE STRING "Flags used for linking binaries during gv builds."
421         FORCE)
423     SET(CMAKE_MODULE_LINKER_FLAGS_RELEASEGV
424          "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}" 
425         CACHE STRING "Flags used for linking binaries during gv builds."
426         FORCE)
428     SET(CMAKE_SHARED_LINKER_FLAGS_RELEASEGV
429         "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}${OSG_SHARED_LINKER_FLAGS_GV}" 
430         CACHE STRING
431         "Flags used by the shared libraries linker during gv builds."
432         FORCE)
434 ENDIF(CMAKE_COMPILER_IS_GNUCC)