I want to make some layout changes for the transition to C++ code generation: to the repo and the distribution.
First, the layout of the code. I don’t want the C++ to live inside the JVM src tree, and I want Python, C++ and JVM languages to to be parallel (as well as any other future languages we embrace). So I propose:
hail/ - the monorepo
hail/ - the hail project
Makefile - top-level Makefile
python/ - already exists
cxx/ - for C/C++
src/
jvm/ - for JVM languages
build.gradle
src/
...
So basically add cxx
and jvm
, move src
into jvm
, and move src/main/c
into cxx
, and add a top-level Makefile to drive the compilation process.
Second, building the hail project should populate a directory with the distribution. That will look like:
distribution/
bin/
c++ - compiler
include/
hail/ - hail include files
... - std, other incudes
lib/
libhail.so - or in the jar?
... - std, other libs
jars/
hail-all-spark.jar
docs/ - and other stuff
The distribution will have to be present on the master, but not necessarily the workers. @dking how will this interact with the pip package? I assume we can just include this structure there?