1 # HAT Project 2 3 This is a fairly large project with Java and native (C/C++) artifacts. 4 5 To use HAT you will need to clone and build the `babylon` (JDK24+Babylon) project or of course your fork of the babylon project (say `babylon-myfork`) 6 7 [github.com/openjdk/babylon](https://github.com/openjdk/babylon) 8 9 The HAT project is in the 'hat' subdir of the babylon project. 10 11 ## Building Babylon 12 13 [See](docs/hat-01-02-building-babylon.md) 14 15 ## Building HAT 16 17 [See](docs/hat-01-03-building-hat.md) 18 19 20 ## Intellij and Clion 21 We can use JetBrains' `intelliJ` and `clion` but care must be taken as these tools 22 do not play well together, specifically we cannot have `Clion` and `Intellij` 23 project artifacts rooted under each other or in the same dir. 24 25 The `intellij` subdir houses the various `*.iml` module files and the project `.idea` so 26 just open that dir as an intellij project 27 28 Thankfully `clion` uses cmake. So we can reuse the same `hat/backends/CMakeLists.txt` that 29 maven uses to build the backends. 30 31 ### Initial Project Layout 32 33 ``` 34 ${BABYLON_JDK} 35 └── hat 36 ├── build (created by the build) 37 │ 38 ├── intellij 39 │ ├── .idea 40 │ │ ├── compiler.xml 41 │ │ ├── misc.xml 42 │ │ ├── modules.xml 43 │ │ ├── uiDesigner.xml 44 │ │ ├── vcs.xml 45 │ │ └── workspace.xml 46 │ │ 47 │ ├── hat.iml 48 │ ├── backend_(spirv|mock|cuda|ptx|opencl).iml 49 │ └── (mandel|violajones|experiments|heal|view).iml 50 │ 51 ├── hat 52 │ ├── pom.xml 53 │ └── src 54 │ ├── src/main/java 55 │ └── src/main/resources 56 │ 57 ├── backends 58 │ ├── pom.xml 59 │ ├── CMakeLists.txt 60 │ └── (opencl|cuda|ptx|mock|shared) 61 │ ├── pom.xml 62 │ ├── CMakeLists.txt 63 │ ├── cpp 64 │ ├── include 65 │ ├── src/main/java 66 │ └── src/main/resources 67 └── examples 68 ├── pom.xml 69 └── (mandel|violajones|squares|heal|view|experiments) 70 ├── pom.xml 71 ├── src/main/java 72 └── src/main/resources 73 ``` 74 As you will note the `intellij` dir is somewhat self contained. the various `*.iml` 75 files refer to the source dirs using relative paths.