diff --git a/tensorflow/contrib/cmake/CMakeLists.txt b/tensorflow/contrib/cmake/CMakeLists.txt index 4f4497618b0..d8c3d12115e 100644 --- a/tensorflow/contrib/cmake/CMakeLists.txt +++ b/tensorflow/contrib/cmake/CMakeLists.txt @@ -15,10 +15,13 @@ cmake_policy(SET CMP0022 NEW) # Options option(tensorflow_VERBOSE "Enable for verbose output" OFF) -option(tensorflow_BUILD_TESTS "Build tests" ON) option(tensorflow_ENABLE_SSL_SUPPORT "Enable boringssl support" OFF) +option(tensorflow_ENABLE_GRPC_SUPPORT "Enable gRPC support" ON) option(tensorflow_BUILD_CC_EXAMPLE "Build the C++ tutorial example" ON) option(tensorflow_BUILD_PYTHON_BINDINGS "Build the Python bindings" ON) +option(tensorflow_BUILD_ALL_KERNELS "Build all OpKernels" ON) +option(tensorflow_BUILD_CONTRIB_KERNELS "Build OpKernels from tensorflow/contrib/..." ON) + #Threads: defines CMAKE_THREAD_LIBS_INIT and adds -pthread compile option for # targets that link ${CMAKE_THREAD_LIBS_INIT}. @@ -42,6 +45,14 @@ set (DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads" mark_as_advanced(DOWNLOAD_LOCATION) set(CMAKE_POSITION_INDEPENDENT_CODE ON) +add_definitions(-DEIGEN_AVOID_STL_ARRAY) +if(WIN32) + add_definitions(-DNOMINMAX -D_WIN32_WINNT=0x0A00 -DLANG_CXX11 -DCOMPILER_MSVC) +endif() + +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-fno-exceptions -std=c++11") +endif() # External dependencies include(gif) @@ -49,35 +60,76 @@ include(png) include(jpeg) include(eigen) include(jsoncpp) -if(tensorflow_ENABLE_SSL_SUPPORT) - include(boringssl) -endif() include(farmhash) include(highwayhash) include(protobuf) -include(grpc) +find_package(ZLIB REQUIRED) + +set(tensorflow_EXTERNAL_LIBRARIES + ${gif_STATIC_LIBRARIES} + ${png_STATIC_LIBRARIES} + ${jpeg_STATIC_LIBRARIES} + ${jsoncpp_STATIC_LIBRARIES} + ${farmhash_STATIC_LIBRARIES} + ${highwayhash_STATIC_LIBRARIES} + ${protobuf_STATIC_LIBRARIES} + ${ZLIB_LIBRARIES} +) +set(tensorflow_EXTERNAL_DEPENDENCIES + gif_copy_headers_to_destination png_copy_headers_to_destination jpeg_copy_headers_to_destination jsoncpp farmhash_copy_headers_to_destination highwayhash_copy_headers_to_destination protobuf eigen) + +include_directories( + # Source and generated code. + ${tensorflow_source_dir} + ${CMAKE_CURRENT_BINARY_DIR} + # External dependencies. + ${gif_INCLUDE_DIR} + ${png_INCLUDE_DIR} + ${jpeg_INCLUDE_DIR} + ${eigen_INCLUDE_DIRS} + ${jsoncpp_INCLUDE_DIR} + ${farmhash_INCLUDE_DIR} + ${highwayhash_INCLUDE_DIR} + ${PROTOBUF_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIRS} +) + +if(tensorflow_ENABLE_SSL_SUPPORT) + include(boringssl) + list(APPEND tensorflow_EXTERNAL_LIBRARIES ${boringssl_STATIC_LIBRARIES}) + list(APPEND tensorflow_EXTERNAL_DEPENDENCIES boringssl) + include_directories(${boringssl_INCLUDE_DIR}) +endif() +if(tensorflow_ENABLE_GRPC_SUPPORT) + include(grpc) + list(APPEND tensorflow_EXTERNAL_LIBRARIES ${grpc_STATIC_LIBRARIES}) + list(APPEND tensorflow_EXTERNAL_DEPENDENCIES grpc) + include_directories(${GRPC_INCLUDE_DIRS}) +endif() +if(WIN32) + list(APPEND tensorflow_EXTERNAL_LIBRARIES wsock32 ws2_32 shlwapi) +endif() +if(UNIX) + list(APPEND tensorflow_EXTERNAL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS}) +endif() # Let's get to work! include(tf_core_framework.cmake) +include(tf_tools.cmake) # NOTE: Disabled until issue #3996 is fixed. # include(tf_stream_executor.cmake) include(tf_core_cpu.cmake) include(tf_models.cmake) include(tf_core_ops.cmake) include(tf_core_direct_session.cmake) -include(tf_core_distributed_runtime.cmake) +if(tensorflow_ENABLE_GRPC_SUPPORT) + include(tf_core_distributed_runtime.cmake) +endif() include(tf_core_kernels.cmake) include(tf_cc_ops.cmake) -include(tf_tools.cmake) if(tensorflow_BUILD_CC_EXAMPLE) include(tf_tutorials.cmake) endif() if(tensorflow_BUILD_PYTHON_BINDINGS) include(tf_python.cmake) endif() - -if (tensorflow_BUILD_TESTS) - include(tests.cmake) -endif (tensorflow_BUILD_TESTS) - -include(install.cmake) diff --git a/tensorflow/contrib/cmake/external/farmhash.cmake b/tensorflow/contrib/cmake/external/farmhash.cmake index a68e4cc4224..b2c13a14fbb 100644 --- a/tensorflow/contrib/cmake/external/farmhash.cmake +++ b/tensorflow/contrib/cmake/external/farmhash.cmake @@ -1,6 +1,6 @@ include (ExternalProject) -set(farmhash_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/farmhash_archive) +set(farmhash_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/farmhash_archive ${CMAKE_CURRENT_BINARY_DIR}/external/farmhash_archive/util) set(farmhash_URL https://github.com/google/farmhash/archive/34c13ddfab0e35422f4c3979f360635a8c050260.zip) set(farmhash_HASH SHA256=e3d37a59101f38fd58fb799ed404d630f0eee18bfc2a2433910977cc8fea9c28) set(farmhash_BUILD ${CMAKE_BINARY_DIR}/farmhash/src/farmhash) diff --git a/tensorflow/contrib/cmake/external/gif.cmake b/tensorflow/contrib/cmake/external/gif.cmake index 021c2d676eb..da20561b880 100644 --- a/tensorflow/contrib/cmake/external/gif.cmake +++ b/tensorflow/contrib/cmake/external/gif.cmake @@ -4,28 +4,58 @@ set(gif_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external/gif_archive/giflib-5.1. 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_BUILD ${CMAKE_BINARY_DIR}/gif/src/gif) + set(gif_HEADERS "${gif_INSTALL}/include/gif_lib.h" ) -set(ENV{CFLAGS} "$ENV{CFLAGS} -fPIC") +if(WIN32) -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 - --with-pic - --prefix=${gif_INSTALL} - --enable-shared=yes -) + set(gif_STATIC_LIBRARIES ${gif_INSTALL}/lib/giflib.lib) + + ExternalProject_Add(gif + PREFIX gif + URL ${gif_URL} + URL_HASH ${gif_HASH} + PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/patches/gif/CMakeLists.txt ${gif_BUILD} + INSTALL_DIR ${gif_INSTALL} + DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" + CMAKE_CACHE_ARGS + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF + -DCMAKE_INSTALL_PREFIX:STRING=${gif_INSTALL} + ) + + ExternalProject_Add_Step(gif copy_unistd + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/patches/gif/unistd.h ${gif_BUILD}/lib/unistd.h + DEPENDEES patch + DEPENDERS build + ) + +else() + + set(gif_STATIC_LIBRARIES ${gif_INSTALL}/lib/libgif.a) + set(ENV{CFLAGS} "$ENV{CFLAGS} -fPIC") + + 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 + --with-pic + --prefix=${gif_INSTALL} + --enable-shared=yes + ) + +endif() # put gif includes in the directory where they are expected add_custom_target(gif_create_destination_dir diff --git a/tensorflow/contrib/cmake/external/grpc.cmake b/tensorflow/contrib/cmake/external/grpc.cmake index 6684c051429..ecb381f1154 100644 --- a/tensorflow/contrib/cmake/external/grpc.cmake +++ b/tensorflow/contrib/cmake/external/grpc.cmake @@ -6,12 +6,12 @@ set(GRPC_BUILD ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc) set(GRPC_TAG 3bc78cd0b5bd784a235c01612d634b1ec5f8fb97) if(WIN32) - set(GRPC_LIBRARIES + set(grpc_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/${CMAKE_BUILD_TYPE}/grpc++_unsecure.lib ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/${CMAKE_BUILD_TYPE}/grpc_unsecure.lib ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/${CMAKE_BUILD_TYPE}/gpr.lib) else() - set(GRPC_LIBRARIES + set(grpc_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/libgrpc++_unsecure.a ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/libgrpc_unsecure.a ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/libgpr.a) @@ -30,6 +30,6 @@ ExternalProject_Add(grpc -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF -DPROTOBUF_INCLUDE_DIRS:STRING=${PROTOBUF_INCLUDE_DIRS} - -DPROTOBUF_LIBRARIES:STRING=${PROTOBUF_LIBRARIES} + -DPROTOBUF_LIBRARIES:STRING=${protobuf_STATIC_LIBRARIES} ) diff --git a/tensorflow/contrib/cmake/external/highwayhash.cmake b/tensorflow/contrib/cmake/external/highwayhash.cmake index 7de67daee96..a19ebfe24f1 100644 --- a/tensorflow/contrib/cmake/external/highwayhash.cmake +++ b/tensorflow/contrib/cmake/external/highwayhash.cmake @@ -17,41 +17,23 @@ add_custom_target(highwayhash_copy_headers_to_destination if(WIN32) set(highwayhash_HEADERS "${highwayhash_BUILD}/highwayhash/*.h") set(highwayhash_STATIC_LIBRARIES ${highwayhash_INSTALL}/lib/highwayhash.lib) - - ExternalProject_Add(highwayhash - PREFIX highwayhash - GIT_REPOSITORY ${highwayhash_URL} - GIT_TAG ${highwayhash_TAG} - DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" - BUILD_IN_SOURCE 1 - PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/patches/highwayhash/CMakeLists.txt ${highwayhash_BUILD} - INSTALL_DIR ${highwayhash_INSTALL} - CMAKE_CACHE_ARGS - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF - -DCMAKE_INSTALL_PREFIX:STRING=${highwayhash_INSTALL}) - - add_custom_command(TARGET highwayhash_copy_headers_to_destination PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory ${highwayhash_INSTALL}/include/ ${highwayhash_INCLUDE_DIR}/highwayhash) - else() - set(highwayhash_HEADERS "${highwayhash_BUILD}/highwayhash/*.h") set(highwayhash_STATIC_LIBRARIES ${highwayhash_INSTALL}/lib/libhighwayhash.a) - - ExternalProject_Add(highwayhash - PREFIX highwayhash - GIT_REPOSITORY ${highwayhash_URL} - GIT_TAG ${highwayhash_TAG} - DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" - BUILD_IN_SOURCE 1 - BUILD_COMMAND $(MAKE) - CONFIGURE_COMMAND "" - INSTALL_COMMAND "") - - foreach(header_file ${highwayhash_HEADERS}) - add_custom_command(TARGET highwayhash_copy_headers_to_destination PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${header_file} ${highwayhash_INCLUDE_DIR}/highwayhash) - endforeach() - endif() + +ExternalProject_Add(highwayhash + PREFIX highwayhash + GIT_REPOSITORY ${highwayhash_URL} + GIT_TAG ${highwayhash_TAG} + DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" + BUILD_IN_SOURCE 1 + PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/patches/highwayhash/CMakeLists.txt ${highwayhash_BUILD} + INSTALL_DIR ${highwayhash_INSTALL} + CMAKE_CACHE_ARGS + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF + -DCMAKE_INSTALL_PREFIX:STRING=${highwayhash_INSTALL}) + +add_custom_command(TARGET highwayhash_copy_headers_to_destination PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${highwayhash_INSTALL}/include/ ${highwayhash_INCLUDE_DIR}/highwayhash) diff --git a/tensorflow/contrib/cmake/external/protobuf.cmake b/tensorflow/contrib/cmake/external/protobuf.cmake index abde06ad310..3e8d0374cc2 100644 --- a/tensorflow/contrib/cmake/external/protobuf.cmake +++ b/tensorflow/contrib/cmake/external/protobuf.cmake @@ -5,16 +5,17 @@ set(PROTOBUF_URL https://github.com/google/protobuf/releases/download/v3.1.0/pro set(PROTOBUF_HASH SHA256=0c18ccc99e921c407f359047f9b56cca196c3ab36eed79e5979df6c1f9e623b7) if(WIN32) - set(PROTOBUF_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/libprotobuf.lib) + set(protobuf_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/libprotobuf.lib) set(PROTOBUF_PROTOC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/protoc.exe) else() - set(PROTOBUF_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a) + set(protobuf_STATIC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a) set(PROTOBUF_PROTOC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/protoc) endif() ExternalProject_Add(protobuf PREFIX protobuf URL ${PROTOBUF_URL} + URL_HASH ${PROTOBUF_HASH} DOWNLOAD_DIR "${DOWNLOAD_LOCATION}" BUILD_IN_SOURCE 1 SOURCE_DIR ${CMAKE_BINARY_DIR}/protobuf/src/protobuf diff --git a/tensorflow/contrib/cmake/install.cmake b/tensorflow/contrib/cmake/install.cmake deleted file mode 100644 index a3fe2bcf066..00000000000 --- a/tensorflow/contrib/cmake/install.cmake +++ /dev/null @@ -1 +0,0 @@ -# [TODO] \ No newline at end of file diff --git a/tensorflow/contrib/cmake/patches/gif/CMakeLists.txt b/tensorflow/contrib/cmake/patches/gif/CMakeLists.txt new file mode 100644 index 00000000000..0fe919d89e3 --- /dev/null +++ b/tensorflow/contrib/cmake/patches/gif/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 2.8.3) + +project(giflib) + +set(GIFLIB_SRCS + "lib/dgif_lib.c" + "lib/egif_lib.c" + "lib/gif_font.c" + "lib/gif_hash.h" + "lib/gifalloc.c" + "lib/openbsd-reallocarray.c" + "lib/gif_err.c" + "lib/quantize.c" + "lib/gif_hash.c" + "lib/gif_lib.h" + "lib/gif_lib_private.h" +) +set(GIFLIB_INCLUDES + "lib/gif_lib.h" +) + +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") + +add_library(giflib ${GIFLIB_SRCS}) + +install(TARGETS giflib + RUNTIME DESTINATION bin COMPONENT RuntimeLibraries + LIBRARY DESTINATION lib COMPONENT RuntimeLibraries + ARCHIVE DESTINATION lib COMPONENT Development) + +foreach(GIFLIB_INCLUDE ${GIFLIB_INCLUDES}) + install(FILES ${GIFLIB_INCLUDE} DESTINATION include COMPONENT Development) +endforeach() diff --git a/tensorflow/contrib/cmake/patches/gif/unistd.h b/tensorflow/contrib/cmake/patches/gif/unistd.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tensorflow/contrib/cmake/patches/highwayhash/CMakeLists.txt b/tensorflow/contrib/cmake/patches/highwayhash/CMakeLists.txt index 94bb62f95fc..8313d1c9f29 100644 --- a/tensorflow/contrib/cmake/patches/highwayhash/CMakeLists.txt +++ b/tensorflow/contrib/cmake/patches/highwayhash/CMakeLists.txt @@ -40,6 +40,11 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}") add_library(highwayhash ${HIGHWAYHASH_SRCS}) +# C++11 +target_compile_features(highwayhash PRIVATE + cxx_rvalue_references +) + install(TARGETS highwayhash LIBRARY DESTINATION lib COMPONENT RuntimeLibraries ARCHIVE DESTINATION lib COMPONENT Development) diff --git a/tensorflow/contrib/cmake/tests.cmake b/tensorflow/contrib/cmake/tests.cmake deleted file mode 100644 index a3fe2bcf066..00000000000 --- a/tensorflow/contrib/cmake/tests.cmake +++ /dev/null @@ -1 +0,0 @@ -# [TODO] \ No newline at end of file diff --git a/tensorflow/contrib/cmake/tf_cc_ops.cmake b/tensorflow/contrib/cmake/tf_cc_ops.cmake index b5c33d66eed..6d9c4955745 100644 --- a/tensorflow/contrib/cmake/tf_cc_ops.cmake +++ b/tensorflow/contrib/cmake/tf_cc_ops.cmake @@ -12,21 +12,6 @@ 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 ######################################################## @@ -40,67 +25,10 @@ add_library(tf_cc_op_gen_main OBJECT ${tf_cc_op_gen_main_srcs}) add_dependencies(tf_cc_op_gen_main tf_core_framework) -target_include_directories(tf_cc_op_gen_main PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -#target_link_libraries(tf_cc_op_gen_main -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_protos_cc -# tf_core_lib -# tf_core_framework -#) - -target_compile_options(tf_cc_op_gen_main PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_cc_op_gen_main PRIVATE - cxx_rvalue_references -) - ######################################################## # tf_gen_op_wrapper_cc executables ######################################################## -# -# # Run the op generator. -# if name == "sendrecv_ops": -# include_internal = "1" -# else: -# include_internal = "0" -# native.genrule( -# name=name + "_genrule", -# outs=[out_ops_file + ".h", out_ops_file + ".cc"], -# tools=[":" + tool], -# cmd=("$(location :" + tool + ") $(location :" + out_ops_file + ".h) " + -# "$(location :" + out_ops_file + ".cc) " + include_internal)) - - - -#def tf_gen_op_wrappers_cc(name, -# op_lib_names=[], -# other_srcs=[], -# other_hdrs=[], -# pkg=""): -# subsrcs = other_srcs -# subhdrs = other_hdrs -# for n in op_lib_names: -# tf_gen_op_wrapper_cc(n, "ops/" + n, pkg=pkg) -# subsrcs += ["ops/" + n + ".cc"] -# subhdrs += ["ops/" + n + ".h"] -# -# native.cc_library(name=name, -# srcs=subsrcs, -# hdrs=subhdrs, -# deps=["//tensorflow/core:core_cpu"], -# copts=tf_copts(), -# alwayslink=1,) - # create directory for ops generated files set(cc_ops_target_dir ${CMAKE_CURRENT_BINARY_DIR}/tensorflow/cc/ops) @@ -115,18 +43,6 @@ set(tf_cc_op_lib_names "user_ops" ) foreach(tf_cc_op_lib_name ${tf_cc_op_lib_names}) - #tf_gen_op_wrapper_cc(name, out_ops_file, pkg=""): - # # Construct an op generator binary for these ops. - # tool = out_ops_file + "_gen_cc" #example ops/array_ops_gen_cc - # native.cc_binary( - # name = tool, - # copts = tf_copts(), - # linkopts = ["-lm"], - # linkstatic = 1, # Faster to link this one-time-use binary dynamically - # deps = (["//tensorflow/cc:cc_op_gen_main", - # pkg + ":" + name + "_op_lib"]) - # ) - # Using to work around an issue where no ops were # registered (static initializers dropped by the linker because the ops # are not used explicitly in the *_gen_cc executables). @@ -137,39 +53,9 @@ foreach(tf_cc_op_lib_name ${tf_cc_op_lib_names}) $ ) - target_include_directories(${tf_cc_op_lib_name}_gen_cc PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} - ) - - find_package(ZLIB REQUIRED) - target_link_libraries(${tf_cc_op_lib_name}_gen_cc PRIVATE - ${CMAKE_THREAD_LIBS_INIT} - ${PROTOBUF_LIBRARIES} tf_protos_cc - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${boringssl_STATIC_LIBRARIES} - ${CMAKE_DL_LIBS} - ) - if(tensorflow_ENABLE_SSL_SUPPORT) - target_link_libraries(${tf_cc_op_lib_name}_gen_cc PRIVATE - ${boringssl_STATIC_LIBRARIES}) - endif() - - target_compile_options(${tf_cc_op_lib_name}_gen_cc PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY - -lm - ) - - # C++11 - target_compile_features(${tf_cc_op_lib_name}_gen_cc PRIVATE - cxx_rvalue_references + ${tensorflow_EXTERNAL_LIBRARIES} ) set(cc_ops_include_internal 0) @@ -198,43 +84,3 @@ add_library(tf_cc_ops OBJECT "${tensorflow_source_dir}/tensorflow/cc/ops/const_op.cc" "${tensorflow_source_dir}/tensorflow/cc/ops/standard_ops.h" ) - -target_include_directories(tf_cc_ops PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -#target_link_libraries(tf_cc_ops -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_protos_cc -# tf_core_lib -# tf_core_cpu -# tf_models_word2vec_ops -#) - -target_compile_options(tf_cc_ops PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_cc_ops PRIVATE - cxx_rvalue_references -) - - -#tf_gen_op_wrappers_cc( -# name = "cc_ops", -# op_lib_names = [ -# ... -# ], -# other_hdrs = [ -# "ops/const_op.h", -# "ops/standard_ops.h", -# ], -# other_srcs = [ -# "ops/const_op.cc", -# ] + glob(["ops/*_grad.cc"]), -# pkg = "//tensorflow/core", -#) diff --git a/tensorflow/contrib/cmake/tf_core_cpu.cmake b/tensorflow/contrib/cmake/tf_core_cpu.cmake index 58635a5266a..143f2e7fb50 100644 --- a/tensorflow/contrib/cmake/tf_core_cpu.cmake +++ b/tensorflow/contrib/cmake/tf_core_cpu.cmake @@ -30,30 +30,4 @@ list(APPEND tf_core_cpu_srcs ) add_library(tf_core_cpu OBJECT ${tf_core_cpu_srcs}) - -target_include_directories(tf_core_cpu PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -add_dependencies(tf_core_cpu - tf_core_framework -) -#target_link_libraries(tf_core_cpu -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_core_framework -# tf_core_lib -# tf_protos_cc -#) - -target_compile_options(tf_core_cpu PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_core_cpu PRIVATE - cxx_rvalue_references -) - +add_dependencies(tf_core_cpu tf_core_framework) diff --git a/tensorflow/contrib/cmake/tf_core_direct_session.cmake b/tensorflow/contrib/cmake/tf_core_direct_session.cmake index ba274d7f798..113e7b97f65 100644 --- a/tensorflow/contrib/cmake/tf_core_direct_session.cmake +++ b/tensorflow/contrib/cmake/tf_core_direct_session.cmake @@ -18,27 +18,3 @@ 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) - -target_include_directories(tf_core_direct_session PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -#target_link_libraries(tf_core_direct_session -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_core_cpu -# tf_core_framework -# tf_core_lib -# tf_protos_cc -#) - -target_compile_options(tf_core_direct_session PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_core_direct_session PRIVATE - cxx_rvalue_references -) diff --git a/tensorflow/contrib/cmake/tf_core_distributed_runtime.cmake b/tensorflow/contrib/cmake/tf_core_distributed_runtime.cmake index e1f8bdd6094..cf41e92e4a5 100644 --- a/tensorflow/contrib/cmake/tf_core_distributed_runtime.cmake +++ b/tensorflow/contrib/cmake/tf_core_distributed_runtime.cmake @@ -20,22 +20,6 @@ add_dependencies(tf_core_distributed_runtime tf_core_cpu grpc ) -target_include_directories(tf_core_distributed_runtime PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} - ${GRPC_INCLUDE_DIRS} -) - -target_compile_options(tf_core_distributed_runtime PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_core_distributed_runtime PRIVATE - cxx_rvalue_references -) - ######################################################## # grpc_tensorflow_server executable ######################################################## @@ -56,42 +40,7 @@ add_executable(grpc_tensorflow_server $ ) -add_dependencies(tf_core_distributed_runtime - grpc -) - -target_include_directories(grpc_tensorflow_server PUBLIC - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} - ${GRPC_INCLUDE_DIRS} -) - -find_package(ZLIB REQUIRED) - target_link_libraries(grpc_tensorflow_server PUBLIC - ${CMAKE_THREAD_LIBS_INIT} - ${PROTOBUF_LIBRARIES} - ${GRPC_LIBRARIES} tf_protos_cc - ${farmhash_STATIC_LIBRARIES} - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${CMAKE_DL_LIBS} -) -if(tensorflow_ENABLE_SSL_SUPPORT) - target_link_libraries(grpc_tensorflow_server PUBLIC - ${boringssl_STATIC_LIBRARIES}) -endif() - -target_compile_options(grpc_tensorflow_server PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(grpc_tensorflow_server PRIVATE - cxx_rvalue_references + ${tensorflow_EXTERNAL_LIBRARIES} ) diff --git a/tensorflow/contrib/cmake/tf_core_framework.cmake b/tensorflow/contrib/cmake/tf_core_framework.cmake index cad3b7864db..77dd2da4a3c 100644 --- a/tensorflow/contrib/cmake/tf_core_framework.cmake +++ b/tensorflow/contrib/cmake/tf_core_framework.cmake @@ -71,8 +71,6 @@ endfunction() # tf_protos_cc library ######################################################## -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/core/*.proto" ) @@ -114,16 +112,9 @@ RELATIVE_PROTOBUF_TEXT_GENERATE_CPP(PROTO_TEXT_SRCS PROTO_TEXT_HDRS ) 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} ) -# C++11 -target_compile_features(tf_protos_cc PRIVATE - cxx_rvalue_references -) ######################################################## # tf_core_lib library @@ -131,11 +122,33 @@ target_compile_features(tf_protos_cc PRIVATE 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 tf_core_platform_srcs + "${tensorflow_source_dir}/tensorflow/core/platform/*.h" + "${tensorflow_source_dir}/tensorflow/core/platform/*.cc" + "${tensorflow_source_dir}/tensorflow/core/platform/default/*.h" + "${tensorflow_source_dir}/tensorflow/core/platform/default/*.cc") +list(APPEND tf_core_lib_srcs ${tf_core_platform_srcs}) + +if(UNIX) + file(GLOB tf_core_platform_posix_srcs + "${tensorflow_source_dir}/tensorflow/core/platform/posix/*.h" + "${tensorflow_source_dir}/tensorflow/core/platform/posix/*.cc" + ) + list(APPEND tf_core_lib_srcs ${tf_core_platform_posix_srcs}) +endif(UNIX) + +if(tensorflow_ENABLE_SSL_SUPPORT) + # Cloud libraries require boringssl. + file(GLOB tf_core_platform_cloud_srcs + "${tensorflow_source_dir}/tensorflow/core/platform/cloud/*.h" + "${tensorflow_source_dir}/tensorflow/core/platform/cloud/*.cc" + ) + list(APPEND tf_core_lib_srcs ${tf_core_platform_cloud_srcs}) +endif() + file(GLOB_RECURSE tf_core_lib_test_srcs "${tensorflow_source_dir}/tensorflow/core/lib/*test*.h" "${tensorflow_source_dir}/tensorflow/core/lib/*test*.cc" @@ -143,8 +156,7 @@ file(GLOB_RECURSE tf_core_lib_test_srcs "${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}) +list(REMOVE_ITEM tf_core_lib_srcs ${tf_core_lib_test_srcs}) if(NOT tensorflow_ENABLE_SSL_SUPPORT) file(GLOB_RECURSE tf_core_lib_cloud_srcs @@ -155,38 +167,7 @@ if(NOT tensorflow_ENABLE_SSL_SUPPORT) endif() 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} - ${jsoncpp_INCLUDE_DIR} -) -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 - gif_copy_headers_to_destination - jpeg_copy_headers_to_destination - png_copy_headers_to_destination - eigen - tf_protos_cc - jsoncpp - ) - -if(tensorflow_ENABLE_SSL_SUPPORT) - target_include_directories(tf_core_lib PUBLIC ${boringssl_INCLUDE_DIR}) - add_dependencies(tf_core_lib boringssl) -endif() - +add_dependencies(tf_core_lib ${tensorflow_EXTERNAL_DEPENDENCIES} tf_protos_cc) # Tricky setup to force always rebuilding # force_rebuild always runs forcing ${VERSION_INFO_CC} target to run @@ -197,13 +178,12 @@ add_custom_target(force_rebuild_target ALL DEPENDS ${VERSION_INFO_CC}) add_custom_command(OUTPUT __force_rebuild COMMAND cmake -E echo) add_custom_command(OUTPUT ${VERSION_INFO_CC} - COMMAND ${tensorflow_source_dir}/tensorflow/tools/git/gen_git_source.py + COMMAND ${PYTHON_EXECUTABLE} ${tensorflow_source_dir}/tensorflow/tools/git/gen_git_source.py --raw_generate ${VERSION_INFO_CC} DEPENDS __force_rebuild) set(tf_version_srcs ${tensorflow_source_dir}/tensorflow/core/util/version_info.cc) - ######################################################## # tf_core_framework library ######################################################## @@ -212,7 +192,6 @@ file(GLOB_RECURSE tf_core_framework_srcs "${tensorflow_source_dir}/tensorflow/core/framework/*.cc" "${tensorflow_source_dir}/tensorflow/core/util/*.h" "${tensorflow_source_dir}/tensorflow/core/util/*.cc" - "${tensorflow_source_dir}/tensorflow/core/client/tensor_c_api.cc" "${tensorflow_source_dir}/tensorflow/core/common_runtime/session.cc" "${tensorflow_source_dir}/tensorflow/core/common_runtime/session_factory.cc" "${tensorflow_source_dir}/tensorflow/core/common_runtime/session_options.cc" @@ -237,19 +216,7 @@ add_library(tf_core_framework OBJECT ${tf_version_srcs} ${PROTO_TEXT_HDRS} ${PROTO_TEXT_SRCS}) -target_include_directories(tf_core_framework PUBLIC - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) add_dependencies(tf_core_framework tf_core_lib proto_text ) -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 -) diff --git a/tensorflow/contrib/cmake/tf_core_kernels.cmake b/tensorflow/contrib/cmake/tf_core_kernels.cmake index 8f911e3cb10..f39153a0bed 100644 --- a/tensorflow/contrib/cmake/tf_core_kernels.cmake +++ b/tensorflow/contrib/cmake/tf_core_kernels.cmake @@ -1,10 +1,73 @@ ######################################################## # tf_core_kernels library ######################################################## -file(GLOB_RECURSE tf_core_kernels_srcs - "${tensorflow_source_dir}/tensorflow/core/kernels/*.h" - "${tensorflow_source_dir}/tensorflow/core/kernels/*.cc" -) + +if(tensorflow_BUILD_ALL_KERNELS) + file(GLOB_RECURSE tf_core_kernels_srcs + "${tensorflow_source_dir}/tensorflow/core/kernels/*.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/*.cc" + ) +else(tensorflow_BUILD_ALL_KERNELS) + # Build a minimal subset of kernels to be able to run a test program. + set(tf_core_kernels_srcs + "${tensorflow_source_dir}/tensorflow/core/kernels/bounds_check.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/constant_op.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/constant_op.cc" + "${tensorflow_source_dir}/tensorflow/core/kernels/fill_functor.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/fill_functor.cc" + "${tensorflow_source_dir}/tensorflow/core/kernels/matmul_op.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/matmul_op.cc" + "${tensorflow_source_dir}/tensorflow/core/kernels/no_op.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/no_op.cc" + "${tensorflow_source_dir}/tensorflow/core/kernels/sendrecv_ops.h" + "${tensorflow_source_dir}/tensorflow/core/kernels/sendrecv_ops.cc" + ) +endif(tensorflow_BUILD_ALL_KERNELS) + +if(tensorflow_BUILD_CONTRIB_KERNELS) + set(tf_contrib_kernels_srcs + "${tensorflow_source_dir}/tensorflow/contrib/factorization/kernels/clustering_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/factorization/kernels/wals_solver_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/factorization/ops/clustering_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/factorization/ops/factorization_ops.cc" + #"${tensorflow_source_dir}/tensorflow/contrib/ffmpeg/decode_audio_op.cc" + #"${tensorflow_source_dir}/tensorflow/contrib/ffmpeg/encode_audio_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/layers/kernels/bucketization_kernel.cc" + "${tensorflow_source_dir}/tensorflow/contrib/layers/kernels/sparse_feature_cross_kernel.cc" + "${tensorflow_source_dir}/tensorflow/contrib/layers/ops/bucketization_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/layers/ops/sparse_feature_cross_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/metrics/kernels/set_kernels.cc" + "${tensorflow_source_dir}/tensorflow/contrib/metrics/ops/set_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/rnn/kernels/gru_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/rnn/kernels/lstm_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/rnn/ops/gru_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/rnn/ops/lstm_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/best_splits_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/finished_nodes_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/grow_tree_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/sample_inputs_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/scatter_add_ndim_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/topn_ops.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/tree_predictions_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/tree_utils.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/core/ops/update_fertile_slots_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/data/sparse_values_to_indices.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/data/string_to_float_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/hard_routing_function_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/k_feature_gradient_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/k_feature_routing_function_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/routing_function_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/routing_gradient_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/stochastic_hard_routing_function_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/stochastic_hard_routing_gradient_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/unpack_path_op.cc" + "${tensorflow_source_dir}/tensorflow/contrib/tensor_forest/hybrid/core/ops/utils.cc" + ) + list(APPEND tf_core_kernels_srcs ${tf_contrib_kernels_srcs}) +endif(tensorflow_BUILD_CONTRIB_KERNELS) + file(GLOB_RECURSE tf_core_kernels_exclude_srcs "${tensorflow_source_dir}/tensorflow/core/kernels/*test*.h" @@ -13,51 +76,11 @@ file(GLOB_RECURSE tf_core_kernels_exclude_srcs "${tensorflow_source_dir}/tensorflow/core/kernels/*testutil.cc" "${tensorflow_source_dir}/tensorflow/core/kernels/*main.cc" "${tensorflow_source_dir}/tensorflow/core/kernels/*.cu.cc" - "${tensorflow_source_dir}/tensorflow/core/kernels/debug_ops.h" - "${tensorflow_source_dir}/tensorflow/core/kernels/debug_ops.cc" + "${tensorflow_source_dir}/tensorflow/core/kernels/debug_ops.h" # stream_executor dependency + "${tensorflow_source_dir}/tensorflow/core/kernels/debug_ops.cc" # stream_executor dependency ) - -list(REMOVE_ITEM tf_core_kernels_srcs ${tf_core_kernels_exclude_srcs}) +list(REMOVE_ITEM tf_core_kernels_srcs ${tf_core_kernels_exclude_srcs}) add_library(tf_core_kernels OBJECT ${tf_core_kernels_srcs}) -add_dependencies(tf_core_kernels - tf_core_cpu - farmhash - highwayhash - farmhash_copy_headers_to_destination - highwayhash_copy_headers_to_destination -) - -target_include_directories(tf_core_kernels PRIVATE - ${tensorflow_source_dir} - ${png_INCLUDE_DIR} - ${eigen_INCLUDE_DIRS} - ${farmhash_INCLUDE_DIR} - ${highwayhash_INCLUDE_DIR} -) - -#target_link_libraries(tf_core_kernels -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_core_cpu -# tf_core_framework -# tf_core_lib -# tf_protos_cc -# tf_models_word2vec_kernels -# tf_stream_executor -# tf_core_ops -# tf_core_cpu -#) - -# "@gemmlowp//:eight_bit_int_gemm", - -target_compile_options(tf_core_kernels PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_core_kernels PRIVATE - cxx_rvalue_references -) +add_dependencies(tf_core_kernels tf_core_cpu) diff --git a/tensorflow/contrib/cmake/tf_core_ops.cmake b/tensorflow/contrib/cmake/tf_core_ops.cmake index 2aa03facafb..ac7228ef683 100644 --- a/tensorflow/contrib/cmake/tf_core_ops.cmake +++ b/tensorflow/contrib/cmake/tf_core_ops.cmake @@ -1,39 +1,25 @@ -#def tf_gen_op_libs(op_lib_names): -# # Make library out of each op so it can also be used to generate wrappers -# # for various languages. -# for n in op_lib_names: -# native.cc_library(name=n + "_op_lib" -# copts=tf_copts(), -# srcs=["ops/" + n + ".cc"], -# deps=(["//tensorflow/core:framework"]), -# visibility=["//visibility:public"], -# alwayslink=1, -# linkstatic=1,) - - set(tf_op_lib_names "array_ops" - "attention_ops" "candidate_sampling_ops" "control_flow_ops" "ctc_ops" "data_flow_ops" + "functional_ops" "image_ops" "io_ops" "linalg_ops" "logging_ops" - "functional_ops" "math_ops" "nn_ops" "no_op" "parsing_ops" "random_ops" "script_ops" + "sdca_ops" "sendrecv_ops" "sparse_ops" "state_ops" "string_ops" - "summary_ops" "training_ops" ) @@ -48,32 +34,8 @@ foreach(tf_op_lib_name ${tf_op_lib_names}) add_library(tf_${tf_op_lib_name} OBJECT ${tf_${tf_op_lib_name}_srcs}) add_dependencies(tf_${tf_op_lib_name} tf_core_framework) - - target_include_directories(tf_${tf_op_lib_name} PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} - ) - - target_compile_options(tf_${tf_op_lib_name} PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY - ) - - # C++11 - target_compile_features(tf_${tf_op_lib_name} PRIVATE - cxx_rvalue_references - ) endforeach() -#cc_library( -# name = "user_ops_op_lib" -# srcs = glob(["user_ops/**/*.cc"]), -# copts = tf_copts(), -# linkstatic = 1, -# visibility = ["//visibility:public"], -# deps = [":framework"], -# alwayslink = 1, -#) ######################################################## # tf_user_ops library ######################################################## @@ -85,50 +47,6 @@ add_library(tf_user_ops OBJECT ${tf_user_ops_srcs}) add_dependencies(tf_user_ops tf_core_framework) -target_include_directories(tf_user_ops PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -target_compile_options(tf_user_ops PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_user_ops PRIVATE - cxx_rvalue_references -) - - -#tf_cuda_library( -# name = "ops" -# srcs = glob( -# [ -# "ops/**/*.h" -# "ops/**/*.cc" -# "user_ops/**/*.h" -# "user_ops/**/*.cc" -# ], -# exclude = [ -# "**/*test*" -# "**/*main.cc" -# "user_ops/**/*.cu.cc" -# ], -# ), -# copts = tf_copts(), -# linkstatic = 1, -# visibility = ["//visibility:public"], -# deps = [ -# ":core" -# ":lib" -# ":protos_cc" -# "//tensorflow/models/embedding:word2vec_ops" -# "//third_party/eigen3" -# ], -# alwayslink = 1, -#) - ######################################################## # tf_core_ops library ######################################################## @@ -154,29 +72,3 @@ list(REMOVE_ITEM tf_core_ops_srcs ${tf_core_ops_exclude_srcs}) add_library(tf_core_ops OBJECT ${tf_core_ops_srcs}) add_dependencies(tf_core_ops tf_core_cpu) - -target_include_directories(tf_core_ops PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -#target_link_libraries(tf_core_ops -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_protos_cc -# tf_core_lib -# tf_core_cpu -# tf_models_word2vec_ops -#) - -target_compile_options(tf_core_ops PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_core_ops PRIVATE - cxx_rvalue_references -) - - diff --git a/tensorflow/contrib/cmake/tf_models.cmake b/tensorflow/contrib/cmake/tf_models.cmake index 9ba7608551f..10aedf03cdd 100644 --- a/tensorflow/contrib/cmake/tf_models.cmake +++ b/tensorflow/contrib/cmake/tf_models.cmake @@ -1,15 +1,3 @@ -#cc_library( -# name = "word2vec_ops", -# srcs = [ -# "word2vec_ops.cc", -# ], -# visibility = ["//tensorflow:internal"], -# deps = [ -# "//tensorflow/core:framework", -# ], -# alwayslink = 1, -#) - ######################################################## # tf_models_word2vec_ops library ######################################################## @@ -19,43 +7,8 @@ file(GLOB tf_models_word2vec_ops_srcs add_library(tf_models_word2vec_ops OBJECT ${tf_models_word2vec_ops_srcs}) -target_include_directories(tf_models_word2vec_ops PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) +add_dependencies(tf_models_word2vec_ops tf_core_framework) -add_dependencies(tf_models_word2vec_ops - tf_core_framework -) -#target_link_libraries(tf_models_word2vec_ops -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_core_framework -# tf_core_lib -# tf_protos_cc -#) - -target_compile_options(tf_models_word2vec_ops PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_models_word2vec_ops PRIVATE - cxx_rvalue_references -) - -#cc_library( -# name = "word2vec_kernels", -# srcs = [ -# "word2vec_kernels.cc", -# ], -# visibility = ["//tensorflow:internal"], -# deps = [ -# "//tensorflow/core", -# ], -# alwayslink = 1, -#) ######################################################## # tf_models_word2vec_kernels library ######################################################## @@ -65,30 +18,4 @@ file(GLOB tf_models_word2vec_kernels_srcs add_library(tf_models_word2vec_kernels OBJECT ${tf_models_word2vec_kernels_srcs}) -target_include_directories(tf_models_word2vec_kernels PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -add_dependencies(tf_models_word2vec_kernels - tf_core_cpu -) - -#target_link_libraries(tf_models_word2vec_kernels -# ${CMAKE_THREAD_LIBS_INIT} -# ${PROTOBUF_LIBRARIES} -# tf_core_framework -# tf_core_lib -# tf_protos_cc -# tf_core_cpu -#) - -target_compile_options(tf_models_word2vec_kernels PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_models_word2vec_kernels PRIVATE - cxx_rvalue_references -) +add_dependencies(tf_models_word2vec_kernels tf_core_cpu) diff --git a/tensorflow/contrib/cmake/tf_python.cmake b/tensorflow/contrib/cmake/tf_python.cmake index b31ef233cf5..f21b7e1222d 100644 --- a/tensorflow/contrib/cmake/tf_python.cmake +++ b/tensorflow/contrib/cmake/tf_python.cmake @@ -18,7 +18,7 @@ include(FindPythonInterp) if(NOT PYTHON_INCLUDE_DIR) set(PYTHON_NOT_FOUND false) exec_program("${PYTHON_EXECUTABLE}" - ARGS "-c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'" + ARGS "-c \"import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())\"" OUTPUT_VARIABLE PYTHON_INCLUDE_DIR RETURN_VALUE PYTHON_NOT_FOUND) if(${PYTHON_NOT_FOUND}) @@ -32,7 +32,7 @@ FIND_PACKAGE(PythonLibs) if(NOT NUMPY_INCLUDE_DIR) set(NUMPY_NOT_FOUND false) exec_program("${PYTHON_EXECUTABLE}" - ARGS "-c 'import numpy; print numpy.get_include()'" + ARGS "-c \"import numpy; print(numpy.get_include())\"" OUTPUT_VARIABLE NUMPY_INCLUDE_DIR RETURN_VALUE NUMPY_NOT_FOUND) if(${NUMPY_NOT_FOUND}) @@ -50,7 +50,6 @@ find_package(ZLIB REQUIRED) ######################################################## # TODO(mrry): Configure this to build in a directory other than tf_python/ -# TODO(mrry): Assemble the Python files into a PIP package. # tf_python_srcs contains all static .py files file(GLOB_RECURSE tf_python_srcs RELATIVE ${tensorflow_source_dir} @@ -172,21 +171,6 @@ add_library(tf_python_op_gen_main OBJECT ${tf_python_op_gen_main_srcs}) add_dependencies(tf_python_op_gen_main tf_core_framework) -target_include_directories(tf_python_op_gen_main PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - -target_compile_options(tf_python_op_gen_main PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_python_op_gen_main PRIVATE - cxx_rvalue_references -) - # create directory for ops generated files set(python_ops_target_dir ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/python/ops) @@ -216,37 +200,13 @@ function(GENERATE_PYTHON_OP_LIB tf_python_op_lib_name) $ $ $ - ${GENERATE_PYTHON_OP_LIB_ADDITIONAL_LIBRARIES} - ) - target_include_directories(${tf_python_op_lib_name}_gen_python PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} + ${GENERATE_PYTHON_OP_LIB_ADDITIONAL_LIBRARIES} ) target_link_libraries(${tf_python_op_lib_name}_gen_python PRIVATE - ${CMAKE_THREAD_LIBS_INIT} - ${PROTOBUF_LIBRARIES} tf_protos_cc - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${CMAKE_DL_LIBS} + ${tensorflow_EXTERNAL_LIBRARIES} ) - target_compile_options(${tf_python_op_lib_name}_gen_python PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY - -lm - ) - # C++11 - target_compile_features(${tf_python_op_lib_name}_gen_python PRIVATE - cxx_rvalue_references - ) - if(tensorflow_ENABLE_SSL_SUPPORT) - target_link_libraries(${tf_python_op_lib_name}_gen_python PRIVATE - ${boringssl_STATIC_LIBRARIES}) - endif() - + # Use the generated C++ executable to create a Python file # containing the wrappers. add_custom_command( @@ -275,6 +235,7 @@ GENERATE_PYTHON_OP_LIB("nn_ops") GENERATE_PYTHON_OP_LIB("parsing_ops") GENERATE_PYTHON_OP_LIB("random_ops") GENERATE_PYTHON_OP_LIB("script_ops") +GENERATE_PYTHON_OP_LIB("sdca_ops") GENERATE_PYTHON_OP_LIB("state_ops") GENERATE_PYTHON_OP_LIB("sparse_ops") GENERATE_PYTHON_OP_LIB("string_ops") @@ -340,38 +301,18 @@ add_library(pywrap_tensorflow SHARED $ $ $ - $ + $<$:$> $ ) -target_link_libraries(pywrap_tensorflow - ${CMAKE_THREAD_LIBS_INIT} - tf_protos_cc - ${GRPC_LIBRARIES} - ${PROTOBUF_LIBRARY} - ${farmhash_STATIC_LIBRARIES} - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${CMAKE_DL_LIBS} -) target_include_directories(pywrap_tensorflow PUBLIC - ${tensorflow_source_dir} - ${CMAKE_CURRENT_BINARY_DIR} - ${eigen_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIR} ${NUMPY_INCLUDE_DIR} ) -# C++11 -target_compile_features(pywrap_tensorflow PRIVATE - cxx_rvalue_references +target_link_libraries(pywrap_tensorflow + ${tensorflow_EXTERNAL_LIBRARIES} + tf_protos_cc + ${PYTHON_LIBRARIES} ) -if(tensorflow_ENABLE_SSL_SUPPORT) - target_link_libraries(pywrap_tensorflow ${boringssl_STATIC_LIBRARIES}) -endif() - - ############################################################ # Build a PIP package containing the TensorFlow runtime. @@ -385,9 +326,15 @@ add_dependencies(tf_python_build_pip_package add_custom_command(TARGET tf_python_build_pip_package POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${tensorflow_source_dir}/tensorflow/contrib/cmake/setup.py ${CMAKE_CURRENT_BINARY_DIR}/tf_python/) -add_custom_command(TARGET tf_python_build_pip_package POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libpywrap_tensorflow.so - ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/python/_pywrap_tensorflow.so) +if(WIN32) + add_custom_command(TARGET tf_python_build_pip_package POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/pywrap_tensorflow.dll + ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/python/_pywrap_tensorflow.pyd) +else() + add_custom_command(TARGET tf_python_build_pip_package POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libpywrap_tensorflow.so + ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/python/_pywrap_tensorflow.so) +endif() add_custom_command(TARGET tf_python_build_pip_package POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${tensorflow_source_dir}/tensorflow/tools/pip_package/README ${CMAKE_CURRENT_BINARY_DIR}/tf_python/) diff --git a/tensorflow/contrib/cmake/tf_stream_executor.cmake b/tensorflow/contrib/cmake/tf_stream_executor.cmake index e1aa0cd7b5d..b121ddf4913 100644 --- a/tensorflow/contrib/cmake/tf_stream_executor.cmake +++ b/tensorflow/contrib/cmake/tf_stream_executor.cmake @@ -56,10 +56,6 @@ file(GLOB tf_stream_executor_srcs add_library(tf_stream_executor OBJECT ${tf_stream_executor_srcs}) -target_include_directories(tf_stream_executor PRIVATE - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) add_dependencies(tf_stream_executor tf_core_lib ) @@ -69,14 +65,3 @@ add_dependencies(tf_stream_executor # tf_protos_cc # tf_core_lib #) - -target_compile_options(tf_stream_executor PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_stream_executor PRIVATE - cxx_rvalue_references -) - diff --git a/tensorflow/contrib/cmake/tf_tools.cmake b/tensorflow/contrib/cmake/tf_tools.cmake index 87c53502f86..91776fd5c82 100644 --- a/tensorflow/contrib/cmake/tf_tools.cmake +++ b/tensorflow/contrib/cmake/tf_tools.cmake @@ -13,37 +13,9 @@ add_executable(${proto_text} $ ) -target_include_directories(${proto_text} PUBLIC - ${tensorflow_source_dir} -) - -# TODO(mrry): Cut down the dependencies of this tool. -target_link_libraries(${proto_text} PUBLIC - ${CMAKE_THREAD_LIBS_INIT} - ${PROTOBUF_LIBRARIES} - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${CMAKE_DL_LIBS} - ) -if(tensorflow_ENABLE_SSL_SUPPORT) - target_link_libraries(${proto_text} PUBLIC ${boringssl_STATIC_LIBRARIES}) -endif() - +target_link_libraries(${proto_text} PUBLIC ${tensorflow_EXTERNAL_LIBRARIES}) add_dependencies(${proto_text} tf_core_lib - protobuf -) - -target_compile_options(${proto_text} PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(${proto_text} PRIVATE - cxx_rvalue_references + grpc ) diff --git a/tensorflow/contrib/cmake/tf_tutorials.cmake b/tensorflow/contrib/cmake/tf_tutorials.cmake index ec45ac4ff82..8a23d029054 100644 --- a/tensorflow/contrib/cmake/tf_tutorials.cmake +++ b/tensorflow/contrib/cmake/tf_tutorials.cmake @@ -1,18 +1,3 @@ -#cc_binary( -# name = "tutorials_example_trainer", -# srcs = ["tutorials/example_trainer.cc"], -# copts = tf_copts(), -# linkopts = [ -# "-lpthread", -# "-lm", -# ], -# deps = [ -# ":cc_ops", -# "//tensorflow/core:kernels", -# "//tensorflow/core:tensorflow", -# ], -#) - set(tf_tutorials_example_trainer_srcs "${tensorflow_source_dir}/tensorflow/cc/tutorials/example_trainer.cc" ) @@ -29,31 +14,7 @@ add_executable(tf_tutorials_example_trainer $ ) -target_include_directories(tf_tutorials_example_trainer PUBLIC - ${tensorflow_source_dir} - ${eigen_INCLUDE_DIRS} -) - target_link_libraries(tf_tutorials_example_trainer PUBLIC - ${CMAKE_THREAD_LIBS_INIT} - ${PROTOBUF_STATIC_LIBRARIES} tf_protos_cc - ${boringssl_STATIC_LIBRARIES} - ${farmhash_STATIC_LIBRARIES} - ${gif_STATIC_LIBRARIES} - ${jpeg_STATIC_LIBRARIES} - ${jsoncpp_STATIC_LIBRARIES} - ${png_STATIC_LIBRARIES} - ${ZLIB_LIBRARIES} - ${CMAKE_DL_LIBS} -) - -target_compile_options(tf_tutorials_example_trainer PRIVATE - -fno-exceptions - -DEIGEN_AVOID_STL_ARRAY -) - -# C++11 -target_compile_features(tf_tutorials_example_trainer PRIVATE - cxx_rvalue_references + ${tensorflow_EXTERNAL_LIBRARIES} )