File tree 3 files changed +81
-0
lines changed
3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change 23
23
- vast
24
24
- mads
25
25
- bloaty
26
+ - lfortran
26
27
steps :
27
28
- name : Docker Setup Buildx
28
29
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