diff options
author | Damjan Marion <damarion@cisco.com> | 2018-08-26 11:04:40 +0200 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2018-08-26 13:50:53 +0200 |
commit | 4553c95ab7cac75838433fdd5cd3c0d0c1d6e2e6 (patch) | |
tree | 248b50ad7df32be9f1662920ed9c322e23de6b91 /src/cmake | |
parent | d16004d56c22635a0e21b177933dc39b65a3642a (diff) |
cmake: add add_vpp_library and add_vpp_executable macros
Change-Id: I1382021a6f616571b4b3243ba8c8999239d10815
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/cmake')
-rw-r--r-- | src/cmake/exec.cmake | 34 | ||||
-rw-r--r-- | src/cmake/library.cmake | 64 |
2 files changed, 98 insertions, 0 deletions
diff --git a/src/cmake/exec.cmake b/src/cmake/exec.cmake new file mode 100644 index 00000000000..b8277fa8389 --- /dev/null +++ b/src/cmake/exec.cmake @@ -0,0 +1,34 @@ +# Copyright (c) 2018 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +macro(add_vpp_executable exec) + cmake_parse_arguments(ARG + "ENABLE_EXPORTS" + "" + "SOURCES;LINK_LIBRARIES;DEPENDS" + ${ARGN} + ) + + add_executable(${exec} ${ARG_SOURCES}) + if(ARG_LINK_LIBRARIES) + target_link_libraries(${exec} ${ARG_LINK_LIBRARIES}) + endif() + if(ARG_ENABLE_EXPORTS) + set_target_properties(${exec} PROPERTIES ENABLE_EXPORTS 1) + endif() + if(ARG_DEPENDS) + add_dependencies(${exec} ${ARG_DEPENDS}) + endif() + install(TARGETS ${exec} DESTINATION bin) +endmacro() + diff --git a/src/cmake/library.cmake b/src/cmake/library.cmake new file mode 100644 index 00000000000..08831ed9cf8 --- /dev/null +++ b/src/cmake/library.cmake @@ -0,0 +1,64 @@ +# Copyright (c) 2018 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +macro(add_vpp_library lib) + cmake_parse_arguments(ARG + "" + "" + "SOURCES;MULTIARCH_SOURCES;API_FILES;LINK_LIBRARIES;INSTALL_HEADERS;DEPENDS" + ${ARGN} + ) + + add_library(${lib} SHARED ${ARG_SOURCES}) + + # library deps + if(ARG_LINK_LIBRARIES) + target_link_libraries(${lib} ${ARG_LINK_LIBRARIES}) + endif() + # install .so + install(TARGETS ${lib} DESTINATION lib) + + if(ARG_MULTIARCH_SOURCES) + vpp_library_set_multiarch_sources(${lib} ${ARG_MULTIARCH_SOURCES}) + endif() + + if(ARG_API_FILES) + vpp_add_api_files(${lib}_api_headers ${ARG_API_FILES}) + foreach(file ${ARG_API_FILES}) + get_filename_component(dir ${file} DIRECTORY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${file}.h DESTINATION include/${lib}/${dir}) + endforeach() + endif() + + if(ARG_DEPENDS) + add_dependencies(${lib} ${ARG_DEPENDS}) + endif() + + # install headers + if(ARG_INSTALL_HEADERS) + foreach(file ${ARG_INSTALL_HEADERS}) + get_filename_component(dir ${file} DIRECTORY) + install(FILES ${file} DESTINATION include/${lib}/${dir}) + endforeach() + endif() +endmacro() + +############################################################################## +# header files +############################################################################## +function (add_vpp_headers path) + foreach(file ${ARGN}) + get_filename_component(dir ${file} DIRECTORY) + install(FILES ${file} DESTINATION include/${path}/${dir}) + endforeach() +endfunction() |