1+ function (NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL _COMPOMENT_ _SPATH_)
2+ string (APPEND NBL_FIND_NABLA_IMPL "set(_COMPOMENT_ ${_COMPOMENT_} )\n set(_SPATH_ ${_SPATH_} )\n set(NBL_ROOT_PATH ${NBL_ROOT_PATH} )\n set(NBL_STATIC_BUILD ${NBL_STATIC_BUILD} )\n\n " )
3+ string (APPEND NBL_FIND_NABLA_IMPL
4+ [=[
5+ if(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Dd][Ee][Bb][Uu][Gg])$")
6+ set(NBL_CONFIG_PREFIX_PATH debug)
7+ elseif(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$")
8+ set(NBL_CONFIG_PREFIX_PATH relwithdebinfo)
9+ elseif(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$")
10+ unset(NBL_CONFIG_PREFIX_PATH)
11+ else()
12+ message(FATAL_ERROR "Internal error, requested \"${CMAKE_INSTALL_CONFIG_NAME}\" configuration is invalid!")
13+ endif()
14+
15+ string(TOUPPER "${_COMPOMENT_}" _Cu_)
16+ string(TOLOWER "${_COMPOMENT_}" _Cl_)
17+
18+ string(TOUPPER "${_SPATH_}" _Su_)
19+ string(TOLOWER "${_SPATH_}" _Sl_)
20+
21+ string(TOUPPER "${CMAKE_INSTALL_CONFIG_NAME}" _NBL_CONFIG_)
22+ string(TOLOWER "${CMAKE_INSTALL_CONFIG_NAME}" _NBL_CONFIG_L_)
23+
24+ if(NBL_STATIC_BUILD)
25+ set(NBL_LIBRARY_TYPE STATIC)
26+ else()
27+ set(NBL_LIBRARY_TYPE DYNAMIC)
28+ endif()
29+
30+ string(TOUPPER "${NBL_LIBRARY_TYPE}" _LTu_)
31+ string(TOLOWER "${NBL_LIBRARY_TYPE}" _LTl_)
32+
33+ set(_NBL_PACKAGE_ nabla-${_Cl_}-${_LTl_}-${_NBL_CONFIG_L_})
34+ set(_NBL_COMPLETE_P_CONFIG_ nabla-${_LTl_}-${_NBL_CONFIG_L_})
35+
36+ set(NBL_CMAKE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${NBL_CONFIG_PREFIX_PATH}/cmake")
37+ set(NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY "${NBL_CMAKE_OUTPUT_DIRECTORY}/compoment")
38+
39+ string(REPLACE "${CMAKE_INSTALL_PREFIX}" "" NBL_CMAKE_INSTALL_MANIFEST_CONTENT "${CMAKE_INSTALL_MANIFEST_FILES}")
40+ list(REMOVE_DUPLICATES NBL_CMAKE_INSTALL_MANIFEST_CONTENT)
41+
42+ set(_NBL_PREFIX_ "${CMAKE_INSTALL_PREFIX}/${NBL_CONFIG_PREFIX_PATH}")
43+
44+ set(NBL_CMAKE_COMPOMENT_OUTPUT_FILE "${NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY}/${_NBL_PACKAGE_}Config.cmake")
45+ set(NBL_CMAKE_CONFIG_OUTPUT_FILE "${NBL_CMAKE_OUTPUT_DIRECTORY}/${_NBL_COMPLETE_P_CONFIG_}Config.cmake")
46+
47+ cmake_path(RELATIVE_PATH CMAKE_INSTALL_PREFIX BASE_DIRECTORY "${NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY}" OUTPUT_VARIABLE _NBL_REL_TO_PREFIX_)
48+
49+ set(_NBL_PROXY_ NABLA_INSTALL_${_Cu_}_${_LTu_}_${_NBL_CONFIG_})
50+ set(_NBL_COMPOMENT_D_ "NABLA_INSTALL_${_Cu_}_DIRECTORY_${_LTu_}_${_NBL_CONFIG_}")
51+ set(_NBL_COMPOMENT_D_V_ "${_NBL_REL_TO_PREFIX_}")
52+
53+ foreach(_MANIFEST_INSTALL_REL_FILE_ IN LISTS NBL_CMAKE_INSTALL_MANIFEST_CONTENT)
54+ string(FIND "${_MANIFEST_INSTALL_REL_FILE_}" "/${_SPATH_}/" _NBL_FOUND_)
55+
56+ if(NOT "${_NBL_FOUND_}" STREQUAL "-1")
57+ set(_X_ "${_NBL_REL_TO_PREFIX_}/${_MANIFEST_INSTALL_REL_FILE_}")
58+ cmake_path(NORMAL_PATH _X_ OUTPUT_VARIABLE _X_)
59+
60+ list(APPEND ${_NBL_PROXY_} "${_X_}")
61+ endif()
62+ endforeach()
63+
64+ string(APPEND NBL_MANIFEST_IMPL "set(${_NBL_PROXY_}\n\t${${_NBL_PROXY_}}\n)")
65+ string(REPLACE ";" "\n\t" NBL_MANIFEST_IMPL "${NBL_MANIFEST_IMPL}")
66+ string(CONFIGURE "${NBL_MANIFEST_IMPL}" NBL_MANIFEST_IMPL_CONF)
67+ file(WRITE "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}" "${NBL_MANIFEST_IMPL_CONF}")
68+
69+ # the reason behind this weird looking thing is you cannot nest bracket arguments https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#bracket-argument
70+ # some variables need evaluation but some not and must be literals, to make this code read-able & work we do a small workaround
71+
72+ # Compoment
73+ configure_file("${NBL_ROOT_PATH}/cmake/cpack/find/compoment/template.cmake" "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp" @ONLY)
74+ file(READ "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp" _NBL_COMPOMENT_INCLUDE_LIST_TRANFORM_)
75+ file(REMOVE "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp")
76+ file(APPEND "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}" "\n${_NBL_COMPOMENT_INCLUDE_LIST_TRANFORM_}")
77+
78+ # Config
79+ if(NOT EXISTS "${NBL_CMAKE_CONFIG_OUTPUT_FILE}")
80+ file(READ "${NBL_ROOT_PATH}/cmake/cpack/find/licence/template.cmake" _NBL_LICENCE_)
81+ file(APPEND "${NBL_CMAKE_CONFIG_OUTPUT_FILE}" "${_NBL_LICENCE_}")
82+ endif()
83+
84+ configure_file("${NBL_ROOT_PATH}/cmake/cpack/find/config/template.cmake" "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp" @ONLY)
85+ file(READ "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp" _NBL_CONFIG_FILE_CONTENT_)
86+ file(REMOVE "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp")
87+ file(APPEND "${NBL_CMAKE_CONFIG_OUTPUT_FILE}" "\n\n${_NBL_CONFIG_FILE_CONTENT_}")
88+ ]=]
89+ )
90+
91+ install (CODE "${NBL_FIND_NABLA_IMPL} " COMPONENT ${_COMPOMENT_} )
92+ endfunction ()
93+
94+ # Generate compoment configurations
95+ NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Headers include )
96+ NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Libraries lib)
97+ NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Runtimes runtime)
0 commit comments