diff --git a/Dockerfile b/Dockerfile index 32ed487..d869b45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,26 +21,30 @@ ENV CXX "g++" ENV CMAKE "cmake" ENV MAKE "make" +# install vcpkg +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg +RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR "Ninja" ENV CMAKE_ARGS "" - # setup project env WORKDIR /home/project COPY ./scripts/docker-build.sh ./docker-build.sh COPY ./scripts/docker-test.sh ./docker-test.sh COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileDefault.yml /home/taskfiles/Taskfile.yml -# install vcpkg -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg -RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" - +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build \ No newline at end of file diff --git a/Dockerfile.android b/Dockerfile.android index 6cabef5..5d88de3 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -27,24 +27,30 @@ RUN pacman-db-upgrade && \ # install android stuff RUN runuser -l yay -c \ "yay -Syu --noconfirm && yay -S --noconfirm \ - jdk-openjdk android-platform android-sdk-build-tools \ - android-pkg-config android-cmake android-environment" && \ + jdk-openjdk android-platform android-sdk-build-tools android-sdk-cmdline-tools-latest \ + android-pkg-config android-cmake android-environment android-ndk" && \ runuser -l yay -c "yay -Scc --noconfirm" && \ rm -rf /home/yay/.cache/* && \ ln -s /opt/android-ndk /opt/android-sdk/ndk-bundle -# setup project env -WORKDIR /home/project -COPY ./scripts/docker-build.android.sh ./docker-build.sh -# install vcpkg -## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md -ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git -RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" +ENV ANDROID_HOME "/opt/android-sdk" +ENV ANDROID_NDK "/opt/android-ndk" +ENV ANDROID_NDK_HOME "/opt/android-ndk" +ENV ANDROID_SDK_ROOT "/opt/android-sdk" +ENV ANDROID_TOOLCHAIN "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" +ENV ANDROID_PLATFORM_TOOLS "${ANDROID_HOME}/platform-tools" +ENV ANDROID_BUILD_TOOLS "${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS_REVISION}" +ENV PATH="${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${PATH}" + +ARG setup_env_script="android-env" +ARG setup_env_script_args="$android_abi" +ENV SETUP_ENV_SCRIPT $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args +RUN . /etc/profile.d/android-ndk.sh + # cross compiler settings ENV CC $cc @@ -54,29 +60,40 @@ ENV ANDROID_ABI $android_abi ENV TARGET_TRIPLET $vcpkg_target_triplet ENV CROSS_CMAKE $cmake ENV CROSS_MAKE $make -ENV ANDROID_HOME "/opt/android-sdk" -ENV ANDROID_NDK_HOME "/opt/android-ndk" -ENV ANDROID_TOOLCHAIN "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" -ENV ANDROID_TOOLCHAIN_FILE "${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" -ENV ANDROID_PLATFORM_TOOLS "${ANDROID_HOME}/platform-tools" -ARG cmake_toolchain_file="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" -ENV CROSS_TOOLCHAIN "${ANDROID_TOOLCHAIN_FILE}" -ENV ANDROID_BUILD_TOOLS "${ANDROID_HOME}/build-tools/$ANDROID_BUILD_TOOLS_REVISION" - -ARG setup_env_script="android-env $android_abi" -ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script ENV CMAKE $CROSS_CMAKE ENV MAKE $CROSS_MAKE +# install vcpkg +## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md +ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git +RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + +ENV ANDROID_TOOLCHAIN_FILE "${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" +ARG cmake_toolchain_file="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" +ENV CROSS_TOOLCHAIN "${cmake_toolchain_file}" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR $cmake_generator ENV VCPKG_TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" -ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file +ENV CHAINLOAD_TOOLCHAIN_FILE $CROSS_TOOLCHAIN +ENV CROSS_CMAKE_ARGS -DANDROID_ABI="$ANDROID_ABI" ENV CMAKE_ARGS "" +# setup project env +WORKDIR /home/project +COPY ./scripts/docker-build.android.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml + +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build diff --git a/Dockerfile.android-v b/Dockerfile.android-v index 9d16dab..4365acf 100644 --- a/Dockerfile.android-v +++ b/Dockerfile.android-v @@ -8,6 +8,7 @@ ARG processor="x86_64" ARG vcpkg_target_triplet="arm-android" ARG android_abi="armeabi-v7a" ARG android_target="30" +ARG android_ndk_version="" ARG cmake="android-${android_abi}-cmake" ARG cmake_generator="Ninja" @@ -34,54 +35,67 @@ RUN pacman-db-upgrade && \ RUN runuser -l yay -c \ "yay -Syu --noconfirm && yay -S --noconfirm \ jdk-openjdk android-platform-${android_target} android-sdk-build-tools-${android_target} \ - android-pkg-config android-cmake android-environment" && \ + android-pkg-config android-cmake android-environment android-ndk${android_ndk_version}" && \ runuser -l yay -c "yay -Scc --noconfirm" && \ rm -rf /home/yay/.cache/* -# setup project env -WORKDIR /home/project -COPY ./scripts/docker-build.android.sh ./docker-build.sh - -# install vcpkg -## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md -ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git -RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" -# cross compiler settings -ENV CC $cc -ENV CXX $cxx -ENV PROCESSOR $processor -ENV ANDROID_ABI $android_abi -ENV TARGET_TRIPLET $vcpkg_target_triplet -ENV CROSS_CMAKE $cmake -ENV CROSS_MAKE $make ENV ANDROID_HOME "/opt/android-sdk" ENV ANDROID_NDK "/opt/android-ndk" ENV ANDROID_NDK_HOME "/opt/android-ndk" +ENV ANDROID_SDK_ROOT "/opt/android-sdk" ENV ANDROID_TOOLCHAIN "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64" ENV ANDROID_TOOLCHAIN_FILE "${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" ENV ANDROID_PLATFORM_TOOLS "${ANDROID_HOME}/platform-tools" ARG cmake_toolchain_file="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake" ENV CROSS_TOOLCHAIN "${ANDROID_TOOLCHAIN_FILE}" -ARG setup_env_script="android-env $android_abi" +ARG setup_env_script="android-env" +ARG setup_env_script_args="$android_abi" ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args +RUN . /etc/profile.d/android-ndk.sh + +# cross compiler settings +ENV CC $cc +ENV CXX $cxx +ENV PROCESSOR $processor +ENV ANDROID_ABI $android_abi +ENV TARGET_TRIPLET $vcpkg_target_triplet +ENV CROSS_CMAKE $cmake +ENV CROSS_MAKE $make ENV CMAKE $CROSS_CMAKE ENV MAKE $CROSS_MAKE +# install vcpkg +## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md +ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git +RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR $cmake_generator ENV VCPKG_TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" -ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file +ENV CHAINLOAD_TOOLCHAIN_FILE $ANDROID_TOOLCHAIN_FILE +ENV CROSS_CMAKE_ARGS -DANDROID_ABI="$ANDROID_ABI" ENV CMAKE_ARGS "" +# setup project env +WORKDIR /home/project +COPY ./scripts/docker-build.android.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml + +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build \ No newline at end of file diff --git a/Dockerfile.base b/Dockerfile.base index abfc35a..d32b4e7 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -32,6 +32,11 @@ RUN runuser -l yay -c \ runuser -l yay -c "yay -Scc --noconfirm" && \ rm -rf /home/yay/.cache/* +# install task +ADD https://taskfile.dev/install.sh /tmp/taskfile_install.sh +RUN chmod +x /tmp/taskfile_install.sh +RUN /tmp/taskfile_install.sh -d -b /usr/local/bin && rm /tmp/taskfile_install.sh + # Install conan RUN python -m pip install --upgrade pip setuptools && \ python -m pip install conan && \ diff --git a/Dockerfile.ci b/Dockerfile.ci index be20e04..016968f 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -22,7 +22,7 @@ RUN apt-get update -yqq && \ valgrind gcovr linux-tools-common linux-tools-generic google-perftools \ neovim emacs nano && \ apt-get clean && rm -rf /var/lib/apt/lists/* -#bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" +#ADD https://apt.llvm.org/llvm.sh /tmp/llvm.sh # Install conan RUN python3 -m pip install --upgrade pip setuptools && \ @@ -32,6 +32,12 @@ RUN python3 -m pip install --upgrade pip setuptools && \ RUN python3 -m pip install --upgrade pip setuptools && \ python3 -m pip install cogapp coverage cmake-format cmakelint +# install task +ADD https://taskfile.dev/install.sh /tmp/taskfile_install.sh +RUN chmod +x /tmp/taskfile_install.sh +RUN /tmp/taskfile_install.sh -d -b /usr/local/bin && rm /tmp/taskfile_install.sh + + # thx to https://github.com/lefticus/cpp_starter_project/pull/121 # By default, anything you run in Docker is done as superuser. @@ -67,18 +73,10 @@ RUN apt-get update -y && \ curl gnupg coreutils && \ apt-get clean && rm -rf /var/lib/apt/lists/* - -# set default compiler -ENV CC "gcc" -ENV CXX "g++" -ENV CMAKE "cmake" -ENV MAKE "ninja" - -# build script settings -ENV TARGET "all" -ENV BUILD_TYPE "Release" -ENV CMAKE_GENERATOR "Ninja" -ENV CMAKE_ARGS "" +# install task +ADD https://taskfile.dev/install.sh /tmp/taskfile_install.sh +RUN chmod +x /tmp/taskfile_install.sh +RUN /tmp/taskfile_install.sh -d -b /usr/local/bin && rm /tmp/taskfile_install.sh # install CodeCov WORKDIR /home/codecov @@ -91,11 +89,12 @@ RUN shasum -a 256 -c codecov.SHA256SUM RUN chmod +x codecov ENV CODECOV "/home/codecov/codecov" -# setup project env -WORKDIR /home/project -COPY ./scripts/docker-build.sh ./docker-build.sh -COPY ./scripts/docker-test.sh ./docker-test.sh -COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh + +# set default compiler +ENV CC "gcc" +ENV CXX "g++" +ENV CMAKE "cmake" +ENV MAKE "ninja" # install vcpkg ENV VCPKG_DISABLE_METRICS 1 @@ -106,10 +105,21 @@ ENV VCPKG_ROOT "/home/project/vcpkg" ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + +# build script settings +ENV TARGET "all" +ENV BUILD_TYPE "Release" +ENV CMAKE_GENERATOR "Ninja" +ENV CMAKE_ARGS "" + +# setup project env +WORKDIR /home/project +COPY ./scripts/docker-build.sh ./docker-build.sh +COPY ./scripts/docker-test.sh ./docker-test.sh +COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileDefault.yml /home/taskfiles/Taskfile.yml + ENV PROJECT_DIR /home/project WORKDIR /home/project RUN mkdir build - -COPY ./scripts/docker-entrypoint.ci.sh /docker-entrypoint.sh -ENTRYPOINT ["/bin/bash", "-c", "/docker-entrypoint.sh"] -CMD ["/bin/bash"] \ No newline at end of file diff --git a/Dockerfile.ci-setup-cpp b/Dockerfile.ci-setup-cpp index b7ad946..3eea004 100644 --- a/Dockerfile.ci-setup-cpp +++ b/Dockerfile.ci-setup-cpp @@ -1,5 +1,5 @@ ## base image -FROM ubuntu:20.04 AS base +FROM ubuntu:22.04 AS base ARG extra_libraries @@ -28,15 +28,17 @@ RUN shasum -a 256 -c codecov.SHA256SUM RUN chmod +x codecov ENV CODECOV "/home/codecov/codecov" -# download setup_cpp -ARG setup_cpp_linux_version="0.21.0" +# download setup_cpp https://github.com/aminya/setup-cpp +WORKDIR / +ARG setup_cpp_linux_version="0.24.1" ARG setup_cpp_linux_download_url="https://github.com/aminya/setup-cpp/releases/download/v${setup_cpp_linux_version}/setup_cpp_linux" # add setup_cpp -RUN wget --no-verbose ${setup_cpp_linux_download_url} -O /setup_cpp_linux +ADD ${setup_cpp_linux_download_url} /setup_cpp_linux RUN chmod +x /setup_cpp_linux -RUN /setup_cpp_linux --compiler llvm --gcc true --make true --cmake true --ninja true --ccache true --doxygen true --gcovr true --cppcheck true --clangtidy true --clangformat true --conan true +RUN /setup_cpp_linux --compiler llvm --gcc true --make true --cmake true --ninja true --ccache true --doxygen true --gcovr true --cppcheck true --clangtidy true --clangformat true --conan true --task true RUN rm -rf /tmp/* -#RUN cp /root/.cpprc /root/.bashrc +RUN echo 'source /root/.cpprc' >> /root/.bash_profile +RUN cp /root/.cpprc /root/.bashrc # Install more tools from standard repos RUN apt-get update -y && \ @@ -65,18 +67,24 @@ ENV CONAN_SYSREQUIRES_SUDO 0 # leaving this flag undefined can cause some installation failures. ENV CONAN_SYSREQUIRES_MODE enabled - -ENV SETUP_ENV_SCRIPT ~/.cpprc - # set default compiler ENV CC "/root/llvm/bin/clang" ENV CXX "/root/llvm/bin/clang++" ENV CMAKE "cmake" ENV MAKE "/root/ninja/ninja" +# compiler env settings +# e.g. mingw-env, emsdk_env.sh +ARG setup_env_script="/root/.cpprc" +ARG setup_env_script_args="" +ENV SETUP_ENV_SCRIPT $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args + # setup project env WORKDIR /home/project -RUN bash -c 'source ~/.cpprc' +RUN bash -c 'source /root/.cpprc' COPY ./scripts/docker-entrypoint.setup-cpp.sh /docker-entrypoint.sh ENTRYPOINT ["/bin/bash", "-c", "/docker-entrypoint.sh"] @@ -103,6 +111,14 @@ ENV CXX "/root/llvm/bin/clang++" ENV CMAKE "cmake" ENV MAKE "/root/ninja/ninja" +# install vcpkg +ENV VCPKG_DISABLE_METRICS 1 +RUN /setup_cpp_linux --vcpkg true +ENV VCPKG_ROOT "/root/vcpkg" +RUN /root/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" @@ -111,19 +127,15 @@ ENV VCPKG_TOOLCHAIN_FILE "/root/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "/root/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV CMAKE_ARGS "" -# install vcpkg -ENV VCPKG_DISABLE_METRICS 1 -RUN /setup_cpp_linux --vcpkg true -ENV VCPKG_ROOT "/root/vcpkg" -RUN /root/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" - # setup project env ENV PROJECT_DIR /home/project WORKDIR /home/project COPY ./scripts/docker-build.setup-cpp.sh ./docker-build.sh COPY ./scripts/docker-test.setup-cpp.sh ./docker-test.sh COPY ./scripts/docker-test-coverage.setup-cpp.sh ./docker-test-coverage.sh -RUN mkdir build +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileSetupCpp.yml /home/taskfiles/Taskfile.yml -RUN bash -c 'source ~/.cpprc' \ No newline at end of file +ENV PROJECT_DIR /home/project +WORKDIR /home/project +RUN mkdir build diff --git a/Dockerfile.ci-windows b/Dockerfile.ci-windows index 3692dd2..f157c0b 100644 --- a/Dockerfile.ci-windows +++ b/Dockerfile.ci-windows @@ -56,6 +56,12 @@ RUN python3 -m pip install --upgrade pip setuptools && \ RUN python3 -m pip install --upgrade pip setuptools && \ python3 -m pip install cogapp coverage cmake-format cmakelint +# install task +ADD https://taskfile.dev/install.sh /tmp/taskfile_install.sh +RUN chmod +x /tmp/taskfile_install.sh +RUN /tmp/taskfile_install.sh -d -b /usr/local/bin && rm /tmp/taskfile_install.sh + + # thx to https://github.com/lefticus/cpp_starter_project/pull/121 # By default, anything you run in Docker is done as superuser. @@ -95,18 +101,17 @@ ARG cmake_generator="Ninja" ARG cmake_toolchain_file="/home/cmake/x86_64-w64-mingw32.toolchain.cmake" ARG cross_root "/usr/x86_64-w64-mingw32" -# install vcpkg -## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md -ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/vcpkg -RUN /home/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/vcpkg" - -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +# compiler env settings +# e.g. mingw-env, emsdk_env.sh +RUN mkdir -p /home/cross +RUN touch /home/cross/.bashrc +ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" +ENV SETUP_ENV_SCRIPT $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args # cross compiler settings ENV CC $cc @@ -122,6 +127,20 @@ ENV CROSS "${cross_triple}-" ENV CROSS_ROOT $cross_root ENV CROSS_TOOLCHAIN $cmake_toolchain_file + +# install vcpkg +## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md +ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/vcpkg +RUN /home/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/vcpkg" + +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" @@ -133,11 +152,9 @@ ENV CMAKE_ARGS "" WORKDIR /home/project COPY ./cmake /home/cmake COPY ./scripts/docker-build.ci-mingw.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml ENV PROJECT_DIR /home/project WORKDIR /home/project RUN mkdir build - -COPY ./scripts/docker-entrypoint.ci.sh /docker-entrypoint.sh -ENTRYPOINT ["/bin/bash", "-c", "/docker-entrypoint.sh"] -CMD ["/bin/bash"] \ No newline at end of file diff --git a/Dockerfile.cross b/Dockerfile.cross index 5a193bf..06cb65f 100644 --- a/Dockerfile.cross +++ b/Dockerfile.cross @@ -41,19 +41,16 @@ RUN runuser -l yay -c \ runuser -l yay -c "yay -Scc --noconfirm" && \ rm -rf /home/yay/.cache/* - -# install vcpkg -## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md -ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg -RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" - +# compiler env settings +# e.g. mingw-env, emsdk_env.sh +RUN mkdir -p /home/cross +RUN touch /home/cross/.bashrc +ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" +ENV SETUP_ENV_SCRIPT $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args # cross compiler settings ENV CC $cc @@ -71,29 +68,34 @@ ENV CROSS_ROOT $cross_root ENV CROSS_TOOLCHAIN $cmake_toolchain_file +# install vcpkg +## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md +ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg +RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + +ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file +ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR $cmake_generator -ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file ENV CMAKE_ARGS "" -ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE - - # setup project env COPY ./cmake /home/cmake WORKDIR /home/project ARG docker_build_script "docker-build.cross.sh" COPY ./scripts/$docker_build_script ./docker-build.sh - -# compiler env settings -# e.g. mingw-env, emsdk_env.sh -RUN mkdir -p /home/cross -RUN touch /home/cross/.bashrc -ARG setup_env_script="/home/cross/.bashrc" -ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml ENV PROJECT_DIR /home/project WORKDIR /home/project diff --git a/Dockerfile.crosstool-ng b/Dockerfile.crosstool-ng index a089a15..b24f157 100644 --- a/Dockerfile.crosstool-ng +++ b/Dockerfile.crosstool-ng @@ -47,17 +47,6 @@ ARG cxx="${cross_triple}-g++" # compiler env settings #RUN cp ${crosstool_dir}/bash-completion/ct-ng /etc/bash_completion.d/ct-ng -# install vcpkg -ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg -RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" - # set default compiler ENV CC $cc ENV CXX $cxx @@ -74,26 +63,42 @@ ENV CROSS "${cross_triple}-" ENV CROSS_ROOT $cross_root ENV CROSS_TOOLCHAIN $cmake_toolchain_file +RUN mkdir -p /home/cross +RUN touch /home/cross/.bashrc +ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" +ENV SETUP_ENV_SCRIPT $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args + + +# install vcpkg +ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg +RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + +ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR $cmake_generator -ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file ENV CMAKE_ARGS "" -ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE - # setup project env WORKDIR /home/project COPY ./cmake /home/cmake COPY ./scripts/docker-build.crosstool-ng.sh ./docker-build.sh - -RUN mkdir -p /home/cross -RUN touch /home/cross/.bashrc -ARG setup_env_script="/home/cross/.bashrc" -ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml ENV PROJECT_DIR /home/project WORKDIR /home/project diff --git a/Dockerfile.rpi b/Dockerfile.crosstool-ng-rpi similarity index 91% rename from Dockerfile.rpi rename to Dockerfile.crosstool-ng-rpi index 64d6f30..ace0c3a 100644 --- a/Dockerfile.rpi +++ b/Dockerfile.crosstool-ng-rpi @@ -48,19 +48,6 @@ ARG cxx="${cross_triple}-g++" ENV CC "gcc" ENV CXX "g++" -# setup project env -WORKDIR /home/project -COPY ./cmake /home/cmake -COPY ./scripts/docker-build.rpi.sh ./docker-build.sh - -# install vcpkg -ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git -RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - # cross compiler settings ENV CC $cc ENV CXX $cxx @@ -94,12 +81,23 @@ ENV RASPBERRYPI_TOOLS_DIR $raspberrypi_tools_source_dir RUN mkdir -p /home/cross RUN touch /home/cross/.bashrc ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args ENV CMAKE $CROSS_CMAKE ENV MAKE $CROSS_MAKE +# install vcpkg +ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git +RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" @@ -109,4 +107,13 @@ ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file ENV CMAKE_ARGS "" +# setup project env +WORKDIR /home/project +COPY ./cmake /home/cmake +COPY ./scripts/docker-build.rpi.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml + +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build diff --git a/Dockerfile.emscripten b/Dockerfile.emscripten index 48d094f..904288d 100644 --- a/Dockerfile.emscripten +++ b/Dockerfile.emscripten @@ -34,9 +34,29 @@ RUN runuser -l yay -c \ rm -rf /home/yay/.cache/* RUN /usr/lib/emsdk/emsdk install latest && /usr/lib/emsdk/emsdk activate latest +# compiler env settings +ENV EMSDK "/usr/lib/emsdk" +ENV EM_CONFIG "/usr/lib/emsdk/.emscripten" +ENV EM_CACHE "/usr/lib/emsdk/upstream/emscripten/cache" +ENV EMSDK_PATH "/usr/lib/emsdk" +ENV EMSCRIPTEN_PATH "/usr/lib/emscripten" +ENV CLANG_PATH "/opt/emscripten-llvm/bin" +ENV PYTHON_PATH "/usr/bin" +ENV NODE_PATH "/usr/bin" +ENV PATH="${EMSDK_PATH}:${EMSCRIPTEN_PATH}:${CLANG_PATH}:${NODE_PATH}:${PYTHON_PATH}:${PATH}" + ARG setup_env_script="/usr/lib/emsdk/emsdk_env.sh" +ARG setup_env_script_args="" ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN /usr/lib/emsdk/emsdk construct_env +RUN . $setup_env_script $setup_env_script_args +# FIXME: https://github.com/emscripten-core/emsdk/issues/430 +RUN mkdir -p /home/cross +RUN touch /home/cross/.bashrc +ENV SETUP_ENV_SCRIPT "/home/cross/.bashrc" +ENV SETUP_ENV_SCRIPT_ARGS "" # cross compiler settings @@ -51,17 +71,6 @@ ENV CROSS_CMAKE $cross_cmake ENV CROSS_MAKE $cross_make ENV CROSS_TOOLCHAIN $cmake_toolchain_file -# compiler env settings -ENV EMSDK "/usr/lib/emsdk" -ENV EM_CONFIG "/usr/lib/emsdk/.emscripten" -ENV EM_CACHE "/usr/lib/emsdk/upstream/emscripten/cache" -ENV EMSDK_PATH "/usr/lib/emsdk" -ENV EMSCRIPTEN_PATH "/usr/lib/emscripten" -ENV CLANG_PATH "/opt/emscripten-llvm/bin" -ENV PYTHON_PATH "/usr/bin" -ENV NODE_PATH "/usr/bin" -ENV PATH="${EMSDK_PATH}:${EMSCRIPTEN_PATH}:${CLANG_PATH}:${NODE_PATH}:${PYTHON_PATH}:${PATH}" - # install vcpkg ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet @@ -71,6 +80,8 @@ RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcp RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics ENV VCPKG_ROOT "/home/project/vcpkg" +ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file +ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" @@ -79,17 +90,16 @@ ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR $cmake_generator -ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file ENV CMAKE_ARGS "" -ENV VCPKG_CHAINLOAD_TOOLCHAIN_FILE $CHAINLOAD_TOOLCHAIN_FILE - # setup project env ENV PROJECT_DIR /home/project WORKDIR /home/project COPY ./cmake ./cmake COPY ./scripts/docker-build.setup-env.sh ./docker-build.sh COPY ./scripts/docker-test.setup-env.sh ./docker-test.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml ENV PROJECT_DIR /home/project WORKDIR /home/project diff --git a/Dockerfile.gcc b/Dockerfile.gcc index 8c4b7ba..41c5278 100644 --- a/Dockerfile.gcc +++ b/Dockerfile.gcc @@ -40,19 +40,20 @@ ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -# setup project env -WORKDIR /home/project -COPY ./scripts/docker-build.sh ./docker-build.sh -COPY ./scripts/docker-test.sh ./docker-test.sh -COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh - - # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" ENV CMAKE_GENERATOR "Unix Makefiles" ENV CMAKE_ARGS "" +# setup project env +WORKDIR /home/project +COPY ./scripts/docker-build.sh ./docker-build.sh +COPY ./scripts/docker-test.sh ./docker-test.sh +COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileDefault.yml /home/taskfiles/Taskfile.yml + ENV PROJECT_DIR /home/project WORKDIR /home/project RUN mkdir build \ No newline at end of file diff --git a/Dockerfile.mxe b/Dockerfile.mxe index 386f760..90a9f3f 100644 --- a/Dockerfile.mxe +++ b/Dockerfile.mxe @@ -46,20 +46,6 @@ ENV PATH="${mxe_source_dir}/usr/bin:${PATH}" ARG cross_root="${mxe_source_dir}/usr" ARG cmake_toolchain_file="${cross_root}/${cross_triplet}/share/cmake/mxe-conf.cmake" -# install vcpkg -## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md -WORKDIR /home/project -ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg -RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - -ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" - - # cross compiler settings ENV CC $cc ENV CXX $cxx @@ -75,11 +61,30 @@ ENV CROSS "${cross_triplet}-" ENV CROSS_ROOT $cross_root ENV CROSS_TOOLCHAIN $cmake_toolchain_file +# compiler env settings +# e.g. mingw-env, emsdk_env.sh RUN mkdir -p /home/cross RUN touch /home/cross/.bashrc ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args + +# install vcpkg +## https://github.com/microsoft/vcpkg/blob/master/docs/users/mingw.md +WORKDIR /home/project +ENV VCPKG_DEFAULT_HOST_TRIPLET $vcpkg_host_triplet +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg +RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + +ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" +ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" + # build script settings ENV TARGET "all" @@ -92,6 +97,8 @@ ENV CMAKE_ARGS "" WORKDIR /home/project COPY ./cmake /home/cmake COPY ./scripts/docker-build.mxe.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml ENV PROJECT_DIR /home/project WORKDIR /home/project diff --git a/Dockerfile.rpi-without-tools b/Dockerfile.rpi-without-tools index 0b024d8..a9c7bed 100644 --- a/Dockerfile.rpi-without-tools +++ b/Dockerfile.rpi-without-tools @@ -48,19 +48,6 @@ ARG cxx="${cross_triple}-g++" ENV CC "gcc" ENV CXX "g++" -# setup project env -WORKDIR /home/project -COPY ./cmake /home/cmake -COPY ./scripts/docker-build.rpi.sh ./docker-build.sh - -# install vcpkg -ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host -ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet -ENV VCPKG_DISABLE_METRICS 1 -RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git -RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics -ENV VCPKG_ROOT "/home/project/vcpkg" - # cross compiler settings ENV CC $cc ENV CXX $cxx @@ -75,15 +62,28 @@ ENV CROSS_TOOLCHAIN $cmake_toolchain_file # compiler env settings #COPY ${crosstool_dir}/bash-completion/ct-ng /etc/bash_completion.d/ct-ng +# compiler env settings +# e.g. mingw-env, emsdk_env.sh RUN mkdir -p /home/cross RUN touch /home/cross/.bashrc ARG setup_env_script="/home/cross/.bashrc" +ARG setup_env_script_args="" ENV SETUP_ENV_SCRIPT $setup_env_script -RUN . $setup_env_script +ENV SETUP_ENV_SCRIPT_ARGS $setup_env_script_args +RUN echo 'source "$SETUP_ENV_SCRIPT $SETUP_ENV_SCRIPT_ARGS"' >> /root/.bash_profile +RUN . $setup_env_script $setup_env_script_args ENV CMAKE $CROSS_CMAKE ENV MAKE $CROSS_MAKE +# install vcpkg +ENV VCPKG_DEFAULT_HOST_TRIPLET $triplet_host +ENV VCPKG_DEFAULT_TRIPLET $vcpkg_target_triplet +ENV VCPKG_DISABLE_METRICS 1 +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git +RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics +ENV VCPKG_ROOT "/home/project/vcpkg" + # build script settings ENV TARGET "all" ENV BUILD_TYPE "Release" @@ -93,4 +93,13 @@ ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake" ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file ENV CMAKE_ARGS "" +# setup project env +WORKDIR /home/project +COPY ./cmake /home/cmake +COPY ./scripts/docker-build.rpi.sh ./docker-build.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileCross.yml /home/taskfiles/Taskfile.yml + +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build diff --git a/Dockerfile.without-vcpkg b/Dockerfile.without-vcpkg index b28066e..aa448d8 100644 --- a/Dockerfile.without-vcpkg +++ b/Dockerfile.without-vcpkg @@ -32,5 +32,9 @@ WORKDIR /home/project COPY ./scripts/docker-build-without-toolchain.sh ./docker-build.sh COPY ./scripts/docker-test.sh ./docker-test.sh COPY ./scripts/docker-test-coverage.sh ./docker-test-coverage.sh +COPY ./taskfiles/*.yml /home/taskfiles/ +COPY ./taskfiles/TaskfileWithoutVcpkgToolchain.yml /home/taskfiles/Taskfile.yml +ENV PROJECT_DIR /home/project +WORKDIR /home/project RUN mkdir build \ No newline at end of file diff --git a/LICENSE b/LICENSE index 2105043..f38e770 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2021 Alex Beimler +Copyright 2021-2023 Alex Beimler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index d665c41..ec0c1b2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Simple C++ Builder with compilers, buildtools and dependency manager. ## Features - Pre-installed Compilers and Tools -- Ready to use build scripts ([docker-build.sh](https://github.com/abeimler/simple-cppbuilder/blob/main/scripts/docker-build.sh) and [docker-test.sh](https://github.com/abeimler/simple-cppbuilder/blob/main/scripts/docker-test.sh)) +- Ready to use ~~build scripts ([docker-build.sh](https://github.com/abeimler/simple-cppbuilder/blob/main/scripts/docker-build.sh) and [docker-test.sh](https://github.com/abeimler/simple-cppbuilder/blob/main/scripts/docker-test.sh))~~ [Taskfiles](https://github.com/abeimler/simple-cppbuilder/blob/main/taskfiles/TaskfileDefault.sh) ## What's included @@ -32,11 +32,11 @@ You can find a full C++ project example [here](https://github.com/abeimler/simpl ## build stage FROM abeimler/simple-cppbuilder as build COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test stage FROM build as test -CMD ["./docker-test.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "test"] ``` 2. Build and run the Docker image: @@ -141,7 +141,7 @@ RUN pacman-db-upgrade && pacman -S --noconfirm \ # build stage FROM base as build COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ``` ### Dockerfile using AUR @@ -206,18 +206,43 @@ services: $ docker-compose up --build ``` -### Use your custom build script +### ~~Use your custom build script~~ Better use a [Taskfile](https://taskfile.dev/usage/) -#### `my-build.sh` +#### ~~`my-build.sh`~~ -```bash -#!/bin/bash +#### `Taskfile.yml` -mkdir build -cd build -cmake -G "Ninja" -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=arm -DCMAKE_C_COMPILER=clang -DCMAKE_C_COMPILER_TARGET=arm-linux-gnueabihf -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_COMPILER_TARGET=arm-linux-gnueabihf .. +```yml +--- +version: "3" + +vars: + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - > + cmake -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + {{.CMAKE_ARGS}} + + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - 'cmake --build build --target "{{.TARGET}}"' + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test --test-dir build -make my-app -j 4 ``` #### `Dockerfile` @@ -229,7 +254,8 @@ FROM abeimler/simple-cppbuilder as base # build stage FROM base as build COPY . . -CMD ["./my-build.sh"] +#CMD ["./my-build.sh"] +CMD ["task", "build"] ``` #### `docker-compose.yml` @@ -365,5 +391,6 @@ As for any pre-built image usage, it is the image user's responsibility to ensur - [simple-cppbuilder DockerHub](https://hub.docker.com/r/abeimler/simple-cppbuilder) - [simple-cppbuilder GitHub](https://github.com/abeimler/simple-cppbuilder) - [cpp_starter_project](https://github.com/lefticus/cpp_starter_project) +- [cpp_vcpkg_project](https://github.com/abeimler/cpp_vcpkg_project/tree/v2) - [cppdock](https://github.com/ricejasonf/cppdock) - Icon made by [me](https://hub.docker.com/u/abeimler) using C++-Icon made by [Freepik](https://www.freepik.com) from [Flaticon](https://www.flaticon.com/) diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..1e0143f --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,5 @@ +version: '3' + +includes: + build: ./taskfiles/docker/Build.yml + test: ./taskfiles/docker/Test.yml \ No newline at end of file diff --git a/VERSION b/VERSION index dc1e644..bd8bf88 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/build-images.all.sh b/build-images.all.sh deleted file mode 100755 index b79b273..0000000 --- a/build-images.all.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -./build-images.sh - -./build-images.mingw.sh -./build-images.emscripten.sh - -./build-images.arm.sh - -./build-images.android.sh -./build-images.android-21.sh -./build-images.android-24.sh - -#./build-images.arm.crosstool.sh -#./build-images.rpi.sh - -#./build-images.gcc.sh -#./build-images.mingw.mxe.sh \ No newline at end of file diff --git a/build-images.android-21.sh b/build-images.android-21.sh deleted file mode 100755 index 4f48a5e..0000000 --- a/build-images.android-21.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="arm-android" \ - --build-arg cmake="android-armv7a-eabi-cmake" \ - --build-arg android_abi="armeabi-v7a" \ - --build-arg android_target="21" \ - -t abeimler/simple-cppbuilder:arm-android-21 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="arm64-android" \ - --build-arg cmake="android-aarch64-cmake" \ - --build-arg android_abi="arm64-v8a" \ - --build-arg android_target="21" \ - -t abeimler/simple-cppbuilder:arm64-android21 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="x86-android" \ - --build-arg cmake="android-x86-cmake" \ - --build-arg android_abi="x86" \ - --build-arg android_target="21" \ - -t abeimler/simple-cppbuilder:x86-android-21 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="x64-android" \ - --build-arg cmake="android-x86-64-cmake" \ - --build-arg android_abi="x86_64" \ - --build-arg android_target="21" \ - -t abeimler/simple-cppbuilder:x64-android-21 . \ No newline at end of file diff --git a/build-images.android-24.sh b/build-images.android-24.sh deleted file mode 100755 index 75c1835..0000000 --- a/build-images.android-24.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="arm-android" \ - --build-arg cmake="android-armv7a-eabi-cmake" \ - --build-arg android_abi="armeabi-v7a" \ - --build-arg android_target="24" \ - -t abeimler/simple-cppbuilder:arm-android-24 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="arm64-android" \ - --build-arg cmake="android-aarch64-cmake" \ - --build-arg android_abi="arm64-v8a" \ - --build-arg android_target="24" \ - -t abeimler/simple-cppbuilder:arm64-android24 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="x86-android" \ - --build-arg cmake="android-x86-cmake" \ - --build-arg android_abi="x86" \ - --build-arg android_target="24" \ - -t abeimler/simple-cppbuilder:x86-android-24 . - -docker build --force-rm=true -f ./Dockerfile.android-v \ - --build-arg vcpkg_target_triplet="x64-android" \ - --build-arg cmake="android-x86-64-cmake" \ - --build-arg android_abi="x86_64" \ - --build-arg android_target="24" \ - -t abeimler/simple-cppbuilder:x64-android-24 . \ No newline at end of file diff --git a/build-images.android.sh b/build-images.android.sh deleted file mode 100755 index de82dd1..0000000 --- a/build-images.android.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.android \ - --build-arg vcpkg_target_triplet="arm-android" \ - --build-arg cmake="android-armv7a-eabi-cmake" \ - --build-arg android_abi="armeabi-v7a" \ - -t abeimler/simple-cppbuilder:arm-android . - -docker build --force-rm=true -f ./Dockerfile.android \ - --build-arg vcpkg_target_triplet="arm64-android" \ - --build-arg cmake="android-aarch64-cmake" \ - --build-arg android_abi="arm64-v8a" \ - -t abeimler/simple-cppbuilder:arm64-android . - -docker build --force-rm=true -f ./Dockerfile.android \ - --build-arg vcpkg_target_triplet="x86-android" \ - --build-arg cmake="android-x86-cmake" \ - --build-arg android_abi="x86" \ - -t abeimler/simple-cppbuilder:x86-android . - -docker build --force-rm=true -f ./Dockerfile.android \ - --build-arg vcpkg_target_triplet="x64-android" \ - --build-arg cmake="android-x86-64-cmake" \ - --build-arg android_abi="x86_64" \ - -t abeimler/simple-cppbuilder:x64-android . \ No newline at end of file diff --git a/build-images.arm.crosstool.sh b/build-images.arm.crosstool.sh deleted file mode 100755 index 2c41faf..0000000 --- a/build-images.arm.crosstool.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ - --build-arg vcpkg_target_triplet="arm-linux" \ - --build-arg cross_triple="arm-unknown-linux-gnueabi" \ - --build-arg cmake_toolchain_file="/home/cmake/arm-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:arm-unknown-linux-gnueabi . - -#docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ -# --build-arg vcpkg_target_triplet="avr" \ -# --build-arg cross_triple="avr" \ -# --build-arg cmake_toolchain_file="/home/cmake/avr-toolchain.cmake" \ -# -t abeimler/simple-cppbuilder:avr . - -#docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ -# --build-arg vcpkg_target_triplet="ppc64le-linux" \ -# --build-arg cross_triple="powerpc64le-unknown-linux-gnu" \ -# --build-arg cmake_toolchain_file="/home/cmake/ppc64le-toolchain.cmake" \ -# -t abeimler/simple-cppbuilder:powerpc64le-unknown-linux-gnu . \ No newline at end of file diff --git a/build-images.arm.sh b/build-images.arm.sh deleted file mode 100755 index 72cf09d..0000000 --- a/build-images.arm.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.cross \ - --build-arg vcpkg_target_triplet="arm64-linux" \ - --build-arg cross_triple="aarch64-linux-gnu" \ - --build-arg install_toolchain="aarch64-linux-gnu-gcc" \ - --build-arg cmake_generator="Ninja" \ - --build-arg make="ninja" \ - --build-arg cmake="cmake" \ - --build-arg cross_make="ninja" \ - --build-arg cross_cmake="cmake" \ - --build-arg cmake_toolchain_file="/home/cmake/aarch64.toolchain.cmake" \ - -t abeimler/simple-cppbuilder:aarch64-linux . - - -## @FIXME: https://aur.archlinux.org/packages/arm-linux-gnueabihf-gcc-stage1/#pinned-806072 -#docker build --force-rm=true -f ./Dockerfile.cross \ -# --build-arg vcpkg_target_triplet="arm-linux" \ -# --build-arg cross_triple="arm-linux-gnueabihf" \ -# --build-arg install_toolchain="arm-linux-gnueabihf-gcc-stage1 arm-linux-gnueabihf-gcc-stage2 arm-linux-gnueabihf-gcc" \ -# --build-arg cmake_generator="Ninja" \ -# --build-arg make="ninja" \ -# --build-arg cmake="cmake" \ -# --build-arg cmake_toolchain_file="/home/cmake/arm.toolchain.cmake" \ -# -t abeimler/simple-cppbuilder:arm-linux-gnueabihf . \ No newline at end of file diff --git a/build-images.emscripten.sh b/build-images.emscripten.sh deleted file mode 100755 index 78dd063..0000000 --- a/build-images.emscripten.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.emscripten -t abeimler/simple-cppbuilder:emscripten . diff --git a/build-images.gcc.sh b/build-images.gcc.sh deleted file mode 100755 index 9636de8..0000000 --- a/build-images.gcc.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=11 -t abeimler/simple-cppbuilder:gcc-11 . -docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=10 -t abeimler/simple-cppbuilder:gcc-10 . -docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=9 -t abeimler/simple-cppbuilder:gcc-9 . -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=8 -t abeimler/simple-cppbuilder:gcc-8 . -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=7 -t abeimler/simple-cppbuilder:gcc-7 . -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=6 -t abeimler/simple-cppbuilder:gcc-6 . -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=5 -t abeimler/simple-cppbuilder:gcc-5 . -#docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=49 -t abeimler/simple-cppbuilder:gcc-4.9 . \ No newline at end of file diff --git a/build-images.mingw.mxe.sh b/build-images.mingw.mxe.sh deleted file mode 100644 index fe29ae2..0000000 --- a/build-images.mingw.mxe.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.mxe \ - --build-arg vcpkg_target_triplet="x64-mingw-dynamic" \ - --build-arg cross_triplet="x86_64-w64-mingw32.shared" \ - --build-arg processor="x86_64" \ - -t abeimler/simple-cppbuilder:x64-mingw-w64-mxe . - -docker build --force-rm=true -f ./Dockerfile.mxe \ - --build-arg vcpkg_target_triplet="x86-mingw-dynamic" \ - --build-arg cross_triplet="i686-w64-mingw32.shared" \ - --build-arg processor="i686" \ - -t abeimler/simple-cppbuilder:x86-mingw-w64-mxe . - - -docker build --force-rm=true -f ./Dockerfile.mxe \ - --build-arg vcpkg_target_triplet="x64-mingw-static" \ - --build-arg cross_triplet="x86_64-w64-mingw32.static" \ - --build-arg processor="x86_64" \ - -t abeimler/simple-cppbuilder:x64-mingw-w64-mxe-static . - -docker build --force-rm=true -f ./Dockerfile.mxe \ - --build-arg vcpkg_target_triplet="x86-mingw-static" \ - --build-arg cross_triplet="i686-w64-mingw32.static" \ - --build-arg processor="i686" \ - -t abeimler/simple-cppbuilder:x86-mingw-w64-mxe-static . - - diff --git a/build-images.mingw.sh b/build-images.mingw.sh deleted file mode 100755 index e6be072..0000000 --- a/build-images.mingw.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.cross \ - --build-arg vcpkg_target_triplet="x64-mingw-dynamic" \ - --build-arg cross_triple="x86_64-w64-mingw32" \ - --build-arg install_toolchain="mingw-w64-toolchain" \ - --build-arg install_extras_toolchain="mingw-w64-pkg-config mingw-w64-cmake mingw-w64-configure mingw-w64-make mingw-w64-environment powershell-bin" \ - --build-arg cmake_generator="Ninja" \ - --build-arg make="make" \ - --build-arg cmake="cmake" \ - --build-arg cross_make="x86_64-w64-mingw32-make" \ - --build-arg cross_cmake="x86_64-w64-mingw32-cmake" \ - --build-arg setup_env_script="mingw-env" \ - --build-arg cmake_toolchain_file="/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake" \ - --build-arg docker_build_script="docker-build.mingw.sh" \ - --build-arg docker_test_script="docker-test.mingw.sh" \ - --build-arg docker_entrypoint="docker-entrypoint.mingw.sh" \ - -t abeimler/simple-cppbuilder:x64-mingw-w64 . - -docker build --force-rm=true -f ./Dockerfile.cross \ - --build-arg vcpkg_target_triplet="x86-mingw-dynamic" \ - --build-arg cross_triple="i686-w64-mingw32" \ - --build-arg install_toolchain="mingw-w64-toolchain" \ - --build-arg install_extras_toolchain="mingw-w64-pkg-config mingw-w64-cmake mingw-w64-configure mingw-w64-make mingw-w64-environment powershell-bin" \ - --build-arg cmake_generator="Ninja" \ - --build-arg make="make" \ - --build-arg cmake="cmake" \ - --build-arg cross_make="i686-w64-mingw32-make" \ - --build-arg cross_cmake="i686-w64-mingw32-cmake" \ - --build-arg setup_env_script="mingw-env" \ - --build-arg cmake_toolchain_file="/usr/share/mingw/toolchain-i686-w64-mingw32.cmake" \ - --build-arg docker_build_script="docker-build.mingw.sh" \ - --build-arg docker_test_script="docker-test.mingw.sh" \ - --build-arg docker_entrypoint="docker-entrypoint.mingw.sh" \ - -t abeimler/simple-cppbuilder:x86-mingw-w64 . - diff --git a/build-images.rpi.sh b/build-images.rpi.sh deleted file mode 100755 index ff75b97..0000000 --- a/build-images.rpi.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm-linux" \ - --build-arg cross_triple="armv8-rpi4-linux-gnueabihf" \ - --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi4 . - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm-linux" \ - --build-arg cross_triple="armv8-rpi3-linux-gnueabihf" \ - --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi3 . - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm-linux" \ - --build-arg cross_triple="armv7-rpi2-linux-gnueabihf" \ - --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi2 . - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm-linux" \ - --build-arg cross_triple="armv6-unknown-linux-gnueabihf" \ - --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi1 . - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm64-linux" \ - --build-arg cross_triple="aarch64-rpi4-linux-gnu" \ - --build-arg cmake_toolchain_file="/home/cmake/aarch64-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi4-aarch64 . - -docker build --force-rm=true -f ./Dockerfile.rpi \ - --build-arg vcpkg_target_triplet="arm64-linux" \ - --build-arg cross_triple="aarch64-rpi3-linux-gnu" \ - --build-arg cmake_toolchain_file="/home/cmake/aarch64-rpi-toolchain.cmake" \ - -t abeimler/simple-cppbuilder:rpi3-aarch64 . \ No newline at end of file diff --git a/build-images.sh b/build-images.sh deleted file mode 100755 index 99d3907..0000000 --- a/build-images.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -docker build --force-rm=true -f ./Dockerfile.base -t abeimler/simple-cppbuilder:base . - -docker build --force-rm=true -t abeimler/simple-cppbuilder . -#docker build --force-rm=true -t abeimler/simple-cppbuilder:1.5.0 . - -docker build --force-rm=true -f ./Dockerfile.without-vcpkg -t abeimler/simple-cppbuilder:without-vcpkg . - -docker build --force-rm=true -f ./Dockerfile.clang -t abeimler/simple-cppbuilder:clang . - -docker build --force-rm=true --build-arg extra_libraries="mesa glu glfw-x11 libx11 libxrender libxext libxcursor libxrandr libxinerama xorg-server-devel" -t abeimler/simple-cppbuilder:opengl-libs . -docker build --force-rm=true --build-arg extra_libraries="boost" -t abeimler/simple-cppbuilder:boost . -docker build --force-rm=true --build-arg extra_libraries="abseil-cpp" -t abeimler/simple-cppbuilder:abseil-cpp . -docker build --force-rm=true -f ./Dockerfile.clang --build-arg extra_libraries="libc++" -t abeimler/simple-cppbuilder:libcpp . - -docker build --force-rm=true -f ./Dockerfile.ci -t abeimler/simple-cppbuilder:ci . -docker build --force-rm=true -f ./Dockerfile.ci-setup-cpp -t abeimler/simple-cppbuilder:ci-setup-cpp . -docker build --force-rm=true -f ./Dockerfile.ci-windows -t abeimler/simple-cppbuilder:ci-x64-mingw-w64 . \ No newline at end of file diff --git a/examples/android-example/Dockerfile b/examples/android-example/Dockerfile index 01ae83c..b396d57 100644 --- a/examples/android-example/Dockerfile +++ b/examples/android-example/Dockerfile @@ -7,4 +7,4 @@ RUN ./vcpkg/vcpkg install jsoncpp:$TARGET_TRIPLET ## build stage FROM base as build COPY . . -CMD ["./docker-build.sh"] \ No newline at end of file +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] \ No newline at end of file diff --git a/examples/cpp_starter_project/Dockerfile b/examples/cpp_starter_project/Dockerfile index 27928b1..7d63f85 100644 --- a/examples/cpp_starter_project/Dockerfile +++ b/examples/cpp_starter_project/Dockerfile @@ -27,11 +27,11 @@ ENV CXX clang++ ## build stage FROM gcc AS build COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test stage FROM build AS test -CMD ["./docker-test.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "test"] @@ -42,7 +42,7 @@ RUN runuser -l yay -c "yay -Syu --noconfirm && yay -S --noconfirm fltk fluid" # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_FLTK=ON COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] FROM base AS gtkmm @@ -51,14 +51,14 @@ RUN runuser -l yay -c "yay -Syu --noconfirm && yay -S --noconfirm gtkmm" # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_GTKMM=ON COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] FROM base-opengl-libs AS imgui # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_IMGUI=ON COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] FROM base AS qt5 @@ -67,7 +67,7 @@ RUN runuser -l yay -c "yay -Syu --noconfirm && yay -S --noconfirm qt5-base" # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_QT=ON COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] FROM base AS sdl @@ -76,7 +76,7 @@ RUN runuser -l yay -c "yay -Syu --noconfirm && yay -S --noconfirm sdl2" # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_SDL=ON COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] FROM base-opengl-libs AS nana @@ -85,4 +85,4 @@ RUN runuser -l yay -c "yay -Syu --noconfirm && yay -S --noconfirm nana alsa-lib # set CMake Args ENV CMAKE_ARGS -DCPP_STARTER_USE_NANA=ON -DWARNINGS_AS_ERRORS=FALSE COPY . . -CMD ["./docker-build.sh"] \ No newline at end of file +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] \ No newline at end of file diff --git a/examples/example-ci/Dockerfile b/examples/example-ci/Dockerfile index 5ddfd73..47de3c2 100644 --- a/examples/example-ci/Dockerfile +++ b/examples/example-ci/Dockerfile @@ -5,13 +5,13 @@ COPY . . ## build stage FROM base as build COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test stage FROM build as test -CMD ["./docker-test.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "test"] ## build for windows FROM abeimler/simple-cppbuilder:ci-x64-mingw-w64 as build-windows COPY . . -CMD ["./docker-build.sh"] \ No newline at end of file +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] \ No newline at end of file diff --git a/examples/example/Dockerfile b/examples/example/Dockerfile index ba44d31..2e82b00 100644 --- a/examples/example/Dockerfile +++ b/examples/example/Dockerfile @@ -6,11 +6,11 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test stage FROM build as test -CMD ["./docker-test.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test (coverage) stage FROM test as test-coverage @@ -26,10 +26,10 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## test stage FROM build-clang as test-clang -CMD ["./docker-test.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "test"] ## build for windows @@ -40,7 +40,7 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## build for aarch64 @@ -51,7 +51,7 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## build for aarch64 @@ -62,7 +62,7 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] ## build for web @@ -73,4 +73,4 @@ RUN git pull origin master ### copy project WORKDIR $PROJECT_DIR COPY . . -CMD ["./docker-build.sh"] \ No newline at end of file +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] \ No newline at end of file diff --git a/examples/web-example/Dockerfile b/examples/web-example/Dockerfile index 19f36cb..a4bdfc4 100644 --- a/examples/web-example/Dockerfile +++ b/examples/web-example/Dockerfile @@ -4,4 +4,4 @@ FROM abeimler/simple-cppbuilder:emscripten as base ## build stage FROM base as build COPY . . -CMD ["./docker-build.sh"] \ No newline at end of file +CMD ["task", "-t", "/home/taskfiles/Taskfile.yml", "build"] \ No newline at end of file diff --git a/scripts/docker-entrypoint.ci.sh b/scripts/docker-entrypoint.ci.sh deleted file mode 100755 index 45ab867..0000000 --- a/scripts/docker-entrypoint.ci.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -e - -#$CC --version | head -1 -#$CXX --version | head -1 - -exec "$@" \ No newline at end of file diff --git a/scripts/docker-test.setup-cpp.sh b/scripts/docker-test.setup-cpp.sh index bddf649..f065fb7 100755 --- a/scripts/docker-test.setup-cpp.sh +++ b/scripts/docker-test.setup-cpp.sh @@ -1,5 +1,7 @@ #!/bin/bash +source ~/.cpprc + set -euo pipefail ${CMAKE} -B build -S . -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}" ${CMAKE_ARGS} diff --git a/taskfiles/.dockerignore b/taskfiles/.dockerignore new file mode 100644 index 0000000..deb2648 --- /dev/null +++ b/taskfiles/.dockerignore @@ -0,0 +1 @@ +docker/ \ No newline at end of file diff --git a/taskfiles/TaskfileCross.yml b/taskfiles/TaskfileCross.yml new file mode 100644 index 0000000..c89755b --- /dev/null +++ b/taskfiles/TaskfileCross.yml @@ -0,0 +1,39 @@ +--- +version: "3" + +vars: + VCPKG_ROOT: '{{.VCPKG_ROOT | default "./vcpkg"}}' + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + CMAKE: '{{.CMAKE | default "cmake"}}' + MAKE: '{{.MAKE | default "make"}}' + CROSS_CMAKE: '{{.CROSS_CMAKE | default "cmake"}}' + CROSS_MAKE: '{{.CROSS_MAKE | default "make"}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + TOOLCHAIN_FILE: '{{.TOOLCHAIN_FILE | default "./vcpkg/scripts/buildsystems/vcpkg.cmake"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - . {{.SETUP_ENV_SCRIPT}} {{.SETUP_ENV_SCRIPT_ARGS}} + - > + {{.CROSS_CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + -DCMAKE_TOOLCHAIN_FILE="{{.TOOLCHAIN_FILE}}" \ + -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE="{{.CHAINLOAD_TOOLCHAIN_FILE}}" \ + -DVCPKG_TARGET_TRIPLET="{{.TARGET_TRIPLET}}" \ + {{.CROSS_CMAKE_ARGS}} {{.CMAKE_ARGS}} + + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - cd build && {{.CROSS_MAKE}} "{{.TARGET}}" + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test diff --git a/taskfiles/TaskfileDefault.yml b/taskfiles/TaskfileDefault.yml new file mode 100644 index 0000000..afd037e --- /dev/null +++ b/taskfiles/TaskfileDefault.yml @@ -0,0 +1,46 @@ +--- +version: "3" + +includes: + without-vcpkg-toolchain: ./TaskfileWithoutVcpkgToolchain.yml + cross: ./TaskfileCross.yml + +vars: + VCPKG_ROOT: '{{.VCPKG_ROOT | default "./vcpkg"}}' + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + CMAKE: '{{.CMAKE | default "cmake"}}' + MAKE: '{{.MAKE | default "make"}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + TOOLCHAIN_FILE: '{{.TOOLCHAIN_FILE | default "./vcpkg/scripts/buildsystems/vcpkg.cmake"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - > + {{.CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + {{.CMAKE_ARGS}} + + configure:with-vcpkg: + dir: '{{.PROJECT_DIR}}' + cmds: + - > + {{.CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + -DCMAKE_TOOLCHAIN_FILE="{{.TOOLCHAIN_FILE}}" \ + {{.CMAKE_ARGS}} + + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - '{{.CMAKE}} --build build --target "{{.TARGET}}"' + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test --test-dir build diff --git a/taskfiles/TaskfileSetupCpp.yml b/taskfiles/TaskfileSetupCpp.yml new file mode 100644 index 0000000..d0e77bd --- /dev/null +++ b/taskfiles/TaskfileSetupCpp.yml @@ -0,0 +1,45 @@ +--- +version: "3" + +vars: + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + CMAKE: '{{.CMAKE | default "cmake"}}' + MAKE: '{{.MAKE | default "make"}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - source ~/.cpprc + - > + {{.CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + {{.CMAKE_ARGS}} + + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - '{{.CMAKE}} --build build --target "{{.TARGET}}"' + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test --test-dir build + + coverage: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: test + - lcov --capture --directory build --output-file build/coverage.info + - lcov --remove build/coverage.info '/usr/*' --output-file build/coverage.info + + coverage:debug: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: coverage + - lcov --list build/coverage.info diff --git a/taskfiles/TaskfileSetupCppCross.yml b/taskfiles/TaskfileSetupCppCross.yml new file mode 100644 index 0000000..5ac0384 --- /dev/null +++ b/taskfiles/TaskfileSetupCppCross.yml @@ -0,0 +1,49 @@ +--- +version: "3" + +vars: + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + CMAKE: '{{.CMAKE | default "cmake"}}' + MAKE: '{{.MAKE | default "make"}}' + CROSS_CMAKE: '{{.CROSS_CMAKE | default "cmake"}}' + CROSS_MAKE: '{{.CROSS_MAKE | default "make"}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - source ~/.cpprc + - > + {{.CROSS_CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" \ + -DCMAKE_TOOLCHAIN_FILE="{{.TOOLCHAIN_FILE}}" \ + -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE="{{.CHAINLOAD_TOOLCHAIN_FILE}}" \ + -DVCPKG_TARGET_TRIPLET="{{.TARGET_TRIPLET}}" \ + {{.CMAKE_ARGS}} + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - cd build && {{.CROSS_MAKE}} "{{.TARGET}}" + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test --test-dir build + + coverage: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: test + - lcov --capture --directory build --output-file build/coverage.info + - lcov --remove build/coverage.info '/usr/*' --output-file build/coverage.info + + coverage:debug: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: coverage + - lcov --list build/coverage.info diff --git a/taskfiles/TaskfileWithoutVcpkgToolchain.yml b/taskfiles/TaskfileWithoutVcpkgToolchain.yml new file mode 100644 index 0000000..1b8703f --- /dev/null +++ b/taskfiles/TaskfileWithoutVcpkgToolchain.yml @@ -0,0 +1,30 @@ +--- +version: "3" + +vars: + PROJECT_DIR: '{{.PROJECT_DIR | default "."}}' + CMAKE: '{{.CMAKE | default "cmake"}}' + MAKE: '{{.MAKE | default "make"}}' + TARGET: '{{.TARGET | default "all"}}' + CMAKE_GENERATOR: '{{.CMAKE_GENERATOR | default "Ninja Multi-Config"}}' + BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}' + +tasks: + configure: + dir: '{{.PROJECT_DIR}}' + cmds: + - > + {{.CMAKE}} -B build -S . -G "{{.CMAKE_GENERATOR}}" \ + -DCMAKE_BUILD_TYPE="{{.BUILD_TYPE}}" {{.CMAKE_ARGS}} + + build: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: configure + - '{{.CMAKE}} --build build --target "{{.TARGET}}"' + + test: + dir: '{{.PROJECT_DIR}}' + cmds: + - task: build + - ctest --build-test --test-dir build diff --git a/taskfiles/docker/Build.yml b/taskfiles/docker/Build.yml new file mode 100644 index 0000000..858f828 --- /dev/null +++ b/taskfiles/docker/Build.yml @@ -0,0 +1,300 @@ +version: '3' + +tasks: + base: + - docker build --force-rm=true -f ./Dockerfile.base -t abeimler/simple-cppbuilder:base . + - docker build --force-rm=true -t abeimler/simple-cppbuilder . + #docker build --force-rm=true -t abeimler/simple-cppbuilder:1.7.0 . + + base:libs: + - task: base + - docker build --force-rm=true -f ./Dockerfile.without-vcpkg -t abeimler/simple-cppbuilder:without-vcpkg . + - docker build --force-rm=true -f ./Dockerfile.clang -t abeimler/simple-cppbuilder:clang . + - docker build --force-rm=true --build-arg extra_libraries="mesa glu glfw-x11 libx11 libxrender libxext libxcursor libxrandr libxinerama xorg-server-devel" -t abeimler/simple-cppbuilder:opengl-libs . + - docker build --force-rm=true --build-arg extra_libraries="boost" -t abeimler/simple-cppbuilder:boost . + - docker build --force-rm=true --build-arg extra_libraries="abseil-cpp" -t abeimler/simple-cppbuilder:abseil-cpp . + - docker build --force-rm=true -f ./Dockerfile.clang --build-arg extra_libraries="libc++" -t abeimler/simple-cppbuilder:libcpp . + + ci: + - docker build --force-rm=true -f ./Dockerfile.ci -t abeimler/simple-cppbuilder:ci . + - docker build --force-rm=true -f ./Dockerfile.ci-windows -t abeimler/simple-cppbuilder:ci-x64-mingw-w64 . + - docker build --force-rm=true -f ./Dockerfile.ci-setup-cpp -t abeimler/simple-cppbuilder:ci-setup-cpp . + + emscripten: + - task: base + - docker build --force-rm=true -f ./Dockerfile.emscripten -t abeimler/simple-cppbuilder:emscripten . + + mingw: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.cross \ + --build-arg vcpkg_target_triplet="x64-mingw-dynamic" \ + --build-arg cross_triple="x86_64-w64-mingw32" \ + --build-arg install_toolchain="mingw-w64-toolchain" \ + --build-arg install_extras_toolchain="mingw-w64-pkg-config mingw-w64-cmake mingw-w64-configure mingw-w64-make mingw-w64-environment powershell-bin" \ + --build-arg cmake_generator="Ninja" \ + --build-arg make="make" \ + --build-arg cmake="cmake" \ + --build-arg cross_make="x86_64-w64-mingw32-make" \ + --build-arg cross_cmake="x86_64-w64-mingw32-cmake" \ + --build-arg setup_env_script="mingw-env" \ + --build-arg setup_env_script_args="x86_64-w64-mingw32" \ + --build-arg cmake_toolchain_file="/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake" \ + --build-arg docker_build_script="docker-build.mingw.sh" \ + --build-arg docker_test_script="docker-test.mingw.sh" \ + --build-arg docker_entrypoint="docker-entrypoint.mingw.sh" \ + -t abeimler/simple-cppbuilder:x64-mingw-w64 . + - | + docker build --force-rm=true -f ./Dockerfile.cross \ + --build-arg vcpkg_target_triplet="x86-mingw-dynamic" \ + --build-arg cross_triple="i686-w64-mingw32" \ + --build-arg install_toolchain="mingw-w64-toolchain" \ + --build-arg install_extras_toolchain="mingw-w64-pkg-config mingw-w64-cmake mingw-w64-configure mingw-w64-make mingw-w64-environment powershell-bin" \ + --build-arg cmake_generator="Ninja" \ + --build-arg make="make" \ + --build-arg cmake="cmake" \ + --build-arg cross_make="i686-w64-mingw32-make" \ + --build-arg cross_cmake="i686-w64-mingw32-cmake" \ + --build-arg setup_env_script="mingw-env" \ + --build-arg setup_env_script_args="i686-w64-mingw32" \ + --build-arg cmake_toolchain_file="/usr/share/mingw/toolchain-i686-w64-mingw32.cmake" \ + --build-arg docker_build_script="docker-build.mingw.sh" \ + --build-arg docker_test_script="docker-test.mingw.sh" \ + --build-arg docker_entrypoint="docker-entrypoint.mingw.sh" \ + -t abeimler/simple-cppbuilder:x86-mingw-w64 . + + arm: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.cross \ + --build-arg vcpkg_target_triplet="arm64-linux" \ + --build-arg cross_triple="aarch64-linux-gnu" \ + --build-arg install_toolchain="aarch64-linux-gnu-gcc" \ + --build-arg cmake_generator="Ninja" \ + --build-arg make="ninja" \ + --build-arg cmake="cmake" \ + --build-arg cross_make="ninja" \ + --build-arg cross_cmake="cmake" \ + --build-arg cmake_toolchain_file="/home/cmake/aarch64.toolchain.cmake" \ + -t abeimler/simple-cppbuilder:aarch64-linux . + - | + docker build --force-rm=true -f ./Dockerfile.cross \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="arm-none-eabi" \ + --build-arg install_toolchain="arm-none-eabi-gcc" \ + --build-arg cmake_generator="Ninja" \ + --build-arg make="ninja" \ + --build-arg cmake="cmake" \ + --build-arg cross_make="ninja" \ + --build-arg cross_cmake="cmake" \ + --build-arg cmake_toolchain_file="/home/cmake/gnueabihf.toolchain.cmake" \ + -t abeimler/simple-cppbuilder:arm-eabi . + ## @FIXME: https://aur.archlinux.org/packages/arm-linux-gnueabihf-gcc-stage1/#pinned-806072 + #- | + # docker build --force-rm=true -f ./Dockerfile.cross \ + # --build-arg vcpkg_target_triplet="arm-linux" \ + # --build-arg cross_triple="arm-linux-gnueabihf" \ + # --build-arg install_toolchain="arm-linux-gnueabihf-gcc-stage1 arm-linux-gnueabihf-gcc-stage2 arm-linux-gnueabihf-gcc" \ + # --build-arg cmake_generator="Ninja" \ + # --build-arg make="ninja" \ + # --build-arg cmake="cmake" \ + # --build-arg cmake_toolchain_file="/home/cmake/arm.toolchain.cmake" \ + # -t abeimler/simple-cppbuilder:arm-linux-gnueabihf . + + arm:cross: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="arm-unknown-linux-gnueabi" \ + --build-arg cmake_toolchain_file="/home/cmake/arm-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:arm-unknown-linux-gnueabi . + #- | + # docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ + # --build-arg vcpkg_target_triplet="avr" \ + # --build-arg cross_triple="avr" \ + # --build-arg cmake_toolchain_file="/home/cmake/avr-toolchain.cmake" \ + # -t abeimler/simple-cppbuilder:avr . + #- | + # docker build --force-rm=true -f ./Dockerfile.crosstool-ng \ + # --build-arg vcpkg_target_triplet="ppc64le-linux" \ + # --build-arg cross_triple="powerpc64le-unknown-linux-gnu" \ + # --build-arg cmake_toolchain_file="/home/cmake/ppc64le-toolchain.cmake" \ + # -t abeimler/simple-cppbuilder:powerpc64le-unknown-linux-gnu . + + arm:rpi: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="armv8-rpi4-linux-gnueabihf" \ + --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi4 . + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="armv8-rpi3-linux-gnueabihf" \ + --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi3 . + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="armv7-rpi2-linux-gnueabihf" \ + --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi2 . + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm-linux" \ + --build-arg cross_triple="armv6-unknown-linux-gnueabihf" \ + --build-arg cmake_toolchain_file="/home/cmake/arm-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi1 . + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm64-linux" \ + --build-arg cross_triple="aarch64-rpi4-linux-gnu" \ + --build-arg cmake_toolchain_file="/home/cmake/aarch64-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi4-aarch64 . + - | + docker build --force-rm=true -f ./Dockerfile.crosstool-ng-rpi \ + --build-arg vcpkg_target_triplet="arm64-linux" \ + --build-arg cross_triple="aarch64-rpi3-linux-gnu" \ + --build-arg cmake_toolchain_file="/home/cmake/aarch64-rpi-toolchain.cmake" \ + -t abeimler/simple-cppbuilder:rpi3-aarch64 . + + android-template: + internal: true + cmds: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.android-v \ + --build-arg vcpkg_target_triplet="arm-android" \ + --build-arg cmake="android-armv7a-eabi-cmake" \ + --build-arg android_abi="armeabi-v7a" \ + --build-arg android_target="{{.ANDROID_TARGET}}" \ + --build-arg android_ndk_version="{{.ANDROID_NDK_VERSION}}" \ + -t abeimler/simple-cppbuilder:arm-android-{{.ANDROID_TARGET}} . + - | + docker build --force-rm=true -f ./Dockerfile.android-v \ + --build-arg vcpkg_target_triplet="arm64-android" \ + --build-arg cmake="android-aarch64-cmake" \ + --build-arg android_abi="arm64-v8a" \ + --build-arg android_target="{{.ANDROID_TARGET}}" \ + --build-arg android_ndk_version="{{.ANDROID_NDK_VERSION}}" \ + -t abeimler/simple-cppbuilder:arm64-android{{.ANDROID_TARGET}} . + - | + docker build --force-rm=true -f ./Dockerfile.android-v \ + --build-arg vcpkg_target_triplet="x86-android" \ + --build-arg cmake="android-x86-cmake" \ + --build-arg android_abi="x86" \ + --build-arg android_target="{{.ANDROID_TARGET}}" \ + --build-arg android_ndk_version="{{.ANDROID_NDK_VERSION}}" \ + -t abeimler/simple-cppbuilder:x86-android-{{.ANDROID_TARGET}} . + - | + docker build --force-rm=true -f ./Dockerfile.android-v \ + --build-arg vcpkg_target_triplet="x64-android" \ + --build-arg cmake="android-x86-64-cmake" \ + --build-arg android_abi="x86_64" \ + --build-arg android_target="{{.ANDROID_TARGET}}" \ + --build-arg android_ndk_version="{{.ANDROID_NDK_VERSION}}" \ + -t abeimler/simple-cppbuilder:x64-android-{{.ANDROID_TARGET}} . + + android:21: + cmds: + - task: android-template + vars: + ANDROID_TARGET: 21 + ANDROID_NDK_VERSION: "-21" + + android:24: + cmds: + - task: android-template + vars: + ANDROID_TARGET: 24 + ANDROID_NDK_VERSION: "-beta" + + android:25: + cmds: + - task: android-template + vars: + ANDROID_TARGET: 25 + ANDROID_NDK_VERSION: "" + + android: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.android \ + --build-arg vcpkg_target_triplet="arm-android" \ + --build-arg cmake="android-armv7a-eabi-cmake" \ + --build-arg android_abi="armeabi-v7a" \ + -t abeimler/simple-cppbuilder:arm-android . + - | + docker build --force-rm=true -f ./Dockerfile.android \ + --build-arg vcpkg_target_triplet="arm64-android" \ + --build-arg cmake="android-aarch64-cmake" \ + --build-arg android_abi="arm64-v8a" \ + -t abeimler/simple-cppbuilder:arm64-android . + - | + docker build --force-rm=true -f ./Dockerfile.android \ + --build-arg vcpkg_target_triplet="x86-android" \ + --build-arg cmake="android-x86-cmake" \ + --build-arg android_abi="x86" \ + -t abeimler/simple-cppbuilder:x86-android . + - | + docker build --force-rm=true -f ./Dockerfile.android \ + --build-arg vcpkg_target_triplet="x64-android" \ + --build-arg cmake="android-x86-64-cmake" \ + --build-arg android_abi="x86_64" \ + -t abeimler/simple-cppbuilder:x64-android . + + mingw:mxe: + - task: base + - | + docker build --force-rm=true -f ./Dockerfile.mxe \ + --build-arg vcpkg_target_triplet="x64-mingw-dynamic" \ + --build-arg cross_triplet="x86_64-w64-mingw32.shared" \ + --build-arg processor="x86_64" \ + -t abeimler/simple-cppbuilder:x64-mingw-w64-mxe . + - | + docker build --force-rm=true -f ./Dockerfile.mxe \ + --build-arg vcpkg_target_triplet="x86-mingw-dynamic" \ + --build-arg cross_triplet="i686-w64-mingw32.shared" \ + --build-arg processor="i686" \ + -t abeimler/simple-cppbuilder:x86-mingw-w64-mxe . + - | + docker build --force-rm=true -f ./Dockerfile.mxe \ + --build-arg vcpkg_target_triplet="x64-mingw-static" \ + --build-arg cross_triplet="x86_64-w64-mingw32.static" \ + --build-arg processor="x86_64" \ + -t abeimler/simple-cppbuilder:x64-mingw-w64-mxe-static . + - | + docker build --force-rm=true -f ./Dockerfile.mxe \ + --build-arg vcpkg_target_triplet="x86-mingw-static" \ + --build-arg cross_triplet="i686-w64-mingw32.static" \ + --build-arg processor="i686" \ + -t abeimler/simple-cppbuilder:x86-mingw-w64-mxe-static . + + gcc: + - task: base + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=11 -t abeimler/simple-cppbuilder:gcc-11 . + - docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=10 -t abeimler/simple-cppbuilder:gcc-10 . + - docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=9 -t abeimler/simple-cppbuilder:gcc-9 . + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=8 -t abeimler/simple-cppbuilder:gcc-8 . + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=7 -t abeimler/simple-cppbuilder:gcc-7 . + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=6 -t abeimler/simple-cppbuilder:gcc-6 . + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=5 -t abeimler/simple-cppbuilder:gcc-5 . + #- docker build --force-rm=true -f ./Dockerfile.gcc --build-arg gcc_version=49 -t abeimler/simple-cppbuilder:gcc-4.9 . + + default: + - task: base + - task: base:libs + - task: ci + - task: emscripten + - task: mingw + - task: arm + - task: android + #- task: android:21 + #- task: android:24 + #- task: arm:cross + #- task: arm:rpi + #- task: gcc + #- task: mingw:mxe diff --git a/taskfiles/docker/Test.yml b/taskfiles/docker/Test.yml new file mode 100644 index 0000000..ea056a9 --- /dev/null +++ b/taskfiles/docker/Test.yml @@ -0,0 +1,90 @@ +version: '3' + +tasks: + base: + - container-structure-test test --image abeimler/simple-cppbuilder:base --config tests/base-test.yaml + - container-structure-test test --image abeimler/simple-cppbuilder --config tests/test.yaml + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-build + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-build-make + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-release-build + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-release-test + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test-cov + - docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test-lcov + - docker-compose -f examples/example/docker-compose.yml down --volumes --rmi local + + clang: + - container-structure-test test --image abeimler/simple-cppbuilder:clang --config tests/clang-test.yaml + - docker-compose -f examples/example/docker-compose.yml up --build example-clang-debug-build + - docker-compose -f examples/example/docker-compose.yml up --build example-clang-debug-test + - docker-compose -f examples/example/docker-compose.yml up --build example-clang-release-build + - docker-compose -f examples/example/docker-compose.yml up --build example-clang-release-test + - docker-compose -f examples/example/docker-compose.yml down --volumes --rmi local + + cpp_starter_project: + - docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build cpp_starter_project-gcc-debug-build cpp_starter_project-gcc-debug-test + - docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build cpp_starter_project-clang-debug-build cpp_starter_project-clang-release-build + - docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build cpp_starter_project-gcc-debug-test-cov + - docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build cpp_starter_project-fltk-clang-release-build + - docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build cpp_starter_project-gtkmm-clang-release-build + - docker-compose -f examples/cpp_starter_project/docker-compose.yml down --volumes --rmi local + + ci: + - container-structure-test test --image abeimler/simple-cppbuilder:ci --config tests/ci-test.yaml + - container-structure-test test --image abeimler/simple-cppbuilder:ci-x64-mingw-w64 --config tests/ci-windows-test.yaml + - container-structure-test test --image abeimler/simple-cppbuilder:ci-setup-cpp --config tests/ci-setup-cpp-test.yaml + - docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-build + - docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-test + - docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-test-cov + - docker-compose -f examples/example-ci/docker-compose.yml up --build example-windows-build + - docker-compose -f examples/example-ci/docker-compose.yml down --volumes --rmi local + + single: + - docker run -it --rm --name my-cpp-project -v "$PWD/examples/single":/home/project -w /home/project abeimler/simple-cppbuilder ./docker-build.sh + - docker run -it --rm --name my-cpp-project -v "$PWD/examples/single":/home/project -w /home/project abeimler/simple-cppbuilder task -t /home/taskfiles/Taskfile.yml build + + emscripten: + - container-structure-test test --image abeimler/simple-cppbuilder:emscripten --config tests/emscripten-test.yaml + - docker-compose -f examples/web-example/docker-compose.yml up --build + - docker-compose -f examples/web-example/docker-compose.yml down --volumes --rmi local + + mingw: + - container-structure-test test --image abeimler/simple-cppbuilder:x64-mingw-w64 --config tests/mingw-test.yaml + - docker-compose -f examples/example/docker-compose.cross.yml up --build example-mingw-release-build + - docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local + + android: + - container-structure-test test --image abeimler/simple-cppbuilder:arm-android --config tests/arm-android-test.yaml + - docker-compose -f examples/android-example/docker-compose.yml up --build + - docker-compose -f examples/android-example/docker-compose.yml down --volumes --rmi local + + arm:rpi: + - container-structure-test test --image abeimler/simple-cppbuilder:aarch64-linux --config tests/aarch64-test.yaml + - docker-compose -f examples/example/docker-compose.cross.yml up --build example-arm64-release-build + - docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local + + rpi: + - container-structure-test test --image abeimler/simple-cppbuilder:rpi4 --config tests/rpi4-test.yaml + - docker-compose -f examples/example/docker-compose.cross.yml up --build example-rpi4-release-build + - docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local + + mingw:mxe: + - container-structure-test test --image abeimler/simple-cppbuilder:x64-mingw-w64-mxe --config tests/mxe-test.yaml + + gcc: + - container-structure-test test --image abeimler/simple-cppbuilder:gcc-10 --config tests/gcc10-test.yaml + - container-structure-test test --image abeimler/simple-cppbuilder:gcc-9 --config tests/gcc9-test.yaml + + default: + - task: base + - task: clang + - task: single + #- task: cpp_starter_project + - task: ci + - task: emscripten + - task: mingw + #- task: android + #- task: arm:rpi + #- task: rpi + #- task: mingw:mxe + #- task: gcc \ No newline at end of file diff --git a/test.sh b/test.sh deleted file mode 100755 index 4d75b3e..0000000 --- a/test.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -## install https://github.com/GoogleContainerTools/container-structure-test - -## gcc -### ./build-images.sh -container-structure-test test --image abeimler/simple-cppbuilder:base --config tests/base-test.yaml -container-structure-test test --image abeimler/simple-cppbuilder --config tests/test.yaml -container-structure-test test --image abeimler/simple-cppbuilder:without-vcpkg --config tests/without-vcpkg-test.yaml -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-build-make example-gcc-debug-build -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-release-build example-gcc-release-test -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test-cov -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-debug-test-lcov -docker-compose -f examples/example/docker-compose.yml up --build example-gcc-release-with-raylib -docker-compose -f examples/example/docker-compose.yml down --volumes --rmi local - - -## clang -### ./build-images.sh -container-structure-test test --image abeimler/simple-cppbuilder:clang --config tests/clang-test.yaml -docker-compose -f examples/example/docker-compose.yml up --build example-clang-debug-build example-clang-debug-test -docker-compose -f examples/example/docker-compose.yml up --build example-clang-release-build example-clang-release-test -docker-compose -f examples/example/docker-compose.yml down --volumes --rmi local - -## test example -### ./build-images.sh -docker-compose -f examples/cpp_starter_project/docker-compose.yml up --build -docker-compose -f examples/cpp_starter_project/docker-compose.yml down --volumes --rmi local - - -## CI -### ./build-images.sh -container-structure-test test --image abeimler/simple-cppbuilder:ci --config tests/ci-test.yaml -container-structure-test test --image abeimler/simple-cppbuilder:ci-x64-mingw-w64 --config tests/ci-windows-test.yaml -container-structure-test test --image abeimler/simple-cppbuilder:ci-setup-cpp --config tests/ci-setup-cpp-test.yaml -docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-build -docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-test -docker-compose -f examples/example-ci/docker-compose.yml up --build example-gcc-test-cov -docker-compose -f examples/example-ci/docker-compose.yml up --build example-windows-build -docker-compose -f examples/example-ci/docker-compose.yml down --volumes --rmi local - - -## single run -### ./build-images.sh -docker run -it --rm --name my-cpp-project -v "$PWD/examples/single":/home/project -w /home/project abeimler/simple-cppbuilder ./docker-build.sh -#docker run -it --rm --name my-cpp-project -v "$PWD/examples/single":/home/project -w /home/project abeimler/simple-cppbuilder:ci ./docker-build.sh -#docker run -it --rm --name my-cpp-project -v "$PWD/examples/single":/home/project -w /home/project abeimler/simple-cppbuilder:ci-setup-cpp ./docker-build.sh - - - -## emscripten -### ./build-images.emscripten.sh -container-structure-test test --image abeimler/simple-cppbuilder:emscripten --config tests/emscripten-test.yaml -docker-compose -f examples/web-example/docker-compose.yml up --build -docker-compose -f examples/web-example/docker-compose.yml down --volumes --rmi local - - -## mingw -### ./build-images.mingw.sh -container-structure-test test --image abeimler/simple-cppbuilder:x64-mingw-w64 --config tests/mingw-test.yaml -docker-compose -f examples/example/docker-compose.cross.yml up --build example-mingw-release-build -docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local - - -## Android -### ./build-images.android.sh -### ./build-images.android-21.sh -container-structure-test test --image abeimler/simple-cppbuilder:arm-android --config tests/arm-android-test.yaml -docker-compose -f examples/android-example/docker-compose.yml up --build -docker-compose -f examples/android-example/docker-compose.yml down --volumes --rmi local - - -## ARM/RPI -### ./build-images.arm.sh -container-structure-test test --image abeimler/simple-cppbuilder:aarch64-linux --config tests/aarch64-test.yaml -docker-compose -f examples/example/docker-compose.cross.yml up --build example-arm64-release-build -docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local - - - -## RPI -### ./build-images.rpi.sh -container-structure-test test --image abeimler/simple-cppbuilder:rpi4 --config tests/rpi4-test.yaml -docker-compose -f examples/example/docker-compose.cross.yml up --build example-rpi4-release-build -docker-compose -f examples/example/docker-compose.cross.yml down --volumes --rmi local - - -# mingw (alt) -container-structure-test test --image abeimler/simple-cppbuilder:x64-mingw-w64-mxe --config tests/mxe-test.yaml - - -## gcc (alt) -container-structure-test test --image abeimler/simple-cppbuilder:gcc-10 --config tests/gcc10-test.yaml -container-structure-test test --image abeimler/simple-cppbuilder:gcc-9 --config tests/gcc9-test.yaml - diff --git a/tests/arm-android-test.yaml b/tests/arm-android-test.yaml index 02d7883..12bd2b7 100644 --- a/tests/arm-android-test.yaml +++ b/tests/arm-android-test.yaml @@ -22,20 +22,17 @@ fileExistenceTests: - name: 'vcpkg' path: '/home/project/vcpkg/vcpkg' shouldExist: true -- name: 'cmake toolchain' - path: $CROSS_TOOLCHAIN - shouldExist: true -- name: 'android toolchain' - path: $ANDROID_TOOLCHAIN_FILE - shouldExist: true - name: 'android home' - path: $ANDROID_HOME + path: '/opt/android-sdk' + shouldExist: true +- name: 'android platform tools' + path: '/opt/android-sdk/build-tools' shouldExist: true - name: 'android ndk' - path: $ANDROID_NDK_HOME + path: '/opt/android-ndk' shouldExist: true -- name: 'android platform tools' - path: $ANDROID_PLATFORM_TOOLS +- name: 'cmake toolchain' + path: '/opt/android-ndk/build/cmake/android.toolchain.cmake' shouldExist: true metadataTest: diff --git a/tests/ci-setup-cpp-test.yaml b/tests/ci-setup-cpp-test.yaml index 51a7b10..45d8a97 100644 --- a/tests/ci-setup-cpp-test.yaml +++ b/tests/ci-setup-cpp-test.yaml @@ -33,6 +33,9 @@ fileExistenceTests: - name: 'cmake toolchain' path: '/root/vcpkg/scripts/buildsystems/vcpkg.cmake' shouldExist: true +- name: "cpprc" + path: "/root/.cpprc" + shouldExist: true metadataTest: env: diff --git a/tests/ci-test.yaml b/tests/ci-test.yaml index de641fb..e087ce5 100644 --- a/tests/ci-test.yaml +++ b/tests/ci-test.yaml @@ -29,6 +29,10 @@ commandTests: command: cppcheck args: ["--version"] expectedOutput: [".*Cppcheck.*"] +- name: task + command: task + args: ["--version"] + expectedOutput: [".*Task.*"] fileExistenceTests: diff --git a/tests/emscripten-test.yaml b/tests/emscripten-test.yaml index 3ba08b0..06a586c 100644 --- a/tests/emscripten-test.yaml +++ b/tests/emscripten-test.yaml @@ -47,6 +47,9 @@ fileExistenceTests: - name: 'em env' path: '/usr/lib/emsdk/emsdk_env.sh' shouldExist: true +- name: 'emsdk binary' + path: '/usr/lib/emsdk/emsdk' + shouldExist: true metadataTest: