diff --git a/.gitignore b/.gitignore index f6a5f56..5765ee3 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,6 @@ bin/serenec_CXX_cotire.cmake docs/Doxyfile.docs .ccache/ docs/spec.tex -docs/spec.pdf \ No newline at end of file +docs/spec.pdf + +.env \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 4952715..88b44e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,16 +228,6 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) add_subdirectory(include) if (SERENE_ENABLE_DOCS) - # Docs only available if this is the main app - find_package(Doxygen - REQUIRED dot - OPTIONAL_COMPONENTS dia) - - if(Doxygen_FOUND) - message(STATUS "Found Doxygen, building the docs") - add_subdirectory(docs) - else() - message(STATUS "Doxygen not found, not building the docs") - endif() + add_subdirectory(docs) endif() endif() diff --git a/builder b/builder index 920a838..3a1cb92 100755 --- a/builder +++ b/builder @@ -176,14 +176,46 @@ function tests() { ## Generates and build the project including the test cases popd_build } -# function docker-llvm() { # -# docker build -f resources/docker/Dockerfile.llvm -t serene/llvm:15-1 . -# } +function build-llvm-image() { ## Build the LLVM image that we use to build Serene's image + source .env + + docker build \ + -f $ME/resources/docker/llvm/Dockerfile \ + -t $REGISTRY/llvm:$1-$2 \ + --build-arg VERSION=$1 \ + . -function docker-serene() { ## Build the Serene docker image for the current HEAD - docker build -f resources/docker/Dockerfile.serene -t serene/build:$(git rev-parse HEAD) . } +function push-llvm-image() { ## Pushes the LLVM image to the registery + source .env + + docker login $REGISTRY -u $SERENE_REGISTERY_USER -p $SERENE_REGISTERY_PASS + docker push $REGISTRY/llvm:$1 +} + + + +function build-serene-image() { ## Build the Serene docker image for the current HEAD + source .env + docker build \ + -f $ME/resources/docker/serene/Dockerfile \ + -t $REGISTRY/serene:$VERSION-$(git rev-parse HEAD) \ + . +} + +function release-serene-image() { ## Build and push the Serene docker image for the current HEAD in Release mode + source .env + docker build \ + -f $ME/resources/docker/serene/Dockerfile \ + -t $REGISTRY/serene:$VERSION \ + --build-arg TASK=build-release \ + . + docker login $REGISTRY -u $SERENE_REGISTERY_USER -p $SERENE_REGISTERY_PASS + docker push $REGISTRY/serene:$VERSION +} + + function setup() { ## Setup the working directory and make it ready for development rm -rfv $ME/.git/hooks/pre-commit ln -s $ME/scripts/pre-commit $ME/.git/hooks/pre-commit @@ -203,7 +235,7 @@ echo "Commands:" grep -E '^function [a-zA-Z0-9_-]+\(\) \{ ## .*$$' $0 | \ sort | \ sed 's/^function \([a-zA-Z0-9_-]*\)() { ## \(.*\)/\1:\2/' | \ - awk 'BEGIN {FS=":"}; {printf "\033[36m%-20s\033[0m %s\n", $1, $2}' + awk 'BEGIN {FS=":"}; {printf "\033[36m%-30s\033[0m %s\n", $1, $2}' } # ----------------------------------------------------------------------------- diff --git a/include/serene/jit/halley.h b/include/serene/jit/halley.h index f218c17..ea217ee 100644 --- a/include/serene/jit/halley.h +++ b/include/serene/jit/halley.h @@ -78,6 +78,7 @@ private: }; class SERENE_EXPORT Halley { + // TODO: Replace this with a variant of LLJIT and LLLazyJIT std::unique_ptr engine; std::unique_ptr cache; diff --git a/resources/docker/Dockerfile.serene b/resources/docker/Dockerfile.serene deleted file mode 100644 index 30d74b6..0000000 --- a/resources/docker/Dockerfile.serene +++ /dev/null @@ -1,12 +0,0 @@ -FROM serene/llvm:15 - -RUN apt-get update --fix-missing && apt-get install -y wget gnupg ccache cmake ccache git ninja-build build-essential binutils libncurses-dev -WORKDIR /app -COPY . . - -ENV PATH="/opt/llvm/bin:$PATH" -ENV CXX=clang++ -ENV CC=clang -ENV LDFLAGS="-fuse-ld=lld" - -RUN LD_LIBRARY_PATH="$(clang -print-runtime-dir):$LD_LIBRARY_PATH" ./builder build diff --git a/resources/docker/llvm/Dockerfile b/resources/docker/llvm/Dockerfile new file mode 100644 index 0000000..5ada50f --- /dev/null +++ b/resources/docker/llvm/Dockerfile @@ -0,0 +1,39 @@ +FROM debian:sid-slim + +ARG VERSION + +RUN apt-get update && apt-get install -y wget \ + gnupg \ + ccache \ + cmake \ + ccache \ + git \ + ninja-build \ + build-essential \ + binutils \ + lsb-release \ + wget \ + software-properties-common \ + zlib1g \ + zlib1g-dev + +RUN wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh +RUN ./llvm.sh ${VERSION} all +RUN apt-get update --fix-missing && \ + apt-get install -y mlir-${VERSION}-tools \ + libmlir-${VERSION}-dev \ + libmlir-${VERSION} \ + libmlir-${VERSION}-dbgsym \ + liblld-${VERSION} \ + liblld-${VERSION}-dev + +RUN ln -s `which lld-${VERSION}` /usr/bin/lld && \ + ln -s `which clang-${VERSION}` /usr/bin/clang && \ + ln -s `which clang++-${VERSION}` /usr/bin/clang++ && \ + ln -s `which mlir-tblgen-${VERSION}` /usr/bin/mlir-tblgen + +ENV MLIR_DIR /usr/lib/llvm-${VERSION} +ENV CMAKE_PREFIX_PATH=/usr/lib/llvm-${VERSION} +ENV LD_LIBRARY_PATH=/usr/lib/llvm-${VERSION}/lib/clang/${VERSION}.0.0/lib/linux/ + +RUN apt-get clean diff --git a/resources/docker/Dockerfile.llvm b/resources/docker/llvm/Dockerfile.source_base similarity index 100% rename from resources/docker/Dockerfile.llvm rename to resources/docker/llvm/Dockerfile.source_base diff --git a/resources/docker/serene/#Makefile# b/resources/docker/serene/#Makefile# new file mode 100644 index 0000000..d770b4e --- /dev/null +++ b/resources/docker/serene/#Makefile# @@ -0,0 +1,18 @@ +SERENE_VERSION=15 +BUILD_NO=4 +REGISTRY=rg.fr-par.scw.cloud/serene + +include $(ENVFILE) + +.PHONY: build-dev +build-dev: + docker build -t $(REGISTRY)/serene:$(SERENE_VERSION)-$(TAG) $(SOURCE_PATH) + +.PHONY: build +build: + docker build -t $(REGISTRY)/serene:$(SERENE_VERSION) --build-arg TASK=build-release . + +.PHONY: release +release: + docker login $(REGISTRY) -u $(SERENE_REGISTERY_USER) -p $(SERENE_REGISTERY_PASS) + docker push $(REGISTRY)/serene:$(SERENE_VERSION) diff --git a/resources/docker/serene/.#Makefile b/resources/docker/serene/.#Makefile new file mode 120000 index 0000000..8793deb --- /dev/null +++ b/resources/docker/serene/.#Makefile @@ -0,0 +1 @@ +lxsameer@underworld.2962235:1638986649 \ No newline at end of file diff --git a/resources/docker/serene/Dockerfile b/resources/docker/serene/Dockerfile new file mode 100644 index 0000000..d35b132 --- /dev/null +++ b/resources/docker/serene/Dockerfile @@ -0,0 +1,9 @@ +FROM rg.fr-par.scw.cloud/serene/llvm:15-4 + +ARG TASK=build + +WORKDIR /app + +COPY . . + +RUN ./builder ${TASK}