Skip to content

WIP Build system overview (community made)

A. Tammy edited this page Oct 21, 2020 · 13 revisions

This page is made by someone who is not the developer and should not be considered as an official documentation of the build system.
For getting the full picture, it is best to read the Makefiles and understand them yourself.

Makefile dep graph

Makefile                                                        --  include makefile 
|                                                               ~~  call make on subfolder
|-----  Makefile.system 
|       |
|       |=====  Makefile.prebuild # This is triggered (not included) by Makefile.system 
|       |                         # and runs before any of the code is built.
|       |
|       |-----  Makefile.rule
|       |
|       |-----  (Makefile.conf) [ generated - Makefile.system#L243 ]
|       |
|       |-----  (Makefile_kernel.conf) [ generated ]
|       |
|       |-----  Makefile.$(ARCH)
|
|~~~~~ exports/
|
|~~~~~ test/
|
|~~~~~ utest/
|
|~~~~~ ctest/
|
|~~~~~ cpp_thread_test/
|
|~~~~~ kernel/
|
|~~~~~ ${SUBDIRS}
|
|~~~~~ ${BLASDORS}
|
|~~~~~ ${NETLIB_LAPACK_DIR}{,/timing,/testing/{EIG,LIN}}
|
|~~~~~ relapack/

Important Variables

CPU related

ARCH -         Target architecture (eg. x86_64)
TARGET -       Target CPU architecture (to get better tuning, eg. haswell)
TARGET_CORE -  override TARGET (¿¿why do we need this??)
DYNAMIC_ARCH - For building library for multiple ARCHs (loses specific TARGET optimizations)

Toolchain related

CC -                 C compiler used for compilation (BUILD machine, can be cross)
FC -                 Fortran compiler used for compilation (BUILD machine, can be cross)
AR, AS, LD, RANLIB - helpers used for compilation (BUILD machine, can be cross)
HOSTCC -             compiler of target architecture (¿¿why do we need this??)

Library related

BUILD_SHARED    - Create shared library
BUILD_STATIC    - Create static library

QUAD_PRECISION  - ??
EXPRECISION     - ??
BUILD_SINGLE    - ??
BUILD_DOUBLE    - ??
BUILD_COMPLEX   - ??
BUILD_COMPLEX16 - ??
USE_THREAD      - Use a threading backend (default to pthread)
USE_OPENMP      - Use OpenMP threading backend
Clone this wiki locally