11# Welcome to the Eli Lilly LillyMol implementation.
22
3- ![ Static Badge] ( https://img.shields.io/badge/tested_docker_gcc_version-10.2%7C12.3%7C13.2-blue )
4- ![ Static Badge] ( https://img.shields.io/badge/supported_platform-Linux-green )
5-
63## Background
74LillyMol is a C++ library for Cheminformatics. This repo also contains a variety of useful
85command line tools that have been built with LillyMol.
@@ -75,6 +72,14 @@ module load gcc10
7572module load bazelisk
7673module load git
7774```
75+
76+ Other system components that are needed, which may or may not be
77+ available.
78+
79+ * wget
80+ * unzip
81+ * libz-dev
82+
7883### Python
7984If you wish to build the python bindings, you will need a recent version of
8085python. Development was done with python3.11 and has not been
@@ -89,11 +94,15 @@ Note that with the default build (below) Python bindings are not built.
8994If you have bazelisk and gcc installed, there is a reasonable possibility that
9095issuing ` make ` in the top level directory will work (but see note below
9196about NFS filesystems).
97+
9298```
93- cd /path/to/Lillymol
99+ # Inside Lilly use the private repo
100+ git clone https://github.com/EliLillyCo/LillyMol
101+
102+ cd /path/to/LillyMol
94103make
95104```
96- Executables will be in bin/$(uname) and libraries in lib. More details
105+ Executables will be in ` bin/$(uname) ` and libraries in ` lib ` . More details
97106below. There is no concept of installation prefix, everything remains
98107in the repo.
99108
@@ -103,10 +112,36 @@ are built. If you wish to build either of those
103112make python
104113make berkeleydb
105114```
115+ or
116+ ```
117+ make all
118+ ```
119+
120+ If you look at [ Makefile] ( Makefile ) you will see that all it is doing
121+ is sequentially invoking the three scripts discussed below, possibly with
122+
123+ ### Configuring for bazel
124+ Within the src directory, the file ` WORKSPACE ` configures the build environment
125+ for ` bazel ` . If you are building python bindings, this file needs to be updated
126+ to reflect the location of your local python. The script ` update_bazel_configs.sh `
127+ does this automatically from the Makefile.
106128
107- If you look at (Makefile)[ Makefile] you will see that all it is doing
108- is sequentially invoking the two scripts discussed below, possibly with
109- various shell variables set, which enable the optional builds.
129+ ### Installation Directory
130+ There is an 'install' target in the BUILD files, and defined in
131+ [ build_deps/install.bzl] ( src/build_deps/install.bzl ) .
132+ This is where LillyMol executables will be installed when
133+ the 'install' run target is run. Again ` update_bazel_configs.sh `
134+ will update this to '/path/to/LillyMol/bin/$(uname)'.
135+ Check to see that the update has
136+ been done correctly and adjust if not, or to set another location.
137+
138+ ```
139+ tail build_deps/install.bzl
140+ ```
141+ That file contains other mechanisms for specifying the install directory.
142+ But remember, every time ` make ` is run, that file will be automatically
143+ updated again. Remove the calls to ` update_bazel_configs.sh ` from
144+ the Makefile if needed.
110145
111146### C++ Dependencies.
112147There are several dependencies which could be installed on the system,
@@ -134,12 +169,9 @@ directory (next to src) and then download, build and install the following depen
134169
135170- ** BerkeleyDb** : used for key/value databases
136171- ** f2c/libf2c** : there is some fortran in LillyMol.
137- - ** HighwayHash** : hash function from Google
138172
139173Running 'build_third_party.sh' needs to be done once.
140174
141- Currently HighwayHash is impeding deployment on Mac's.
142-
143175Note that BerkeleyDB and Python bindings are only built if requested.
144176In [ Makefile] ( /Makefile ) you will see use of the shell variables
145177'BUILD_PYTHON' and 'BUILD_BDB' which if set, enables building of
@@ -152,39 +184,15 @@ re-run the script and all dependencies are downloaded and rebuilt. If there is
152184an individual dependency that you would like to rebuild, just remove it from
153185the ` third_party ` directory, run the script again and it will be rebuilt.
154186
155- Note that [ .bazelrc] ( /src/.bazelrc ) contains a hardware restriction to quite old
156- Intel hardware. You should update update ` --cxxopt ` to reflect
157- your hardware. Using ` --cxxopt=-march=native --cxxopt=-mtune=native ` is likely
158- what you want. Build for the local hardware.
159-
160- ` WORKSPACE ` configures the build environment for ` bazel ` . The path
161- to the external dependencies must be configured in that file. They
162- can be either full path names, or path names relative to the main
163- WORKSPACE file. In the WORKSPACE file in this distribution, there is a mixture, with
164- many of the dependencies in the ` ../third_party ` directory, and
165- others with Lilly specific full path names. You may need to
166- update WORKSPACE for local needs.
167-
168- Note that installing these external dependencies and running bazel may require
187+ Note too that installing these external dependencies and running bazel may require
169188considerable amounts of disk space. For example at the time of writing my
170189'third_party' directory contains 1.2GB and my bazel temporary area contains 2.2GB.
171190
172- ### Installation Directory
173- There is an 'install' target in the BUILD files, and defined in
174- [ build_deps/install.bzl] ( src/build_deps/install.bzl ) .
175- This is where LillyMol executables will be installed when
176- the 'install' run target is run.
177191
178- 'build_third_party.sh' changes the default location for executables
179- to be '/path/to/LillyMol/bin/$(uname)'. Check to see that the update has
180- been done correctly and adjust if not, or to set another location.
181-
182- ```
183- tail build_deps/install.bzl
184- ```
185- That file contains other mechanisms for specifying the install directory.
186- But remember, every time ` build_third_party.sh ` runs it will change
187- this file.
192+ Note that [ .bazelrc] ( /src/.bazelrc ) contains a hardware restriction to quite old
193+ Intel hardware. You should update update ` --cxxopt ` to reflect
194+ your hardware. Using ` --cxxopt=-march=native --cxxopt=-mtune=native ` is likely
195+ what you want. Build for the local hardware.
188196
189197### Python Bindings
190198During building of external dependencies (with build_third_party.sh
0 commit comments