diff --git a/.github/workflows/small-cilkapps.yml b/.github/workflows/small-cilkapps.yml new file mode 100644 index 00000000..2f65e86b --- /dev/null +++ b/.github/workflows/small-cilkapps.yml @@ -0,0 +1,70 @@ +name: Small Cilk application tests + +permissions: + contents: read + +on: + workflow_dispatch: + push: + pull_request: + +concurrency: + # Skip intermediate builds: always. + # Cancel intermediate builds: only if it is a pull request build. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + small-apps: + runs-on: ${{ matrix.os }} + container: + image: ${{(startsWith(matrix.os, 'ubuntu') && 'ghcr.io/llvm/ci-ubuntu-22.04:latest') || null}} + volumes: + - /mnt/:/mnt/ + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macOS-13, macOS-latest] + steps: + - name: checkout + uses: actions/checkout@v4 + - name: Setup OpenCilk compiler + id: build-opencilk + uses: OpenCilk/actions/build-opencilk-project@main + with: + projects: clang + os_list: '${{ matrix.os }}' + - name: Build cheetah + id: build-cheetah + shell: bash + run: | + builddir="$(pwd)"/build + opencilkdir='${{ steps.build-opencilk.outputs.opencilk-builddir }}' + mkdir -p $builddir + cmake -G Ninja \ + -B "$builddir" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER=$opencilkdir/bin/clang \ + -DCMAKE_CXX_COMPILER=$opencilkdir/bin/clang++ \ + -DLLVM_CMAKE_DIR=$opencilkdir + ninja -C "$builddir" + - name: Checkout small application tests + uses: actions/checkout@v4 + with: + repository: OpenCilk/smallapps + path: smallapps + - name: make check + shell: bash + run: | + cheetahdir="$(pwd)"/build + opencilkdir='${{ steps.build-opencilk.outputs.opencilk-builddir }}' + make_prefix="" + if [ "${{ runner.os }}" == "macOS" ]; then + # Use xcrun to build benchmarks on macOS. + make_prefix="xcrun" + fi + $make_prefix make -C smallapps check \ + CC=$opencilkdir/bin/clang \ + CXX=$opencilkdir/bin/clang++ \ + EXTRA_CFLAGS="--opencilk-resource-dir=$cheetahdir" \ + EXTRA_LDFLAGS="--opencilk-resource-dir=$cheetahdir" diff --git a/cmake/Modules/AddCheetah.cmake b/cmake/Modules/AddCheetah.cmake index 798d6eb9..4448a406 100644 --- a/cmake/Modules/AddCheetah.cmake +++ b/cmake/Modules/AddCheetah.cmake @@ -457,7 +457,8 @@ function(add_cheetah_bitcode name) set(output_name_${libname} ${libname}${CHEETAH_OS_SUFFIX}) set(sources_${libname} ${LIB_SOURCES}) list(APPEND libnames ${libname}) - set(extra_cflags_${libname} ${DARWIN_${os}_CFLAGS} "-arch" ${arch} ${LIB_CFLAGS}) + set(extra_cflags_${libname} ${DARWIN_${os}_CFLAGS} ${LIB_CFLAGS}) + set(${libname}_arch ${arch}) get_cheetah_output_dir(${CHEETAH_DEFAULT_TARGET_ARCH} output_dir_${libname}) get_cheetah_install_dir(${CHEETAH_DEFAULT_TARGET_ARCH} install_dir_${libname}) endforeach() @@ -509,6 +510,10 @@ function(add_cheetah_bitcode name) target_compile_options(${libname}_compile PUBLIC "$<$:${CHEETAH_RELEASE_OPTIONS}>") set_property(TARGET ${libname}_compile APPEND PROPERTY COMPILE_DEFINITIONS ${LIB_DEFS}) + if (APPLE) + set_target_properties(${libname}_compile PROPERTIES + OSX_ARCHITECTURES "${${libname}_arch}") + endif() set(output_file_${libname} lib${output_name_${libname}}.bc) add_custom_command( OUTPUT ${output_dir_${libname}}/${output_file_${libname}}