Skip to content

Commit

Permalink
llvm 18.1.8 (#67)
Browse files Browse the repository at this point in the history
* llvm 18.1.8
* self-build static llvm
* cache llvm
  • Loading branch information
arnetheduck committed Aug 25, 2024
1 parent 3fbef59 commit cc25aad
Show file tree
Hide file tree
Showing 14 changed files with 474 additions and 108 deletions.
10 changes: 9 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ jobs:
echo "CC=clang" >> $GITHUB_ENV
echo "CXX=clang++" >> $GITHUB_ENV
echo "LD=clang++" >> $GITHUB_ENV
echo "LLVM_VERSION=$(cat llvm/llvm.version)" >> $GITHUB_ENV
- name: Cache LLVM
id: cache-llvm
uses: actions/cache@v3
with:
path: |
ext/*-${{ env.LLVM_VERSION }}.src
key: llvm-${{ runner.os }}-${{ env.LLVM_VERSION }}
- name: Set up llvm
run: make STATIC_LLVM=1 prepare-llvm
- name: Compile nim
Expand All @@ -35,7 +43,7 @@ jobs:
# Updating nph version should be accompanied with running the new
# version
run: |
VERSION="v0.5.1"
VERSION="v0.6.0"
ARCHIVE="nph-linux_x64.tar.gz"
curl -L "https://github.com/arnetheduck/nph/releases/download/${VERSION}/${ARCHIVE}" -o ${ARCHIVE}
tar -xzf ${ARCHIVE}
Expand Down
16 changes: 11 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ LLVMPATH=../ext

#NIMFLAGS=--opt:speed --gc:markandsweep
#NIMFLAGS=-d:release
NIMFLAGS=--debuginfo --linedir:on
NIMFLAGS=--debuginfo --linedir:on --cc=clang

NLVMFLAGS= --debuginfo --linedir:on
NLVMFLAGS= --debuginfo --linedir:on --cc=clang

LLVM_MAJ:=$(shell cat llvm/llvm.version | cut -f1 -d.)
LLVM_MIN:=$(shell cat llvm/llvm.version | cut -f2 -d.)
Expand All @@ -22,7 +22,7 @@ ifdef STATIC_LLVM
LLVM_DEP=ext/$(LLVM_DIR)/sta/bin/llvm-config
export PATH := $(PWD)/ext/$(LLVM_DIR)/sta/bin:$(PATH)
else
LLVM_DEP=ext/$(LLVM_DIR)/sha/lib/libLLVM-$(LLVM_MAJ).so
LLVM_DEP=ext/$(LLVM_DIR)/sha/lib/libLLVM.so.$(LLVM_MAJ).$(LLVM_MIN)
NLVMCFLAGS?=
endif

Expand Down Expand Up @@ -101,7 +101,7 @@ self: nlvm/nlvm.self
clean:
rm -rf $(NLVMC) $(NLVMR) nlvm/nlvm.ll nlvm/nlvm.self.ll nlvm/nlvm.self Nim/testresults/

ext/$(LLVM_DIR)/sha/lib/libLLVM-$(LLVM_MAJ).so:
ext/$(LLVM_DIR)/sha/lib/libLLVM.so.$(LLVM_MAJ).$(LLVM_MIN):
sh ./make-llvm.sh $(LLVM_MAJ) $(LLVM_MIN) $(LLVM_PAT) sha \
-DLLVM_BUILD_LLVM_DYLIB=1 \
-DLLVM_LINK_LLVM_DYLIB=1 \
Expand All @@ -111,7 +111,13 @@ ext/$(LLVM_DIR)/sha/lib/libLLVM-$(LLVM_MAJ).so:
-DCMAKE_BUILD_TYPE=RelWithDebInfo

ext/$(LLVM_DIR)/sta/bin/llvm-config:
sh ./dl-llvm.sh $(LLVM_MAJ) $(LLVM_MIN) $(LLVM_PAT) sta
sh ./make-llvm.sh $(LLVM_MAJ) $(LLVM_MIN) $(LLVM_PAT) sta \
-DLLVM_BUILD_LLVM_DYLIB=0 \
-DLLVM_LINK_LLVM_DYLIB=0 \
-DLLVM_ENABLE_ASSERTIONS=0 \
-DLLVM_INCLUDE_TESTS=Off \
-DLLVM_INCLUDE_BENCHMARKS=Off \
-DCMAKE_BUILD_TYPE=Release

.PHONY: prepare-llvm
prepare-llvm: $(LLVM_DEP)
Expand Down
2 changes: 1 addition & 1 deletion dl-llvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ cd ext
VER="$1.$2"
VER2="$VER.$3"
TGT="$4"
SUFFIX="x86_64-linux-gnu-ubuntu-22.04"
SUFFIX="x86_64-linux-gnu-ubuntu-18.04"
SUFFIX2=""

LLVM_ROOT=llvm-$VER2.src
Expand Down
19 changes: 11 additions & 8 deletions llvm/llvm.nim
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import std/[os, strformat, strutils]

const
LLVMVersion* = staticRead(currentSourcePath.parentDir & "/llvm.version")
LLVMMaj = parseInt(LLVMVersion.split('.')[0])
LLVMMin = parseInt(LLVMVersion.split('.')[1])
LLVMPat = parseInt(LLVMVersion.split('.')[2])
LLVMLib = fmt"libLLVM-{LLVMMaj}.so"
LLVMMaj* = parseInt(LLVMVersion.split('.')[0])
LLVMMin* = parseInt(LLVMVersion.split('.')[1])
LLVMPat* = parseInt(LLVMVersion.split('.')[2])
LLVMLib = "" #fmt"libLLVM-{LLVMMaj}.so"
LLVMRoot = fmt"../ext/llvm-{LLVMVersion}.src/"
LLDRoot = fmt"../ext/lld-{LLVMVersion}.src/"

Expand All @@ -27,11 +27,11 @@ when defined(staticLLVM):
else:
const LLVMOut = LLVMRoot & "sha/"

{.passL: fmt"-lLLVM-{LLVMMaj}".}
{.passL: fmt"-lLLVM".}
{.passL: "-Wl,'-rpath=$ORIGIN/" & LLVMOut & "lib/'".}

{.passC: "-I" & LLVMRoot & "include".}
{.passC: "-I" & LLVMOut & "include".}
{.passC: "-I" & LLVMOut & "include".}
{.passC: "-I" & LLVMRoot & "include".}

{.passC: "-I" & LLDRoot & "include".}

Expand All @@ -40,7 +40,7 @@ else:
{.passL: gorge(LLVMOut & "bin/llvm-config --ldflags").}
{.passL: gorge(LLVMOut & "bin/llvm-config --system-libs").}

{.compile("wrapper.cc", "-std=gnu++17").}
{.compile("wrapper.cc", gorge(LLVMOut & "bin/llvm-config --cxxflags")).}

# Includes and helpers for generated code
type OpaqueMemoryBuffer = object
Expand Down Expand Up @@ -104,6 +104,9 @@ type
OpaqueTargetData {.pure, final.} = object
OpaqueTargetLibraryInfotData {.pure, final.} = object

OpaqueOperandBundle {.pure, final.} = object
OpaqueTargetMachineOptions {.pure, final.} = object

Opcode* {.size: sizeof(cint).} = enum
Ret = 1
Br = 2
Expand Down
2 changes: 1 addition & 1 deletion llvm/llvm.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
17.0.6
18.1.8
Loading

0 comments on commit cc25aad

Please sign in to comment.