[CMAKE]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 22 Jun 2013 14:44:56 +0000 (14:44 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 22 Jun 2013 14:44:56 +0000 (14:44 +0000)
- rework set_cpp to allow fine-grained control over enabled language features
CORE-6950

svn path=/trunk/; revision=59288

31 files changed:
reactos/base/applications/atactl/CMakeLists.txt
reactos/base/applications/games/solitaire/CMakeLists.txt
reactos/base/applications/games/spider/CMakeLists.txt
reactos/base/applications/network/telnet/CMakeLists.txt
reactos/base/applications/sndrec32/CMakeLists.txt
reactos/base/shell/explorer/CMakeLists.txt
reactos/cmake/CMakeMacros.cmake
reactos/cmake/gcc.cmake
reactos/cmake/msvc.cmake
reactos/dll/directx/ksproxy/CMakeLists.txt
reactos/dll/opengl/glu32/CMakeLists.txt
reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt
reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt
reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt
reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt
reactos/dll/win32/browseui/CMakeLists.txt
reactos/dll/win32/netshell/CMakeLists.txt
reactos/dll/win32/shell32/CMakeLists.txt
reactos/drivers/storage/ide/uniata/CMakeLists.txt
reactos/drivers/usb/usbehci/CMakeLists.txt
reactos/drivers/usb/usbohci/CMakeLists.txt
reactos/drivers/usb/usbuhci/CMakeLists.txt
reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt
reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt
reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt
reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt
reactos/lib/atl/CMakeLists.txt
reactos/lib/drivers/libusb/CMakeLists.txt
reactos/lib/drivers/sound/stdunk/CMakeLists.txt
reactos/lib/sdk/comsupp/CMakeLists.txt
rostests/rosautotest/CMakeLists.txt

index 05df183..24e85a6 100644 (file)
@@ -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 @@ if(NOT MSVC)
     # 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)
index b91c584..9bb86e7 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_RUNTIME)
 
 include_directories(${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib)
 
index 526e401..83660dd 100644 (file)
@@ -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
index 6c09094..8f1af80 100644 (file)
@@ -1,7 +1,7 @@
 
-add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
+set_cpp(WITH_STL)
 
-set_cpp()
+add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
 
 add_executable(telnet
     src/ansiprsr.cpp
index 7c8b4eb..72640fc 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_RUNTIME)
 
 add_executable(sndrec32
     audio_format.cpp
index 395ea5c..3121993 100644 (file)
@@ -1,7 +1,7 @@
 
 add_subdirectory(notifyhook)
 
-set_cpp()
+set_cpp(WITH_RTTI WITH_EXCEPTIONS WITH_STL)
 
 add_definitions(
     -DWIN32
index 5d7c6e1..6d227ca 100644 (file)
@@ -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)
-    set(IS_CPP 1)
-    if(MSVC)
-        include_directories(${REACTOS_SOURCE_DIR}/include/c++)
+    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)
 endmacro()
 
 function(add_dependency_node _node)
index 1229b78..6559071 100644 (file)
@@ -15,6 +15,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)
 #workaround
@@ -190,12 +192,15 @@ function(set_image_base MODULE IMAGE_BASE)
 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)
+            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"))
index 67ebd22..bf89a42 100644 (file)
@@ -20,7 +20,7 @@ endif()
 
 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 @@ function(set_image_base MODULE IMAGE_BASE)
 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")
index b8fdd3d..e3ca96f 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_STL)
 
 spec2def(ksproxy.ax ksproxy.spec)
 
@@ -27,14 +27,6 @@ add_library(ksproxy SHARED ${SOURCE} ksproxy.rc)
 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)
index 6892dc0..0801b3c 100644 (file)
@@ -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 @@ add_library(glu32 SHARED ${SOURCE})
 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()
 
index bbcadbf..e4cabe0 100644 (file)
@@ -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 @@ list(APPEND SOURCE
 # 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 @@ endif()
 
 add_dependencies(mesa32 psdk)
 add_cd_file(TARGET mesa32 DESTINATION reactos/system32 FOR all)
-    
\ No newline at end of file
index 30e4668..fde70ec 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_STL)
 
 # From Sconscript
 include_directories(
@@ -18,73 +18,71 @@ list(APPEND SOURCE
     ../../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})
-  
-    
\ No newline at end of file
index 06302d1..7e68ce9 100644 (file)
@@ -4,8 +4,7 @@ add_definitions(
     -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 @@ if(NOT MSVC)
     add_compile_flags("-Wno-unused-function")
 endif()
 
-add_library(mesa_glapi STATIC EXCLUDE_FROM_ALL ${SOURCE})
\ No newline at end of file
+add_library(mesa_glapi STATIC EXCLUDE_FROM_ALL ${SOURCE})
index 9517183..42c3191 100644 (file)
@@ -1,4 +1,6 @@
 
+set_cpp(WITH_STL)
+
 add_definitions(
     -DFEATURE_GL=1
     -D_GDI32_           # prevent gl* being declared __declspec(dllimport) in MS headers
@@ -12,9 +14,6 @@ include_directories(
     ../glsl
     .
     ../../generated/mesa)
-    
-# This library uses C++
-set_cpp()
 
 if((ARCH STREQUAL "i386") AND (NOT MSVC))
     list(APPEND SOURCE
@@ -296,9 +295,9 @@ list(APPEND SOURCE
     # 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})
\ No newline at end of file
+add_library(mesa_core STATIC EXCLUDE_FROM_ALL ${SOURCE})
index 621a372..6bdd1f1 100644 (file)
@@ -1,13 +1,9 @@
 
-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_importlibs(browseui
 
 add_pch(browseui precomp.h)
 add_cd_file(TARGET browseui DESTINATION reactos/system32 FOR all)
-
index ad3b61e..2e0dd3f 100644 (file)
@@ -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
index 6ee3519..4a9c4e2 100644 (file)
@@ -1,4 +1,5 @@
-set_cpp()
+
+set_cpp(WITH_RUNTIME)
 
 remove_definitions(-D_WIN32_WINNT=0x502)
 add_definitions(-D_WIN32_WINNT=0x600)
index 00128c2..a4bf4dd 100644 (file)
@@ -1,12 +1,12 @@
 
+set_cpp()
+
 include_directories(
     BEFORE ${CMAKE_CURRENT_SOURCE_DIR}
     inc)
 
 #add_definitions(-D_DEBUG)
 
-set_cpp()
-
 list(APPEND SOURCE
     id_ata.cpp
     id_badblock.cpp
@@ -19,14 +19,11 @@ list(APPEND SOURCE
 
 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)
index 828804b..8cf3944 100644 (file)
@@ -21,16 +21,6 @@ target_link_libraries(usbehci
     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)
 
index ead60c3..eab4dc0 100644 (file)
@@ -21,16 +21,6 @@ target_link_libraries(usbohci
     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)
 
index bc31a5f..623daf0 100644 (file)
@@ -22,16 +22,6 @@ target_link_libraries(usbuhci
     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)
 
index 168dc75..1b96012 100644 (file)
@@ -57,15 +57,6 @@ target_link_libraries(portcls
     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)
index 714575f..8c5e8cf 100644 (file)
@@ -12,33 +12,23 @@ list(APPEND SOURCE
     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)
index 2fb34fb..a60725a 100644 (file)
@@ -1,16 +1,13 @@
 
-include_directories(..)
-
 set_cpp()
 
+include_directories(..)
+
 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 @@ add_importlibs(cmicontrol
     setupapi
     winmm
     msvcrt
-    kernel32
-)
+    kernel32)
 
 set_module_type(cmicontrol win32gui)
 
-add_cd_file(TARGET cmicontrol DESTINATION reactos/system32/drivers FOR all)
\ No newline at end of file
+add_cd_file(TARGET cmicontrol DESTINATION reactos/system32/drivers FOR all)
index e50243d..a781d84 100644 (file)
@@ -3,19 +3,8 @@ set_cpp()
 
 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)
index ea353fe..cc4bb75 100644 (file)
@@ -1,4 +1,8 @@
 
+if(NOT MSVC)
+    set_cpp(WITH_RTTI)
+endif()
+
 add_definitions(
     -DUNICODE -D_UNICODE
     -DROS_Headers)
index afbcd3f..25106b9 100644 (file)
@@ -1,3 +1,4 @@
+
 set_cpp()
 
 remove_definitions(-D_WIN32_WINNT=0x502)
@@ -18,12 +19,3 @@ list(APPEND SOURCE
 
 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()
index 0e2c29d..9a19e7f 100644 (file)
@@ -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()
index 0514982..5721a92 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_EXCEPTIONS)
 
 add_library(comsupp comsupp.cpp)
 add_dependencies(comsupp psdk)
index c46327a..f1e1566 100644 (file)
@@ -1,5 +1,5 @@
 
-set_cpp()
+set_cpp(WITH_EXCEPTIONS WITH_STL)
 
 list(APPEND SOURCE
     CConfiguration.cpp