From 142f0f29cd0c863e6cda7a43efaef17d5f14a48b Mon Sep 17 00:00:00 2001 From: Lukas W Date: Mon, 16 Oct 2017 11:17:03 +0200 Subject: [PATCH] MSVC: Fix compiler warning flags --- CMakeLists.txt | 70 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7969fd9b0..69083361e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,7 @@ IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0026 OLD) CMAKE_POLICY(SET CMP0050 OLD) ENDIF() + CMAKE_POLICY(SET CMP0020 NEW) ENDIF(COMMAND CMAKE_POLICY) INCLUDE(AddFileDependencies) @@ -300,13 +301,13 @@ ENDIF(WANT_PORTAUDIO) IF(WANT_SOUNDIO) FIND_PACKAGE(SoundIo) IF(SOUNDIO_FOUND) - SET(LMMS_HAVE_SOUNDIO TRUE) - SET(STATUS_SOUNDIO "OK") - INCLUDE_DIRECTORIES("${SOUNDIO_INCLUDE_DIR}") + SET(LMMS_HAVE_SOUNDIO TRUE) + SET(STATUS_SOUNDIO "OK") + INCLUDE_DIRECTORIES("${SOUNDIO_INCLUDE_DIR}") ELSE(SOUNDIO_FOUND) - SET(SOUNDIO_INCLUDE_DIR "") - SET(STATUS_SOUNDIO "not found, please install libsoundio if you require libsoundio support") - SET(SOUNDIO_LIBRARY "") + SET(SOUNDIO_INCLUDE_DIR "") + SET(STATUS_SOUNDIO "not found, please install libsoundio if you require libsoundio support") + SET(SOUNDIO_LIBRARY "") ENDIF(SOUNDIO_FOUND) ENDIF(WANT_SOUNDIO) @@ -473,24 +474,34 @@ ENDIF(WANT_DEBUG_FPE) # check for libsamplerate PKG_CHECK_MODULES(SAMPLERATE REQUIRED samplerate>=0.1.8) + +message("Compiler: ${CMAKE_CXX_COMPILER_ID} Is MSVC: ${MSVC} Version: ${MSVC}") # set compiler flags -SET(WERROR_FLAGS "-Wall -Werror=unused-function -Wno-sign-compare -Wno-strict-overflow") -OPTION(USE_WERROR "Add -werror to the build flags. Stops the build on warnings" OFF) -IF(${USE_WERROR}) - SET(WERROR_FLAGS "${WERROR_FLAGS} -Werror") +IF(CMAKE_CXX_COMPILER_ID MATCHES (GNU|AppleClang)) + SET(WERROR_FLAGS "-Wall -Werror=unused-function -Wno-sign-compare -Wno-strict-overflow") + OPTION(USE_WERROR "Add -werror to the build flags. Stops the build on warnings" OFF) + IF(${USE_WERROR}) + SET(WERROR_FLAGS "${WERROR_FLAGS} -Werror") + ENDIF() + + # Due to a regression in gcc-4.8.X, we need to disable array-bounds check + IF (CMAKE_COMPILER_IS_GNUCXX AND ((CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "4.8.0") OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.0") OR LMMS_BUILD_WIN32)) + SET(WERROR_FLAGS "${WERROR_FLAGS} -Wno-array-bounds") + ENDIF() +ELSE() + SET(WERROR_FLAGS "/W2") + IF(${USE_WERROR}) + SET(WERROR_FLAGS "${WERROR_FLAGS} /WX") + ENDIF() ENDIF() -# Due to a regression in gcc-4.8.X, we need to disable array-bounds check -IF (CMAKE_COMPILER_IS_GNUCXX AND ((CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "4.8.0") OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.0") OR LMMS_BUILD_WIN32)) - SET(WERROR_FLAGS "${WERROR_FLAGS} -Wno-array-bounds") -ENDIF() IF(NOT CMAKE_BUILD_TYPE) message(STATUS "Setting build type to 'Release' as none was specified.") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" - "MinSizeRel" "RelWithDebInfo") + "MinSizeRel" "RelWithDebInfo") ENDIF() SET(CMAKE_C_FLAGS "${WERROR_FLAGS} ${CMAKE_C_FLAGS}") @@ -508,23 +519,26 @@ LIST(SORT LMMS_INCLUDES) # we somehow have to make LMMS-binary depend on MOC-files ADD_FILE_DEPENDENCIES("${CMAKE_BINARY_DIR}/lmmsconfig.h") -IF(WIN32) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes") -ELSE(WIN32) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -DPIC") -ENDIF(WIN32) +#SET(CMAKE_POSITION_INDEPENDENT_CODE ON) +IF(CMAKE_CXX_COMPILER_ID MATCHES (GNU|AppleClang)) + IF(WIN32) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes") + ELSE(WIN32) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -DPIC") + ENDIF(WIN32) +ENDIF() # use ccache OPTION(USE_CCACHE "Use ccache for compilation" OFF) IF(USE_CCACHE) - FIND_PROGRAM(CCACHE ccache) - IF (CCACHE) - MESSAGE(STATUS "Using ccache found in PATH") - SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) - SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) - ELSE() - MESSAGE(WARNING "USE_CCACHE enabled, but no ccache found") - ENDIF() + FIND_PROGRAM(CCACHE ccache) + IF (CCACHE) + MESSAGE(STATUS "Using ccache found in PATH") + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) + ELSE() + MESSAGE(WARNING "USE_CCACHE enabled, but no ccache found") + ENDIF() ENDIF() # make sub-directories