aboutsummaryrefslogtreecommitdiff
path: root/tools/cmake/common/ExportLibrary.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cmake/common/ExportLibrary.cmake')
-rw-r--r--tools/cmake/common/ExportLibrary.cmake72
1 files changed, 72 insertions, 0 deletions
diff --git a/tools/cmake/common/ExportLibrary.cmake b/tools/cmake/common/ExportLibrary.cmake
new file mode 100644
index 000000000..670f31839
--- /dev/null
+++ b/tools/cmake/common/ExportLibrary.cmake
@@ -0,0 +1,72 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+#[===[.rst:
+.. cmake:command:: export_library
+
+ .. code:: cmake
+
+ export_library(TARGET LIB_NAME INTERFACE_FILES)
+
+ INPUTS:
+
+ ``TARGET``
+ The name of an already defined target that corresponds to the library.
+
+ ``LIB_NAME``
+ The name of the library.
+
+ ``INTERFACE_FILES``
+ List of header files to declare the library's public interface.
+
+#]===]
+function(export_library)
+ set(options )
+ set(oneValueArgs TARGET LIB_NAME)
+ set(multiValueArgs INTERFACE_FILES)
+ cmake_parse_arguments(MY_PARAMS "${options}" "${oneValueArgs}"
+ "${multiValueArgs}" ${ARGN} )
+
+ if(NOT DEFINED MY_PARAMS_TARGET)
+ message(FATAL_ERROR "export_library: mandatory parameter TARGET not defined!")
+ endif()
+ if(NOT DEFINED MY_PARAMS_LIB_NAME)
+ message(FATAL_ERROR "export_library: mandatory parameter LIB_NAME not defined!")
+ endif()
+
+ # Set default install location if none specified
+ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
+ endif()
+
+ # Specify export name and destinations for install
+ install(
+ TARGETS ${MY_PARAMS_TARGET}
+ EXPORT ${MY_PARAMS_LIB_NAME}_targets
+ ARCHIVE
+ DESTINATION lib
+ LIBRARY
+ DESTINATION lib
+ PUBLIC_HEADER
+ DESTINATION include
+ )
+
+ # Install library header files files
+ install(
+ FILES ${MY_PARAMS_INTERFACE_FILES}
+ DESTINATION include
+ )
+
+ # Install the export details
+ install(
+ EXPORT ${MY_PARAMS_LIB_NAME}_targets
+ FILE ${MY_PARAMS_LIB_NAME}_targets.cmake
+ NAMESPACE ${MY_PARAMS_LIB_NAME}::
+ DESTINATION lib/cmake
+ COMPONENT ${MY_PARAMS_LIB_NAME}
+ )
+endfunction()