From 798a95ed9b104d612e87433dc5dd7527f5a62ead Mon Sep 17 00:00:00 2001 From: apn Date: Wed, 29 Aug 2018 12:40:35 +0300 Subject: [PATCH] 0029986: Configuration - environment scripts generated by CMake on Linux do not allow starting DRAW from build folder Correct launching custom.sh in env.sh.in. Correct definition of FFMPEG_DIR in custom.build.bat/sh.in and generation of custom_*.sh (variables CSF_OCCTBinPath and CSF_OCCTLibPath are not empty on the first run) --- CMakeLists.txt | 20 ++- adm/cmake/ffmpeg.cmake | 9 ++ adm/templates/env.build.sh.in | 137 ++++++++++++++++++ .../{env.sh.in => env.install.sh.in} | 0 4 files changed, 160 insertions(+), 6 deletions(-) create mode 100644 adm/templates/env.build.sh.in rename adm/templates/{env.sh.in => env.install.sh.in} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f249f4ec53..b6029e1f9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,7 @@ set (BUILD_RESOURCES OFF CACHE BOOL "${BUILD_RESOURCES_DESCR}") # single-configuration generator set (SINGLE_GENERATOR OFF) -if (CMAKE_BUILD_TYPE) +if (DEFINED CMAKE_BUILD_TYPE) set (SINGLE_GENERATOR ON) endif() @@ -899,11 +899,19 @@ if (BUILD_SAMPLES_MFC OR BUILD_SAMPLES_QT) OCCT_COPY_FILE_OR_DIR ("adm/templates/sample.${SCRIPT_EXT}" "${CMAKE_BINARY_DIR}") endif() -# env script for draw in building environment -OCCT_CONFIGURE ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}") - -# install env script -install (FILES "${CMAKE_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}") +if (WIN32) + # env script for draw in building environment + OCCT_CONFIGURE ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}") + # install env script + install (FILES "${CMAKE_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}") +else() + set (SUB_ENV_NAME "env.${SCRIPT_EXT}") + set (SUB_ENV_BUILD_NAME "env.install.${SCRIPT_EXT}") + # install env script + OCCT_CONFIGURE_AND_INSTALL ("adm/templates/env.install.${SCRIPT_EXT}.in" "${SUB_ENV_BUILD_NAME}" "${SUB_ENV_NAME}" "${INSTALL_DIR_SCRIPT}") + # env script for draw in building environment + OCCT_CONFIGURE ("adm/templates/env.build.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}") +endif() # copy DrawAppliInit from OCCT source to build directory if (NOT EXISTS "${CMAKE_BINARY_DIR}/DrawAppliInit") diff --git a/adm/cmake/ffmpeg.cmake b/adm/cmake/ffmpeg.cmake index 89c53769bd..e4cd736e7c 100644 --- a/adm/cmake/ffmpeg.cmake +++ b/adm/cmake/ffmpeg.cmake @@ -37,6 +37,10 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg}) set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg framework (${LIBRARY_NAME})") endif() + if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR) + set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg libraries") + endif() + if (WIN32) if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}") set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg shared libraries (${LIBRARY_NAME})" FORCE) @@ -47,6 +51,9 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg}) if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}) set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared libraries (${LIBRARY_NAME})") endif() + if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR) + set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared libraries") + endif() endif() # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR @@ -56,6 +63,7 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg}) if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}") get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg libraries" FORCE) set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE) else() CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg library (${LIBRARY_NAME})") @@ -66,6 +74,7 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg}) if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}") get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH) + set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared libraries" FORCE) set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE) else() CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})") diff --git a/adm/templates/env.build.sh.in b/adm/templates/env.build.sh.in new file mode 100644 index 0000000000..4e6f2f26d2 --- /dev/null +++ b/adm/templates/env.build.sh.in @@ -0,0 +1,137 @@ +#!/bin/bash + +aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD"; + +# ----- For compatability with external application using CASROOT ----- +if [ "${CASROOT}" == "" ]; then + export CASROOT="${aScriptPath}" +fi + +# ----- Define path to 3rdparty products ----- +export THIRDPARTY_DIR="@3RDPARTY_DIR@" + +# ----- Read script arguments ----- +shopt -s nocasematch +export CASDEB=""; +if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi +if [[ "$1" == "d" ]]; then export CASDEB="d"; fi +if [[ "$1" == "relwithdeb" ]]; then export CASDEB="i"; fi +if [[ "$1" == "i" ]]; then export CASDEB="i"; fi +shopt -u nocasematch + +# ----- Set path to 3rd party and OCCT libraries ----- +anArch=`uname -m` +if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then + export ARCH="32"; +else + export ARCH="64"; +fi + +aSystem=`uname -s` +if [ "$aSystem" == "Darwin" ]; then + export WOKSTATION="mac"; + export ARCH="64"; +else + export WOKSTATION="lin"; +fi + +# ----- Set local settings ----- +if [ -e "${CASROOT}/custom.sh" ]; then + source "${CASROOT}/custom.sh" "${CASDEB}" "${ARCH}" +fi + +THRDPARTY_PATH="" +if [ "$TCL_DIR" != "" ]; then + THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "" ]; then + THRDPARTY_PATH="${TK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREETYPE_DIR" != "" ]; then + THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FREEIMAGE_DIR" != "" ]; then + THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$TBB_DIR" != "" ]; then + THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$VTK_DIR" != "" ]; then + THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$FFMPEG_DIR" != "" ]; then + THRDPARTY_PATH="${FFMPEG_DIR}:${THRDPARTY_PATH}" +fi + +if [ "$QTDIR" != "" ]; then + THRDPARTY_PATH="${QTDIR}/lib:${THRDPARTY_PATH}" +fi + +if [ "$TK_DIR" != "$TCL_DIR" ]; then + if [ "$TK_DIR" != "" ]; then + export TK_LIBRARY="${TK_DIR}/../lib/tk${TK_VERSION_WITH_DOT}" + fi + if [ "$TCL_DIR" != "" ]; then + export TCL_LIBRARY="${TCL_DIR}/../lib/tcl${TCL_VERSION_WITH_DOT}" + fi +fi + +if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${THRDPARTY_PATH}:${LD_LIBRARY_PATH}" +else + export LD_LIBRARY_PATH="${THRDPARTY_PATH}" +fi + +if [ "$CSF_OCCTBinPath" != "" ]; then + export PATH="${CSF_OCCTBinPath}:${PATH}" +fi + +if [ "$CSF_OCCTLibPath" != "" ]; then + if [ "$LD_LIBRARY_PATH" != "" ]; then + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}:${LD_LIBRARY_PATH}" + else + export LD_LIBRARY_PATH="${CSF_OCCTLibPath}" + fi +fi + +if [ "$WOKSTATION" == "mac" ]; then + if [ "$DYLD_LIBRARY_PATH" != "" ]; then + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}" + else + export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}" + fi +fi + +# ----- Set envoronment variables used by OCCT ----- +export CSF_LANGUAGE=us +export MMGT_CLEAR=1 +export CSF_SHMessage="${CSF_OCCTResourcePath}/SHMessage" +export CSF_MDTVTexturesDirectory="${CSF_OCCTResourcePath}/Textures" +export CSF_ShadersDirectory="${CSF_OCCTResourcePath}/Shaders" +export CSF_XSMessage="${CSF_OCCTResourcePath}/XSMessage" +export CSF_TObjMessage="${CSF_OCCTResourcePath}/TObj" +export CSF_StandardDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource" +export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource" +export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource" +export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt" + +# ----- Draw Harness special stuff ----- +if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then + export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources" + export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources" + + if [ -e "${CSF_OCCTResourcePath}/DrawResources/DrawDefault" ]; then + export DRAWDEFAULT="${CSF_OCCTResourcePath}/DrawResources/DrawDefault" + fi +fi diff --git a/adm/templates/env.sh.in b/adm/templates/env.install.sh.in similarity index 100% rename from adm/templates/env.sh.in rename to adm/templates/env.install.sh.in