summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeAddFortranSubdirectory.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-12-15 15:19:46 (GMT)
committerBrad King <brad.king@kitware.com>2012-02-09 13:34:06 (GMT)
commite4ae038f5d9f0fa14d63f9eaea71e0466dc86619 (patch)
tree05f0de9ddf1038cc168b1f8dcef2ffb3c5cf40d2 /Modules/CMakeAddFortranSubdirectory.cmake
parent538c3452ad660a45c3d6ca32f8c09ee7c93a8b84 (diff)
downloadCMake-e4ae038f5d9f0fa14d63f9eaea71e0466dc86619.zip
CMake-e4ae038f5d9f0fa14d63f9eaea71e0466dc86619.tar.gz
CMake-e4ae038f5d9f0fa14d63f9eaea71e0466dc86619.tar.bz2
CMakeAddFortranSubdirectory: Allow full paths to directories
Fix the implementation to allow full paths with spaces. Change the interpretation of relative paths to be with respect to the current binary directory. This matches the convention used in ExternalProject. Test both full and relative paths in the VSGNUFortran test.
Diffstat (limited to 'Modules/CMakeAddFortranSubdirectory.cmake')
-rw-r--r--Modules/CMakeAddFortranSubdirectory.cmake19
1 files changed, 13 insertions, 6 deletions
diff --git a/Modules/CMakeAddFortranSubdirectory.cmake b/Modules/CMakeAddFortranSubdirectory.cmake
index 4e351a6..e92dcb4 100644
--- a/Modules/CMakeAddFortranSubdirectory.cmake
+++ b/Modules/CMakeAddFortranSubdirectory.cmake
@@ -13,14 +13,17 @@
# cmake_add_fortran_subdirectory(
# <subdir> # name of subdirectory
# PROJECT <project_name> # project name in sbudir toplevel CMakeLists.txt
-# ARCHIVE_DIR <dir> # .lib location relative to root binary tree (lib)
-# RUNTIME_DIR <dir> # .dll location relative to root binary tree (bin)
+# ARCHIVE_DIR <dir> # dir where project places .lib files
+# RUNTIME_DIR <dir> # dir where project places .dll files
# LIBRARIES lib2 lib2 # names of libraries created and exported
# LINK_LIBRARIES # link interface libraries for LIBRARIES
# LINK_LIBS <lib1> <dep1> <dep2> ... <depN>
# LINK_LIBS <lib2> <dep1> <dep2> ... <depN>
# CMAKE_COMMAND_LINE # extra command line flags to pass to cmake
# )
+# Relative paths in ARCHIVE_DIR and RUNTIME_DIR are interpreted with respect
+# to the build directory corresponding to the source directory in which the
+# function is invoked.
#
#=============================================================================
@@ -102,6 +105,12 @@ function(cmake_add_fortran_subdirectory subdir)
set(libraries ${ARGS_LIBRARIES})
# use the same directory that add_subdirectory would have used
set(build_dir "${CMAKE_CURRENT_BINARY_DIR}/${subdir}")
+ foreach(dir_var library_dir binary_dir)
+ if(NOT IS_ABSOLUTE "${${dir_var}}")
+ get_filename_component(${dir_var}
+ "${CMAKE_CURRENT_BINARY_DIR}/${${dir_var}}" ABSOLUTE)
+ endif()
+ endforeach()
# create build and configure wrapper scripts
_setup_mingw_config_and_build(${source_dir})
# create the external project
@@ -128,10 +137,8 @@ function(cmake_add_fortran_subdirectory subdir)
add_library(${lib} SHARED IMPORTED)
set_property(TARGET ${lib} APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
set_target_properties(${lib} PROPERTIES
- IMPORTED_IMPLIB_NOCONFIG
- "${build_dir}/${library_dir}/lib${lib}.lib"
- IMPORTED_LOCATION_NOCONFIG
- "${build_dir}/${binary_dir}/lib${lib}.dll"
+ IMPORTED_IMPLIB_NOCONFIG "${library_dir}/lib${lib}.lib"
+ IMPORTED_LOCATION_NOCONFIG "${binary_dir}/lib${lib}.dll"
)
add_dependencies(${lib} ${project_name}_build)
endforeach()