A repository of scripts to build LLVM and test it. This may also include other scripts to simplify life inside my company.
The repository has two important directories lib and bin. The bin directory is meant to
house executable scripts that use functionality provided by code in the lib directory. The
main library inside lib is build-utils.sh.
The scripts assume the following directory structure when building and testing LLVM.
The source repository llvm-project resides in ${WORK_AREA} where
WORK_AREA=${ROOT}/${USER_OR_ORG}
ROOT has to be provided at all times and doesn't have a default value. e.g. On
AMD machines, it'll typically be ROOT=$HOME/git.
USER_OR_ORG can be specified by the user but the default value is bhandarkar-pranav
Here is a description of all environment variables
| Environment Variable | Description | Default |
|---|---|---|
ROOT |
The toplevel directory inside which everything resides | No Defaults. Has to be provided by the user |
WORK_AREA |
Value is `${ROOT}/${USER_OR_ORG} | Cannot be overwritten but is configurable by setting the values of ROOT and USER_OR_ORG |
USER_OR_ORG |
First sub-directory of ${ROOT} |
bhandarkar-pranav |
BUILD_ROOT |
${WORK_AREA}/build - Cannot be overriden. All builds are done inside ${WORK_AREA}/build |
|
BUILD_DIR |
A specific build directory inside ${BUILD_ROOT} being built or updated |
|
BUILD_TYPE |
Release or Debug |
Release |
To build LLVM for the first time
$> git clone git@github.com:bhandarkar-pranav/build_llvm.git
$> cd build_llvm
$> ROOT=<path/to/preferred/root/dir> ./bin/build_gh.sh -c
The above will clone llvm-project into ${ROOT}/bhandarkar-pranav/llvm-project if not already present. It'll then build LLVM at ${WORK_AREA}/build/build-<suffix>.
Once the build is done, it'll be installed at ${WORK_AREA}/builld/install-<suffix>, where
WORK_AREA = ${ROOT}/bhandarkar-pranav
suffix is a string based on the date such as 29Jul24