Previously we assumed it to be ecl (like the project name). That is not correct. With this commit we now use the correct default clone directory, libecl, in the sibling search.
37 lines
1.6 KiB
CMake
37 lines
1.6 KiB
CMake
option (SIBLING_SEARCH "Search sibling directories before system paths" ON)
|
|
mark_as_advanced (SIBLING_SEARCH)
|
|
|
|
macro(create_module_dir_var module)
|
|
if(SIBLING_SEARCH AND NOT ${module}_DIR)
|
|
# guess the sibling dir
|
|
get_filename_component(_leaf_dir_name ${PROJECT_BINARY_DIR} NAME)
|
|
get_filename_component(_parent_full_dir ${PROJECT_BINARY_DIR} DIRECTORY)
|
|
get_filename_component(_parent_dir_name ${_parent_full_dir} NAME)
|
|
#Try if <module-name>/<build-dir> is used
|
|
get_filename_component(_modules_dir ${_parent_full_dir} DIRECTORY)
|
|
if (module STREQUAL "ecl")
|
|
#use clone directory libecl
|
|
set(_clone_dir "libecl")
|
|
else()
|
|
set(_clone_dir "${module}")
|
|
endif()
|
|
if(IS_DIRECTORY ${_modules_dir}/${_clone_dir}/${_leaf_dir_name})
|
|
set(${module}_DIR ${_modules_dir}/${_clone_dir}/${_leaf_dir_name})
|
|
else()
|
|
string(REPLACE ${PROJECT_NAME} ${_clone_dir} _module_leaf ${_leaf_dir_name})
|
|
if(NOT _leaf_dir_name STREQUAL _module_leaf
|
|
AND IS_DIRECTORY ${_parent_full_dir}/${_module_leaf})
|
|
# We are using build directories named <prefix><module-name><postfix>
|
|
set(${module}_DIR ${_parent_full_dir}/${_module_leaf})
|
|
elseif(IS_DIRECTORY ${_parent_full_dir}/${_clone_dir})
|
|
# All modules are in a common build dir
|
|
set(${module}_DIR "${_parent_full_dir}/${_clone_dir}}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
if(${module}_DIR AND NOT IS_DIRECTORY ${${module}_DIR})
|
|
message(WARNING "Value ${${module}_DIR} passed to variable"
|
|
" ${module}_DIR is not a directory")
|
|
endif()
|
|
endmacro()
|