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_VERBOSE_MAKEFILE ON)
 
+option(BUILD_TESTS "Build test applications" ON)
+option(FLATBUFFERS_ROOT "Location where the flatbuffers 'include' and 'lib' folders to be found" Off)
+
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-include_directories(${PROJECT_SOURCE_DIR}/third_party/flatbuffers/include)
 
-# Turn off unnecessary flatbuffers targets
-set(FLATBUFFERS_BUILD_TESTS OFF)
-add_subdirectory(third_party/flatbuffers)
-
-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)
+# 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})
 
-add_executable(serialization_read_write
-  test/src/serialization_read_write.cpp
+# 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
+    )
+
+    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
