@@ -450,22 +450,38 @@ def build_libc(release):
450
450
"-Wl,--relocatable"
451
451
]
452
452
453
+ clang = 'clang'
454
+ llvm_ar = 'llvm-ar'
455
+
456
+ #NOTE(martin): this is an extremely stupid workaround to play well with github CI runners, which
457
+ # have llvm clang only accessible through $(brew --prefix llvm@15), whereas locally we could want to
458
+ # use another version.
459
+ # TODO: we should probably pass a flag to inform the script it's running in CI. This would avoid picking
460
+ # llvm 15 when a later version is available locally?
461
+ if platform .system () == "Darwin" :
462
+ try :
463
+ brew_llvm = subprocess .check_output (["brew" , "--prefix" , "llvm@15" , "--installed" ], stderr = subprocess .DEVNULL ).decode ().strip ()
464
+ except subprocess .CalledProcessError :
465
+ brew_llvm = subprocess .check_output (["brew" , "--prefix" , "llvm" , "--installed" ]).decode ().strip ()
466
+ clang = os .path .join (brew_llvm , 'bin' , 'clang' )
467
+ llvm_ar = os .path .join (brew_llvm , 'bin' , 'llvm-ar' )
468
+
453
469
# compile dummy CRT
454
470
subprocess .run ([
455
- " clang" , * flags , * includes ,
471
+ clang , * flags , * includes ,
456
472
"-o" , "build/orca-libc/lib/crt1.o" ,
457
473
"src/orca-libc/src/crt/crt1.c"
458
474
], check = True )
459
475
460
476
# compile standard lib
461
477
subprocess .run ([
462
- " clang" , * flags , * includes ,
478
+ clang , * flags , * includes ,
463
479
"-o" , "build/orca-libc/lib/libc.o" ,
464
480
* cfiles
465
481
], check = True )
466
482
467
483
subprocess .run ([
468
- "llvm-ar" , "crs" ,
484
+ llvm_ar , "crs" ,
469
485
"build/orca-libc/lib/libc.a" ,
470
486
"build/orca-libc/lib/libc.o"
471
487
], check = True )
0 commit comments