@ -137,29 +137,11 @@ add_custom_target(compiler-rt DEPENDS compiler-rt-build compiler-rt-post-build)
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
function ( define_wasi_libc_sub target target_suffix lto )
set ( build_dir ${ CMAKE_CURRENT_BINARY_DIR } /wasi-libc- ${ target } ${ target_suffix } )
string ( TOUPPER ${ CMAKE_BUILD_TYPE } CMAKE_BUILD_TYPE_UPPER )
get_property ( directory_cflags DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } PROPERTY COMPILE_OPTIONS )
list ( APPEND directory_cflags -resource-dir ${ wasi_resource_dir } )
set ( extra_cflags_list
" $ { W A S I _ S D K _ C P U _ C F L A G S } $ { C M A K E _ C _ F L A G S } $ { d i r e c t o r y _ c f l a g s } $ { C M A K E _ C _ F L A G S _ $ { C M A K E _ B U I L D _ T Y P E _ U P P E R } } " )
set ( extra_make_flags default )
# I f L T O i s e n a b l e d t h e n p a s s t h a t o n t o w a s i - l i b c , a n d o t h e r w i s e m a k e s u r e t o
# b u i l d a ` l i b c . s o ` d y n a m i c l i b r a r y w h e r e possible ( not compatible with
# t h r e a d s t h o u g h )
if ( lto )
list ( APPEND extra_make_flags LTO=full )
elseif ( NOT ${ target } MATCHES threads )
list ( APPEND extra_make_flags libc_so )
endif ( )
set ( extra_cflags_list "${WASI_SDK_CPU_CFLAGS} ${CMAKE_C_FLAGS} ${directory_cflags}" )
if ( ${ target } MATCHES threads )
list ( APPEND extra_make_flags THREAD_MODEL=posix )
elseif ( ${ target } MATCHES p2 )
list ( APPEND extra_make_flags WASI_SNAPSHOT=p2 )
if ( ${ target } MATCHES p2 )
# A l w a y s e n a b l e ` - f P I C ` f o r t h e ` w a s m 3 2 - w a s i p 2 ` t a r g e t . T h i s m a k e s ` l i b c . a `
# m o r e f l e x i b l e a n d u s a b l e i n d y n a m i c l i n k i n g s i t u a t i o n s .
list ( APPEND extra_cflags_list -fPIC )
@ -173,25 +155,26 @@ function(define_wasi_libc_sub target target_suffix lto)
set ( libcompiler_rt_a ${ wasi_resource_dir } /lib/wasm32-unknown-wasip1/libclang_rt.builtins.a )
endif ( )
set ( extra_cmake_args )
# C o n f i g u r e L T O i n w a s i l i b c i f i t ' s e n a b l e d . B e s u r e t o d i s a b l e s h a r e d
# l i b r a r i e s a s w e l l s i n c e t h a t ' s n o t c u r r e n t l y s u p p o r t e d .
if ( lto )
list ( APPEND extra_cmake_args -DLTO=full -DBUILD_SHARED=OFF )
endif ( )
ExternalProject_Add ( wasi-libc- ${ target } ${ target_suffix } -build
# C u r r e n t l y w a s i - l i b c d o e s n ' t s u p p o r t o u t - o f - t r e e b u i l d s s o f e i g n a
# " d o w n l o a d c o m m a n d " w h i c h c o p i e s t h e s o u r c e t r e e t o a d i f f e r e n t l o c a t i o n
# s o o u t - o f - t r e e b u i l d s a r e s u p p o r t e d .
D O W N L O A D _ C O M M A N D
$ { C M A K E _ C O M M A N D } - E c o p y _ d i r e c t o r y $ { w a s i _ l i b c } $ { b u i l d _ d i r }
S O U R C E _ D I R " $ { b u i l d _ d i r } "
C O N F I G U R E _ C O M M A N D " "
B U I L D _ C O M M A N D
$ { M A K E } - j 8 - C $ { b u i l d _ d i r }
C C = $ { C M A K E _ C _ C O M P I L E R }
A R = $ { C M A K E _ A R }
N M = $ { C M A K E _ N M }
S Y S R O O T = $ { w a s i _ s y s r o o t }
E X T R A _ C F L A G S = $ { e x t r a _ c f l a g s }
T A R G E T _ T R I P L E = $ { t a r g e t }
B U I L T I N S _ L I B = $ { l i b c o m p i l e r _ r t _ a }
$ { e x t r a _ m a k e _ f l a g s }
I N S T A L L _ C O M M A N D " "
S O U R C E _ D I R $ { w a s i _ l i b c }
C M A K E _ A R G S
$ { d e f a u l t _ c m a k e _ a r g s }
$ { e x t r a _ c m a k e _ a r g s }
- D T A R G E T _ T R I P L E = $ { t a r g e t }
- D C M A K E _ I N S T A L L _ P R E F I X = $ { w a s i _ s y s r o o t }
- D C M A K E _ C _ F L A G S = $ { e x t r a _ c f l a g s }
- D B U I L T I N S _ L I B = $ { l i b c o m p i l e r _ r t _ a }
- D U S E _ W A S M _ C O M P O N E N T _ L D = O F F
- D B I N D I N G S _ T A R G E T = O F F
- D W A S I _ S D K _ V E R S I O N = $ { w a s i _ s d k _ v e r s i o n }
D E P E N D S c o m p i l e r - r t
E X C L U D E _ F R O M _ A L L O N
U S E S _ T E R M I N A L _ C O N F I G U R E O N