From d8b4a7bd9e2838d4702bd3c6e084e6820538b9b8 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 22 Jun 2013 14:44:56 +0000 Subject: [PATCH] [CMAKE] - rework set_cpp to allow fine-grained control over enabled language features CORE-6950 svn path=/trunk/; revision=59288 --- .../base/applications/atactl/CMakeLists.txt | 3 +- .../games/solitaire/CMakeLists.txt | 2 +- .../applications/games/spider/CMakeLists.txt | 6 +- .../network/telnet/CMakeLists.txt | 4 +- .../base/applications/sndrec32/CMakeLists.txt | 2 +- reactos/base/shell/explorer/CMakeLists.txt | 2 +- reactos/cmake/CMakeMacros.cmake | 78 ++++++++++- reactos/cmake/gcc.cmake | 13 +- reactos/cmake/msvc.cmake | 8 +- reactos/dll/directx/ksproxy/CMakeLists.txt | 10 +- reactos/dll/opengl/glu32/CMakeLists.txt | 13 +- .../gallium/targets/libgl-gdi/CMakeLists.txt | 14 +- .../dll/opengl/mesa/src/glsl/CMakeLists.txt | 132 +++++++++--------- .../opengl/mesa/src/mapi/glapi/CMakeLists.txt | 5 +- .../dll/opengl/mesa/src/mesa/CMakeLists.txt | 9 +- reactos/dll/win32/browseui/CMakeLists.txt | 7 +- reactos/dll/win32/netshell/CMakeLists.txt | 4 +- reactos/dll/win32/shell32/CMakeLists.txt | 3 +- .../drivers/storage/ide/uniata/CMakeLists.txt | 15 +- reactos/drivers/usb/usbehci/CMakeLists.txt | 10 -- reactos/drivers/usb/usbohci/CMakeLists.txt | 10 -- reactos/drivers/usb/usbuhci/CMakeLists.txt | 10 -- .../wdm/audio/backpln/portcls/CMakeLists.txt | 9 -- .../audio/drivers/CMIDriver/CMakeLists.txt | 28 ++-- .../CMIDriver/cmicontrol/CMakeLists.txt | 14 +- .../drivers/CMIDriver/cpl/CMakeLists.txt | 15 +- reactos/lib/atl/CMakeLists.txt | 4 + reactos/lib/drivers/libusb/CMakeLists.txt | 10 +- .../lib/drivers/sound/stdunk/CMakeLists.txt | 6 - reactos/lib/sdk/comsupp/CMakeLists.txt | 2 +- rostests/rosautotest/CMakeLists.txt | 2 +- 31 files changed, 218 insertions(+), 232 deletions(-) diff --git a/reactos/base/applications/atactl/CMakeLists.txt b/reactos/base/applications/atactl/CMakeLists.txt index 05df18381b3..24e85a64138 100644 --- a/reactos/base/applications/atactl/CMakeLists.txt +++ b/reactos/base/applications/atactl/CMakeLists.txt @@ -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) diff --git a/reactos/base/applications/games/solitaire/CMakeLists.txt b/reactos/base/applications/games/solitaire/CMakeLists.txt index b91c58405fa..9bb86e79276 100644 --- a/reactos/base/applications/games/solitaire/CMakeLists.txt +++ b/reactos/base/applications/games/solitaire/CMakeLists.txt @@ -1,5 +1,5 @@ -set_cpp() +set_cpp(WITH_RUNTIME) include_directories(${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib) diff --git a/reactos/base/applications/games/spider/CMakeLists.txt b/reactos/base/applications/games/spider/CMakeLists.txt index 526e4017025..83660dd9d71 100644 --- a/reactos/base/applications/games/spider/CMakeLists.txt +++ b/reactos/base/applications/games/spider/CMakeLists.txt @@ -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 diff --git a/reactos/base/applications/network/telnet/CMakeLists.txt b/reactos/base/applications/network/telnet/CMakeLists.txt index 6c090940f97..8f1af80c28a 100644 --- a/reactos/base/applications/network/telnet/CMakeLists.txt +++ b/reactos/base/applications/network/telnet/CMakeLists.txt @@ -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 diff --git a/reactos/base/applications/sndrec32/CMakeLists.txt b/reactos/base/applications/sndrec32/CMakeLists.txt index 7c8b4ebe5b4..72640fc35ae 100644 --- a/reactos/base/applications/sndrec32/CMakeLists.txt +++ b/reactos/base/applications/sndrec32/CMakeLists.txt @@ -1,5 +1,5 @@ -set_cpp() +set_cpp(WITH_RUNTIME) add_executable(sndrec32 audio_format.cpp diff --git a/reactos/base/shell/explorer/CMakeLists.txt b/reactos/base/shell/explorer/CMakeLists.txt index 395ea5c5e79..31219933c12 100644 --- a/reactos/base/shell/explorer/CMakeLists.txt +++ b/reactos/base/shell/explorer/CMakeLists.txt @@ -1,7 +1,7 @@ add_subdirectory(notifyhook) -set_cpp() +set_cpp(WITH_RTTI WITH_EXCEPTIONS WITH_STL) add_definitions( -DWIN32 diff --git a/reactos/cmake/CMakeMacros.cmake b/reactos/cmake/CMakeMacros.cmake index 5d7c6e1a018..6d227ca54ef 100644 --- a/reactos/cmake/CMakeMacros.cmake +++ b/reactos/cmake/CMakeMacros.cmake @@ -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 +# and . 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) diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index 1229b789749..6559071f1ac 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -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")) diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 67ebd2264d9..bf89a427725 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -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") diff --git a/reactos/dll/directx/ksproxy/CMakeLists.txt b/reactos/dll/directx/ksproxy/CMakeLists.txt index b8fdd3d1563..e3ca96fcf58 100644 --- a/reactos/dll/directx/ksproxy/CMakeLists.txt +++ b/reactos/dll/directx/ksproxy/CMakeLists.txt @@ -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) diff --git a/reactos/dll/opengl/glu32/CMakeLists.txt b/reactos/dll/opengl/glu32/CMakeLists.txt index 6892dc062f8..0801b3c09bd 100644 --- a/reactos/dll/opengl/glu32/CMakeLists.txt +++ b/reactos/dll/opengl/glu32/CMakeLists.txt @@ -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() diff --git a/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt b/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt index bbcadbf13d0..e4cabe040e5 100644 --- a/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/src/gallium/targets/libgl-gdi/CMakeLists.txt @@ -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 diff --git a/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt b/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt index 30e46683ff7..fde70ecf591 100644 --- a/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/src/glsl/CMakeLists.txt @@ -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 diff --git a/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt b/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt index 06302d149b7..7e68ce97ec1 100644 --- a/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/src/mapi/glapi/CMakeLists.txt @@ -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}) diff --git a/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt b/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt index 95171831c66..42c3191c8ee 100644 --- a/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/src/mesa/CMakeLists.txt @@ -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}) diff --git a/reactos/dll/win32/browseui/CMakeLists.txt b/reactos/dll/win32/browseui/CMakeLists.txt index 621a37229df..6bdd1f14d6c 100644 --- a/reactos/dll/win32/browseui/CMakeLists.txt +++ b/reactos/dll/win32/browseui/CMakeLists.txt @@ -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) - diff --git a/reactos/dll/win32/netshell/CMakeLists.txt b/reactos/dll/win32/netshell/CMakeLists.txt index ad3b61e7820..2e0dd3f4916 100644 --- a/reactos/dll/win32/netshell/CMakeLists.txt +++ b/reactos/dll/win32/netshell/CMakeLists.txt @@ -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 diff --git a/reactos/dll/win32/shell32/CMakeLists.txt b/reactos/dll/win32/shell32/CMakeLists.txt index 6ee35190979..4a9c4e2907b 100644 --- a/reactos/dll/win32/shell32/CMakeLists.txt +++ b/reactos/dll/win32/shell32/CMakeLists.txt @@ -1,4 +1,5 @@ -set_cpp() + +set_cpp(WITH_RUNTIME) remove_definitions(-D_WIN32_WINNT=0x502) add_definitions(-D_WIN32_WINNT=0x600) diff --git a/reactos/drivers/storage/ide/uniata/CMakeLists.txt b/reactos/drivers/storage/ide/uniata/CMakeLists.txt index 00128c2f8d8..a4bf4dd6083 100644 --- a/reactos/drivers/storage/ide/uniata/CMakeLists.txt +++ b/reactos/drivers/storage/ide/uniata/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/usb/usbehci/CMakeLists.txt b/reactos/drivers/usb/usbehci/CMakeLists.txt index 828804b6f7e..8cf3944e827 100644 --- a/reactos/drivers/usb/usbehci/CMakeLists.txt +++ b/reactos/drivers/usb/usbehci/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/usb/usbohci/CMakeLists.txt b/reactos/drivers/usb/usbohci/CMakeLists.txt index ead60c3c270..eab4dc0a0d0 100644 --- a/reactos/drivers/usb/usbohci/CMakeLists.txt +++ b/reactos/drivers/usb/usbohci/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/usb/usbuhci/CMakeLists.txt b/reactos/drivers/usb/usbuhci/CMakeLists.txt index bc31a5f8a09..623daf03385 100644 --- a/reactos/drivers/usb/usbuhci/CMakeLists.txt +++ b/reactos/drivers/usb/usbuhci/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt b/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt index 168dc75a869..1b96012fa2b 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt +++ b/reactos/drivers/wdm/audio/backpln/portcls/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt b/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt index 714575f05a2..8c5e8cfb046 100644 --- a/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt +++ b/reactos/drivers/wdm/audio/drivers/CMIDriver/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt b/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt index 2fb34fba7dc..a60725aa05a 100644 --- a/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt +++ b/reactos/drivers/wdm/audio/drivers/CMIDriver/cmicontrol/CMakeLists.txt @@ -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) diff --git a/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt b/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt index e50243da0ce..a781d848ba3 100644 --- a/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt +++ b/reactos/drivers/wdm/audio/drivers/CMIDriver/cpl/CMakeLists.txt @@ -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) diff --git a/reactos/lib/atl/CMakeLists.txt b/reactos/lib/atl/CMakeLists.txt index ea353fe542f..cc4bb757d12 100644 --- a/reactos/lib/atl/CMakeLists.txt +++ b/reactos/lib/atl/CMakeLists.txt @@ -1,4 +1,8 @@ +if(NOT MSVC) + set_cpp(WITH_RTTI) +endif() + add_definitions( -DUNICODE -D_UNICODE -DROS_Headers) diff --git a/reactos/lib/drivers/libusb/CMakeLists.txt b/reactos/lib/drivers/libusb/CMakeLists.txt index afbcd3ff3e2..25106b9f070 100644 --- a/reactos/lib/drivers/libusb/CMakeLists.txt +++ b/reactos/lib/drivers/libusb/CMakeLists.txt @@ -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() diff --git a/reactos/lib/drivers/sound/stdunk/CMakeLists.txt b/reactos/lib/drivers/sound/stdunk/CMakeLists.txt index 0e2c29d49f2..9a19e7f7d19 100644 --- a/reactos/lib/drivers/sound/stdunk/CMakeLists.txt +++ b/reactos/lib/drivers/sound/stdunk/CMakeLists.txt @@ -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() diff --git a/reactos/lib/sdk/comsupp/CMakeLists.txt b/reactos/lib/sdk/comsupp/CMakeLists.txt index 051498293ea..5721a924888 100644 --- a/reactos/lib/sdk/comsupp/CMakeLists.txt +++ b/reactos/lib/sdk/comsupp/CMakeLists.txt @@ -1,5 +1,5 @@ -set_cpp() +set_cpp(WITH_EXCEPTIONS) add_library(comsupp comsupp.cpp) add_dependencies(comsupp psdk) diff --git a/rostests/rosautotest/CMakeLists.txt b/rostests/rosautotest/CMakeLists.txt index c46327a0d62..f1e15669dc2 100644 --- a/rostests/rosautotest/CMakeLists.txt +++ b/rostests/rosautotest/CMakeLists.txt @@ -1,5 +1,5 @@ -set_cpp() +set_cpp(WITH_EXCEPTIONS WITH_STL) list(APPEND SOURCE CConfiguration.cpp -- 2.17.1