Build: add clang-15.0.6 docker image
[marnav.git] / bin / docker-build.sh
blob09c6ebde8ea0f40d452dbffe3b1bc3ed01924715
1 #!/bin/bash -e
3 export SCRIPT_BASE=$(dirname `readlink -f $0`)
4 export BASE=${SCRIPT_BASE}/..
5 export BUILD=${BASE}/build
7 supported_compilers=(
8 "gcc-7.4.0"
9 "gcc-8.3.0"
10 "gcc-9.1.0"
11 "gcc-9.2.0"
12 "gcc-9.3.0"
13 "gcc-9.4.0"
14 "gcc-9.5.0"
15 "gcc-10.1.0"
16 "gcc-10.2.0"
17 "gcc-10.3.0"
18 "gcc-10.4.0"
19 "gcc-11.1.0"
20 "gcc-11.2.0"
21 "gcc-11.3.0"
22 "gcc-12.1.0"
23 "gcc-12.2.0"
24 "clang-5.0.2"
25 "clang-6.0.0"
26 "clang-7.1.0"
27 "clang-8.0.0"
28 "clang-9.0.0"
29 "clang-10.0.0"
30 "clang-10.0.0"
31 "clang-11.0.0"
32 "clang-12.0.0"
33 "clang-13.0.0"
34 "clang-14.0.0"
35 "clang-15.0.6"
37 supported_build_types=("Debug" "Release")
38 repository=${DOCKER_REPOSITORY:-marnav}
39 account=${DOCKER_ACCOUNT:-mariokonrad}
41 export NUM_PROC=${NUM_PROC:-$(nproc --ignore=2)}
44 function docker_run()
46 dockerid=$1
47 cmd="$2"
49 docker run \
50 --rm \
51 --read-only \
52 --volume $(pwd):$(pwd) \
53 --workdir $(pwd) \
54 --env HOME=$(pwd) \
55 --user $(id -u):$(id -g) \
56 ${dockerid} \
57 bash -c "${cmd}"
60 function build()
62 compiler=$1
63 build_type=$2
64 dockerid=${account}/${repository}:${compiler}
65 builddir=${BUILD_DIR:-${BUILD}/$(echo "${dockerid}_${build_type}" | tr '/:' '__')}
67 if [ ! -d ${builddir} ] ; then
68 mkdir -p ${builddir}
71 docker_run ${dockerid} "cmake -B ${builddir} -DCMAKE_BUILD_TYPE=${build_type} ${BASE}"
72 docker_run ${dockerid} "cmake --build ${builddir} -j ${NUM_PROC}"
73 docker_run ${dockerid} "cmake --build ${builddir} --target unittest"
74 docker_run ${dockerid} "cmake --build ${builddir} --target test"
77 function usage()
79 echo "usage: $(basename $0) compiler build-type"
80 echo ""
81 echo " supported compilers:"
82 for v in ${supported_compilers[@]} ; do
83 echo " - $v"
84 done
85 echo ""
86 echo " supported build types:"
87 for v in ${supported_build_types[@]} ; do
88 echo " - $v"
89 done
90 echo ""
93 function check_supported_compilers()
95 compiler=$1
96 for v in ${supported_compilers[@]} ; do
97 if [ "${v}" == "${compiler}" ] ; then
98 return
100 done
101 echo "error: specified compiler not supported: ${compiler}"
102 exit -1
105 function check_supported_build_types()
107 build_type=$1
108 for v in ${supported_build_types[@]} ; do
109 if [ "${v}" == "${build_type}" ] ; then
110 return
112 done
113 echo "error: specified build type not supported: ${build_type}"
114 exit -1
117 if [ $# -ne 2 ] ; then
118 usage
119 exit 1
122 check_supported_compilers $1
123 check_supported_build_types $2
124 build $1 $2