1: reduce python whl package size
2: unify api link logic on all OS
3: add option: MGE_WINDOWS_BUILD_WITH_STATIC_CRT
--- default OFF
--- if build CRT(vc runtime) with STATIC with megengine.dll
some CRT api will crash, for example, flush, so if you
build with static megengine, and do not want to install CRT
you can set MGE_WINDOWS_BUILD_WITH_STATIC_CRT TRUE
--- how to install CRT:
https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-160
install VC_redist.x64.exe
4: rename megengine_export to megengine_shared(only export needed symbols ),
caused by runtime symbols conflict with pytorch
GitOrigin-RevId: 93d8d80f29
`copy` env vs `normal` env:
case a:`normal` env install CUDNN/TRT by package tool, eg, apt/yum, which
will put include file(cudnn.h/NvInfer.h) to /usr/include etc.
case b: self copy env after export CPATH with cudnn/trt include dir
case c: just copy libs, not export CPATH, only export
TRT_ROOT_DIR/CUDNN_ROOT_DIR
at case a and case b, BUILD system can find cudnn/trt headers, but
at case c, can not find. `FIX` it!
what`s more, recommend install CUDA env by case a and case c, NOT
recommend install by case b, which caused by CUDA SDK CPATH not
friendly to split c env, for example Android AOSP build env
GitOrigin-RevId: cb92123f9e
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: b278a69e1c
Also, upgrade to CMake 3.13.
The commit also contains significant refactors, as otherwise it is not
possible to properly export target `megengine` to
MegEngine-targets.cmake:
1. Optionally use system provided Flatbuffers.
2. Optionally use system provided MKL-DNN (Tested with Debian).
3. Refactor megbrain and megdnn targets into object libraries.
4. Set different path in BUILD_INTERFACE and INSTALL_INTERFACE of
various target_include_directories.
5. Specify PUBLIC/PRIVATE on various target_link_libraries.
GitOrigin-RevId: df118a879e
host build and cross build
now cmake status:
a: host build
1: windows build -- ok
2: linux build -- ok
3: macos build -- ok
b: cross build
1: windows cross build arm-android -- ok
2: windows cross build arm-linux -- ok
3: linux cross build arm-android -- ok
4: linux cross build arm-linux -- ok
5: macos cross build arm-android -- ok
6: macos cross build arm-linux -- ok
7: macos cross build ios -- ok
GitOrigin-RevId: f7f376fe8c