@@ -234,7 +234,7 @@ jobs:
234
234
CCOMPILER : gcc-7
235
235
CXXCOMPILER : g++-7
236
236
237
- - name : conan-osx -release-node-12
237
+ - name : conan-macos-x64 -release-node-12
238
238
build_node_package : true
239
239
continue-on-error : false
240
240
node : 12
@@ -247,7 +247,7 @@ jobs:
247
247
ENABLE_ASSERTIONS : ON
248
248
ENABLE_CONAN : ON
249
249
250
- - name : conan-osx -release-node-14
250
+ - name : conan-macos-x64 -release-node-14
251
251
build_node_package : true
252
252
continue-on-error : false
253
253
node : 14
@@ -260,7 +260,7 @@ jobs:
260
260
ENABLE_ASSERTIONS : ON
261
261
ENABLE_CONAN : ON
262
262
263
- - name : conan-osx -release-node-16
263
+ - name : conan-macos-x64 -release-node-16
264
264
build_node_package : true
265
265
continue-on-error : false
266
266
node : 16
@@ -273,6 +273,20 @@ jobs:
273
273
ENABLE_ASSERTIONS : ON
274
274
ENABLE_CONAN : ON
275
275
276
+ - name : conan-macos-arm64-release-node-16
277
+ build_node_package : true
278
+ continue-on-error : false
279
+ node : 16
280
+ runs-on : macos-11
281
+ BUILD_TOOLS : ON
282
+ BUILD_TYPE : Release
283
+ CCOMPILER : clang
284
+ CXXCOMPILER : clang++
285
+ CUCUMBER_TIMEOUT : 60000
286
+ ENABLE_ASSERTIONS : ON
287
+ ENABLE_CONAN : ON
288
+ ENABLE_APPLE_SILICON : ON
289
+
276
290
- name : gcc-7-release-shared
277
291
continue-on-error : false
278
292
node : 12
@@ -356,7 +370,19 @@ jobs:
356
370
ENABLE_CONAN : ON
357
371
NODE_PACKAGE_TESTS_ONLY : ON
358
372
359
- - name : conan-osx-release-node-latest
373
+ - name : conan-macos-x64-release-node-latest
374
+ build_node_package : true
375
+ continue-on-error : true
376
+ node : latest
377
+ runs-on : macos-11
378
+ BUILD_TYPE : Release
379
+ CCOMPILER : clang
380
+ CXXCOMPILER : clang++
381
+ CUCUMBER_TIMEOUT : 60000
382
+ ENABLE_ASSERTIONS : ON
383
+ ENABLE_CONAN : ON
384
+
385
+ - name : conan-macos-arm64-release-node-latest
360
386
build_node_package : true
361
387
continue-on-error : true
362
388
node : latest
@@ -367,6 +393,7 @@ jobs:
367
393
CUCUMBER_TIMEOUT : 60000
368
394
ENABLE_ASSERTIONS : ON
369
395
ENABLE_CONAN : ON
396
+ ENABLE_APPLE_SILICON : ON
370
397
371
398
- name : node-latest-conan-linux-release
372
399
build_node_package : true
@@ -392,7 +419,7 @@ jobs:
392
419
ENABLE_CONAN : ON
393
420
NODE_PACKAGE_TESTS_ONLY : ON
394
421
395
- - name : conan-osx -release-node-lts
422
+ - name : conan-macos-x64 -release-node-lts
396
423
build_node_package : true
397
424
continue-on-error : true
398
425
node : " lts/*"
@@ -403,6 +430,19 @@ jobs:
403
430
CUCUMBER_TIMEOUT : 60000
404
431
ENABLE_ASSERTIONS : ON
405
432
ENABLE_CONAN : ON
433
+
434
+ - name : conan-macos-arm64-release-node-lts
435
+ build_node_package : true
436
+ continue-on-error : true
437
+ node : " lts/*"
438
+ runs-on : macos-11
439
+ BUILD_TYPE : Release
440
+ CCOMPILER : clang
441
+ CXXCOMPILER : clang++
442
+ CUCUMBER_TIMEOUT : 60000
443
+ ENABLE_ASSERTIONS : ON
444
+ ENABLE_CONAN : ON
445
+ ENABLE_APPLE_SILICON : ON
406
446
407
447
- name : node-lts-conan-linux-release
408
448
build_node_package : true
@@ -447,6 +487,7 @@ jobs:
447
487
ENABLE_CONAN : ${{ matrix.ENABLE_CONAN }}
448
488
ENABLE_SANITIZER : ${{ matrix.ENABLE_SANITIZER }}
449
489
NODE_PACKAGE_TESTS_ONLY : ${{ matrix.NODE_PACKAGE_TESTS_ONLY }}
490
+ ENABLE_APPLE_SILICON : ${{ matrix.ENABLE_APPLE_SILICON }}
450
491
TARGET_ARCH : ${{ matrix.TARGET_ARCH }}
451
492
OSRM_CONNECTION_RETRIES : ${{ matrix.OSRM_CONNECTION_RETRIES }}
452
493
OSRM_CONNECTION_EXP_BACKOFF_COEF : ${{ matrix.OSRM_CONNECTION_EXP_BACKOFF_COEF }}
@@ -475,9 +516,9 @@ jobs:
475
516
uses : actions/cache@v2
476
517
with :
477
518
path : ~/.conan
478
- key : v4 -conan-${{ matrix.name }}-${{ github.sha }}
519
+ key : v6 -conan-${{ matrix.name }}-${{ github.sha }}
479
520
restore-keys : |
480
- v4 -conan-${{ matrix.name }}-
521
+ v6 -conan-${{ matrix.name }}-
481
522
- name : Enable test cache
482
523
uses : actions/cache@v2
483
524
with :
@@ -583,6 +624,16 @@ jobs:
583
624
echo "Using ${JOBS} jobs"
584
625
pushd ${OSRM_BUILD_DIR}
585
626
627
+ # handle Apple Silicon cross compilation
628
+ if [[ "${ENABLE_APPLE_SILICON}" == "ON" ]]; then
629
+ ARCH=arm64
630
+ TARGET="${ARCH}-apple-darwin"
631
+ CFLAGS="$CFLAGS --target=$TARGET"
632
+ CXXFLAGS="$CXXFLAGS --target=$TARGET"
633
+ APPLE_SILICON_FLAGS=(-DCMAKE_C_COMPILER_TARGET="$TARGET" -DCMAKE_CXX_COMPILER_TARGET="$TARGET" -DCMAKE_SYSTEM_PROCESSOR="${ARCH}" -DCMAKE_SYSTEM_NAME="Darwin" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS")
634
+ else
635
+ APPLE_SILICON_FLAGS=()
636
+ fi
586
637
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
587
638
-DENABLE_CONAN=${ENABLE_CONAN:-OFF} \
588
639
-DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-OFF} \
@@ -594,10 +645,11 @@ jobs:
594
645
-DBUILD_TOOLS=${BUILD_TOOLS:-OFF} \
595
646
-DENABLE_CCACHE=ON \
596
647
-DCMAKE_INSTALL_PREFIX=${OSRM_INSTALL_DIR} \
597
- -DENABLE_GLIBC_WORKAROUND=${ENABLE_GLIBC_WORKAROUND:-OFF}
648
+ -DENABLE_GLIBC_WORKAROUND=${ENABLE_GLIBC_WORKAROUND:-OFF} \
649
+ "${APPLE_SILICON_FLAGS[@]}"
598
650
make --jobs=${JOBS}
599
651
600
- if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" ]]; then
652
+ if [[ "${NODE_PACKAGE_TESTS_ONLY}" != "ON" && "${ENABLE_APPLE_SILICON}" != "ON" ]]; then
601
653
make tests --jobs=${JOBS}
602
654
make benchmarks --jobs=${JOBS}
603
655
ccache -s
@@ -609,15 +661,15 @@ jobs:
609
661
fi
610
662
popd
611
663
- name : Build example
612
- if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' }}
664
+ if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }}
613
665
run : |
614
666
mkdir example/build && pushd example/build
615
667
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
616
668
make --jobs=${JOBS}
617
669
popd
618
670
619
671
- name : Run all tests
620
- if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' }}
672
+ if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY != 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }}
621
673
run : |
622
674
make -C test/data benchmark
623
675
@@ -634,7 +686,7 @@ jobs:
634
686
popd
635
687
npm test
636
688
- name : Run Node package tests only
637
- if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY == 'ON' }}
689
+ if : ${{ matrix.NODE_PACKAGE_TESTS_ONLY == 'ON' && matrix.ENABLE_APPLE_SILICON != 'ON' }}
638
690
run : |
639
691
npm run nodejs-tests
640
692
- name : Upload test logs
@@ -659,9 +711,17 @@ jobs:
659
711
name : codecov-osrm-backend
660
712
fail_ci_if_error : true
661
713
verbose : true
662
-
714
+ - name : Check Apple Silicon binary
715
+ if : ${{ matrix.ENABLE_APPLE_SILICON == 'ON' }}
716
+ run : |
717
+ ARCH=$(file ./lib/binding/node_osrm.node | awk '{printf $NF}')
718
+ if [[ "$ARCH" != "arm64" ]]; then
719
+ file ./lib/binding/node_osrm.node
720
+ >&2 echo "Wrong architecture!"
721
+ exit 1
722
+ fi
663
723
- name : Build Node package
664
- if : ${{ matrix.build_node_package && env.PUBLISH == 'On' }}
724
+ if : ${{ matrix.build_node_package }}
665
725
run : ./scripts/ci/node_package.sh
666
726
- name : Publish Node package
667
727
if : ${{ matrix.build_node_package && env.PUBLISH == 'On' }}
0 commit comments