From c5f94b10bbb30e525fa3ca313e7ccb173040c90a Mon Sep 17 00:00:00 2001 From: Derek Murray Date: Wed, 3 Aug 2016 11:16:09 -0700 Subject: [PATCH] Restore a working cmake build. (#3606) --- tensorflow/contrib/cmake/CMakeLists.txt | 1 + tensorflow/contrib/cmake/external/gif.cmake | 38 +++++++++++++++++++ tensorflow/contrib/cmake/tf_cc_ops.cmake | 36 ++++++++++++++++-- .../cmake/tf_core_direct_session.cmake | 9 +++++ .../contrib/cmake/tf_core_framework.cmake | 2 + tensorflow/contrib/cmake/tf_tools.cmake | 1 + tensorflow/contrib/cmake/tf_tutorials.cmake | 2 + tensorflow/core/kernels/debug_ops.h | 4 ++ 8 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 tensorflow/contrib/cmake/external/gif.cmake diff --git a/tensorflow/contrib/cmake/CMakeLists.txt b/tensorflow/contrib/cmake/CMakeLists.txt index c449c803fa2..e5a0790ff4a 100644 --- a/tensorflow/contrib/cmake/CMakeLists.txt +++ b/tensorflow/contrib/cmake/CMakeLists.txt @@ -39,6 +39,7 @@ set (DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads" mark_as_advanced(DOWNLOAD_LOCATION) # External dependencies +include(gif) include(png) include(jpeg) include(re2) diff --git a/tensorflow/contrib/cmake/external/gif.cmake b/tensorflow/contrib/cmake/external/gif.cmake new file mode 100644 index 00000000000..9fdaeec13f6 --- /dev/null +++ b/tensorflow/contrib/cmake/external/gif.cmake @@ -0,0 +1,38 @@ +include (ExternalProject) + +set(gif_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/gif_archive) +set(gif_URL http://ufpr.dl.sourceforge.net/project/giflib/giflib-5.1.4.tar.gz) +set(gif_HASH SHA256=34a7377ba834397db019e8eb122e551a49c98f49df75ec3fcc92b9a794a4f6d1) +set(gif_INSTALL ${CMAKE_BINARY_DIR}/gif/install) +set(gif_STATIC_LIBRARIES ${gif_INSTALL}/lib/libgif.a) + +set(gif_HEADERS + "${gif_INSTALL}/include/gif_lib.h" +) + +ExternalProject_Add(gif + PREFIX gif + URL ${gif_URL} + URL_HASH ${gif_HASH} + INSTALL_DIR ${gif_INSTALL} + DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" + BUILD_COMMAND $(MAKE) + INSTALL_COMMAND $(MAKE) install + CONFIGURE_COMMAND + ${CMAKE_CURRENT_BINARY_DIR}/gif/src/gif/configure + --prefix=${gif_INSTALL} + --enable-shared=yes +) + +# put gif includes in the directory where they are expected +add_custom_target(gif_create_destination_dir + COMMAND ${CMAKE_COMMAND} -E make_directory ${gif_INCLUDE_DIR}/giflib-5.1.4/lib + DEPENDS gif) + +add_custom_target(gif_copy_headers_to_destination + DEPENDS gif_create_destination_dir) + +foreach(header_file ${gif_HEADERS}) + add_custom_command(TARGET gif_copy_headers_to_destination PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${header_file} ${gif_INCLUDE_DIR}/giflib-5.1.4/lib/) +endforeach() diff --git a/tensorflow/contrib/cmake/tf_cc_ops.cmake b/tensorflow/contrib/cmake/tf_cc_ops.cmake index 6ea9860992c..42eeef39e2d 100644 --- a/tensorflow/contrib/cmake/tf_cc_ops.cmake +++ b/tensorflow/contrib/cmake/tf_cc_ops.cmake @@ -1,10 +1,39 @@ +######################################################## +# tf_cc_framework library +######################################################## +set(tf_cc_framework_srcs + "${tensorflow_source_dir}/tensorflow/cc/framework/ops.h" + "${tensorflow_source_dir}/tensorflow/cc/framework/ops.cc" + "${tensorflow_source_dir}/tensorflow/cc/framework/scope.h" + "${tensorflow_source_dir}/tensorflow/cc/framework/scope.cc" +) + +add_library(tf_cc_framework OBJECT ${tf_cc_framework_srcs}) + +add_dependencies(tf_cc_framework tf_core_framework) + +target_include_directories(tf_cc_framework PRIVATE + ${tensorflow_source_dir} + ${eigen_INCLUDE_DIRS} +) + +target_compile_options(tf_cc_framework PRIVATE + -fno-exceptions + -DEIGEN_AVOID_STL_ARRAY +) + +# C++11 +target_compile_features(tf_cc_framework PRIVATE + cxx_rvalue_references +) + ######################################################## # tf_cc_op_gen_main library ######################################################## set(tf_cc_op_gen_main_srcs - "${tensorflow_source_dir}/tensorflow/cc/ops/cc_op_gen.cc" - "${tensorflow_source_dir}/tensorflow/cc/ops/cc_op_gen_main.cc" - "${tensorflow_source_dir}/tensorflow/cc/ops/cc_op_gen.h" + "${tensorflow_source_dir}/tensorflow/cc/framework/cc_op_gen.cc" + "${tensorflow_source_dir}/tensorflow/cc/framework/cc_op_gen_main.cc" + "${tensorflow_source_dir}/tensorflow/cc/framework/cc_op_gen.h" ) add_library(tf_cc_op_gen_main OBJECT ${tf_cc_op_gen_main_srcs}) @@ -120,6 +149,7 @@ foreach(tf_cc_op_lib_name ${tf_cc_op_lib_names}) ${PROTOBUF_LIBRARIES} tf_protos_cc re2_lib + ${gif_STATIC_LIBRARIES} ${jpeg_STATIC_LIBRARIES} ${png_STATIC_LIBRARIES} ${ZLIB_LIBRARIES} diff --git a/tensorflow/contrib/cmake/tf_core_direct_session.cmake b/tensorflow/contrib/cmake/tf_core_direct_session.cmake index bafc7e1e630..ba274d7f798 100644 --- a/tensorflow/contrib/cmake/tf_core_direct_session.cmake +++ b/tensorflow/contrib/cmake/tf_core_direct_session.cmake @@ -4,8 +4,17 @@ file(GLOB tf_core_direct_session_srcs "${tensorflow_source_dir}/tensorflow/core/common_runtime/direct_session.cc" "${tensorflow_source_dir}/tensorflow/core/common_runtime/direct_session.h" + "${tensorflow_source_dir}/tensorflow/core/debug/*.h" + "${tensorflow_source_dir}/tensorflow/core/debug/*.cc" ) +file(GLOB_RECURSE tf_core_direct_session_test_srcs + "${tensorflow_source_dir}/tensorflow/core/debug/*test*.h" + "${tensorflow_source_dir}/tensorflow/core/debug/*test*.cc" +) + +list(REMOVE_ITEM tf_core_direct_session_srcs ${tf_core_direct_session_test_srcs}) + add_library(tf_core_direct_session OBJECT ${tf_core_direct_session_srcs}) add_dependencies(tf_core_direct_session tf_core_cpu) diff --git a/tensorflow/contrib/cmake/tf_core_framework.cmake b/tensorflow/contrib/cmake/tf_core_framework.cmake index 3e6ec3c389e..c4828823556 100644 --- a/tensorflow/contrib/cmake/tf_core_framework.cmake +++ b/tensorflow/contrib/cmake/tf_core_framework.cmake @@ -150,6 +150,7 @@ 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} + ${gif_INCLUDE_DIR} ${jpeg_INCLUDE_DIR} ${png_INCLUDE_DIR} ${eigen_INCLUDE_DIRS} @@ -168,6 +169,7 @@ target_compile_features(tf_core_lib PRIVATE ) add_dependencies(tf_core_lib + gif_copy_headers_to_destination jpeg_copy_headers_to_destination png_copy_headers_to_destination re2_copy_headers_to_destination diff --git a/tensorflow/contrib/cmake/tf_tools.cmake b/tensorflow/contrib/cmake/tf_tools.cmake index 3c1fe5eac75..5022dfee0d6 100644 --- a/tensorflow/contrib/cmake/tf_tools.cmake +++ b/tensorflow/contrib/cmake/tf_tools.cmake @@ -22,6 +22,7 @@ target_link_libraries(${proto_text} PUBLIC ${PROTOBUF_LIBRARIES} # tf_protos_cc # re2_lib + ${gif_STATIC_LIBRARIES} ${jpeg_STATIC_LIBRARIES} ${png_STATIC_LIBRARIES} ${ZLIB_LIBRARIES} diff --git a/tensorflow/contrib/cmake/tf_tutorials.cmake b/tensorflow/contrib/cmake/tf_tutorials.cmake index 11dfd4739b4..7f18491d3fc 100644 --- a/tensorflow/contrib/cmake/tf_tutorials.cmake +++ b/tensorflow/contrib/cmake/tf_tutorials.cmake @@ -23,6 +23,7 @@ add_executable(tf_tutorials_example_trainer $ $ $ + $ $ $ $ @@ -40,6 +41,7 @@ target_link_libraries(tf_tutorials_example_trainer PUBLIC re2_lib ${boringssl_STATIC_LIBRARIES} ${farmhash_STATIC_LIBRARIES} + ${gif_STATIC_LIBRARIES} ${jpeg_STATIC_LIBRARIES} ${jsoncpp_STATIC_LIBRARIES} ${png_STATIC_LIBRARIES} diff --git a/tensorflow/core/kernels/debug_ops.h b/tensorflow/core/kernels/debug_ops.h index 8132cf1f6b0..17c87ffab28 100644 --- a/tensorflow/core/kernels/debug_ops.h +++ b/tensorflow/core/kernels/debug_ops.h @@ -47,6 +47,7 @@ class CopyOp : public OpKernel { Tensor* copied_tensor; OP_REQUIRES_OK(context, context->allocate_output(0, src_tensor.shape(), &copied_tensor)); +#if GOOGLE_CUDA if (off_host_input) { // Input is not on host: deep-copy it from GPU to the same GPU. Notification done_copy; @@ -58,6 +59,9 @@ class CopyOp : public OpKernel { // The input tensor is on the host (CPU): deep-copy from CPU to CPU. *copied_tensor = tensor::DeepCopy(src_tensor); } +#else + *copied_tensor = tensor::DeepCopy(src_tensor); +#endif // GOOGLE_CUDA } bool IsExpensive() override { return false; }