/tensorflow/contrib/cmake/tf_core_framework.cmake
https://gitlab.com/hrishikeshvganu/tensorflow · CMake · 165 lines · 113 code · 20 blank · 32 comment · 1 complexity · c6dc8e2afbcca42e8b9860b34c962d79 MD5 · raw file
- ########################################################
- # RELATIVE_PROTOBUF_GENERATE_CPP function
- ########################################################
- # A variant of PROTOBUF_GENERATE_CPP that keeps the directory hierarchy.
- # ROOT_DIR must be absolute, and proto paths must be relative to ROOT_DIR.
- function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS HDRS ROOT_DIR)
- if(NOT ARGN)
- message(SEND_ERROR "Error: RELATIVE_PROTOBUF_GENERATE_CPP() called without any proto files")
- return()
- endif()
-
- set(${SRCS})
- set(${HDRS})
- foreach(FIL ${ARGN})
- set(ABS_FIL ${ROOT_DIR}/${FIL})
- get_filename_component(FIL_WE ${FIL} NAME_WE)
- get_filename_component(FIL_DIR ${ABS_FIL} PATH)
- file(RELATIVE_PATH REL_DIR ${ROOT_DIR} ${FIL_DIR})
- list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${REL_DIR}/${FIL_WE}.pb.cc")
- list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${REL_DIR}/${FIL_WE}.pb.h")
- add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${REL_DIR}/${FIL_WE}.pb.cc"
- "${CMAKE_CURRENT_BINARY_DIR}/${REL_DIR}/${FIL_WE}.pb.h"
- COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
- ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I ${ROOT_DIR} ${ABS_FIL}
- DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_EXECUTABLE}
- COMMENT "Running C++ protocol buffer compiler on ${FIL}"
- VERBATIM )
- endforeach()
- set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
- set(${SRCS} ${${SRCS}} PARENT_SCOPE)
- set(${HDRS} ${${HDRS}} PARENT_SCOPE)
- endfunction()
- ########################################################
- # tf_protos_cc library
- ########################################################
- # Build proto library
- include(FindProtobuf)
- find_package(Protobuf REQUIRED)
- include_directories(${PROTOBUF_INCLUDE_DIRS})
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
- file(GLOB_RECURSE tf_protos_cc_srcs RELATIVE ${tensorflow_source_dir}
- "${tensorflow_source_dir}/tensorflow/*.proto"
- )
- RELATIVE_PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS
- ${tensorflow_source_dir} ${tf_protos_cc_srcs}
- )
- add_library(tf_protos_cc ${PROTO_SRCS} ${PROTO_HDRS})
- target_include_directories(tf_protos_cc PUBLIC
- ${CMAKE_CURRENT_BINARY_DIR}
- )
- target_link_libraries(tf_protos_cc PUBLIC
- ${PROTOBUF_LIBRARIES}
- )
- ########################################################
- # tf_core_lib library
- ########################################################
- file(GLOB_RECURSE tf_core_lib_srcs
- "${tensorflow_source_dir}/tensorflow/core/lib/*.h"
- "${tensorflow_source_dir}/tensorflow/core/lib/*.cc"
- "${tensorflow_source_dir}/tensorflow/core/platform/*.h"
- "${tensorflow_source_dir}/tensorflow/core/platform/*.cc"
- "${tensorflow_source_dir}/tensorflow/core/public/*.h"
- )
- file(GLOB_RECURSE tf_core_lib_test_srcs
- "${tensorflow_source_dir}/tensorflow/core/lib/*test*.h"
- "${tensorflow_source_dir}/tensorflow/core/lib/*test*.cc"
- "${tensorflow_source_dir}/tensorflow/core/platform/*test*.h"
- "${tensorflow_source_dir}/tensorflow/core/platform/*test*.cc"
- "${tensorflow_source_dir}/tensorflow/core/public/*test*.h"
- )
- list(REMOVE_ITEM tf_core_lib_srcs ${tf_core_lib_test_srcs})
- add_library(tf_core_lib OBJECT ${tf_core_lib_srcs})
- target_include_directories(tf_core_lib PUBLIC
- ${tensorflow_source_dir}
- ${jpeg_INCLUDE_DIR}
- ${png_INCLUDE_DIR}
- )
- #target_link_libraries(tf_core_lib
- # ${CMAKE_THREAD_LIBS_INIT}
- # ${PROTOBUF_LIBRARIES}
- # tf_protos_cc
- #)
- target_compile_options(tf_core_lib PRIVATE
- -fno-exceptions
- -DEIGEN_AVOID_STL_ARRAY
- )
- # C++11
- target_compile_features(tf_core_lib PRIVATE
- cxx_rvalue_references
- )
- add_dependencies(tf_core_lib
- jpeg_copy_headers_to_destination
- png_copy_headers_to_destination
- re2_copy_headers_to_destination
- eigen
- tf_protos_cc
- )
- ########################################################
- # tf_core_framework library
- ########################################################
- file(GLOB_RECURSE tf_core_framework_srcs
- "${tensorflow_source_dir}/tensorflow/core/framework/*.h"
- "${tensorflow_source_dir}/tensorflow/core/framework/*.cc"
- "${tensorflow_source_dir}/tensorflow/core/util/*.h"
- "${tensorflow_source_dir}/tensorflow/core/util/*.cc"
- "${tensorflow_source_dir}/public/*.h"
- )
- file(GLOB_RECURSE tf_core_framework_test_srcs
- "${tensorflow_source_dir}/tensorflow/core/framework/*test*.h"
- "${tensorflow_source_dir}/tensorflow/core/framework/*test*.cc"
- "${tensorflow_source_dir}/tensorflow/core/framework/*testutil.h"
- "${tensorflow_source_dir}/tensorflow/core/framework/*testutil.cc"
- "${tensorflow_source_dir}/tensorflow/core/framework/*main.cc"
- "${tensorflow_source_dir}/tensorflow/core/util/*test*.h"
- "${tensorflow_source_dir}/tensorflow/core/util/*test*.cc"
- "${tensorflow_source_dir}/tensorflow/core/util/*main.cc"
- )
- list(REMOVE_ITEM tf_core_framework_srcs ${tf_core_framework_test_srcs})
- add_library(tf_core_framework OBJECT ${tf_core_framework_srcs})
- target_include_directories(tf_core_framework PUBLIC
- ${tensorflow_source_dir}
- ${eigen_INCLUDE_DIRS}
- ${re2_INCLUDES}
- )
- #target_link_libraries(tf_core_framework
- # ${CMAKE_THREAD_LIBS_INIT}
- # ${PROTOBUF_LIBRARIES}
- # #${re2_STATIC_LIBRARIES}
- # re2_lib
- # ${jpeg_STATIC_LIBRARIES}
- # ${png_STATIC_LIBRARIES}
- # tf_protos_cc
- # tf_core_lib
- #)
- add_dependencies(tf_core_framework
- tf_core_lib
- )
- target_compile_options(tf_core_framework PRIVATE
- -fno-exceptions
- -DEIGEN_AVOID_STL_ARRAY
- )
- # C++11
- target_compile_features(tf_core_framework PRIVATE
- cxx_rvalue_references
- )