diff --git a/CMake/LofarMacros.cmake b/CMake/LofarMacros.cmake index c8afed18df9d5a67c54ff178a282e2355c3ebb73..0c7498fcb94615799893e29545533906300576c8 100644 --- a/CMake/LofarMacros.cmake +++ b/CMake/LofarMacros.cmake @@ -240,19 +240,37 @@ if(NOT DEFINED LOFAR_MACROS_INCLUDED) # installed into the <prefix>/share directory. Also create a symbolic link # in <build-dir>/share to each of these files. The file names may contain # a relative(!) path. + # + # The mentioned files are installed in the same relative path as provided, + # that is: + # lofar_add_data_files(foo/bar) + # installs "share/foo/bar". To override this behaviour use: + # lofar_add_data_files(foo/bar DESTINATION .) + # installs "share/bar". # -------------------------------------------------------------------------- macro(lofar_add_data_files) + string(REGEX REPLACE ";?DESTINATION.*" "" _src_names "${ARGN}") + string(REGEX MATCH "DESTINATION;.*" _destination "${ARGN}") + string(REGEX REPLACE "^DESTINATION;" "" _destination "${_destination}") string(TOLOWER ${PACKAGE_NAME} lower_package_name) - foreach(_name ${ARGN}) - get_filename_component(_path ${_name} PATH) - get_filename_component(_abs_name ${_name} ABSOLUTE) - file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/${_path}) + foreach(_src_name ${_src_names}) + if(_destination MATCHES ".+") + get_filename_component(_src_filename ${_src_name} NAME) + set(_dest_name ${_destination}/${_src_filename}) + else(_destination MATCHES ".+") + set(_dest_name ${_src_name}) + endif(_destination MATCHES ".+") + + get_filename_component(_abs_name ${_src_name} ABSOLUTE) + get_filename_component(_dest_path ${_dest_name} PATH) + + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/${_dest_path}) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${_abs_name} ${CMAKE_BINARY_DIR}/share/${_name}) - install(FILES ${_name} - DESTINATION share/${_path} + ${_abs_name} ${CMAKE_BINARY_DIR}/share/${_dest_name}) + install(FILES ${_src_name} + DESTINATION share/${_dest_path} COMPONENT ${lower_package_name}) - endforeach(_name ${ARGN}) + endforeach(_src_name ${_src_names}) endmacro(lofar_add_data_files)