]> Creatis software - crea.git/blobdiff - cmake/CREAMacro_InstallLibraryForCMake.cmake
Bug #1913
[crea.git] / cmake / CREAMacro_InstallLibraryForCMake.cmake
index 2bd7e0db3c76fcb721b492fa538b1c71ff417806..21877db79c9a9f705246591836db88c69c4ab58e 100644 (file)
@@ -1,3 +1,29 @@
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */ 
+
+
 #-----------------------------------------------------------------------------
 # Macro CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
 # Creates and install the cmake files which allow 
@@ -44,7 +70,7 @@
 # * ${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS
 #    The list of include paths 
 #    when someone uses an *INSTALLED* version of ${LIBRARY_NAME} 
-#    The paths *MUST BE RELATIVE* to INSTALL_PREFIX
+#    The paths *MUST BE RELATIVE* to CMAKE_INSTALL_PREFIX
 #  #    A typical example is "include/${LIBRARY_NAME}"
 # * ${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS
 #    Like the previous var but for library paths.
@@ -61,8 +87,8 @@
 # * ${LIBRARY_NAME}_MINOR_VERSION
 # * ${LIBRARY_NAME}_BUILD_VERSION
 # * ${LIBRARY_NAME}_INSTALL_FOLDER : if set then install the generated files 
-#   in INSTALL_PREFIX/lib/${LIBRARY_NAME}_INSTALL_FOLDER 
-#   instead of INSTALL_PREFIX/lib/${LIBRARY_NAME}
+#   in CMAKE_INSTALL_PREFIX/lib/${LIBRARY_NAME}_INSTALL_FOLDER 
+#   instead of CMAKE_INSTALL_PREFIX/lib/${LIBRARY_NAME}
 #
 # 
 # To provide a user defined 
 #  AdditionalUse${LIBRARY_NAME}.cmake
 # 
 # At install-time, the same files are installed 
-# in INSTALL_PREFIX/lib/${LIBRARY_NAME}_INSTALL_FOLDER 
+# in CMAKE_INSTALL_PREFIX/lib/${LIBRARY_NAME}_INSTALL_FOLDER 
 # and the file :
 #  Find${LIBRARY_NAME}.cmake
 # is installed in ${CMAKE_ROOT}/Modules/
@@ -136,8 +162,11 @@ MACRO(CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE LIBRARY_NAME)
     )
   # LIBRARY_NAMEBuildSettings.cmake :
   # Save the compiler settings so another project can import them.
+  # FCY : DEPREDCATED FUNCTION FOR CMAKE 2.8
+  IF( "${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS 2.7)
   INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake)
   CMAKE_EXPORT_BUILD_SETTINGS(${PROJECT_BINARY_DIR}/${LIBRARY_NAME}BuildSettings.cmake)
+  ENDIF()
   # Additional Config and Use files
   IF(CILC_LIB_HAS_ADDITIONAL_CONFIG_FILE)
     CONFIGURE_FILE(
@@ -173,13 +202,15 @@ MACRO(CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE LIBRARY_NAME)
     SET(INSTALL_PATH .)
   ELSE(WIN32)
     IF(${LIBRARY_NAME}_INSTALL_FOLDER)
-      SET(INSTALL_PATH lib/${${LIBRARY_NAME}_INSTALL_FOLDER})
+##EED      SET(INSTALL_PATH lib/${${LIBRARY_NAME}_INSTALL_FOLDER})
+      SET(INSTALL_PATH ${${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS}/${${LIBRARY_NAME}_INSTALL_FOLDER})
     ELSE(${LIBRARY_NAME}_INSTALL_FOLDER)
-      SET(INSTALL_PATH lib/${LIBRARY_NAME})
+##EED      SET(INSTALL_PATH lib/${LIBRARY_NAME})
+          SET(INSTALL_PATH ${${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS}/${LIBRARY_NAME})
     ENDIF(${LIBRARY_NAME}_INSTALL_FOLDER)
   ENDIF(WIN32)
 
-
+  message(STATUS "Library Install Path ${INSTALL_PATH}")
 
   # UseLIBRARY_NAME.cmake 
   CONFIGURE_FILE(
@@ -208,7 +239,10 @@ MACRO(CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE LIBRARY_NAME)
     DESTINATION ${INSTALL_PATH}
     )
   # LIBRARY_NAMEBuildSettings.cmake :
+  # FCY : DEPREDCATED FUNCTION FOR CMAKE 2.8
+  IF( "${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS 2.7)
   CMAKE_EXPORT_BUILD_SETTINGS(${CILC_WORK_DIR}/${LIBRARY_NAME}BuildSettings.cmake)
+  ENDIF()
   INSTALL(
     FILES 
     ${CILC_WORK_DIR}/${LIBRARY_NAME}BuildSettings.cmake
@@ -244,10 +278,20 @@ MACRO(CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE LIBRARY_NAME)
     ${CILC_WORK_DIR}/Find${LIBRARY_NAME}.cmake
     @ONLY IMMEDIATE
     )
+#EED 02 mars 2011
+#  INSTALL( 
+#    FILES ${CILC_WORK_DIR}/Find${LIBRARY_NAME}.cmake
+#    DESTINATION ${CMAKE_ROOT}/Modules 
+#    )
+
+# JPR 04 Mars 2011
   INSTALL( 
     FILES ${CILC_WORK_DIR}/Find${LIBRARY_NAME}.cmake
-    DESTINATION ${CMAKE_ROOT}/Modules 
+##EED12Fev2013    DESTINATION ${CMAKE_INSTALL_PREFIX}/share/cmake/Modules
+    DESTINATION share/cmake/Modules
     )
+    
   #---------------------------------------------------------------------------
   
 
@@ -263,25 +307,42 @@ ENDMACRO(CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE)
 MACRO(CREA_INSTALL_LIBRARY_FOR_CMAKE LIBRARY_NAME1)
   
   # Sets the settings to default values
-  SET(${LIBRARY_NAME1}_INSTALL_FOLDER ${LIBRARY_NAME1})
+  IF(NOT ${LIBRARY_NAME1}_INSTALL_FOLDER)
+    SET(${LIBRARY_NAME1}_INSTALL_FOLDER ${LIBRARY_NAME1})
+  ENDIF(NOT ${LIBRARY_NAME1}_INSTALL_FOLDER)
+
   SET(${LIBRARY_NAME1}_LIBRARIES ${LIBRARY_NAME1})
   
   FILE(RELATIVE_PATH 
     ${LIBRARY_NAME1}_BUILD_TREE_RELATIVE_INCLUDE_PATHS 
     ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
     )
+  IF ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
+    SET(CILFC_EXECUTABLE_OUTPUT_REL_PATH ".")
+  ELSE ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
+
+    FILE(RELATIVE_PATH 
+      CILFC_EXECUTABLE_OUTPUT_REL_PATH
+      ${PROJECT_BINARY_DIR} ${EXECUTABLE_OUTPUT_PATH})
+  ENDIF ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
+
 
   IF(UNIX)
     SET(${LIBRARY_NAME1}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
-      ${EXECUTABLE_OUTPUT_REL_PATH})
-    SET(${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS lib)
+      ${CILFC_EXECUTABLE_OUTPUT_REL_PATH})
+    SET(${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${CMAKE_CREA_LIB_PATH} )
   ELSE(UNIX)
     SET(${LIBRARY_NAME1}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
-      ${EXECUTABLE_OUTPUT_REL_PATH}/Debug
-      ${EXECUTABLE_OUTPUT_REL_PATH}/Release)
+      ${CILFC_EXECUTABLE_OUTPUT_REL_PATH} )
+# LG 15/01/09 : Bug
+#      ${CILFC_EXECUTABLE_OUTPUT_REL_PATH}/Debug
+#     ${CILFC_EXECUTABLE_OUTPUT_REL_PATH}/Release)
     SET(${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS bin)
   ENDIF(UNIX)
-  SET(${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/${LIBRARY_NAME1})
+
+  IF(NOT ${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS)
+    SET(${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/${LIBRARY_NAME1})
+  ENDIF(NOT ${LIBRARY_NAME1}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS)
   
   # Invoke the advanced macro
   CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME1})