turicreate icon indicating copy to clipboard operation
turicreate copied to clipboard

[WIP] New build system.

Open hoytak opened this issue 5 years ago • 1 comments

Rearchitecture of the the build system. A vast simplification.

Changes

  • ./configure can produce an XCode project of the Turi source code.
  • deps/ can be compiled and installed out of the regular build process. Helpful for the XCode project.
  • All packages in src/external/ and src/visualization compile into static libraries.
  • The rest of the code base compiles into a single shared library. This means that most everything occurs in one single CMakeLists.txt file using standard cmake commands.
  • All headers are installed into targets/include when make install is called. The main library is installed into targets/lib.
  • The code definitions that reflect compiler oddities (e.g. is std::hash<int128_t> defined) are dumped into a single header file, src/turi_common.h, at configure time. All source files and headers now include this file first. This allows other programs to link against this library / headers reliably.
  • The python part of TuriCreate now builds through the standard setup.py method. Cython / pybind11 extensions are compiled and packaged using the standard extensions mechanisms and linking against the installed Turi headers.

WIP TODO: The python installation, deployment building.

To review: Essentially it's all in the root CMakeLists.txt file, with some changes to ./configure. Just focus on those two.

hoytak avatar Dec 24 '19 04:12 hoytak

forked in #3065.

guihao-liang avatar Mar 23 '20 20:03 guihao-liang