CMakeLists.txt 3.8 KB
Newer Older
Y
Yan Chunwei 已提交
1 2 3
if (NOT WITH_INFRT)
    return()
endif()
4

5
option(INFRT_WITH_PHI  "Compile INFRT with PHI"    ON)
W
Wilber 已提交
6 7
option(INFRT_WITH_GPU  "Compile INFRT with GPU"    OFF)
option(INFRT_WITH_TRT  "Compile INFRT with TensorRT"    OFF)
8 9 10 11

#TODO(xiaowei) remove fluid
include_directories(${PADDLE_SOURCE_DIR}/paddle/fluid/platform)

12
if (INFRT_WITH_PHI)
W
Wilber 已提交
13 14 15 16 17 18 19 20 21
  add_definitions("-DINFRT_WITH_PHI")

  # TODO(wilber): Now Infrt gpu/trt depends on phi's components, Modify compile dependency options later.
  if (INFRT_WITH_GPU)
    add_definitions("-DINFRT_WITH_GPU")
    if (INFRT_WITH_TRT)
      add_definitions("-DINFRT_WITH_TRT")
    endif()
  endif()
22 23
endif()

24 25 26 27 28 29 30
# compile flags
set(INFRT_FLAGS -Wno-comment)
foreach(flag ${INFRT_FLAGS})
  safe_set_cflag(CMAKE_C_FLAGS ${flag})
  safe_set_cxxflag(CMAKE_CXX_FLAGS ${flag})
endforeach()

31 32
set(INFRT_SOURCE_DIR "${PADDLE_SOURCE_DIR}/paddle/infrt" )
set(INFRT_BINARY_DIR "${PADDLE_BINARY_DIR}/paddle/infrt" )
33
set(INFRT_TEST_TARGETS CACHE INTERNAL "")
34 35
include(infrt_lib)

Y
Yan Chunwei 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
set(infrt_src CACHE INTERNAL "" FORCE)

# Gather headers for library publish.
function(core_gather_headers)
    file(GLOB includes LIST_DIRECTORIES false RELATIVE ${CMAKE_SOURCE_DIR} *.h)

    foreach(header ${includes})
        set(core_includes "${core_includes};${header}" CACHE INTERNAL "")
    endforeach()
endfunction()

function(gather_srcs SRC_GROUP)
    set(options)
    set(oneValueArgs)
    set(multiValueArgs "SRCS")
    cmake_parse_arguments(prefix "" "" "${multiValueArgs}" ${ARGN})
    foreach(cpp ${prefix_SRCS})
        set(${SRC_GROUP} "${${SRC_GROUP}};${CMAKE_CURRENT_SOURCE_DIR}/${cpp}" CACHE INTERNAL "")
    endforeach()
endfunction()

# This method is similar to the global cc_test, but discard the huge amount default dependencies those are
# not needed by INFRT.
function(cc_test_tiny TARGET_NAME)
  if(WITH_TESTING)
    set(options SERIAL)
    set(oneValueArgs "")
    set(multiValueArgs SRCS DEPS ARGS)
    cmake_parse_arguments(cc_test_tiny "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
    add_executable(${TARGET_NAME} ${cc_test_tiny_SRCS})
    get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
    target_link_libraries(${TARGET_NAME} ${cc_test_tiny_DEPS} ${os_dependency_modules} infrt_gtest_main gtest )
    add_dependencies(${TARGET_NAME} ${cc_test_tiny_DEPS} infrt_gtest_main gtest extern_gtest)

    add_test(NAME ${TARGET_NAME}
      COMMAND ${TARGET_NAME} "${cc_test_tiny_ARGS}"
            WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
    if (${cc_test_tiny_SERIAL})
      set_property(TEST ${TARGET_NAME} PROPERTY RUN_SERIAL 1)
    endif()
76
    set(INFRT_TEST_TARGETS ${INFRT_TEST_TARGETS} ${TARGET_NAME} CACHE INTERNAL "")
Y
Yan Chunwei 已提交
77 78 79 80 81 82 83 84 85 86
  endif()

endfunction()

if (WITH_TESTING)
    cc_library(infrt_gtest_main SRCS gtest_main.cc DEPS gtest glog gflags)
endif()


add_subdirectory(api)
W
Wilber 已提交
87
add_subdirectory(backends)
Y
Yan Chunwei 已提交
88 89 90 91 92 93 94 95
add_subdirectory(common)
add_subdirectory(dialect)
add_subdirectory(host_context)
add_subdirectory(kernel)
add_subdirectory(tensor)
add_subdirectory(support)
add_subdirectory(external_kernels)
add_subdirectory(paddle)
96
add_subdirectory(tests)
Y
Yan Chunwei 已提交
97 98 99 100 101 102 103 104 105


# MLIR td file generations
set(infrt_mlir_incs
        basic_kernels_inc
        test_kernels_inc
        tensor_shape_inc
        dense_tensor_inc
        pd_ops_inc
106
        pd_extra_ops_inc
107
        trt_ops_inc
Y
Yan Chunwei 已提交
108
        )
109

110
if (INFRT_WITH_PHI)
111
    set(phi_libs phi)
112
    set(infrt_mlir_incs ${infrt_mlir_incs}
113 114
        MLIRinfrt_phi_tensorIncGen
        MLIRinfrt_phi_baseIncGen
115 116
        )
endif()
Y
Yan Chunwei 已提交
117

118
cc_library(infrt SHARED SRCS ${infrt_src} DEPS glog boost ${mlir_libs} ${phi_libs} paddle_framework_proto infrt_naive)
W
Wilber 已提交
119 120 121
if (INFRT_WITH_TRT)
  target_link_libraries(infrt infrt_trt)
endif()
122
cc_library(infrt_static SRCS ${infrt_src} DEPS glog boost ${mlir_libs} ${phi_libs} paddle_framework_proto)
123
add_dependencies(infrt ${infrt_mlir_incs} mlir-headers)
124 125

add_custom_target(test_infrt_exec DEPENDS ${INFRT_TEST_TARGETS})