From: Pasukhin Dmitry Date: Tue, 22 Jul 2025 20:12:11 +0000 (+0100) Subject: Configuration - Add vcpkg layout support (#618) X-Git-Tag: V8_0_0_rc2~13 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=6fb9ee594b728e2a13574551a2c757bd7a9fc02f;p=occt.git Configuration - Add vcpkg layout support (#618) - Addition of vcpkg layout configuration with CMake file placement in share/ directory for vcpkg compliance - Introduction of OCCT_PROJECT_NAME parameter (defaults to "opencascade") for customizing directory structure in vcpkg layout - Updated environment scripts and build templates to support vcpkg directory structure while maintaining backward compatibility --- diff --git a/CMakeLists.txt b/CMakeLists.txt index fcdc8cea77..3dbc415935 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,7 +260,30 @@ if (NOT INSTALL_DIR_LAYOUT) else() set (INSTALL_DIR_LAYOUT "Unix" CACHE STRING "${INSTALL_DIR_LAYOUT_DESCR}" FORCE) endif() - SET_PROPERTY(CACHE INSTALL_DIR_LAYOUT PROPERTY STRINGS Windows Unix) + SET_PROPERTY(CACHE INSTALL_DIR_LAYOUT PROPERTY STRINGS Windows Unix Vcpkg) +endif() + +# Define layout boolean variables for optimization +set(LAYOUT_IS_WINDOWS FALSE) +set(LAYOUT_IS_UNIX FALSE) +set(LAYOUT_IS_VCPKG FALSE) + +if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Windows") + set(LAYOUT_IS_WINDOWS TRUE) +elseif ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + set(LAYOUT_IS_UNIX TRUE) +elseif ("${INSTALL_DIR_LAYOUT}" STREQUAL "Vcpkg") + set(LAYOUT_IS_VCPKG TRUE) +endif() + +# set project name for install directories (only used for vcpkg layout) +if (LAYOUT_IS_VCPKG) + if (NOT DEFINED OCCT_PROJECT_NAME) + set (OCCT_PROJECT_NAME "opencascade" CACHE STRING "${OCCT_PROJECT_NAME_DESCR}") + endif() +else() + # unset the variable if it was previously set for vcpkg but layout changed + OCCT_CHECK_AND_UNSET (OCCT_PROJECT_NAME) endif() # check INSTALL_DIR_LAYOUT changes and update INSTALL_DIR_* paths if necessary @@ -271,6 +294,16 @@ elseif (NOT "${INSTALL_DIR_LAYOUT_PREV}" STREQUAL "${INSTALL_DIR_LAYOUT}") # The structure of install folder should be reset due to changed layout OCCT_CHECK_AND_UNSET_INSTALL_DIR_SUBDIRS () + # Manage OCCT_PROJECT_NAME based on layout + if (LAYOUT_IS_VCPKG) + if (NOT DEFINED OCCT_PROJECT_NAME) + set (OCCT_PROJECT_NAME "opencascade" CACHE STRING "${OCCT_PROJECT_NAME_DESCR}") + endif() + else() + # unset OCCT_PROJECT_NAME if layout changed from vcpkg to something else + OCCT_CHECK_AND_UNSET (OCCT_PROJECT_NAME) + endif() + # Unset INSTALL_DIR_WITH_VERSION on windows if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Windows") OCCT_CHECK_AND_UNSET (INSTALL_DIR_WITH_VERSION) @@ -306,7 +339,7 @@ elseif (NOT "${INSTALL_DIR_PREV}" STREQUAL "${INSTALL_DIR}") set (CMAKE_INSTALL_PREFIX_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE) endif() -if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") +if (LAYOUT_IS_UNIX) if (NOT DEFINED INSTALL_DIR_WITH_VERSION_PREV) set (INSTALL_DIR_WITH_VERSION_PREV "${INSTALL_DIR_WITH_VERSION}" CACHE INTERNAL "" FORCE) elseif (NOT "${INSTALL_DIR_WITH_VERSION_PREV}" STREQUAL "${INSTALL_DIR_WITH_VERSION}") @@ -321,10 +354,12 @@ endif() set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE) set (BIN_LETTER "") -if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - set (BIN_LETTER "d") -elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") - set (BIN_LETTER "i") +if (NOT LAYOUT_IS_VCPKG) + if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set (BIN_LETTER "d") + elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") + set (BIN_LETTER "i") + endif() endif() # the list of being built toolkits @@ -463,12 +498,33 @@ else() OCCT_CHECK_AND_UNSET (BUILD_YACCLEX) endif() -if (NOT DEFINED 3RDPARTY_DIR) - set (3RDPARTY_DIR "" CACHE PATH ${3RDPARTY_DIR_DESCR}) - get_filename_component (3RDPARTY_DIR "${3RDPARTY_DIR}" ABSOLUTE) +# Set 3RDPARTY_DIR based on layout +if (LAYOUT_IS_VCPKG) + if (NOT DEFINED 3RDPARTY_DIR) + # For vcpkg layout, set 3RDPARTY_DIR to vcpkg installed directory for path replacement + if (BUILD_USE_VCPKG AND VCPKG_INSTALLED_DIR AND VCPKG_TARGET_TRIPLET) + set (3RDPARTY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" CACHE PATH ${3RDPARTY_DIR_DESCR}) + else() + set (3RDPARTY_DIR "" CACHE PATH ${3RDPARTY_DIR_DESCR}) + endif() + else() + file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR) + set (3RDPARTY_DIR "${3RDPARTY_DIR}" CACHE PATH "${3RDPARTY_DIR_DESCR}" FORCE) + endif() else() - file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR) - set (3RDPARTY_DIR "${3RDPARTY_DIR}" CACHE PATH "${3RDPARTY_DIR_DESCR}" FORCE) + # For non-vcpkg layouts, 3RDPARTY_DIR should be user-defined or empty + if (NOT DEFINED 3RDPARTY_DIR) + set (3RDPARTY_DIR "" CACHE PATH ${3RDPARTY_DIR_DESCR}) + # If using vcpkg with Windows layout, set to vcpkg installed directory for proper path replacement + if (BUILD_USE_VCPKG AND VCPKG_INSTALLED_DIR AND VCPKG_TARGET_TRIPLET) + set (3RDPARTY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" CACHE PATH ${3RDPARTY_DIR_DESCR} FORCE) + else() + get_filename_component (3RDPARTY_DIR "${3RDPARTY_DIR}" ABSOLUTE) + endif() + else() + file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR) + set (3RDPARTY_DIR "${3RDPARTY_DIR}" CACHE PATH "${3RDPARTY_DIR_DESCR}" FORCE) + endif() endif() # search for CSF variable in EXTERNLIB of each being used toolkit @@ -804,7 +860,7 @@ OCCT_MAKE_COMPILER_SHORT_NAME() # do not define INSTALL_DIR_BIN for win. # Leave library structure for win: /win64/vc10/bin(d) if (NOT DEFINED INSTALL_DIR_BIN) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX OR LAYOUT_IS_VCPKG) set (INSTALL_DIR_BIN "bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}") else() set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}") @@ -813,8 +869,11 @@ endif() # define folder containing all shell/batch scripts if (NOT DEFINED INSTALL_DIR_SCRIPT) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_SCRIPT "${INSTALL_DIR_BIN}" CACHE PATH "${INSTALL_DIR_SCRIPT_DESCR}") + elseif (LAYOUT_IS_VCPKG) + # For vcpkg, scripts should follow same debug/release pattern as binaries + set (INSTALL_DIR_SCRIPT "$,debug/bin,bin>" CACHE PATH "${INSTALL_DIR_SCRIPT_DESCR}") else() set (INSTALL_DIR_SCRIPT "." CACHE PATH "${INSTALL_DIR_SCRIPT_DESCR}") endif() @@ -822,7 +881,7 @@ endif() # place the libraries to /lib folder for unix and leave old structure for windows if (NOT DEFINED INSTALL_DIR_LIB) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX OR LAYOUT_IS_VCPKG) set (INSTALL_DIR_LIB "lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}") else() set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}") @@ -832,11 +891,13 @@ endif() # OCCT headers: /inc for windows, # /include/opencascade-7.0.0 for unix if (NOT DEFINED INSTALL_DIR_INCLUDE) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_INCLUDE "include/opencascade" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_INCLUDE "include/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_INCLUDE "include" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}") else() set (INSTALL_DIR_INCLUDE "inc" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}") endif() @@ -845,11 +906,13 @@ endif() # OCCT resources: /src for windows, # /share/opencascade-7.0.0/resources for unix if (NOT DEFINED INSTALL_DIR_RESOURCE) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_RESOURCE "share/opencascade/resources" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_RESOURCE "share/opencascade-${OCC_VERSION_STRING_EXT}/resources" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_RESOURCE "share/${OCCT_PROJECT_NAME}" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}") else() set (INSTALL_DIR_RESOURCE "src" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}") endif() @@ -857,11 +920,13 @@ endif() # OCCT data if (NOT DEFINED INSTALL_DIR_DATA) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_DATA "share/opencascade/data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_DATA "share/opencascade-${OCC_VERSION_STRING_EXT}/data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_DATA "share/${OCCT_PROJECT_NAME}" CACHE PATH "${INSTALL_DIR_DATA_DESCR}") else() set (INSTALL_DIR_DATA "data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}") endif() @@ -869,11 +934,13 @@ endif() # OCCT samples if (NOT DEFINED INSTALL_DIR_SAMPLES) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_SAMPLES "share/opencascade/samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_SAMPLES "share/opencascade-${OCC_VERSION_STRING_EXT}/samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_SAMPLES "share/${OCCT_PROJECT_NAME}/samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}") else() set (INSTALL_DIR_SAMPLES "samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}") endif() @@ -881,11 +948,13 @@ endif() # OCCT tests if (NOT DEFINED INSTALL_DIR_TESTS) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_TESTS "share/opencascade/tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_TESTS "share/opencascade-${OCC_VERSION_STRING_EXT}/tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_TESTS "share/${OCCT_PROJECT_NAME}/tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}") else() set (INSTALL_DIR_TESTS "tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}") endif() @@ -893,11 +962,13 @@ endif() # OCCT doc if (NOT DEFINED INSTALL_DIR_DOC) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) set (INSTALL_DIR_DOC "share/doc/opencascade" CACHE PATH "${INSTALL_DIR_DOC_DESCR}") if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_DOC "share/doc/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_DOC_DESCR}" FORCE) endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_DOC "share/${OCCT_PROJECT_NAME}/doc" CACHE PATH "${INSTALL_DIR_DOC_DESCR}") else() set (INSTALL_DIR_DOC "doc" CACHE PATH "${INSTALL_DIR_DOC_DESCR}") endif() @@ -905,12 +976,14 @@ endif() # define folder containing CMake configuration files if (NOT DEFINED INSTALL_DIR_CMAKE) - if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") + if (LAYOUT_IS_UNIX) if (INSTALL_DIR_WITH_VERSION) set (INSTALL_DIR_CMAKE "lib/cmake/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}") else() set (INSTALL_DIR_CMAKE "lib/cmake/opencascade" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}") endif() + elseif (LAYOUT_IS_VCPKG) + set (INSTALL_DIR_CMAKE "share/${OCCT_PROJECT_NAME}" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}") else() set (INSTALL_DIR_CMAKE "cmake" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}") endif() @@ -920,7 +993,7 @@ endif() OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_resources") # install LICENSE_LGPL_21.txt and OCCT_LGPL_EXCEPTION.txt files -if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix") +if (LAYOUT_IS_UNIX OR LAYOUT_IS_VCPKG) OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR_DOC}") OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR_DOC}") else() @@ -998,34 +1071,63 @@ endif() # build directories if (SINGLE_GENERATOR) - set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}") - set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}") - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}") - if (WIN32) - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}") + if (LAYOUT_IS_VCPKG) + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + if (WIN32) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + endif() + else() + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}") + if (WIN32) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}") + endif() endif() endif() -set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib") -set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") -set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib") +if (LAYOUT_IS_VCPKG) + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/lib") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/lib") -set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi") -set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini") -set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi") + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/lib") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/lib") -set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd") -set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") -set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd") + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/lib") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/lib") -if (WIN32) - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini") - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") + if (WIN32) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin") + endif() +else() + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib") + + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi") + + set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd") + set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd") + + if (WIN32) + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini") + set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind") + endif() endif() string(TIMESTAMP CURRENT_TIME "%H:%M:%S") -message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT header files into ${CMAKE_BINARY_DIR}/inc ...") +message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT header files into ${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE} ...") # collect all the headers to /inc folder COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "src" "${INSTALL_DIR_INCLUDE}") @@ -1135,8 +1237,98 @@ endforeach() # write current custom.bat/sh (for install directory) set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}") + +# Set custom bin/lib paths variable for template +if (LAYOUT_IS_VCPKG) + # For vcpkg layout, paths need to handle debug/release structure + # Debug builds: scripts in debug/bin, need to go ../../ to reach root + # Release builds: scripts in bin, need to go ../ to reach root + if (WIN32) + set (OCCT_CUSTOM_BIN_LIB_PATHS "set \"CSF_OCCTBinPath=%CASROOT%\\bin\" + set \"CSF_OCCTLibPath=%CASROOT%\\lib\" + if exist \"%SCRIPTROOT%\\..\\..\\include\" ( + set \"CASCONTENTROOT=%SCRIPTROOT%\\..\\..\" + ) else ( + set \"CASCONTENTROOT=%SCRIPTROOT%\\..\" + ) + set \"CSF_OCCTIncludePath=%CASCONTENTROOT%\\include\" + set \"CSF_OCCTResourcePath=%CASCONTENTROOT%\\share\\${OCCT_PROJECT_NAME}\" + set \"CSF_OCCTDataPath=%CASCONTENTROOT%\\share\\${OCCT_PROJECT_NAME}\" + set \"CSF_OCCTSamplesPath=%CASCONTENTROOT%\\share\\${OCCT_PROJECT_NAME}\\samples\" + set \"CSF_OCCTTestsPath=%CASCONTENTROOT%\\share\\${OCCT_PROJECT_NAME}\\tests\" + set \"CSF_OCCTDocPath=%CASCONTENTROOT%\\share\\${OCCT_PROJECT_NAME}\\doc\"") + else() + set (OCCT_CUSTOM_BIN_LIB_PATHS "export CSF_OCCTBinPath=\"\${CASROOT}/bin\" + export CSF_OCCTLibPath=\"\${CASROOT}/lib\" + if [ -d \"\${aScriptPath}/../../include\" ]; then + export CASCONTENTROOT=\$(cd \"\${aScriptPath}/../..\" && pwd) + else + export CASCONTENTROOT=\$(cd \"\${aScriptPath}/..\" && pwd) + fi + export CSF_OCCTIncludePath=\"\${CASCONTENTROOT}/include\" + export CSF_OCCTResourcePath=\"\${CASCONTENTROOT}/share/${OCCT_PROJECT_NAME}\" + export CSF_OCCTDataPath=\"\${CASCONTENTROOT}/share/${OCCT_PROJECT_NAME}\" + export CSF_OCCTSamplesPath=\"\${CASCONTENTROOT}/share/${OCCT_PROJECT_NAME}/samples\" + export CSF_OCCTTestsPath=\"\${CASCONTENTROOT}/share/${OCCT_PROJECT_NAME}/tests\" + export CSF_OCCTDocPath=\"\${CASCONTENTROOT}/share/${OCCT_PROJECT_NAME}/doc\"") + endif() + + # For vcpkg, we handle all paths in the bin/lib paths logic above + set (OCCT_CUSTOM_ADDITIONAL_PATHS "") +else() + # For other layouts, use CASROOT with full paths including build-specific suffixes + if (WIN32) + set (OCCT_CUSTOM_BIN_LIB_PATHS "set \"CSF_OCCTBinPath=%CASROOT%/${INSTALL_DIR_BIN}%3\" + set \"CSF_OCCTLibPath=%CASROOT%/${INSTALL_DIR_LIB}%3\"") + set (OCCT_CUSTOM_ADDITIONAL_PATHS "set \"CSF_OCCTIncludePath=%CASROOT%/${INSTALL_DIR_INCLUDE}\" + set \"CSF_OCCTResourcePath=%CASROOT%/${INSTALL_DIR_RESOURCE}\" + set \"CSF_OCCTDataPath=%CASROOT%/${INSTALL_DIR_DATA}\" + set \"CSF_OCCTSamplesPath=%CASROOT%/${INSTALL_DIR_SAMPLES}\" + set \"CSF_OCCTTestsPath=%CASROOT%/${INSTALL_DIR_TESTS}\" + set \"CSF_OCCTDocPath=%CASROOT%/${INSTALL_DIR_DOC}\"") + else() + set (OCCT_CUSTOM_BIN_LIB_PATHS "export CSF_OCCTBinPath=\"\${CASROOT}/${INSTALL_DIR_BIN}\" + export CSF_OCCTLibPath=\"\${CASROOT}/${INSTALL_DIR_LIB}\"") + set (OCCT_CUSTOM_ADDITIONAL_PATHS "export CSF_OCCTIncludePath=\"\${CASROOT}/${INSTALL_DIR_INCLUDE}\" + export CSF_OCCTResourcePath=\"\${CASROOT}/${INSTALL_DIR_RESOURCE}\" + export CSF_OCCTDataPath=\"\${CASROOT}/${INSTALL_DIR_DATA}\" + export CSF_OCCTSamplesPath=\"\${CASROOT}/${INSTALL_DIR_SAMPLES}\" + export CSF_OCCTTestsPath=\"\${CASROOT}/${INSTALL_DIR_TESTS}\" + export CSF_OCCTDocPath=\"\${CASROOT}/${INSTALL_DIR_DOC}\"") + endif() +endif() + OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}") +# Set build directory paths for custom.build script +if (LAYOUT_IS_VCPKG) + # For vcpkg, use simple bin/lib paths + if (WIN32) + set (OCCT_CUSTOM_BUILD_BIN_LIB_PATHS "set \"CSF_OCCTBinPath=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\" + set \"CSF_OCCTLibPath=@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@\" + if [\"@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\"] == [\"\"] ( + set \"CSF_OCCTBinPath=@CMAKE_BINARY_DIR@/bin\" + set \"CSF_OCCTLibPath=@CMAKE_BINARY_DIR@/lib\" + )") + else() + set (OCCT_CUSTOM_BUILD_BIN_LIB_PATHS "export CSF_OCCTBinPath=\"@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\" + export CSF_OCCTLibPath=\"@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@\"") + endif() +else() + # For other layouts, use traditional paths with suffixes + if (WIN32) + set (OCCT_CUSTOM_BUILD_BIN_LIB_PATHS "set \"CSF_OCCTBinPath=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\" + set \"CSF_OCCTLibPath=@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@\" + if [\"@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\"] == [\"\"] ( + set \"CSF_OCCTBinPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/bin%3\" + set \"CSF_OCCTLibPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/lib%3\" + )") + else() + set (OCCT_CUSTOM_BUILD_BIN_LIB_PATHS "export CSF_OCCTBinPath=\"@CMAKE_RUNTIME_OUTPUT_DIRECTORY@\" + export CSF_OCCTLibPath=\"@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@\"") + endif() +endif() + # write current custom.bat/sh (for build directory) OCCT_CONFIGURE ("adm/templates/custom.build.${SCRIPT_EXT}.in" "${SUB_CUSTOM_NAME}") @@ -1146,6 +1338,16 @@ if (BUILD_SAMPLES_MFC OR BUILD_SAMPLES_QT) endif() if (WIN32) + # Set custom script path variable for Windows template + if (LAYOUT_IS_VCPKG) + # For vcpkg, scripts are in same directory - use existing SCRIPTROOT variable + set (OCCT_CUSTOM_SCRIPT_PATH "custom.${SCRIPT_EXT}") + set (OCCT_CUSTOM_SCRIPT_PREFIX "%SCRIPTROOT%/") + else() + # For other layouts, use CASROOT with full path + set (OCCT_CUSTOM_SCRIPT_PATH "custom.${SCRIPT_EXT}") + set (OCCT_CUSTOM_SCRIPT_PREFIX "%CASROOT%/") + endif() # env script for draw in building environment OCCT_CONFIGURE ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}") # install env script @@ -1156,6 +1358,20 @@ if (WIN32) else() set (SUB_ENV_NAME "env.${SCRIPT_EXT}") set (SUB_ENV_BUILD_NAME "env.install.${SCRIPT_EXT}") + # Set custom script path variable for template + if (LAYOUT_IS_VCPKG) + # For vcpkg, scripts are in same directory - use existing path variables + set (OCCT_CUSTOM_SCRIPT_PATH "custom.${SCRIPT_EXT}") + if (WIN32) + set (OCCT_CUSTOM_SCRIPT_PREFIX "%SCRIPTROOT%/") + else() + set (OCCT_CUSTOM_SCRIPT_PREFIX "\${aScriptPath}/") + endif() + else() + # For other layouts, use CASROOT with full path + set (OCCT_CUSTOM_SCRIPT_PATH "${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}") + set (OCCT_CUSTOM_SCRIPT_PREFIX "\${CASROOT}/") + endif() # 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 diff --git a/adm/cmake/occt_macros.cmake b/adm/cmake/occt_macros.cmake index 59e5c2eb37..e618fba2ab 100644 --- a/adm/cmake/occt_macros.cmake +++ b/adm/cmake/occt_macros.cmake @@ -3,8 +3,8 @@ if(OCCT_MACROS_ALREADY_INCLUDED) return() endif() -set(OCCT_MACROS_ALREADY_INCLUDED 1) +set(OCCT_MACROS_ALREADY_INCLUDED 1) macro (OCCT_CHECK_AND_UNSET VARNAME) if (DEFINED ${VARNAME}) @@ -696,13 +696,17 @@ macro (OCCT_UPDATE_TARGET_FILE) endmacro() macro (OCCT_INSERT_CODE_FOR_TARGET) - install(CODE "if (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$\") - set (OCCT_INSTALL_BIN_LETTER \"\") - elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\") - set (OCCT_INSTALL_BIN_LETTER \"i\") - elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\") - set (OCCT_INSTALL_BIN_LETTER \"d\") - endif()") + if (LAYOUT_IS_VCPKG) + install(CODE "set (OCCT_INSTALL_BIN_LETTER \"\")") + else() + install(CODE "if (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$\") + set (OCCT_INSTALL_BIN_LETTER \"\") + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\") + set (OCCT_INSTALL_BIN_LETTER \"i\") + elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\") + set (OCCT_INSTALL_BIN_LETTER \"d\") + endif()") + endif() endmacro() macro (OCCT_UPDATE_DRAW_DEFAULT_FILE) diff --git a/adm/cmake/occt_toolkit.cmake b/adm/cmake/occt_toolkit.cmake index 60516caf6e..68034fe2f5 100644 --- a/adm/cmake/occt_toolkit.cmake +++ b/adm/cmake/occt_toolkit.cmake @@ -120,8 +120,13 @@ endif (USE_QT) if (EXECUTABLE_PROJECT) add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES}) - install (TARGETS ${PROJECT_NAME} - DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") + if (LAYOUT_IS_VCPKG) + install (TARGETS ${PROJECT_NAME} + DESTINATION "$,debug/${INSTALL_DIR_BIN},${INSTALL_DIR_BIN}>") + else() + install (TARGETS ${PROJECT_NAME} + DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}") + endif() if (EMSCRIPTEN) install(FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.wasm DESTINATION "${INSTALL_DIR_BIN}/${OCCT_INSTALL_BIN_LETTER}") @@ -151,12 +156,21 @@ else() set (CMAKE_SHARED_LIBRARY_SUFFIX "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}") endif() - install (TARGETS ${PROJECT_NAME} - EXPORT OpenCASCADE${CURRENT_MODULE}Targets - RUNTIME DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}" - ARCHIVE DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" - LIBRARY DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" - INCLUDES DESTINATION ${INSTALL_DIR_INCLUDE}) + if (LAYOUT_IS_VCPKG) + install (TARGETS ${PROJECT_NAME} + EXPORT OpenCASCADE${CURRENT_MODULE}Targets + RUNTIME DESTINATION "$,debug/${INSTALL_DIR_BIN},${INSTALL_DIR_BIN}>" + ARCHIVE DESTINATION "$,debug/${INSTALL_DIR_LIB},${INSTALL_DIR_LIB}>" + LIBRARY DESTINATION "$,debug/${INSTALL_DIR_LIB},${INSTALL_DIR_LIB}>" + INCLUDES DESTINATION ${INSTALL_DIR_INCLUDE}) + else() + install (TARGETS ${PROJECT_NAME} + EXPORT OpenCASCADE${CURRENT_MODULE}Targets + RUNTIME DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}" + ARCHIVE DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" + LIBRARY DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}" + INCLUDES DESTINATION ${INSTALL_DIR_INCLUDE}) + endif() if (NOT WIN32) if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "") diff --git a/adm/cmake/vardescr.cmake b/adm/cmake/vardescr.cmake index 27389d16df..f874b18a00 100644 --- a/adm/cmake/vardescr.cmake +++ b/adm/cmake/vardescr.cmake @@ -1,5 +1,9 @@ # variable description +set (OCCT_PROJECT_NAME_DESCR +"Project name used in install directory paths for Unix and vcpkg layouts. +Allows customization of directory structure for different package names.") + set (BUILD_LIBRARY_TYPE_DESCR "Specifies the type of library to be created. 'Shared' libraries are linked dynamically and loaded at runtime. 'Static' libraries @@ -56,7 +60,7 @@ set (INSTALL_DIR_WITH_VERSION_DESCR set (INSTALL_DIR_LAYOUT_DESCR "Defines structure of OCCT files (binaries, resources, headers etc.) for the install directory. -Two variants are predefined: for Windows (standard OCCT layout) and for Unix operating systems (standard Linux layout). +Three variants are predefined: for Windows (standard OCCT layout), for Unix operating systems (standard Linux layout), and for vcpkg (standard vcpkg layout without 'd' and 'i' suffixes). If needed, layout can be customized with INSTALL_DIR_* variables.") set (INSTALL_DIR_BIN_DESCR diff --git a/adm/templates/OpenCASCADEConfig.cmake.in b/adm/templates/OpenCASCADEConfig.cmake.in index 5079ba63c1..a4796b2dc1 100644 --- a/adm/templates/OpenCASCADEConfig.cmake.in +++ b/adm/templates/OpenCASCADEConfig.cmake.in @@ -17,11 +17,12 @@ set (OpenCASCADE_MAINTENANCE_VERSION "@OCC_VERSION_MAINTENANCE@") set (OpenCASCADE_DEVELOPMENT_VERSION "@OCC_VERSION_DEVELOPMENT@") # Compute the installation prefix from this OpenCASCADEConfig.cmake file -# location, by going up one level + one level if "cmake" + one level if "lib". +# location, by going up one level + one level if "cmake" + one level if "lib" + one level if "share". # This is made to support different locations of CMake files: -# - in UNIX style: $INSTALL_DIR/lib/cmake/opencascade- +# - in UNIX style: $INSTALL_DIR/lib/cmake/@OCCT_PROJECT_NAME@- # - in Windows style: $INSTALL_DIR/cmake -# - in Android style: $INSTALL_DIR/libs/$CMAKE_ANDROID_ARCH_ABI/cmake/opencascade- +# - in vcpkg style: $INSTALL_DIR/share/@OCCT_PROJECT_NAME@ +# - in Android style: $INSTALL_DIR/libs/$CMAKE_ANDROID_ARCH_ABI/cmake/@OCCT_PROJECT_NAME@- get_filename_component (OpenCASCADE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) if (OpenCASCADE_INSTALL_PREFIX MATCHES "/cmake$") @@ -30,6 +31,9 @@ endif() if (OpenCASCADE_INSTALL_PREFIX MATCHES "/lib(32|64)?$") get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) endif() +if (OpenCASCADE_INSTALL_PREFIX MATCHES "/share$") + get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) +endif() if (OpenCASCADE_INSTALL_PREFIX MATCHES "/libs/${CMAKE_ANDROID_ARCH_ABI}$") get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH) diff --git a/adm/templates/custom.build.bat.in b/adm/templates/custom.build.bat.in index 5e277cf14b..3343d30bd1 100644 --- a/adm/templates/custom.build.bat.in +++ b/adm/templates/custom.build.bat.in @@ -25,16 +25,9 @@ if /I "%VCVER%" == "@COMPILER@" ( rem CSF_OCCTBinPath and CSF_OCCTLibPath are defined differently for rem multiple and single configuration builds - set "CSF_OCCTBinPath=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" - if ["@CMAKE_RUNTIME_OUTPUT_DIRECTORY@"] == [""] ( - set "CSF_OCCTBinPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/bin%3" - ) - set "CSF_OCCTLibPath=@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" - if ["@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@"] == [""] ( - set "CSF_OCCTLibPath=@CMAKE_BINARY_DIR@/win%ARCH%/%VCVER%/lib%3" - ) + @OCCT_CUSTOM_BUILD_BIN_LIB_PATHS@ - set "CSF_OCCTIncludePath=@CMAKE_BINARY_DIR@/inc" + set "CSF_OCCTIncludePath=@CMAKE_BINARY_DIR@/@INSTALL_DIR_INCLUDE@" set "CSF_OCCTResourcePath=@CMAKE_SOURCE_DIR@/resources" set "CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data" set "CSF_OCCTSamplesPath=@CMAKE_SOURCE_DIR@/samples" diff --git a/adm/templates/custom.build.sh.in b/adm/templates/custom.build.sh.in index 265d79a97f..67ee37c2b4 100644 --- a/adm/templates/custom.build.sh.in +++ b/adm/templates/custom.build.sh.in @@ -21,8 +21,9 @@ if [ "$1" == "@BIN_LETTER@" ]; then export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - export CSF_OCCTBinPath="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" - export CSF_OCCTLibPath="@CMAKE_ARCHIVE_OUTPUT_DIRECTORY@" + # CSF_OCCTBinPath and CSF_OCCTLibPath are defined differently for + # multiple and single configuration builds + @OCCT_CUSTOM_BUILD_BIN_LIB_PATHS@ export CSF_OCCTIncludePath="@CMAKE_BINARY_DIR@/@INSTALL_DIR_INCLUDE@" export CSF_OCCTResourcePath="@CMAKE_SOURCE_DIR@/resources" export CSF_OCCTDataPath="@CMAKE_SOURCE_DIR@/data" diff --git a/adm/templates/custom.install.bat.in b/adm/templates/custom.install.bat.in index 2f2af3a5ac..1cf3fe255c 100644 --- a/adm/templates/custom.install.bat.in +++ b/adm/templates/custom.install.bat.in @@ -25,15 +25,9 @@ if /I "%VCVER%" == "@COMPILER@" ( set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - set "CSF_OCCTBinPath=%CASROOT%/@INSTALL_DIR_BIN@%3" - set "CSF_OCCTLibPath=%CASROOT%/@INSTALL_DIR_LIB@%3" + @OCCT_CUSTOM_BIN_LIB_PATHS@ - set "CSF_OCCTIncludePath=%CASROOT%/@INSTALL_DIR_INCLUDE@" - set "CSF_OCCTResourcePath=%CASROOT%/@INSTALL_DIR_RESOURCE@" - set "CSF_OCCTDataPath=%CASROOT%/@INSTALL_DIR_DATA@" - set "CSF_OCCTSamplesPath=%CASROOT%/@INSTALL_DIR_SAMPLES@" - set "CSF_OCCTTestsPath=%CASROOT%/@INSTALL_DIR_TESTS@" - set "CSF_OCCTDocPath=%CASROOT%/@INSTALL_DIR_DOC@" + @OCCT_CUSTOM_ADDITIONAL_PATHS@ ) ) diff --git a/adm/templates/custom.install.sh.in b/adm/templates/custom.install.sh.in index dc6552b342..7d9b37e413 100644 --- a/adm/templates/custom.install.sh.in +++ b/adm/templates/custom.install.sh.in @@ -21,14 +21,10 @@ if [ "$1" == "@BIN_LETTER@" ]; then export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@" export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@" - export CSF_OCCTBinPath="${CASROOT}/@INSTALL_DIR_BIN@" - export CSF_OCCTLibPath="${CASROOT}/@INSTALL_DIR_LIB@" - export CSF_OCCTIncludePath="${CASROOT}/@INSTALL_DIR_INCLUDE@" - export CSF_OCCTResourcePath="${CASROOT}/@INSTALL_DIR_RESOURCE@" - export CSF_OCCTDataPath="${CASROOT}/@INSTALL_DIR_DATA@" - export CSF_OCCTSamplesPath="${CASROOT}/@INSTALL_DIR_SAMPLES@" - export CSF_OCCTTestsPath="${CASROOT}/@INSTALL_DIR_TESTS@" - export CSF_OCCTDocPath="${CASROOT}/@INSTALL_DIR_DOC@" + # Set paths based on layout + @OCCT_CUSTOM_BIN_LIB_PATHS@ + + @OCCT_CUSTOM_ADDITIONAL_PATHS@ fi fi diff --git a/adm/templates/env.bat.in b/adm/templates/env.bat.in index 246ec2a9ab..5d6eae12df 100644 --- a/adm/templates/env.bat.in +++ b/adm/templates/env.bat.in @@ -141,8 +141,8 @@ if /I ["%1"] == ["vc141"] set "VCVER=vc14" if /I ["%1"] == ["vc142"] set "VCVER=vc14" if /I ["%1"] == ["vc143"] set "VCVER=vc14" -if exist "%CASROOT%\custom.bat" ( - call "%CASROOT%\custom.bat" %VCVER% %ARCH% %CASDEB% +if exist "@OCCT_CUSTOM_SCRIPT_PREFIX@@OCCT_CUSTOM_SCRIPT_PATH@" ( + call "@OCCT_CUSTOM_SCRIPT_PREFIX@@OCCT_CUSTOM_SCRIPT_PATH@" %VCVER% %ARCH% %CASDEB% ) if not ["%QTDIR%"] == [""] ( diff --git a/adm/templates/env.install.sh.in b/adm/templates/env.install.sh.in index 467ca67209..b9d62cb7ec 100644 --- a/adm/templates/env.install.sh.in +++ b/adm/templates/env.install.sh.in @@ -48,8 +48,8 @@ else fi # ----- Set local settings ----- -if [ -e "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" ]; then - source "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" "${CASDEB}" "${ARCH}" +if [ -e "@OCCT_CUSTOM_SCRIPT_PREFIX@@OCCT_CUSTOM_SCRIPT_PATH@" ]; then + source "@OCCT_CUSTOM_SCRIPT_PREFIX@@OCCT_CUSTOM_SCRIPT_PATH@" "${CASDEB}" "${ARCH}" fi THRDPARTY_PATH=""