0027499: Configuration, CMake - add option INSTALL_NAME_DIR on OS X
[occt.git] / adm / cmake / occt_toolkit.cmake
index b721e4c..85aaea3 100644 (file)
@@ -127,65 +127,60 @@ if (MSVC)
   endif()
 endif()
 
+set (CURRENT_MODULE)
+foreach (OCCT_MODULE ${OCCT_MODULES})
+  list (FIND ${OCCT_MODULE}_TOOLKITS ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT)
+  if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1)
+    set (CURRENT_MODULE ${OCCT_MODULE})
+  endif()
+endforeach()
+
+if (NOT SINGLE_GENERATOR)
+  OCCT_INSERT_CODE_FOR_TARGET ()
+endif()
+
 if ("${PROJECT_NAME}" STREQUAL "DRAWEXE")
   add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
 
-  if (SINGLE_GENERATOR)
-    install (TARGETS ${PROJECT_NAME} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
-  else()
-    install (TARGETS ${PROJECT_NAME}
-             CONFIGURATIONS Release
-             DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
-    install (TARGETS ${PROJECT_NAME}
-             CONFIGURATIONS RelWithDebInfo
-             DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
-    install (TARGETS ${PROJECT_NAME}
-             CONFIGURATIONS Debug
-             DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
-  endif()
+  install (TARGETS ${PROJECT_NAME}
+           DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
 else()
   add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
 
-  if (SINGLE_GENERATOR)
-    install (TARGETS ${PROJECT_NAME}
-             RUNTIME DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}"
-             ARCHIVE DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
-             LIBRARY DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
-  else()
-    install (TARGETS ${PROJECT_NAME}
-             CONFIGURATIONS Release
-             RUNTIME DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}"
-             ARCHIVE DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
-             LIBRARY DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
-    install (TARGETS ${PROJECT_NAME}
-             CONFIGURATIONS RelWithDebInfo
-             RUNTIME DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i"
-             ARCHIVE DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i"
-             LIBRARY DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i")
-    install (TARGETS ${PROJECT_NAME}
+  if (MSVC)
+    install (FILES  ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
              CONFIGURATIONS Debug
-             RUNTIME DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d"
-             ARCHIVE DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d"
-             LIBRARY DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d")
-
-    if (MSVC)
-      install (FILES  ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
-               CONFIGURATIONS Debug
-               DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
-    endif()
+             DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
   endif()
-endif()
 
-set (CURRENT_MODULE)
-foreach (OCCT_MODULE ${OCCT_MODULES})
-  list (FIND ${OCCT_MODULE}_TOOLKITS ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT)
-  if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1)
-    set (CURRENT_MODULE ${OCCT_MODULE})
+  if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
+    set (CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT ${CMAKE_SHARED_LIBRARY_SUFFIX})
+    set (CMAKE_SHARED_LIBRARY_SUFFIX "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}")
   endif()
-endforeach()
+
+  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}")
+
+  if (NOT WIN32)
+    if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
+      set (LINK_NAME    "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT}")
+      set (LIBRARY_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+      OCCT_CREATE_SYMLINK_TO_FILE (${LIBRARY_NAME} ${LINK_NAME})
+    endif()
+  endif()
+endif()
 
 if (CURRENT_MODULE)
   set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "Modules/${CURRENT_MODULE}")
+  set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}")
+  if (APPLE)
+    if (NOT "${INSTALL_NAME_DIR}" STREQUAL "")
+      set_target_properties (${PROJECT_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "${INSTALL_NAME_DIR}")
+    endif()
+  endif()
 endif()
 
 get_property (OCC_VERSION_MAJOR GLOBAL PROPERTY OCC_VERSION_MAJOR)
@@ -240,4 +235,6 @@ if (APPLE)
   endif()
 endif()
 
-target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
+if (BUILD_SHARED_LIBS)
+  target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
+endif()