Refactor nnc build system (#1584)
authorРоман Михайлович Русяев/AI Tools Lab /SRR/Staff Engineer/삼성전자 <r.rusyaev@samsung.com>
Wed, 19 Sep 2018 18:32:09 +0000 (21:32 +0300)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 19 Sep 2018 18:32:09 +0000 (21:32 +0300)
* implement function to add nnc library

Signed-off-by: Roman Rusyaev <r.rusyaev@samsung.com>
contrib/nnc/CMakeLists.txt
contrib/nnc/passes/caffe_frontend/CMakeLists.txt
contrib/nnc/passes/interpreter/CMakeLists.txt
contrib/nnc/passes/soft_backend/CMakeLists.txt
contrib/nnc/passes/tflite_frontend/CMakeLists.txt

index 057719f..cb6c97e 100644 (file)
@@ -9,6 +9,18 @@ set(OPTIONS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/driver/Options.cpp)
 # add interface header files
 include_directories(include)
 
+# nnc executable
+add_executable(nnc ${DRIVER_SOURCES} ${OPTIONS_SRC})
+target_link_libraries(nnc PRIVATE nnc_support nnc_pass)
+
+# install nnc
+install(TARGETS nnc DESTINATION ${NNC_INSTALL_PATH}/bin)
+# TODO when we upgrade our cmake to version 3.8 we'll need to use BUILD_RPATH
+# variable instead of CMAKE_BUILD_WITH_INSTALL_RPATH here
+set_target_properties(nnc PROPERTIES INSTALL_RPATH "${NNC_INSTALL_LIB_PATH}")
+set_target_properties(nnc PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
+set_target_properties(nnc PROPERTIES CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+
 set(NNC_ROOT_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 
 #
@@ -60,6 +72,14 @@ function(install_nnc_library LIB)
   # set RPATH to core part of nnc
   set_target_properties(${LIB} PROPERTIES INSTALL_RPATH ${NNC_INSTALL_LIB_PATH})
 endfunction()
+
+function(add_nnc_library)
+  add_library(${ARGV})
+
+  get_target_property(LIBS nnc LINK_LIBRARIES)
+  list(APPEND LIBS ${ARGV0})
+  set_target_properties(nnc PROPERTIES LINK_LIBRARIES "${LIBS}")
+endfunction()
 #
 # end functions
 #
@@ -74,11 +94,6 @@ set(NNC_TFLITE_FRONTEND_DIR ${CMAKE_CURRENT_SOURCE_DIR}/passes/tflite_frontend)
 set(NNC_CORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/core)
 set(NNC_SUPPORT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/support)
 
-# nnc executable
-add_executable(nnc ${DRIVER_SOURCES} ${OPTIONS_SRC})
-target_link_libraries(nnc PRIVATE nnc_support nnc_pass)
-target_link_libraries(nnc PRIVATE caffe_importer tflite_import soft_backend_cpp soft_backend_c nnc_interpreter)
-
 # configure file that contains extern definitions
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/Definitions.h.in
         ${CMAKE_CURRENT_BINARY_DIR}/include/Definitions.h)
@@ -92,10 +107,3 @@ add_subdirectory(examples)
 add_subdirectory(unittests)
 add_subdirectory(tests)
 
-# install nnc
-install(TARGETS nnc DESTINATION ${NNC_INSTALL_PATH}/bin)
-# TODO when we upgrade our cmake to version 2.12 this is needed to use BUILD_RPATH variable NOCOMMIT
-set_target_properties(nnc PROPERTIES INSTALL_RPATH "${NNC_INSTALL_LIB_PATH}")
-set_target_properties(nnc PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
-set_target_properties(nnc PROPERTIES CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
-
index 6f3ab2c..cd40303 100644 (file)
@@ -8,8 +8,8 @@ endif()
 file(GLOB caffe_importer_sources *.cpp)
 file(GLOB caffe_importer_headers *.h)
 
-add_nncc_library(caffe_importer SHARED ${caffe_importer_sources}
-                                       ${caffe_importer_headers})
+add_nnc_library(caffe_importer SHARED ${caffe_importer_sources}
+                                      ${caffe_importer_headers})
 
 target_link_libraries(caffe_importer PUBLIC caffeproto)
 target_link_libraries(caffe_importer PUBLIC nn_import_common)
index ec33943..26b1c64 100644 (file)
@@ -1,5 +1,5 @@
 file(GLOB_RECURSE interp_src ./*.cpp ./*.h)
-add_library(nnc_interpreter SHARED ${interp_src})
+add_nnc_library(nnc_interpreter SHARED ${interp_src})
 target_link_libraries(nnc_interpreter PRIVATE nnc_core nnc_support)
 
 if(NNC_HDF5_SUPPORTED)
index a466543..0fdd0b8 100644 (file)
@@ -16,7 +16,7 @@ target_link_libraries(soft_backend_common PRIVATE nnc_support)
 target_link_libraries(soft_backend_common PRIVATE nnc_core)
 
 function(make_soft_backend NAME)
-    add_library(${NAME} SHARED ${ARGN} ${SOFT_GENERATED_SOURCES})
+    add_nnc_library(${NAME} SHARED ${ARGN} ${SOFT_GENERATED_SOURCES})
     target_include_directories(${NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
 
     target_link_libraries(${NAME} PRIVATE soft_backend_common)
index ee256f3..e4a770a 100644 (file)
@@ -31,7 +31,7 @@ set(tflite_importer_sources tflite_walker.cpp
 file(GLOB tflite_importer_headers *.h)
 
 set(tflite_import tflite_import)
-add_library(${tflite_import} SHARED ${tflite_importer_sources} ${tflite_importer_headers})
+add_nnc_library(${tflite_import} SHARED ${tflite_importer_sources} ${tflite_importer_headers})
 
 target_link_libraries(${tflite_import} PUBLIC tflite_schema)
 target_link_libraries(${tflite_import} PUBLIC flatbuffers)