File tree Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change 2323 - vast
2424 - mads
2525 - bloaty
26+ - lfortran
2627 steps :
2728 - name : Docker Setup Buildx
2829 uses : docker/setup-buildx-action@v2
Original file line number Diff line number Diff line change 1+ FROM ubuntu:20.04
2+
3+ ARG DEBIAN_FRONTEND=noninteractive
4+ RUN apt update -y -q && apt upgrade -y -q && apt update -y -q && \
5+ apt install -y -q \
6+ bison \
7+ build-essential \
8+ cmake \
9+ curl \
10+ git \
11+ libzstd-dev \
12+ llvm-12-dev \
13+ ninja-build \
14+ patchelf \
15+ python-is-python3 \
16+ python3 \
17+ re2c \
18+ unzip \
19+ xz-utils \
20+ zlib1g-dev
21+
22+ RUN mkdir -p /root
23+ COPY lfortran /root/
24+ COPY common.sh /root/
25+
26+ WORKDIR /root
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ set -euo pipefail
4+ source common.sh
5+
6+ VERSION=" ${1} "
7+ LAST_REVISION=" ${3-} "
8+
9+ URL=" https://github.com/lfortran/lfortran.git"
10+ if [[ " ${VERSION} " == trunk ]]; then
11+ VERSION=trunk-$( date +%Y%m%d)
12+ BRANCH=main
13+ REMOTE=heads/main
14+ else
15+ BRANCH=v" ${VERSION} "
16+ REMOTE=tags/${BRANCH}
17+ fi
18+
19+ FULLNAME=lfortran-${VERSION}
20+ OUTPUT=$2 /${FULLNAME} .tar.xz
21+ REVISION=$( get_remote_revision " ${URL} " " ${REMOTE} " )
22+
23+ initialise " ${REVISION} " " ${OUTPUT} " " ${LAST_REVISION} "
24+
25+ git clone " ${URL} " --depth=1 " --branch=${BRANCH} "
26+
27+ OUTPUT=$( realpath " ${OUTPUT} " )
28+ DEST=$( realpath prefix)
29+ SOURCE=$( realpath lfortran)
30+
31+ mkdir build
32+ cmake \
33+ -GNinja \
34+ -DCMAKE_BUILD_TYPE=Release \
35+ -DCMAKE_CXX_FLAGS_RELEASE=" -Wall -Wextra -O3 -funroll-loops -DNDEBUG" \
36+ -DWITH_LLVM=yes \
37+ -DLFORTRAN_BUILD_ALL=yes \
38+ -DWITH_STACKTRACE=no \
39+ -DWITH_RUNTIME_STACKTRACE=yes \
40+ -DCMAKE_INSTALL_PREFIX=" ${DEST} " \
41+ -DCMAKE_INSTALL_LIBDIR=share/lfortran/lib \
42+ -Bbuild \
43+ -S" ${SOURCE} "
44+ ninja -C build
45+ ninja -C build install
46+
47+ mkdir " ${DEST} /lib"
48+
49+ # Copy all shared object dependencies into the release directory to create a hermetic build, per
50+ # Compiler Explorer requirements. Update rpath for these objects to $ORIGIN.
51+ cp $( ldd " ${DEST} /bin/lfortran" | grep -E ' => /' | grep -Ev ' lib(pthread|c|dl|rt).so' | awk ' {print $3}' ) " ${DEST} /lib"
52+ patchelf --set-rpath ' $ORIGIN/../lib' " ${DEST} /bin/lfortran"
53+
54+ complete " ${DEST} " " ${FULLNAME} " " ${OUTPUT} "
You can’t perform that action at this time.
0 commit comments