Author: tfaber
Date: Sat Jun 22 14:44:56 2013
New Revision: 59288
URL: 
http://svn.reactos.org/svn/reactos?rev=59288&view=rev
Log:
[CMAKE]
- rework set_cpp to allow fine-grained control over enabled language features
CORE-6950
Modified:
    trunk/reactos/base/applications/atactl/CMakeLists.txt
    trunk/reactos/base/applications/games/solitaire/CMakeLists.txt
    trunk/reactos/base/applications/games/spider/CMakeLists.txt
    trunk/reactos/base/applications/network/telnet/CMakeLists.txt
    trunk/reactos/base/applications/sndrec32/CMakeLists.txt
    trunk/reactos/base/shell/explorer/CMakeLists.txt
    trunk/reactos/cmake/CMakeMacros.cmake
    trunk/reactos/cmake/gcc.cmake
    trunk/reactos/cmake/msvc.cmake
    trunk/reactos/dll/directx/ksproxy/CMakeLists.txt
    trunk/reactos/dll/opengl/glu32/CMakeLists.txt
    trunk/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt
    trunk/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt
    trunk/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt
    trunk/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt
    trunk/reactos/dll/win32/browseui/CMakeLists.txt
    trunk/reactos/dll/win32/netshell/CMakeLists.txt
    trunk/reactos/dll/win32/shell32/CMakeLists.txt
    trunk/reactos/drivers/storage/ide/uniata/CMakeLists.txt
    trunk/reactos/drivers/usb/usbehci/CMakeLists.txt
    trunk/reactos/drivers/usb/usbohci/CMakeLists.txt
    trunk/reactos/drivers/usb/usbuhci/CMakeLists.txt
    trunk/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt
    trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt
    trunk/reactos/lib/atl/CMakeLists.txt
    trunk/reactos/lib/drivers/libusb/CMakeLists.txt
    trunk/reactos/lib/drivers/sound/stdunk/CMakeLists.txt
    trunk/reactos/lib/sdk/comsupp/CMakeLists.txt
    trunk/rostests/rosautotest/CMakeLists.txt
Modified: trunk/reactos/base/applications/atactl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/atactl/C…
==============================================================================
--- trunk/reactos/base/applications/atactl/CMakeLists.txt       [iso-8859-1] (original)
+++ trunk/reactos/base/applications/atactl/CMakeLists.txt       [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,4 +1,6 @@
+
 set_cpp()
+
 add_definitions(-DUSER_MODE)
 include_directories(${REACTOS_SOURCE_DIR}/drivers/storage/ide/uniata)
 add_executable(atactl atactl.cpp atactl.rc)
@@ -9,7 +11,6 @@
     # FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
     #allow_warnings(atactl)
     set_source_files_properties(atactl.cpp PROPERTIES COMPILE_FLAGS
"-Wno-error")
-    target_link_libraries(atactl gcc)
 endif()
 add_cd_file(TARGET atactl DESTINATION reactos/system32 FOR all)
Modified: trunk/reactos/base/applications/games/solitaire/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/games/so…
==============================================================================
--- trunk/reactos/base/applications/games/solitaire/CMakeLists.txt      [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/games/solitaire/CMakeLists.txt      [iso-8859-1] Sat
Jun 22 14:44:56 2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_RUNTIME)
 include_directories(${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib)
Modified: trunk/reactos/base/applications/games/spider/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/games/sp…
==============================================================================
--- trunk/reactos/base/applications/games/spider/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/base/applications/games/spider/CMakeLists.txt [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,7 +1,9 @@
-set_cpp()
+set_cpp(WITH_RUNTIME)
-include_directories(${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib
${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(
+    ${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib
+    ${CMAKE_CURRENT_SOURCE_DIR})
 add_executable(spider
     spider.cpp
Modified: trunk/reactos/base/applications/network/telnet/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/telnet/CMakeLists.txt       [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/network/telnet/CMakeLists.txt       [iso-8859-1] Sat
Jun 22 14:44:56 2013
@@ -1,7 +1,7 @@
+
+set_cpp(WITH_STL)
 add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
-
-set_cpp()
 add_executable(telnet
     src/ansiprsr.cpp
Modified: trunk/reactos/base/applications/sndrec32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/sndrec32…
==============================================================================
--- trunk/reactos/base/applications/sndrec32/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/base/applications/sndrec32/CMakeLists.txt     [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_RUNTIME)
 add_executable(sndrec32
     audio_format.cpp
Modified: trunk/reactos/base/shell/explorer/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/CMakeL…
==============================================================================
--- trunk/reactos/base/shell/explorer/CMakeLists.txt    [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/CMakeLists.txt    [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,7 +1,7 @@
 add_subdirectory(notifyhook)
-set_cpp()
+set_cpp(WITH_RTTI WITH_EXCEPTIONS WITH_STL)
 add_definitions(
     -DWIN32
Modified: trunk/reactos/cmake/CMakeMacros.cmake
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/cmake/CMakeMacros.cmake?re…
==============================================================================
--- trunk/reactos/cmake/CMakeMacros.cmake       [iso-8859-1] (original)
+++ trunk/reactos/cmake/CMakeMacros.cmake       [iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -1,9 +1,81 @@
+# set_cpp
+#  Marks the current folder as containing C++ modules, additionally enabling
+#  specific C++ language features as specified (all of these default to off):
+#
+#  WITH_RUNTIME
+#   Links with the C++ runtime. Enable this for modules which use new/delete or
+#   RTTI, but do not require STL. This is the right choice if you see undefined
+#   references to operator new/delete, vector constructor/destructor iterator,
+#   type_info::vtable, ...
+#   Note: this only affects linking, so cannot be used for static libraries.
+#  WITH_RTTI
+#   Enables run-time type information. Enable this if the module uses typeid or
+#   dynamic_cast. You will probably need to enable WITH_RUNTIME as well, if
+#   you're not already using STL.
+#  WITH_EXCEPTIONS
+#   Enables C++ exception handling. Enable this if the module uses try/catch or
+#   throw. You might also need this if you use a standard operator new (the one
+#   without nothrow).
+#  WITH_STL
+#   Enables standard C++ headers and links to the Standard Template Library.
+#   Use this for modules using anything from the std:: namespace, e.g. maps,
+#   strings, vectors, etc.
+#   Note: this affects both compiling (via include directories) and
+#         linking (by adding STL). Implies WITH_RUNTIME.
+#   FIXME: WITH_STL is currently also required for runtime headers such as
+#          <new> and <exception>. This is not a big issue because in stl-less
+#          environments you usually don't want those anyway; but we might want
+#          to have modules like this in the future.
+#
+# Examples:
+#  set_cpp()
+#   Enables the C++ language, but will cause errors if any runtime or standard
+#   library features are used. This should be the default for C++ in kernel
+#   mode or otherwise restricted environments.
+#   Note: this is required to get libgcc (for multiplication/division) linked
+#         in for C++ modules, and to set the correct language for precompiled
+#         header files, so it IS required even with no features specified.
+#  set_cpp(WITH_RUNTIME)
+#   Links with the C++ runtime, so that e.g. custom operator new implementations
+#   can be used in a restricted environment. This is also required for linking
+#   with libraries (such as ATL) which have RTTI enabled, even if the module in
+#   question does not use WITH_RTTI.
+#  set_cpp(WITH_RTTI WITH_EXCEPTIONS WITH_STL)
+#   The full package. This will adjust compiler and linker so that all C++
+#   features can be used.
 macro(set_cpp)
+    cmake_parse_arguments(__cppopts
"WITH_RUNTIME;WITH_RTTI;WITH_EXCEPTIONS;WITH_STL" "" ""
${ARGN})
+    if(__cppopts_UNPARSED_ARGUMENTS)
+        message(FATAL_ERROR "set_cpp: unparsed arguments
${__cppopts_UNPARSED_ARGUMENTS}")
+    endif()
+
+    if(__cppopts_WITH_RUNTIME)
+        set(CPP_USE_RT 1)
+    endif()
+    if(__cppopts_WITH_RTTI)
+        if(MSVC)
+            replace_compile_flags("/GR-" "/GR")
+        else()
+            replace_compile_flags_language("-fno-rtti" "-frtti"
"CXX")
+        endif()
+    endif()
+    if(__cppopts_WITH_EXCEPTIONS)
+        if(MSVC)
+            replace_compile_flags("/EHs-c-" "/EHsc")
+        else()
+            replace_compile_flags_language("-fno-exceptions"
"-fexceptions" "CXX")
+        endif()
+    endif()
+    if(__cppopts_WITH_STL)
+        set(CPP_USE_STL 1)
+        if(MSVC)
+            add_definitions(-DNATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/include/c++)
+            include_directories(${REACTOS_SOURCE_DIR}/include/c++/stlport)
+        endif()
+    endif()
+
     set(IS_CPP 1)
-    if(MSVC)
-        include_directories(${REACTOS_SOURCE_DIR}/include/c++)
-    endif()
 endmacro()
 function(add_dependency_node _node)
Modified: trunk/reactos/cmake/gcc.cmake
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/cmake/gcc.cmake?rev=59288&…
==============================================================================
--- trunk/reactos/cmake/gcc.cmake       [iso-8859-1] (original)
+++ trunk/reactos/cmake/gcc.cmake       [iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -14,6 +14,8 @@
 if(GCC_VERSION VERSION_GREATER 4.7)
     add_compile_flags("-mstackrealign")
 endif()
+
+add_compile_flags_language("-fno-rtti -fno-exceptions" "CXX")
 #bug
 #file(TO_NATIVE_PATH ${REACTOS_SOURCE_DIR} REACTOS_SOURCE_DIR_NATIVE)
@@ -190,12 +192,15 @@
 endfunction()
 function(set_module_type_toolchain MODULE TYPE)
-    if(IS_CPP)
+    if(CPP_USE_STL)
         if((${TYPE} STREQUAL "kernelmodedriver") OR (${TYPE} STREQUAL
"wdmdriver"))
-            target_link_libraries(${MODULE} -lgcc)
-        else()
-            target_link_libraries(${MODULE} -lstdc++ -lsupc++ -lgcc -lmingwex)
-        endif()
+            message(FATAL_ERROR "Use of STL in kernelmodedriver or wdmdriver type
module prohibited")
+        endif()
+        target_link_libraries(${MODULE} -lstdc++ -lsupc++ -lgcc -lmingwex)
+    elseif(CPP_USE_RT)
+        target_link_libraries(${MODULE} -lsupc++ -lgcc)
+    elseif(IS_CPP)
+        target_link_libraries(${MODULE} -lgcc)
     endif()
     if((${TYPE} STREQUAL "kernelmodedriver") OR (${TYPE} STREQUAL
"wdmdriver"))
Modified: trunk/reactos/cmake/msvc.cmake
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/cmake/msvc.cmake?rev=59288…
==============================================================================
--- trunk/reactos/cmake/msvc.cmake      [iso-8859-1] (original)
+++ trunk/reactos/cmake/msvc.cmake      [iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -20,7 +20,7 @@
 add_definitions(/Dinline=__inline /D__STDC__=1)
-add_compile_flags("/X /GR- /GS- /Zl /W3")
+add_compile_flags("/X /GR- /EHs-c- /GS- /Zl /W3")
 # HACK: for VS 11+ we need to explicitly disable SSE, which is off by
 # default for older compilers. See bug #7174
@@ -108,6 +108,12 @@
 endfunction()
 function(set_module_type_toolchain MODULE TYPE)
+    if(CPP_USE_STL)
+        if((${TYPE} STREQUAL "kernelmodedriver") OR (${TYPE} STREQUAL
"wdmdriver"))
+            message(FATAL_ERROR "Use of STL in kernelmodedriver or wdmdriver type
module prohibited")
+        endif()
+        #target_link_libraries(${MODULE} stlport oldnames)
+    endif()
     if((${TYPE} STREQUAL "win32dll") OR (${TYPE} STREQUAL "win32ocx")
OR (${TYPE} STREQUAL "cpl"))
         add_target_link_flags(${MODULE} "/DLL")
     elseif(${TYPE} STREQUAL "kernelmodedriver")
Modified: trunk/reactos/dll/directx/ksproxy/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ksproxy/CMakeL…
==============================================================================
--- trunk/reactos/dll/directx/ksproxy/CMakeLists.txt    [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/ksproxy/CMakeLists.txt    [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_STL)
 spec2def(ksproxy.ax ksproxy.spec)
@@ -27,14 +27,6 @@
 set_module_type(ksproxy win32dll)
 set_target_properties(ksproxy PROPERTIES SUFFIX ".ax")
-if(MSVC)
-    add_target_compile_flags(ksproxy "/GR-")
-else()
-    # FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-    #add_target_compile_flags(ksproxy "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
-
 target_link_libraries(ksproxy strmiids)
 add_importlibs(ksproxy advapi32 ole32 setupapi ksuser msvcrt kernel32 ntdll)
 add_dependencies(ksproxy dxsdk)
Modified: trunk/reactos/dll/opengl/glu32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/glu32/CMakeList…
==============================================================================
--- trunk/reactos/dll/opengl/glu32/CMakeLists.txt       [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/glu32/CMakeLists.txt       [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,21 +1,18 @@
+
+set_cpp(WITH_RUNTIME)
 include_directories(BEFORE
     include
     src/include
     src/libnurbs/internals
     src/libnurbs/interface
-    src/libnurbs/nurbtess
-)
+    src/libnurbs/nurbtess)
 add_definitions(
     -DBUILD_GLU32
     -DNDEBUG
     -DLIBRARYBUILD
-    -DRESOLVE_3D_TEXTURE_SUPPORT
-)
-
-#this library uses C++
-# set_cpp()
+    -DRESOLVE_3D_TEXTURE_SUPPORT)
 # we must use our own spec file
 spec2def(glu32.dll glu32.spec ADD_IMPORTLIB)
@@ -117,8 +114,6 @@
 set_module_type(glu32 win32dll)
 if(NOT MSVC)
-#FIXME: we really need a standard C++ library
-    target_link_libraries(glu32 -lsupc++ -lgcc)
     add_compile_flags("-Wno-error=write-strings")
 endif()
Modified: trunk/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/src/galliu…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt
[iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt
[iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -1,11 +1,9 @@
-# we link against C++ static libs
-set_cpp()
+set_cpp(WITH_STL)
 include_directories(
     ../../state_trackers/wgl
-    ../../winsys/sw
-)
+    ../../winsys/sw)
 add_definitions(-DWIN32_LEAN_AND_MEAN)
@@ -16,21 +14,20 @@
 # and gallium is kind enough to provide good def files for both MSVC/mingw-w64 and
mingw32
 if(MSVC OR (ARCH STREQUAL "amd64"))
     list(APPEND SOURCE ../../state_trackers/wgl/opengl32.def)
-else()
+else()
     list(APPEND SOURCE ../../state_trackers/wgl/opengl32.mingw.def)
 endif()
 add_library(mesa32 SHARED ${SOURCE})
-target_link_libraries(mesa32
+target_link_libraries(mesa32
     gallium_wgl
     gallium_ws_gdi
     mesa_glapi
     mesa_core
     gallium_softpipe
     gallium_core
-    mesa_glsl
-)
+    mesa_glsl)
 set_module_type(mesa32 win32dll)
@@ -42,4 +39,3 @@
 add_dependencies(mesa32 psdk)
 add_cd_file(TARGET mesa32 DESTINATION reactos/system32 FOR all)
-
Modified: trunk/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/src/glsl/C…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt       [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt       [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_STL)
 # From Sconscript
 include_directories(
@@ -18,73 +18,71 @@
     ../../generated/glsl/builtin_function.cpp
 # Regular files
     strtod.c
-       ralloc.c
+    ralloc.c
     glcpp/pp.c
     ast_expr.cpp
-       ast_function.cpp
-       ast_to_hir.cpp
-       ast_type.cpp
-       builtin_variables.cpp
-       glsl_parser_extras.cpp
-       glsl_types.cpp
-       glsl_symbol_table.cpp
-       hir_field_selection.cpp
-       ir_basic_block.cpp
-       ir_clone.cpp
-       ir_constant_expression.cpp
-       ir.cpp
-       ir_expression_flattening.cpp
-       ir_function_can_inline.cpp
-       ir_function_detect_recursion.cpp
-       ir_function.cpp
-       ir_hierarchical_visitor.cpp
-       ir_hv_accept.cpp
-       ir_import_prototypes.cpp
-       ir_print_visitor.cpp
-       ir_reader.cpp
-       ir_rvalue_visitor.cpp
-       ir_set_program_inouts.cpp
-       ir_validate.cpp
-       ir_variable_refcount.cpp
-       linker.cpp
-       link_functions.cpp
-       link_uniforms.cpp
-       loop_analysis.cpp
-       loop_controls.cpp
-       loop_unroll.cpp
-       lower_clip_distance.cpp
-       lower_discard.cpp
-       lower_if_to_cond_assign.cpp
-       lower_instructions.cpp
-       lower_jumps.cpp
-       lower_mat_op_to_vec.cpp
-       lower_noise.cpp
-       lower_texture_projection.cpp
-       lower_variable_index_to_cond_assign.cpp
-       lower_vec_index_to_cond_assign.cpp
-       lower_vec_index_to_swizzle.cpp
-       lower_vector.cpp
-       lower_output_reads.cpp
-       opt_algebraic.cpp
-       opt_constant_folding.cpp
-       opt_constant_propagation.cpp
-       opt_constant_variable.cpp
-       opt_copy_propagation.cpp
-       opt_copy_propagation_elements.cpp
-       opt_dead_code.cpp
-       opt_dead_code_local.cpp
-       opt_dead_functions.cpp
-       opt_discard_simplification.cpp
-       opt_function_inlining.cpp
-       opt_if_simplification.cpp
-       opt_noop_swizzle.cpp
-       opt_redundant_jumps.cpp
-       opt_structure_splitting.cpp
-       opt_swizzle_swizzle.cpp
-       opt_tree_grafting.cpp
-       s_expression.cpp)
+    ast_function.cpp
+    ast_to_hir.cpp
+    ast_type.cpp
+    builtin_variables.cpp
+    glsl_parser_extras.cpp
+    glsl_types.cpp
+    glsl_symbol_table.cpp
+    hir_field_selection.cpp
+    ir_basic_block.cpp
+    ir_clone.cpp
+    ir_constant_expression.cpp
+    ir.cpp
+    ir_expression_flattening.cpp
+    ir_function_can_inline.cpp
+    ir_function_detect_recursion.cpp
+    ir_function.cpp
+    ir_hierarchical_visitor.cpp
+    ir_hv_accept.cpp
+    ir_import_prototypes.cpp
+    ir_print_visitor.cpp
+    ir_reader.cpp
+    ir_rvalue_visitor.cpp
+    ir_set_program_inouts.cpp
+    ir_validate.cpp
+    ir_variable_refcount.cpp
+    linker.cpp
+    link_functions.cpp
+    link_uniforms.cpp
+    loop_analysis.cpp
+    loop_controls.cpp
+    loop_unroll.cpp
+    lower_clip_distance.cpp
+    lower_discard.cpp
+    lower_if_to_cond_assign.cpp
+    lower_instructions.cpp
+    lower_jumps.cpp
+    lower_mat_op_to_vec.cpp
+    lower_noise.cpp
+    lower_texture_projection.cpp
+    lower_variable_index_to_cond_assign.cpp
+    lower_vec_index_to_cond_assign.cpp
+    lower_vec_index_to_swizzle.cpp
+    lower_vector.cpp
+    lower_output_reads.cpp
+    opt_algebraic.cpp
+    opt_constant_folding.cpp
+    opt_constant_propagation.cpp
+    opt_constant_variable.cpp
+    opt_copy_propagation.cpp
+    opt_copy_propagation_elements.cpp
+    opt_dead_code.cpp
+    opt_dead_code_local.cpp
+    opt_dead_functions.cpp
+    opt_discard_simplification.cpp
+    opt_function_inlining.cpp
+    opt_if_simplification.cpp
+    opt_noop_swizzle.cpp
+    opt_redundant_jumps.cpp
+    opt_structure_splitting.cpp
+    opt_swizzle_swizzle.cpp
+    opt_tree_grafting.cpp
+    s_expression.cpp)
-#this is just a helper library, don't include it in the all target
+# this is just a helper library, don't include it in the all target
 add_library(mesa_glsl STATIC EXCLUDE_FROM_ALL ${SOURCE})
-
-
Modified: trunk/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/src/mapi/g…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -4,8 +4,7 @@
     -D_GDI32_ # prevent gl* being declared __declspec(dllimport) in MS headers
     -DBUILD_GL32 # declare gl* as __declspec(dllexport) in Mesa headers
     -D_GLAPI_NO_EXPORTS # prevent _glapi_* from being declared __declspec(dllimport)
-    -DKHRONOS_DLL_EXPORTS
-)
+    -DKHRONOS_DLL_EXPORTS)
 if((ARCH STREQUAL "i386") AND (NOT MSVC))
     list(APPEND SOURCE glapi_x86.S)
@@ -33,4 +32,4 @@
     add_compile_flags("-Wno-unused-function")
 endif()
-add_library(mesa_glapi STATIC EXCLUDE_FROM_ALL ${SOURCE})
+add_library(mesa_glapi STATIC EXCLUDE_FROM_ALL ${SOURCE})
Modified: trunk/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/src/mesa/C…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt       [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt       [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,3 +1,5 @@
+
+set_cpp(WITH_STL)
 add_definitions(
     -DFEATURE_GL=1
@@ -12,9 +14,6 @@
     ../glsl
     .
     ../../generated/mesa)
-
-# This library uses C++
-set_cpp()
 if((ARCH STREQUAL "i386") AND (NOT MSVC))
     list(APPEND SOURCE
@@ -296,9 +295,9 @@
     # drivers/common/driverfuncs.c
     # drivers/common/meta.c
 )
-
+
 if(NOT MSVC)
     add_compile_flags("-Wno-format")
 endif()
-add_library(mesa_core STATIC EXCLUDE_FROM_ALL ${SOURCE})
+add_library(mesa_core STATIC EXCLUDE_FROM_ALL ${SOURCE})
Modified: trunk/reactos/dll/win32/browseui/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/browseui/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/browseui/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/browseui/CMakeLists.txt     [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,12 +1,8 @@
-set_cpp()
+set_cpp(WITH_RUNTIME)
 add_definitions(
     -D__WINESRC__)
-
-if (MSVC)
-    add_compile_flags("/EHa-")
-endif()
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
@@ -70,4 +66,3 @@
 add_pch(browseui precomp.h)
 add_cd_file(TARGET browseui DESTINATION reactos/system32 FOR all)
-
Modified: trunk/reactos/dll/win32/netshell/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netshell/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/netshell/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/netshell/CMakeLists.txt     [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,9 +1,11 @@
+
+set_cpp(WITH_RUNTIME)
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
 add_definitions(-D_NETSHELL_)
-set_cpp()
+
 spec2def(netshell.dll netshell.spec)
 list(APPEND SOURCE
Modified: trunk/reactos/dll/win32/shell32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/CMakeLis…
==============================================================================
--- trunk/reactos/dll/win32/shell32/CMakeLists.txt      [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/CMakeLists.txt      [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,4 +1,5 @@
-set_cpp()
+
+set_cpp(WITH_RUNTIME)
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
Modified: trunk/reactos/drivers/storage/ide/uniata/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/uniata…
==============================================================================
--- trunk/reactos/drivers/storage/ide/uniata/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/ide/uniata/CMakeLists.txt     [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -1,11 +1,11 @@
+
+set_cpp()
 include_directories(
     BEFORE ${CMAKE_CURRENT_SOURCE_DIR}
     inc)
 #add_definitions(-D_DEBUG)
-
-set_cpp()
 list(APPEND SOURCE
     id_ata.cpp
@@ -19,14 +19,11 @@
 add_library(uniata SHARED ${SOURCE} idedma.rc)
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(uniata "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
+
+if(NOT MSVC)
+    # FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
     #allow_warnings(uniata)
-    #add_target_compile_flags(uniata "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti -Wno-error")
+    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS
"-Wno-error")
 endif()
 add_pch(uniata stdafx.h)
Modified: trunk/reactos/drivers/usb/usbehci/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbehci/CMakeL…
==============================================================================
--- trunk/reactos/drivers/usb/usbehci/CMakeLists.txt    [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbehci/CMakeLists.txt    [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -21,16 +21,6 @@
     libcntpr
     ${PSEH_LIB})
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(usbehci "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    target_link_libraries(usbehci -lgcc)
-    #add_target_compile_flags(usbehci "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
-
 set_module_type(usbehci kernelmodedriver)
 add_importlibs(usbehci ntoskrnl hal usbd)
Modified: trunk/reactos/drivers/usb/usbohci/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbohci/CMakeL…
==============================================================================
--- trunk/reactos/drivers/usb/usbohci/CMakeLists.txt    [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbohci/CMakeLists.txt    [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -21,16 +21,6 @@
     libcntpr
     ${PSEH_LIB})
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(usbohci "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    target_link_libraries(usbohci -lgcc)
-    #add_target_compile_flags(usbohci "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
-
 set_module_type(usbohci kernelmodedriver)
 add_importlibs(usbohci ntoskrnl hal usbd)
Modified: trunk/reactos/drivers/usb/usbuhci/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/usbuhci/CMakeL…
==============================================================================
--- trunk/reactos/drivers/usb/usbuhci/CMakeLists.txt    [iso-8859-1] (original)
+++ trunk/reactos/drivers/usb/usbuhci/CMakeLists.txt    [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -22,16 +22,6 @@
     libcntpr
     ${PSEH_LIB})
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(usbuhci "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    target_link_libraries(usbuhci -lgcc)
-    #add_target_compile_flags(usbuhci "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
-
 set_module_type(usbuhci kernelmodedriver)
 add_importlibs(usbuhci ntoskrnl hal usbd)
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt      [iso-8859-1]
(original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt      [iso-8859-1] Sat
Jun 22 14:44:56 2013
@@ -57,15 +57,6 @@
     libcntpr
     ${PSEH_LIB})
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(portcls "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    #add_target_compile_flags(portcls "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
-
 set_module_type(portcls kernelmodedriver ENTRYPOINT 0 )
 add_pch(portcls private.hpp)
 add_importlibs(portcls ntoskrnl ks drmk hal)
Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/…
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt    [iso-8859-1]
(original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt    [iso-8859-1] Sat
Jun 22 14:44:56 2013
@@ -12,33 +12,23 @@
     adapter.cpp
     common.cpp
     mintopo.cpp
-    minwave.cpp
-)
+    minwave.cpp)
 add_library(cmipci SHARED
     ${SOURCE}
-    cmipci.rc
-)
+    cmipci.rc)
-target_link_libraries(cmipci
-    stdunk
-    libcntpr
-)
+target_link_libraries(cmipci stdunk libcntpr)
 set_module_type(cmipci wdmdriver UNICODE ENTRYPOINT 0)
-add_importlibs(cmipci
-    portcls
-    hal
-    ntoskrnl)
+add_importlibs(cmipci portcls hal ntoskrnl)
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(portcls "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    #add_target_compile_flags(portcls "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti -Wno-write-strings -Wno-switch -Wno-error")
+if(NOT MSVC)
+    # FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
+    #add_target_compile_flags(portcls "-Wno-write-strings -Wno-switch")
+    #allow_warnings(portcls)
+    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS
"-Wno-write-strings -Wno-switch -Wno-error")
 endif()
 add_cd_file(TARGET cmipci DESTINATION reactos/system32/drivers FOR all)
Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/…
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt
[iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt
[iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -1,16 +1,13 @@
+
+set_cpp()
 include_directories(..)
-set_cpp()
-
 add_executable(cmicontrol
     main.cpp
-    window.rc
-)
+    window.rc)
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
 if(NOT MSVC)
-    #add_target_compile_flags(cmicontrol "-fno-exceptions -fno-rtti")
     set_source_files_properties(main.cpp PROPERTIES COMPILE_FLAGS
"-Wno-write-strings")
 endif()
@@ -25,9 +22,8 @@
     setupapi
     winmm
     msvcrt
-    kernel32
-)
+    kernel32)
 set_module_type(cmicontrol win32gui)
-add_cd_file(TARGET cmicontrol DESTINATION reactos/system32/drivers FOR all)
+add_cd_file(TARGET cmicontrol DESTINATION reactos/system32/drivers FOR all)
Modified: trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/…
==============================================================================
--- trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt
[iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt
[iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -3,19 +3,8 @@
 add_library(cmicpl SHARED
     cmicpl.cpp
-    cmicpl.rc
-)
+    cmicpl.rc)
 set_module_type(cmicpl cpl UNICODE)
-
-add_importlibs(cmicpl
-    shell32
-    msvcrt
-    kernel32
-)
-
-if (NOT MSVC)
-  target_link_libraries(cmicpl -lgcc)
-endif()
-
+add_importlibs(cmicpl shell32 msvcrt kernel32)
 add_cd_file(TARGET cmicpl DESTINATION reactos/system32/drivers FOR all)
Modified: trunk/reactos/lib/atl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/atl/CMakeLists.txt?rev…
==============================================================================
--- trunk/reactos/lib/atl/CMakeLists.txt        [iso-8859-1] (original)
+++ trunk/reactos/lib/atl/CMakeLists.txt        [iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -1,3 +1,7 @@
+
+if(NOT MSVC)
+    set_cpp(WITH_RTTI)
+endif()
 add_definitions(
     -DUNICODE -D_UNICODE
Modified: trunk/reactos/lib/drivers/libusb/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/libusb/CMakeLi…
==============================================================================
--- trunk/reactos/lib/drivers/libusb/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/libusb/CMakeLists.txt     [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,3 +1,4 @@
+
 set_cpp()
 remove_definitions(-D_WIN32_WINNT=0x502)
@@ -18,12 +19,3 @@
 add_library(libusb ${SOURCE})
 add_dependencies(libusb bugcodes)
-
-# FIXME: 
http://www.cmake.org/Bug/view.php?id=12998
-if(MSVC)
-    #add_target_compile_flags(libusb "/GR-")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "/GR-")
-else()
-    #add_target_compile_flags(libusb "-fno-exceptions -fno-rtti")
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fno-exceptions
-fno-rtti")
-endif()
Modified: trunk/reactos/lib/drivers/sound/stdunk/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/sound/stdunk/C…
==============================================================================
--- trunk/reactos/lib/drivers/sound/stdunk/CMakeLists.txt       [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/sound/stdunk/CMakeLists.txt       [iso-8859-1] Sat Jun 22
14:44:56 2013
@@ -2,9 +2,3 @@
 set_cpp()
 add_library(stdunk STATIC cunknown.cpp)
-
-if(MSVC)
-    add_target_compile_flags(stdunk "/GR-")
-else()
-    add_target_compile_flags(stdunk "-fno-exceptions -fno-rtti")
-endif()
Modified: trunk/reactos/lib/sdk/comsupp/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/comsupp/CMakeLists…
==============================================================================
--- trunk/reactos/lib/sdk/comsupp/CMakeLists.txt        [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/comsupp/CMakeLists.txt        [iso-8859-1] Sat Jun 22 14:44:56
2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_EXCEPTIONS)
 add_library(comsupp comsupp.cpp)
 add_dependencies(comsupp psdk)
Modified: trunk/rostests/rosautotest/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/CMakeLists.tx…
==============================================================================
--- trunk/rostests/rosautotest/CMakeLists.txt   [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/CMakeLists.txt   [iso-8859-1] Sat Jun 22 14:44:56 2013
@@ -1,5 +1,5 @@
-set_cpp()
+set_cpp(WITH_EXCEPTIONS WITH_STL)
 list(APPEND SOURCE
     CConfiguration.cpp