From 75d0a818fd8bfd62aa9673043f86920388093bf9 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 7 Jul 2020 19:03:48 +0200 Subject: [PATCH] closes https://github.com/assimp/assimp/issues/3275 : fix the build when all exporters are disabled. --- code/AssetLib/M3D/M3DWrapper.cpp | 2 +- code/CMakeLists.txt | 8 ++++++++ code/Common/Exporter.cpp | 3 +++ test/unit/ut3DImportExport.cpp | 4 ---- test/unit/utIssues.cpp | 2 -- tools/assimp_cmd/WriteDump.cpp | 18 +++++++++--------- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/code/AssetLib/M3D/M3DWrapper.cpp b/code/AssetLib/M3D/M3DWrapper.cpp index b72812377..6b69fc4bd 100644 --- a/code/AssetLib/M3D/M3DWrapper.cpp +++ b/code/AssetLib/M3D/M3DWrapper.cpp @@ -128,7 +128,7 @@ void M3DWrapper::reset() { } unsigned char *M3DWrapper::Save(int quality, int flags, unsigned int &size) { -#if (!(ASSIMP_BUILD_NO_EXPORT || ASSIMP_BUILD_NO_M3D_EXPORTER)) +#if (!(ASSIMP_BUILD_NO_EXPORT || !ASSIMP_BUILD_NO_M3D_EXPORTER)) ClearSave(); saved_output_ = m3d_save(m3d_, quality, flags, &size); return saved_output_; diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 9f8f519d9..f1c0ebe49 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -254,6 +254,11 @@ MACRO(ADD_ASSIMP_IMPORTER name) ENDMACRO() if (NOT ASSIMP_NO_EXPORT) + IF( NOT ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT ) + message("here") + set(ASSIMP_EXPORTER_ENABLED FALSE) + set( ASSIMP_NO_EXPORT ON ) + ENDIF() # if this variable is set to TRUE, the user can manually disable exporters by setting # ASSIMP_BUILD_XXX_EXPORTER to FALSE for each exporter @@ -279,6 +284,9 @@ if (NOT ASSIMP_NO_EXPORT) SET(ASSIMP_EXPORTERS_ENABLED "${ASSIMP_EXPORTERS_ENABLED} ${name}") LIST(APPEND ASSIMP_EXPORTER_SRCS ${ARGN}) SOURCE_GROUP(AssetLib\\${name} FILES ${ARGN}) + ELSEIF( NOT ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT ) + message("here") + set(ASSIMP_EXPORTER_ENABLED FALSE) ELSE() SET(ASSIMP_EXPORTERS_DISABLED "${ASSIMP_EXPORTERS_DISABLED} ${name}") add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER) diff --git a/code/Common/Exporter.cpp b/code/Common/Exporter.cpp index 58fc01d91..8e7261ede 100644 --- a/code/Common/Exporter.cpp +++ b/code/Common/Exporter.cpp @@ -139,6 +139,9 @@ void ExportSceneM3DA(const char*, IOSystem*, const aiScene*, const ExportPropert void ExportAssimp2Json(const char* , IOSystem*, const aiScene* , const Assimp::ExportProperties*); #endif +#if (_MSC_VER > 1200) +# pragma warning( disable : 4100 ) +#endif static void setupExporterArray(std::vector &exporters) { #ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER exporters.push_back(Exporter::ExportFormatEntry("collada", "COLLADA - Digital Asset Exchange Schema", "dae", &ExportSceneCollada)); diff --git a/test/unit/ut3DImportExport.cpp b/test/unit/ut3DImportExport.cpp index 4588289e2..e5098a188 100644 --- a/test/unit/ut3DImportExport.cpp +++ b/test/unit/ut3DImportExport.cpp @@ -46,24 +46,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include - using namespace Assimp; - TEST(ut3DImportExport, importBoxA) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/3D/box_a.3d", aiProcess_ValidateDataStructure); ASSERT_NE(nullptr, scene); } - TEST(ut3DImportExport, importBoxD) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/3D/box_d.3d", aiProcess_ValidateDataStructure); ASSERT_NE(nullptr, scene); } - TEST(ut3DImportExport, importBoxUC) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/3D/box.uc", aiProcess_ValidateDataStructure); diff --git a/test/unit/utIssues.cpp b/test/unit/utIssues.cpp index 19d1815cb..30ab6b1e8 100644 --- a/test/unit/utIssues.cpp +++ b/test/unit/utIssues.cpp @@ -5,8 +5,6 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2020, assimp team - - All rights reserved. Redistribution and use of this software in source and binary forms, diff --git a/tools/assimp_cmd/WriteDump.cpp b/tools/assimp_cmd/WriteDump.cpp index 6d73d1f76..7ba95e3c3 100644 --- a/tools/assimp_cmd/WriteDump.cpp +++ b/tools/assimp_cmd/WriteDump.cpp @@ -45,6 +45,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Main.h" #include "PostProcessing/ProcessHelper.h" +#include "Common/assbin_chunks.h" +#include +#include "AssetLib/Assbin/AssbinFileWriter.h" +#include "AssetLib/Assxml/AssxmlFileWriter.h" + +#include const char *AICMD_MSG_DUMP_HELP = "assimp dump [] [-b] [-s] [-z] [common parameters]\n" @@ -56,13 +62,6 @@ const char *AICMD_MSG_DUMP_HELP = "\t -cdefault Default post processing: runs all recommended steps\n" "\t -cfull Fires almost all post processing steps \n"; -#include "Common/assbin_chunks.h" -#include -#include "AssetLib/Assbin/AssbinFileWriter.h" -#include "AssetLib/Assxml/AssxmlFileWriter.h" - -#include - FILE *out = nullptr; bool shortened = false; @@ -77,7 +76,7 @@ int Assimp_Dump(const char *const *params, unsigned int num) { return AssimpCmdError::Success; } - // asssimp dump in out [options] + // assimp dump in out [options] if (num < 1) { printf("%s", fail); return AssimpCmdError::InvalidNumberOfArguments; @@ -136,7 +135,7 @@ int Assimp_Dump(const char *const *params, unsigned int num) { // import the main model const aiScene *scene = ImportModel(import, in); - if (!scene) { + if (nullptr == scene) { printf("assimp dump: Unable to load input file %s\n", in.c_str()); return AssimpCmdError::FailedToLoadInputFile; } @@ -160,5 +159,6 @@ int Assimp_Dump(const char *const *params, unsigned int num) { } printf("assimp dump: Wrote output dump %s\n", cur_out.c_str()); + return AssimpCmdError::Success; }