From b8808ef9966b7397ecad7bfe956d4e3dec0f54f7 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 7 Feb 2015 23:54:15 +0000 Subject: [PATCH] [CMAKE] - Support NO_PRIVATE_WARNINGS parameter when invoking spec2def to suppress warnings about symbols that should be private - Disable such warnings for msxml3, ole32 and rsaenh CORE-8445 svn path=/trunk/; revision=66200 --- reactos/cmake/gcc.cmake | 11 ++++++++--- reactos/cmake/msvc.cmake | 15 ++++++--------- reactos/dll/win32/msxml3/CMakeLists.txt | 2 +- reactos/dll/win32/ole32/CMakeLists.txt | 2 +- reactos/dll/win32/rsaenh/CMakeLists.txt | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index b8a3fac71d4..45c38009e3d 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -310,7 +310,7 @@ function(generate_import_lib _libname _dllname _spec_file) # Generate the def for the import lib add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def - COMMAND native-spec2def -n=${_dllname} -a=${ARCH2} --implib -d=${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} + COMMAND native-spec2def -n=${_dllname} -a=${ARCH2} ${ARGN} --implib -d=${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def PROPERTIES EXTERNAL_OBJECT TRUE) @@ -328,7 +328,7 @@ set(CMAKE_IMPLIB_CREATE_STATIC_LIBRARY "${CMAKE_DLLTOOL} --def --kill- set(CMAKE_IMPLIB_DELAYED_CREATE_STATIC_LIBRARY "${CMAKE_DLLTOOL} --def --kill-at --output-delaylib=") function(spec2def _dllname _spec_file) - cmake_parse_arguments(__spec2def "ADD_IMPORTLIB;WITH_RELAY" "" "" ${ARGN}) + cmake_parse_arguments(__spec2def "ADD_IMPORTLIB;NO_PRIVATE_WARNINGS;WITH_RELAY" "" "" ${ARGN}) # Get library basename get_filename_component(_file ${_dllname} NAME_WE) @@ -349,7 +349,12 @@ function(spec2def _dllname _spec_file) DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def) if(__spec2def_ADD_IMPORTLIB) - generate_import_lib(lib${_file} ${_dllname} ${_spec_file}) + set(_extraflags) + if(__spec2def_NO_PRIVATE_WARNINGS) + set(_extraflags --no-private-warnings) + endif() + + generate_import_lib(lib${_file} ${_dllname} ${_spec_file} ${_extraflags}) endif() endfunction() diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 05f515cdb2e..e2f654f2578 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -315,14 +315,8 @@ else() set(SPEC2DEF_ARCH i386) endif() function(spec2def _dllname _spec_file) - # Do we also want to add importlib targets? - if(${ARGC} GREATER 2) - if(${ARGN} STREQUAL "ADD_IMPORTLIB") - set(__add_importlib TRUE) - else() - message(FATAL_ERROR "Wrong argument passed to spec2def, ${ARGN}") - endif() - endif() + + cmake_parse_arguments(__spec2def "ADD_IMPORTLIB;NO_PRIVATE_WARNINGS" "" "" ${ARGN}) # Get library basename get_filename_component(_file ${_dllname} NAME_WE) @@ -338,7 +332,10 @@ function(spec2def _dllname _spec_file) COMMAND native-spec2def --ms -a=${SPEC2DEF_ARCH} -n=${_dllname} -d=${CMAKE_CURRENT_BINARY_DIR}/${_file}.def -s=${CMAKE_CURRENT_BINARY_DIR}/${_file}_stubs.c ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def) - if(__add_importlib) + if(__spec2def_ADD_IMPORTLIB) + # TODO: NO_PRIVATE_WARNINGS should add /IGNORE:4104 to the link command + # line. However that should be on all command lines outside of + # generate_import_lib in the first place. generate_import_lib(lib${_file} ${_dllname} ${_spec_file}) endif() endfunction() diff --git a/reactos/dll/win32/msxml3/CMakeLists.txt b/reactos/dll/win32/msxml3/CMakeLists.txt index 31b11f14309..7cda3f9f9d4 100644 --- a/reactos/dll/win32/msxml3/CMakeLists.txt +++ b/reactos/dll/win32/msxml3/CMakeLists.txt @@ -13,7 +13,7 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/wine ${REACTOS_SOURCE_DIR}/lib/3rdparty/libwin-iconv) -spec2def(msxml3.dll msxml3.spec ADD_IMPORTLIB) +spec2def(msxml3.dll msxml3.spec ADD_IMPORTLIB NO_PRIVATE_WARNINGS) add_typelib(msxml3_v1.idl) list(APPEND SOURCE diff --git a/reactos/dll/win32/ole32/CMakeLists.txt b/reactos/dll/win32/ole32/CMakeLists.txt index 3c023649da1..9d69102bb5d 100644 --- a/reactos/dll/win32/ole32/CMakeLists.txt +++ b/reactos/dll/win32/ole32/CMakeLists.txt @@ -11,7 +11,7 @@ add_definitions( -DWINE_REGISTER_DLL) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) -spec2def(ole32.dll ole32.spec ADD_IMPORTLIB) +spec2def(ole32.dll ole32.spec ADD_IMPORTLIB NO_PRIVATE_WARNINGS) generate_idl_iids(dcom.idl) add_idl_headers(ole32idl dcom.idl irot.idl) add_rpc_files(client irot.idl) diff --git a/reactos/dll/win32/rsaenh/CMakeLists.txt b/reactos/dll/win32/rsaenh/CMakeLists.txt index 7e73f526ca5..ebb1b0eae7d 100644 --- a/reactos/dll/win32/rsaenh/CMakeLists.txt +++ b/reactos/dll/win32/rsaenh/CMakeLists.txt @@ -1,7 +1,7 @@ add_definitions(-D__WINESRC__) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) -spec2def(rsaenh.dll rsaenh.spec ADD_IMPORTLIB) +spec2def(rsaenh.dll rsaenh.spec ADD_IMPORTLIB NO_PRIVATE_WARNINGS) list(APPEND SOURCE aes.c