1# Manage a package that may appear in the local packages/ directory, 2# or may have been previously defined with PACKAGE_DIR by a parent 3# package: package name in capitals 4# dirname: directory containing package 5function(ManageRelocatablePackage package dirname) 6 if(HAVE_${package}) 7 message(STATUS 8 "Finding relocatable package ${package} with directory ${dirname}") 9 if(NOT ${package}_DIR) 10 if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${dirname}") 11 # Need PARENT_SCOPE since this is a function 12 set(${package}_DIR "${CMAKE_CURRENT_BINARY_DIR}/${dirname}" PARENT_SCOPE) 13 message(STATUS 14 "Setting ${package}_DIR = ${CMAKE_CURRENT_BINARY_DIR}/${dirname}") 15 add_subdirectory(${dirname}) 16 else() 17 message(SEND_ERROR 18 "Directory ${CMAKE_CURRENT_SOURCE_DIR}/${dirname} missing") 19 endif() 20 endif() 21 endif() 22endfunction() 23