IVGCVSW-4313 Add Android case to dynamic reference CMakeLists
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Mon, 27 Jan 2020 14:13:03 +0000 (14:13 +0000)
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Mon, 27 Jan 2020 17:11:39 +0000 (17:11 +0000)
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I10724f2874018fb214cd12c3aef45be5347a8306

src/dynamic/reference/CMakeLists.txt

index 79bf7ec..4eeebea 100644 (file)
@@ -4,9 +4,17 @@
 #
 
 cmake_minimum_required (VERSION 3.0.2)
+project(dynamic-reference)
 
 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 
+if("${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+    add_definitions("-DBOOST_ALL_NO_LIB") # Turn off auto-linking as we specify the libs manually
+    find_package(Boost REQUIRED COMPONENTS system filesystem)
+    include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
+    link_directories(${Boost_LIBRARY_DIRS})
+endif()
+
 # File needed to wrap the existing backend into a dynamic one
 list(APPEND armnnRefDynamicBackend_sources
     RefDynamicBackend.cpp
@@ -24,12 +32,42 @@ set(RefBackendFiles ${RefBackendBaseFiles} ${RefBackendWorloadFiles})
 # Remove the file that contains the static backend registration
 list(REMOVE_ITEM RefBackendFiles ${RefBackendPath}/RefRegistryInitializer.cpp)
 
-# Create the shared object
-add_library(Arm_CpuRef_backend MODULE ${armnnRefDynamicBackend_sources} ${RefBackendFiles})
+if("${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+    # Set the common backend source path
+    set(CommonBackendPath ${PROJECT_SOURCE_DIR}/../../../src/backends/backendsCommon)
+    # Source files of the common backend
+    file(GLOB CommonBackendFiles ${CommonBackendPath}/*.cpp)
+
+    set(ArmnnPath ${PROJECT_SOURCE_DIR}/../../../src/armnn)
+    file(GLOB ArmnnFiles ${ArmnnPath}/*.cpp)
+
+    file(GLOB LayerFiles ${ArmnnPath}/layers/*cpp)
+    file(GLOB OptimizationFIles ${ArmnnPath}/optimizations/*.cpp)
+    file(GLOB ArmnnBaseFiles ${ArmnnPath}/*cpp)
+
+    set(ArmnnFiles ${ArmnnBaseFiles} ${LayerFiles} ${OptimizationFIles})
+
+    set(ArmnnUtilsPath ${PROJECT_SOURCE_DIR}/../../../src/armnnUtils)
+    file(GLOB ArmnnUtilsFiles ${ArmnnUtilsPath}/*cpp)
+
+    set(ProfilingPath ${PROJECT_SOURCE_DIR}/../../../src/profiling)
+    file(GLOB ProfilingFiles ${ProfilingPath}/*cpp)
+
+    add_library(Arm_CpuRef_backend MODULE
+        ${armnnRefDynamicBackend_sources} ${RefBackendFiles} ${CommonBackendFiles}
+        ${ArmnnFiles} ${ArmnnUtilsFiles} ${ProfilingFiles})
+else()
+    # Create the shared object
+    add_library(Arm_CpuRef_backend MODULE ${armnnRefDynamicBackend_sources} ${RefBackendFiles})
+endif()
 
 target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../include)
 target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../third-party) # for half
 target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/armnn)
 target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/armnnUtils)
 target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/backends)
-target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/profiling)
\ No newline at end of file
+target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/profiling)
+if("${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+    target_include_directories(Arm_CpuRef_backend PRIVATE ${Boost_INCLUDE_DIRS})
+    target_link_libraries(Arm_CpuRef_backend ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY})
+endif()