Reduce warnings from moc-generated code
- The auto-generated code produces a lot of warnings from Clang 8; this obscures the more meaningful warnings from actual Calamares code, so tone the warnings down. - For Clang, set CALAMARES_MOC_OPTIONS. - Add convenience CMake function for automoccing. It applies the options as needed to a given target.
This commit is contained in:
parent
cef2f50510
commit
bdb7bf71a8
@ -208,6 +208,8 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
|||||||
set( CMAKE_TOOLCHAIN_PREFIX "llvm-" )
|
set( CMAKE_TOOLCHAIN_PREFIX "llvm-" )
|
||||||
|
|
||||||
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
||||||
|
|
||||||
|
set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" )
|
||||||
else()
|
else()
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
||||||
@ -509,6 +511,7 @@ install(
|
|||||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
"CMakeModules/CalamaresAddLibrary.cmake"
|
||||||
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
||||||
"CMakeModules/CalamaresAddTranslations.cmake"
|
"CMakeModules/CalamaresAddTranslations.cmake"
|
||||||
|
"CMakeModules/CalamaresAutomoc.cmake"
|
||||||
"CMakeModules/CMakeColors.cmake"
|
"CMakeModules/CMakeColors.cmake"
|
||||||
DESTINATION
|
DESTINATION
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
# flag (i.e. `-D`) so only state the name (optionally, also the value)
|
# flag (i.e. `-D`) so only state the name (optionally, also the value)
|
||||||
# without a `-D` prefixed to it. Pass in a CMake list as needed.
|
# without a `-D` prefixed to it. Pass in a CMake list as needed.
|
||||||
include( CMakeParseArguments )
|
include( CMakeParseArguments )
|
||||||
|
include( CalamaresAutomoc )
|
||||||
|
|
||||||
function(calamares_add_library)
|
function(calamares_add_library)
|
||||||
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
||||||
@ -81,9 +82,7 @@ function(calamares_add_library)
|
|||||||
add_library(${target} SHARED ${LIBRARY_SOURCES})
|
add_library(${target} SHARED ${LIBRARY_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# definitions - can this be moved into set_target_properties below?
|
calamares_automoc(${target})
|
||||||
add_definitions(${QT_DEFINITIONS})
|
|
||||||
set_target_properties(${target} PROPERTIES AUTOMOC TRUE)
|
|
||||||
|
|
||||||
if(LIBRARY_EXPORT_MACRO)
|
if(LIBRARY_EXPORT_MACRO)
|
||||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
||||||
|
36
CMakeModules/CalamaresAutomoc.cmake
Normal file
36
CMakeModules/CalamaresAutomoc.cmake
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0+
|
||||||
|
# License-Filename: LICENSE
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# Helper function for doing automoc on a target.
|
||||||
|
#
|
||||||
|
# Sets AUTOMOC TRUE for a target.
|
||||||
|
#
|
||||||
|
# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that
|
||||||
|
# as well to set options passed to MOC. This can be used to add
|
||||||
|
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
||||||
|
# reduces compiler warnings in generated MOC code.
|
||||||
|
#
|
||||||
|
|
||||||
|
function(calamares_automoc TARGET)
|
||||||
|
set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE )
|
||||||
|
if ( CALAMARES_AUTOMOC_OPTIONS )
|
||||||
|
set_target_properties( ${TARGET} PROPERTIES AUTOMOC_MOC_OPTIONS "${CALAMARES_AUTOMOC_OPTIONS}" )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
@ -84,10 +84,10 @@ endif()
|
|||||||
add_library( calamares SHARED ${libSources} ${kdsagSources} ${utilsSources} )
|
add_library( calamares SHARED ${libSources} ${kdsagSources} ${utilsSources} )
|
||||||
set_target_properties( calamares
|
set_target_properties( calamares
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
AUTOMOC TRUE
|
|
||||||
VERSION ${CALAMARES_VERSION_SHORT}
|
VERSION ${CALAMARES_VERSION_SHORT}
|
||||||
SOVERSION ${CALAMARES_VERSION_SHORT}
|
SOVERSION ${CALAMARES_VERSION_SHORT}
|
||||||
)
|
)
|
||||||
|
calamares_automoc( calamares )
|
||||||
|
|
||||||
target_link_libraries( calamares
|
target_link_libraries( calamares
|
||||||
LINK_PRIVATE
|
LINK_PRIVATE
|
||||||
@ -114,7 +114,7 @@ if ( ECM_FOUND AND BUILD_TESTING )
|
|||||||
Qt5::Core
|
Qt5::Core
|
||||||
Qt5::Test
|
Qt5::Test
|
||||||
)
|
)
|
||||||
set_target_properties( libcalamarestest PROPERTIES AUTOMOC TRUE )
|
calamares_automoc( libcalamarestest )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Make symlink lib/calamares/libcalamares.so to lib/libcalamares.so.VERSION so
|
# Make symlink lib/calamares/libcalamares.so to lib/libcalamares.so.VERSION so
|
||||||
|
4
src/libcalamares/utils/moc-warnings.h
Normal file
4
src/libcalamares/utils/moc-warnings.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic ignored "-Wextra-semi-stmt"
|
||||||
|
#pragma clang diagnostic ignored "-Wredundant-parens"
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user