From 7303ee08ecae3d164ff18fc06aee1521e2f995d5 Mon Sep 17 00:00:00 2001 From: alemuntoni Date: Fri, 23 Oct 2020 17:53:43 +0200 Subject: [PATCH] set u3d install --- src/external/u3d/CMakeLists.txt | 35 ++++++++----- .../RTL/Platform/Lin32/Common/IFXOSLoader.cpp | 51 ++++++++++++++++++- .../RTL/Platform/Mac32/Common/IFXOSLoader.cpp | 50 +++++++++++++++++- 3 files changed, 120 insertions(+), 16 deletions(-) diff --git a/src/external/u3d/CMakeLists.txt b/src/external/u3d/CMakeLists.txt index 5e4b32fc3..e6e6ecc40 100644 --- a/src/external/u3d/CMakeLists.txt +++ b/src/external/u3d/CMakeLists.txt @@ -264,20 +264,6 @@ SET(DEPENDENCIES_SRCS ${JPEG_SRCS} ${JPEG_PUBLIC_HDRS} ${JPEG_PRIVATE_HDRS}) -SET_PROPERTY( SOURCE - ${U3D_DIR}/src/RTL/Platform/${U3D_PLATFORM}/Common/IFXOSLoader.cpp - PROPERTY COMPILE_DEFINITIONS U3DPluginsPath="Plugins" U3DCorePath="." ) -IF(STDIO_HACK) -SET_PROPERTY( SOURCE - ${U3D_DIR}/src/RTL/Component/Exporting/CIFXStdioWriteBufferX.cpp - ${U3D_DIR}/src/IDTF/ConverterDriver.cpp - ${U3D_DIR}/src/IDTF/File.cpp - PROPERTY COMPILE_DEFINITIONS STDIO_HACK ) -SET_PROPERTY( SOURCE - ${U3D_DIR}/src/RTL/Platform/${U3D_PLATFORM}/Common/IFXOSLoader.cpp - PROPERTY COMPILE_DEFINITIONS U3DPluginsPath="Plugins" U3DCorePath="." STDIO_HACK ) -ENDIF(STDIO_HACK) - #==== @@ -1481,8 +1467,29 @@ ENDIF(APPLE) IF(UNIX AND NOT APPLE) ADD_LIBRARY( external-IDTFConverter STATIC ${IDTFConverter_SRCS} ${IDTFConverter_HDRS} ) ENDIF(UNIX AND NOT APPLE) + +set_target_properties(external-IDTFConverter PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/external/u3d) +set(OUT_PATH_LIB "${PROJECT_BINARY_DIR}/external/u3d") + +message(--U3D_OUT_PATH: ${OUT_PATH_LIB}) + TARGET_LINK_LIBRARIES( external-IDTFConverter IFXCoreStatic ${ADDITIONAL_LIBRARIES} ${CMAKE_DL_LIBS} ) set_property(TARGET external-IDTFConverter PROPERTY FOLDER External) +SET_PROPERTY( SOURCE + ${U3D_DIR}/src/RTL/Platform/${U3D_PLATFORM}/Common/IFXOSLoader.cpp + PROPERTY COMPILE_DEFINITIONS U3DPluginsPath="Plugins" U3DCorePath="${OUT_PATH_LIB}" U3DInstallPath="${MESHLAB_LIB_INSTALL_DIR}") +IF(STDIO_HACK) +SET_PROPERTY( SOURCE + ${U3D_DIR}/src/RTL/Component/Exporting/CIFXStdioWriteBufferX.cpp + ${U3D_DIR}/src/IDTF/ConverterDriver.cpp + ${U3D_DIR}/src/IDTF/File.cpp + PROPERTY COMPILE_DEFINITIONS STDIO_HACK ) +SET_PROPERTY( SOURCE + ${U3D_DIR}/src/RTL/Platform/${U3D_PLATFORM}/Common/IFXOSLoader.cpp + PROPERTY COMPILE_DEFINITIONS U3DPluginsPath="Plugins" U3DCorePath="${OUT_PATH_LIB}" U3DInstallPath="${MESHLAB_LIB_INSTALL_DIR}" STDIO_HACK ) +ENDIF(STDIO_HACK) + install(TARGETS IFXCore IFXCoreStatic IFXExporting IFXScheduling external-IDTFConverter DESTINATION ${MESHLAB_LIB_INSTALL_DIR}) diff --git a/src/external/u3d/src/RTL/Platform/Lin32/Common/IFXOSLoader.cpp b/src/external/u3d/src/RTL/Platform/Lin32/Common/IFXOSLoader.cpp index 2cda96085..4ceddee82 100644 --- a/src/external/u3d/src/RTL/Platform/Lin32/Common/IFXOSLoader.cpp +++ b/src/external/u3d/src/RTL/Platform/Lin32/Common/IFXOSLoader.cpp @@ -44,7 +44,13 @@ static const char* s_pCorePathEnvVar = "U3D_LIBDIR"; static const char* s_pCorePathDefault = U3DCorePath; #else static const char* s_pCorePathDefault = "."; -#endif +#endif //U3DCorePath +#ifdef U3DInstallPath +static const char* s_pInstallPathDefault = U3DInstallPath; +#else +static const char* s_pInstallPathDefault = "."; +#endif //U3DInstallPath + #ifdef U3DPluginsPath #define IFXOSFI_SUBDIR U3DPluginsPath #else @@ -95,6 +101,28 @@ IFXHANDLE IFXAPI IFXLoadLibrary( const IFXCHAR* pFileName ) IFXTRACE_GENERIC(L"%s:%i \"%s/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); } } + + //add for meshlab + if (!handle) + { + const char* pCorePath = s_pInstallPathDefault; + + char newFileName[_MAXIMUM_FILENAME_LENGTH]; + size += strlen(pCorePath); + + if (size+1 < _MAXIMUM_FILENAME_LENGTH) + { + strcpy(newFileName, pCorePath); + strcat(newFileName, "/"); + strcat(newFileName, fileName); + + handle = dlopen(newFileName, RTLD_LAZY | RTLD_GLOBAL ); + } + else + { + IFXTRACE_GENERIC(L"%s:%i \"%s/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); + } + } if (!handle) { @@ -116,6 +144,27 @@ IFXHANDLE IFXAPI IFXLoadLibrary( const IFXCHAR* pFileName ) IFXTRACE_GENERIC(L"%s:%i \"%s/" IFXOSFI_SUBDIR "/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); } } + + //add for meshlab + if (!handle) + { + const char* pCorePath = s_pInstallPathDefault; + + char newFileName[_MAXIMUM_FILENAME_LENGTH]; + + if (size+2+strlen(IFXOSFI_SUBDIR) < _MAXIMUM_FILENAME_LENGTH) + { + strcpy(newFileName, pCorePath); + strcat(newFileName, "/" IFXOSFI_SUBDIR "/"); + strcat(newFileName, fileName); + + handle = dlopen(newFileName, RTLD_LAZY | RTLD_GLOBAL ); + } + else + { + IFXTRACE_GENERIC(L"%s:%i \"%s/" IFXOSFI_SUBDIR "/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); + } + } if (!handle) { diff --git a/src/external/u3d/src/RTL/Platform/Mac32/Common/IFXOSLoader.cpp b/src/external/u3d/src/RTL/Platform/Mac32/Common/IFXOSLoader.cpp index 717d32442..65d017b52 100644 --- a/src/external/u3d/src/RTL/Platform/Mac32/Common/IFXOSLoader.cpp +++ b/src/external/u3d/src/RTL/Platform/Mac32/Common/IFXOSLoader.cpp @@ -43,7 +43,12 @@ static const char* s_pCorePathEnvVar = "U3D_LIBDIR"; static const char* s_pCorePathDefault = U3DCorePath; #else static const char* s_pCorePathDefault = "."; -#endif +#endif //U3DCorePath +#ifdef U3DInstallPath +static const char* s_pInstallPathDefault = U3DInstallPath; +#else +static const char* s_pInstallPathDefault = "."; +#endif //U3DInstallPath #ifdef U3DPluginsPath #define IFXOSFI_SUBDIR U3DPluginsPath #else @@ -94,6 +99,28 @@ IFXHANDLE IFXAPI IFXLoadLibrary( const IFXCHAR* pFileName ) IFXTRACE_GENERIC(L"%s:%i \"%s/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); } } + + //add for meshlab + if (!handle) + { + const char* pCorePath = s_pInstallPathDefault; + + char newFileName[_MAXIMUM_FILENAME_LENGTH]; + size += strlen(pCorePath); + + if (size+1 < _MAXIMUM_FILENAME_LENGTH) + { + strcpy(newFileName, pCorePath); + strcat(newFileName, "/"); + strcat(newFileName, fileName); + + handle = dlopen(newFileName, RTLD_LAZY ); + } + else + { + IFXTRACE_GENERIC(L"%s:%i \"%s/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); + } + } if (!handle) { @@ -115,6 +142,27 @@ IFXHANDLE IFXAPI IFXLoadLibrary( const IFXCHAR* pFileName ) IFXTRACE_GENERIC(L"%s:%i \"%s/" IFXOSFI_SUBDIR "/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); } } + + //add for meshlab + if (!handle) + { + const char* pCorePath = s_pInstallPathDefault; + + char newFileName[_MAXIMUM_FILENAME_LENGTH]; + + if (size+2+strlen(IFXOSFI_SUBDIR) < _MAXIMUM_FILENAME_LENGTH) + { + strcpy(newFileName, pCorePath); + strcat(newFileName, "/" IFXOSFI_SUBDIR "/"); + strcat(newFileName, fileName); + + handle = dlopen(newFileName, RTLD_LAZY ); + } + else + { + IFXTRACE_GENERIC(L"%s:%i \"%s/" IFXOSFI_SUBDIR "/%s\" FileName lenth is more then %i\n",__FILE__, __LINE__, pCorePath, fileName, _MAXIMUM_FILENAME_LENGTH); + } + } if (!handle) {