Skip to content

Commit

Permalink
- Added ATen exported targets for consuming projects
Browse files Browse the repository at this point in the history
- Modified THD CMakeLists.txt to handle the fact that
${ATEN_LIBRARIES} are now imported targets.

- Made cpuinfo and tbb_static private dependencies
  • Loading branch information
willyd committed Mar 26, 2018
1 parent 1ab248d commit ecc8eb7
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 21 deletions.
10 changes: 9 additions & 1 deletion aten/src/ATen/ATenConfig.cmake.in
Expand Up @@ -5,5 +5,13 @@
# ATEN_FOUND -- set to 1 if found

SET(ATEN_FOUND 1)
SET(ATEN_INCLUDE_DIR "@ATEN_INCLUDE_DIR@")

get_filename_component(_IMPORT_PREFIX ${CMAKE_CURRENT_LIST_FILE} DIRECTORY)
include(${_IMPORT_PREFIX}/ATen-targets.cmake)

get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
SET(ATEN_INCLUDE_DIR "${_IMPORT_PREFIX}/@ATEN_INCLUDE_DIR@")
SET(ATEN_LIBRARIES "@ATEN_LIBRARIES@")
15 changes: 8 additions & 7 deletions aten/src/ATen/CMakeLists.txt
Expand Up @@ -242,7 +242,7 @@ set(TBB_BUILD_TESTS OFF CACHE BOOL " " FORCE)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/ATen/cpu/tbb)
set_property(TARGET tbb_static tbb_def_files PROPERTY FOLDER "dependencies")
target_include_directories(tbb_static PUBLIC ${TBB_ROOT_DIR}/include)
target_link_libraries(ATen tbb_static)
target_link_libraries(ATen PRIVATE tbb_static)

SET_TARGET_PROPERTIES(ATen PROPERTIES VERSION 1 SOVERSION 1)

Expand Down Expand Up @@ -324,7 +324,7 @@ IF(NOT TARGET cpuinfo)
SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
ADD_SUBDIRECTORY("cpu/cpuinfo")
ENDIF()
TARGET_LINK_LIBRARIES(ATen cpuinfo)
TARGET_LINK_LIBRARIES(ATen PRIVATE cpuinfo)


IF(CUDA_FOUND)
Expand Down Expand Up @@ -360,15 +360,14 @@ IF(CUDA_FOUND)
ENDIF()

INSTALL(TARGETS ATen
EXPORT ATen-targets
RUNTIME DESTINATION "${AT_INSTALL_BIN_DIR}"
LIBRARY DESTINATION "${AT_INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${AT_INSTALL_LIB_DIR}")

GET_TARGET_PROPERTY(ATEN_OUTPUT_NAME ATen LOCATION)
GET_FILENAME_COMPONENT(ATEN_OUTPUT_NAME ${ATEN_OUTPUT_NAME} NAME)
SET(ATEN_LIBRARIES "${CMAKE_INSTALL_PREFIX}/${AT_INSTALL_LIB_DIR}/${ATEN_OUTPUT_NAME}")
SET(ATEN_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${AT_INSTALL_INCLUDE_DIR}")
CONFIGURE_FILE(ATenConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/ATenConfig.cmake")
SET(ATEN_LIBRARIES ATen)
SET(ATEN_INCLUDE_DIR "${AT_INSTALL_INCLUDE_DIR}")
CONFIGURE_FILE(ATenConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/ATenConfig.cmake" @ONLY)
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/ATenConfig.cmake"
DESTINATION "${AT_INSTALL_SHARE_DIR}/cmake/ATen")

Expand All @@ -386,3 +385,5 @@ FOREACH(HEADER ${cuda_h})
ENDFOREACH()
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ATen/Declarations.yaml
DESTINATION ${AT_INSTALL_SHARE_DIR}/ATen)

install(EXPORT ATen-targets DESTINATION "${AT_INSTALL_SHARE_DIR}/cmake/ATen")
2 changes: 1 addition & 1 deletion aten/src/ATen/test/CMakeLists.txt
Expand Up @@ -39,7 +39,7 @@ if(NOT NO_CUDA)
target_link_libraries(integer_divider_test ATen)
endif()

if (CUDNN_FOUND)
if (AT_CUDNN_ENABLED AND CUDNN_FOUND)
add_executable(cudnn_test cudnn_test.cpp)
target_link_libraries(cudnn_test ATen)
endif()
2 changes: 1 addition & 1 deletion tools/run_aten_tests.sh
Expand Up @@ -2,7 +2,7 @@
set -xe
mkdir aten_build aten_install
cd aten_build
cmake ../aten -DNO_CUDA=1 -DCMAKE_INSTALL_PREFIX=../aten_install
cmake ../aten -DNO_CUDA=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../aten_install
make -j32 install
../aten/tools/run_tests.sh .
cd ..
Expand Down
35 changes: 24 additions & 11 deletions torch/lib/THD/CMakeLists.txt
Expand Up @@ -136,20 +136,38 @@ EXCLUDE_DIR(all_cpp ".*/generic/.*\\.cpp$")
# Need to include external NCCL first
IF(DISTRIBUTED_NCCL_FOUND)
INCLUDE_DIRECTORIES(${NCCL_INCLUDE_DIR})
FILE(APPEND "${CMAKE_INSTALL_PREFIX}/THD_deps.txt" "${NCCL_LIBRARIES};")
set(THD_DEPENDENCIES "${THD_DEPENDENCIES}${NCCL_LIBRARIES};")
ENDIF()

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})

ADD_LIBRARY(THD STATIC ${all_cpp})
set_property(TARGET THD PROPERTY POSITION_INDEPENDENT_CODE ON)

FILE(WRITE "${CMAKE_INSTALL_PREFIX}/THD_deps.txt" "${ATEN_LIBRARIES};")
foreach(aten_library ${ATEN_LIBRARIES})
# ATEN_LIBRARIES are now imported targets so we use generator expressions
# to retreive the libary file path
set(THD_DEPENDENCIES "${THD_DEPENDENCIES}$<TARGET_LINKER_FILE:${aten_library}>;")
endforeach()

IF(MPI_FOUND)
INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
FILE(APPEND "${CMAKE_INSTALL_PREFIX}/THD_deps.txt" "${MPI_LIBRARIES};")
set(THD_DEPENDENCIES "${THD_DEPENDENCIES}${MPI_LIBRARIES};")
ENDIF()

IF(GLOO_FOUND)
INCLUDE_DIRECTORIES(${GLOO_INCLUDE_DIR})
set(THD_DEPENDENCIES "${THD_DEPENDENCIES}${GLOO_LIBRARIES};")
ENDIF()

set(THD_DEPENDENCIES_FILE ${CMAKE_INSTALL_PREFIX}/THD_deps.txt)
add_custom_command(OUTPUT ${THD_DEPENDENCIES_FILE}
# use echo_append to avoid a spurious new line
COMMAND ${CMAKE_COMMAND} -E echo_append "${THD_DEPENDENCIES}" > "${THD_DEPENDENCIES_FILE}"
VERBATIM
)

ADD_LIBRARY(THD STATIC ${all_cpp} ${THD_DEPENDENCIES_FILE})
set_property(TARGET THD PROPERTY POSITION_INDEPENDENT_CODE ON)

IF(MPI_FOUND)
IF(MPI_COMPILE_FLAGS)
MESSAGE(STATUS "MPI_COMPILE_FLAGS: ${MPI_COMPILE_FLAGS}")
SET_TARGET_PROPERTIES(THD PROPERTIES COMPILE_FLAGS "${MPI_COMPILE_FLAGS}")
Expand All @@ -161,11 +179,6 @@ IF(MPI_FOUND)
ENDIF()
ENDIF()

IF(GLOO_FOUND)
INCLUDE_DIRECTORIES(${GLOO_INCLUDE_DIR})
FILE(APPEND "${CMAKE_INSTALL_PREFIX}/THD_deps.txt" "${GLOO_LIBRARIES};")
ENDIF()

# Test executables
IF(THD_WITH_TESTS)
ENABLE_TESTING()
Expand Down

0 comments on commit ecc8eb7

Please sign in to comment.