aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt88
1 files changed, 65 insertions, 23 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aaba60e..87e0825 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
#TOSA serialization library
-# Copyright (c) 2020-2021, ARM Limited.
+# Copyright (c) 2020-2022, ARM Limited.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -24,42 +24,84 @@ set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_VERBOSE_MAKEFILE ON)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-include_directories(${PROJECT_SOURCE_DIR}/third_party/flatbuffers/include)
+option(BUILD_TESTS "Build test applications" ON)
+option(FLATBUFFERS_ROOT "Location where the flatbuffers 'include' and 'lib' folders to be found" Off)
-# Turn off unnecessary flatbuffers targets
-set(FLATBUFFERS_BUILD_TESTS OFF)
-add_subdirectory(third_party/flatbuffers)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-add_library(tosa_serialization_lib STATIC
+add_library(tosa_serialization_lib
src/tosa_serialization_handler.cpp
src/numpy_utils.cpp
)
-target_link_libraries(tosa_serialization_lib PRIVATE flatbuffers)
-
-add_executable(serialization_read_write
- test/src/serialization_read_write.cpp
+# Verify we have a valid flatbuffers include path.
+# We will explicitly exclude the system include directories and only
+# accept either a user supplied value or the local third_party/flatbuffers.
+find_path(FLATBUFFERS_INCLUDE_PATH flatbuffers/flatbuffers.h
+ NO_DEFAULT_PATH
+ HINTS ${FLATBUFFERS_ROOT} ./third_party/flatbuffers
+ PATH_SUFFIXES include)
+message(STATUS "Flatbuffers include located at: ${FLATBUFFERS_INCLUDE_PATH}")
+include_directories(${FLATBUFFERS_INCLUDE_PATH})
+
+# Next is the library.
+# We will explicitly exclude the system lib directories and only accept
+# either a user supplied value or the local third_party/flatbuffers.
+find_library(FLATBUFFERS_LIBRARY
+ NAMES libflatbuffers.a flatbuffers
+ NO_DEFAULT_PATH
+ HINTS ${FLATBUFFERS_ROOT} ./third_party/flatbuffers
+ PATH_SUFFIXES lib)
+
+if(FLATBUFFERS_LIBRARY)
+ message(STATUS "Flatbuffers library located at: ${FLATBUFFERS_LIBRARY}")
+ target_link_libraries(tosa_serialization_lib PRIVATE ${FLATBUFFERS_LIBRARY})
+else()
+ # It's not there we treat third_party/flatbuffers as a sub project.
+ # In this case we'll need to build the downloaded source.
+ # Turn off unnecessary flatbuffers targets
+ set(FLATBUFFERS_BUILD_TESTS OFF)
+ add_subdirectory(third_party/flatbuffers)
+ target_link_libraries(tosa_serialization_lib PRIVATE flatbuffers)
+endif()
+
+set(public_headers)
+list(APPEND public_headers
+ include/attribute.h
+ include/attribute.def
+ include/numpy_utils.h
+ include/tosa_generated.h
+ include/tosa_serialization_handler.h
)
-target_link_libraries(serialization_read_write
- tosa_serialization_lib
-)
+set_target_properties(tosa_serialization_lib PROPERTIES PUBLIC_HEADER "${public_headers}")
-add_executable(serialization_npy_test
- test/src/serialization_npy_test.cpp
-)
+# Optionally build test executables.
+if (BUILD_TESTS)
+ add_executable(serialization_read_write
+ test/src/serialization_read_write.cpp
+ )
-target_link_libraries(serialization_npy_test
- tosa_serialization_lib
-)
+ target_link_libraries(serialization_read_write
+ tosa_serialization_lib
+ )
-set(TOSA_SERIALIZATION_LIB_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/tosa_serialization_lib")
+ add_executable(serialization_npy_test
+ test/src/serialization_npy_test.cpp
+ )
+ target_link_libraries(serialization_npy_test
+ tosa_serialization_lib
+ )
+endif()
+
+set(TOSA_SERIALIZATION_LIB_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/tosa_serialization_lib")
+# Follow GNU packaging norms for installation directory structure.
+include(GNUInstallDirs)
install(
TARGETS tosa_serialization_lib EXPORT TosaSerializationLibTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ PUBLIC_HEADER
+ ARCHIVE
)
install(EXPORT TosaSerializationLibTargets