fix(cmake/whl): reduce wheel size
as some reason: some version of trt/cudnn need
-Wl,--whole-archive attribute to fix cuda issue,
target A(CMAKE OBJECT,eg megbrain/megdnn): -Wl,--whole-archive depend on trt/cudnn
target B(SHARED LIBS,eg libmegengine.so) --> A with `PUBLIC` depends
target C(SHARED LIBS,eg _impertive.so) --> B with `PUBLIC` depends,
then ld will force link fatbin section into C, which will be undesired
what`s more, attribute PUBLIC/PRIVATE do not take effect
to OBJECT library(megbrain/megdnn)
what`s more, megengine/megengine_export have to PUBLIC for
mgb/imperative target, as SRC/include depends
so we pull cudalib depend from megbrain/megdnn to
megengine/megengine_export on linux os, to finall
target at windows os, for example lar on windows
GitOrigin-RevId: b278a69e1cdcc17cfd22da80247af3fe30f6d4e8
4 years ago |
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
- set(MGB_TEST_DIR ${PROJECT_SOURCE_DIR}/test/src)
-
- file(GLOB_RECURSE SOURCES ../src/test/*.cpp ../src/impl/*.cpp ${MGB_TEST_DIR}/*.cpp)
-
- # disable distributed tests
- if(NOT MGE_WITH_DISTRIBUTED)
- list(FILTER SOURCES EXCLUDE REGEX ".*test/collective_comm.cpp")
- list(FILTER SOURCES EXCLUDE REGEX ".*test/io_remote.cpp")
- endif()
-
- # TODO: turn python binding into a static/object library
- add_executable(imperative_test ${SOURCES} ${SRCS})
- add_dependencies(imperative_test mgb_opdef)
- target_include_directories(imperative_test PRIVATE ${MGB_TEST_DIR}/include ../src/include ${MGB_OPDEF_OUT_DIR})
-
- # Python binding
- target_include_directories(imperative_test PRIVATE ${MODULE_SRC_INCLUDE} ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
- target_compile_definitions(imperative_test PRIVATE MODULE_NAME=C)
- target_compile_options(imperative_test PRIVATE -Wno-unused-parameter)
-
- set(LINK_LIBS megbrain megdnn ${MGE_CUDA_LIBS} gtest gmock pybind11::embed range-v3)
-
- if(MGE_WITH_CUDA)
- list(APPEND LINK_LIBS cudart)
- endif()
-
- if(MGE_WITH_DISTRIBUTED)
- list(APPEND LINK_LIBS megray)
- endif()
-
- target_link_libraries(imperative_test ${LINK_LIBS})
- if(CXX_SUPPORT_WCLASS_MEMACCESS)
- if(MGE_WITH_CUDA)
- target_compile_options(imperative_test PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-Wno-class-memaccess>"
- "$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:-Wno-class-memaccess>")
- else()
- target_compile_options(imperative_test PRIVATE "-Wno-class-memaccess")
- endif()
- endif()
-
- if(UNIX)
- if(APPLE OR ANDROID)
- target_link_libraries(imperative_test dl)
- else()
- target_link_libraries(imperative_test dl rt)
- endif()
- endif()
-
- install(TARGETS imperative_test RUNTIME DESTINATION test)
|