From 694dc8a0c3fe42d20d9503c516b97a2a80148a28 Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-0R560PH\\George" Date: Sat, 30 Apr 2022 08:08:34 -0700 Subject: [PATCH 1/7] Add an option to treat warnings as errors --- Build.md | 3 ++- CMakeLists.txt | 28 ++++++++++++++++++++++------ code/CMakeLists.txt | 7 ------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Build.md b/Build.md index b4d1bdad0..7445e1bce 100644 --- a/Build.md +++ b/Build.md @@ -95,7 +95,8 @@ The cmake-build-environment provides options to configure the build. The followi - **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). - **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. - **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. -- **ASSIMP_ERROR_MAX( default OFF)**: Enable all warnings. +- **ASSIMP_WARNINGS_AS_ERRORS( default OFF)**: Treat all warnings as errors. +- **ASSIMP_WARNINGS_MAX( default OFF)**: Enable all warnings. - **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. - **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. - **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. diff --git a/CMakeLists.txt b/CMakeLists.txt index 072803fda..711a05b2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,7 +108,11 @@ OPTION( ASSIMP_INSTALL "Disable this if you want to use assimp as a submodule." ON ) -OPTION ( ASSIMP_ERROR_MAX +OPTION ( ASSIMP_WARNINGS_AS_ERRORS + "Treat all warnings as errors." + OFF +) +OPTION ( ASSIMP_WARNINGS_MAX "Enable all warnings." OFF ) @@ -146,12 +150,10 @@ IF (WIN32) # Multibyte character set is deprecated since at least MSVC2015 (possibly earlier) ADD_DEFINITIONS( -DUNICODE -D_UNICODE ) ENDIF() - # Link statically against c/c++ lib to avoid missing redistriburable such as # "VCRUNTIME140.dll not found. Try reinstalling the app.", but give users # a choice to opt for the shared runtime if they want. option(USE_STATIC_CRT "Link against the static runtime libraries." OFF) - # The CMAKE_CXX_FLAGS vars can be overriden by some Visual Studio generators, so we use an alternative # global method here: if (${USE_STATIC_CRT}) @@ -324,13 +326,26 @@ IF (ASSIMP_COVERALLS) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") ENDIF() -IF (ASSIMP_ERROR_MAX) +IF (ASSIMP_WARNINGS_AS_ERRORS) + MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)") + set(ASSIMP_ERROR_MAX ON) + IF (MSVC) + # TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) + # TARGET_COMPILE_OPTIONS(assimp_cmd PRIVATE /WX) + ADD_COMPILE_OPTIONS(/WX) + ELSE() + # TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) + # TARGET_COMPILE_OPTIONS(assimp_cmd PRIVATE -Werror) + ADD_COMPILE_OPTIONS(-Werror) + ENDIF() +ENDIF() + +IF (ASSIMP_WARNINGS_MAX) MESSAGE(STATUS "Turning on all warnings") IF (MSVC) ADD_COMPILE_OPTIONS(/W4) # NB: there is a /Wall option, pedantic mode ELSE() - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") + ADD_COMPILE_OPTIONS(-Wall) ENDIF() ENDIF() @@ -694,6 +709,7 @@ ENDIF() # Main assimp code ADD_SUBDIRECTORY( code/ ) + IF ( ASSIMP_BUILD_ASSIMP_TOOLS ) # The viewer for windows only IF (WIN32) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index cff4d2457..5336392cc 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1179,13 +1179,6 @@ ADD_LIBRARY(assimp::assimp ALIAS assimp) TARGET_USE_COMMON_OUTPUT_DIRECTORY(assimp) -# enable warnings as errors ######################################## -IF (MSVC) - TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) -ELSE() - TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) -ENDIF() - # adds C_FLAGS required to compile zip.c on old GCC 4.x compiler TARGET_COMPILE_FEATURES(assimp PRIVATE c_std_99) From bf32c4c40844a648ed0bbd3de618ca64a5d428d1 Mon Sep 17 00:00:00 2001 From: hgdagon Date: Sat, 30 Apr 2022 08:40:48 -0700 Subject: [PATCH 2/7] Fixed `ASSIMP_WARNINGS_MAX` reference --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 711a05b2b..4ebf53d38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -150,10 +150,12 @@ IF (WIN32) # Multibyte character set is deprecated since at least MSVC2015 (possibly earlier) ADD_DEFINITIONS( -DUNICODE -D_UNICODE ) ENDIF() + # Link statically against c/c++ lib to avoid missing redistriburable such as # "VCRUNTIME140.dll not found. Try reinstalling the app.", but give users # a choice to opt for the shared runtime if they want. option(USE_STATIC_CRT "Link against the static runtime libraries." OFF) + # The CMAKE_CXX_FLAGS vars can be overriden by some Visual Studio generators, so we use an alternative # global method here: if (${USE_STATIC_CRT}) @@ -328,15 +330,13 @@ ENDIF() IF (ASSIMP_WARNINGS_AS_ERRORS) MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)") - set(ASSIMP_ERROR_MAX ON) + set(ASSIMP_WARNINGS_MAX ON) IF (MSVC) - # TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) - # TARGET_COMPILE_OPTIONS(assimp_cmd PRIVATE /WX) - ADD_COMPILE_OPTIONS(/WX) + TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) + # ADD_COMPILE_OPTIONS(/WX) ELSE() - # TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) - # TARGET_COMPILE_OPTIONS(assimp_cmd PRIVATE -Werror) - ADD_COMPILE_OPTIONS(-Werror) + TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) + # ADD_COMPILE_OPTIONS(-Werror) ENDIF() ENDIF() From 209c302f560cdc9be01d9d73446104035ea46e7a Mon Sep 17 00:00:00 2001 From: hgdagon Date: Tue, 3 May 2022 12:23:33 -0700 Subject: [PATCH 3/7] Merged `ASSIMP_WARNINGS_AS_ERRORS` and `ASSIMP_WARNINGS_MAX` And set it ON by default. --- CMakeLists.txt | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ebf53d38..cc8bfe3f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,10 +112,6 @@ OPTION ( ASSIMP_WARNINGS_AS_ERRORS "Treat all warnings as errors." OFF ) -OPTION ( ASSIMP_WARNINGS_MAX - "Enable all warnings." - OFF -) OPTION ( ASSIMP_ASAN "Enable AddressSanitizer." OFF @@ -330,22 +326,12 @@ ENDIF() IF (ASSIMP_WARNINGS_AS_ERRORS) MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)") - set(ASSIMP_WARNINGS_MAX ON) IF (MSVC) - TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) - # ADD_COMPILE_OPTIONS(/WX) + TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX) + # ADD_COMPILE_OPTIONS(/W4 /WX) ELSE() - TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) - # ADD_COMPILE_OPTIONS(-Werror) - ENDIF() -ENDIF() - -IF (ASSIMP_WARNINGS_MAX) - MESSAGE(STATUS "Turning on all warnings") - IF (MSVC) - ADD_COMPILE_OPTIONS(/W4) # NB: there is a /Wall option, pedantic mode - ELSE() - ADD_COMPILE_OPTIONS(-Wall) + TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror) + # ADD_COMPILE_OPTIONS(-Wall -Werror) ENDIF() ENDIF() From 4faae3d0e9ec8c9195f1d18475cf746b89164eb8 Mon Sep 17 00:00:00 2001 From: hgdagon Date: Tue, 3 May 2022 12:24:34 -0700 Subject: [PATCH 4/7] Updated build options in Build.md --- Build.md | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/Build.md b/Build.md index 7445e1bce..d6abe7b67 100644 --- a/Build.md +++ b/Build.md @@ -84,24 +84,28 @@ Besides the toolchain, compilation should be the same as for Linux / Unix. ### CMake build options The cmake-build-environment provides options to configure the build. The following options can be used: -- **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. -- **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle -- **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. -- **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets -- **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active -- **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality -- **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib -- **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. -- **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). -- **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. -- **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. -- **ASSIMP_WARNINGS_AS_ERRORS( default OFF)**: Treat all warnings as errors. -- **ASSIMP_WARNINGS_MAX( default OFF)**: Enable all warnings. -- **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. -- **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. -- **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. -- **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. -- **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. -- **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names -- **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. -- **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. +- **ASSIMP_HUNTER_ENABLED (default OFF)**: Enable Hunter package manager support. +- **BUILD_SHARED_LIBS (default ON)**: Generation of shared libs (dll for windows, so for Linux). Set this to OFF to get a static lib. +- **ASSIMP_BUILD_FRAMEWORK (default OFF, MacOnly)**: Build package as Mac OS X Framework bundle. +- **ASSIMP_DOUBLE_PRECISION (default OFF)**: All data will be stored as double values. +- **ASSIMP_OPT_BUILD_PACKAGES (default OFF)**: Set to ON to generate CPack configuration files and packaging targets. +- **ASSIMP_ANDROID_JNIIOSYSTEM (default OFF)**: Android JNI IOSystem support is active. +- **ASSIMP_NO_EXPORT (default OFF)**: Disable Assimp's export functionality. +- **ASSIMP_BUILD_ZLIB (default OFF)**: Build our own zlib. +- **ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT (default ON)**: Build Assimp with all exporter senabled. +- **ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT (default ON)**: Build Assimp with all importer senabled. +- **ASSIMP_BUILD_ASSIMP_TOOLS (default ON)**: If the supplementary tools for Assimp are built in addition to the library. +- **ASSIMP_BUILD_SAMPLES (default OFF)**: If the official samples are built as well (needs Glut). +- **ASSIMP_BUILD_TESTS (default ON)**: If the test suite for Assimp is built in addition to the library. +- **ASSIMP_COVERALLS (default OFF)**: Enable this to measure test coverage. +- **ASSIMP_INSTALL (default ON)**: Install Assimp library. Disable this if you want to use Assimp as a submodule. +- **ASSIMP_WARNINGS_AS_ERRORS (default ON)**: Treat all warnings as errors. +- **ASSIMP_ASAN (default OFF)**: Enable AddressSanitizer. +- **ASSIMP_UBSAN (default OFF)**: Enable Undefined Behavior sanitizer. +- **ASSIMP_BUILD_DOCS (default OFF)**: Build documentation using Doxygen. OBSOLETE, see https://github.com/assimp/assimp-docs +- **ASSIMP_INJECT_DEBUG_POSTFIX (default ON)**: Inject debug postfix in .a/.so/.lib/.dll lib names +- **ASSIMP_IGNORE_GIT_HASH (default OFF)**: Don't call git to get the hash. +- **ASSIMP_INSTALL_PDB (default ON)**: Install MSVC debug files. +- **USE_STATIC_CRT (default OFF)**: Link against the static MSVC runtime libraries. +- **ASSIMP_BUILD_DRACO (default OFF)**: Build Draco libraries. Primarily for glTF. +- **ASSIMP_BUILD_ASSIMP_VIEW (default ON, if DirectX found, OFF otherwise)**: Build Assimp view tool (requires DirectX). From 18bfbaeee12660ee2d3377f1fa18aacd7221c4b0 Mon Sep 17 00:00:00 2001 From: hgdagon Date: Tue, 3 May 2022 12:31:09 -0700 Subject: [PATCH 5/7] Actually set `ASSIMP_WARNINGS_AS_ERRORS` to ON by default Whoops.... --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc8bfe3f1..8800820c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,7 +110,7 @@ OPTION( ASSIMP_INSTALL ) OPTION ( ASSIMP_WARNINGS_AS_ERRORS "Treat all warnings as errors." - OFF + ON ) OPTION ( ASSIMP_ASAN "Enable AddressSanitizer." From e1f0f5001050c34f6f495f2dc97e531a44d8065b Mon Sep 17 00:00:00 2001 From: hgdagon Date: Tue, 3 May 2022 12:57:45 -0700 Subject: [PATCH 6/7] Update CMakeLists.txt --- CMakeLists.txt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8800820c5..2aa66421c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -324,17 +324,6 @@ IF (ASSIMP_COVERALLS) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") ENDIF() -IF (ASSIMP_WARNINGS_AS_ERRORS) - MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)") - IF (MSVC) - TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX) - # ADD_COMPILE_OPTIONS(/W4 /WX) - ELSE() - TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror) - # ADD_COMPILE_OPTIONS(-Wall -Werror) - ENDIF() -ENDIF() - IF (ASSIMP_ASAN) MESSAGE(STATUS "AddressSanitizer enabled") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") From 936cc791f2cd7b4f88dda36d8b6365277a9e718d Mon Sep 17 00:00:00 2001 From: hgdagon Date: Tue, 3 May 2022 13:01:20 -0700 Subject: [PATCH 7/7] Move `ASSIMP_WARNINGS_AS_ERRORS` check --- code/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index e30a2cd0a..d2488d6f2 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1179,6 +1179,15 @@ ADD_LIBRARY(assimp::assimp ALIAS assimp) TARGET_USE_COMMON_OUTPUT_DIRECTORY(assimp) +IF (ASSIMP_WARNINGS_AS_ERRORS) + MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)") + IF (MSVC) + TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX) + ELSE() + TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror) + ENDIF() +ENDIF() + # adds C_FLAGS required to compile zip.c on old GCC 4.x compiler TARGET_COMPILE_FEATURES(assimp PRIVATE c_std_99)