@ -20,7 +20,7 @@ MALLOC_IMPL ?= dlmalloc
# yes or no
# yes or no
BUILD_LIBC_TOP_HALF ?= yes
BUILD_LIBC_TOP_HALF ?= yes
# The directory where we will store intermediate artifacts.
# The directory where we will store intermediate artifacts.
OBJDIR ?= $( CURDIR) / build/$( TARGET_TRIPLE)
OBJDIR ?= build/$( TARGET_TRIPLE)
# When the length is no larger than this threshold, we consider the
# When the length is no larger than this threshold, we consider the
# overhead of bulk memory opcodes to outweigh the performance benefit,
# overhead of bulk memory opcodes to outweigh the performance benefit,
@ -43,13 +43,13 @@ endif
# These variables describe the locations of various files and directories in
# These variables describe the locations of various files and directories in
# the source tree.
# the source tree.
DLMALLOC_DIR = $( CURDIR) / dlmalloc
DLMALLOC_DIR = dlmalloc
DLMALLOC_SRC_DIR = $( DLMALLOC_DIR) /src
DLMALLOC_SRC_DIR = $( DLMALLOC_DIR) /src
DLMALLOC_SOURCES = $( DLMALLOC_SRC_DIR) /dlmalloc.c
DLMALLOC_SOURCES = $( DLMALLOC_SRC_DIR) /dlmalloc.c
DLMALLOC_INC = $( DLMALLOC_DIR) /include
DLMALLOC_INC = $( DLMALLOC_DIR) /include
EMMALLOC_DIR = $( CURDIR) / emmalloc
EMMALLOC_DIR = emmalloc
EMMALLOC_SOURCES = $( EMMALLOC_DIR) /emmalloc.c
EMMALLOC_SOURCES = $( EMMALLOC_DIR) /emmalloc.c
LIBC_BOTTOM_HALF_DIR = $( CURDIR) / libc-bottom-half
LIBC_BOTTOM_HALF_DIR = libc-bottom-half
LIBC_BOTTOM_HALF_CLOUDLIBC_SRC = $( LIBC_BOTTOM_HALF_DIR) /cloudlibc/src
LIBC_BOTTOM_HALF_CLOUDLIBC_SRC = $( LIBC_BOTTOM_HALF_DIR) /cloudlibc/src
LIBC_BOTTOM_HALF_CLOUDLIBC_SRC_INC = $( LIBC_BOTTOM_HALF_CLOUDLIBC_SRC) /include
LIBC_BOTTOM_HALF_CLOUDLIBC_SRC_INC = $( LIBC_BOTTOM_HALF_CLOUDLIBC_SRC) /include
LIBC_BOTTOM_HALF_HEADERS_PUBLIC = $( LIBC_BOTTOM_HALF_DIR) /headers/public
LIBC_BOTTOM_HALF_HEADERS_PUBLIC = $( LIBC_BOTTOM_HALF_DIR) /headers/public
@ -79,7 +79,7 @@ LIBWASI_EMULATED_SIGNAL_MUSL_SOURCES = \
$( LIBC_TOP_HALF_MUSL_SRC_DIR) /signal/psignal.c \
$( LIBC_TOP_HALF_MUSL_SRC_DIR) /signal/psignal.c \
$( LIBC_TOP_HALF_MUSL_SRC_DIR) /string/strsignal.c
$( LIBC_TOP_HALF_MUSL_SRC_DIR) /string/strsignal.c
LIBC_BOTTOM_HALF_CRT_SOURCES = $( wildcard $( LIBC_BOTTOM_HALF_DIR) /crt/*.c)
LIBC_BOTTOM_HALF_CRT_SOURCES = $( wildcard $( LIBC_BOTTOM_HALF_DIR) /crt/*.c)
LIBC_TOP_HALF_DIR = $( CURDIR) / libc-top-half
LIBC_TOP_HALF_DIR = libc-top-half
LIBC_TOP_HALF_MUSL_DIR = $( LIBC_TOP_HALF_DIR) /musl
LIBC_TOP_HALF_MUSL_DIR = $( LIBC_TOP_HALF_DIR) /musl
LIBC_TOP_HALF_MUSL_SRC_DIR = $( LIBC_TOP_HALF_MUSL_DIR) /src
LIBC_TOP_HALF_MUSL_SRC_DIR = $( LIBC_TOP_HALF_MUSL_DIR) /src
LIBC_TOP_HALF_MUSL_INC = $( LIBC_TOP_HALF_MUSL_DIR) /include
LIBC_TOP_HALF_MUSL_INC = $( LIBC_TOP_HALF_MUSL_DIR) /include
@ -346,8 +346,8 @@ CFLAGS += -isystem "$(SYSROOT_INC)"
# These variables describe the locations of various files and directories in
# These variables describe the locations of various files and directories in
# the build tree.
# the build tree.
objs = $( patsubst $( CURDIR) / %.c,$( OBJDIR) /%.o,$( 1) )
objs = $( patsubst %.c,$( OBJDIR) /%.o,$( 1) )
asmobjs = $( patsubst $( CURDIR) / %.s,$( OBJDIR) /%.o,$( 1) )
asmobjs = $( patsubst %.s,$( OBJDIR) /%.o,$( 1) )
DLMALLOC_OBJS = $( call objs,$( DLMALLOC_SOURCES) )
DLMALLOC_OBJS = $( call objs,$( DLMALLOC_SOURCES) )
EMMALLOC_OBJS = $( call objs,$( EMMALLOC_SOURCES) )
EMMALLOC_OBJS = $( call objs,$( EMMALLOC_SOURCES) )
LIBC_BOTTOM_HALF_ALL_OBJS = $( call objs,$( LIBC_BOTTOM_HALF_ALL_SOURCES) )
LIBC_BOTTOM_HALF_ALL_OBJS = $( call objs,$( LIBC_BOTTOM_HALF_ALL_SOURCES) )
@ -376,6 +376,7 @@ LIBWASI_EMULATED_PROCESS_CLOCKS_OBJS = $(call objs,$(LIBWASI_EMULATED_PROCESS_CL
LIBWASI_EMULATED_GETPID_OBJS = $( call objs,$( LIBWASI_EMULATED_GETPID_SOURCES) )
LIBWASI_EMULATED_GETPID_OBJS = $( call objs,$( LIBWASI_EMULATED_GETPID_SOURCES) )
LIBWASI_EMULATED_SIGNAL_OBJS = $( call objs,$( LIBWASI_EMULATED_SIGNAL_SOURCES) )
LIBWASI_EMULATED_SIGNAL_OBJS = $( call objs,$( LIBWASI_EMULATED_SIGNAL_SOURCES) )
LIBWASI_EMULATED_SIGNAL_MUSL_OBJS = $( call objs,$( LIBWASI_EMULATED_SIGNAL_MUSL_SOURCES) )
LIBWASI_EMULATED_SIGNAL_MUSL_OBJS = $( call objs,$( LIBWASI_EMULATED_SIGNAL_MUSL_SOURCES) )
LIBC_BOTTOM_HALF_CRT_OBJS = $( call objs,$( LIBC_BOTTOM_HALF_CRT_SOURCES) )
# These variables describe the locations of various files and
# These variables describe the locations of various files and
# directories in the generated sysroot tree.
# directories in the generated sysroot tree.
@ -514,19 +515,19 @@ $(BULK_MEMORY_OBJS): CFLAGS += \
$(LIBWASI_EMULATED_SIGNAL_MUSL_OBJS) : CFLAGS += \
$(LIBWASI_EMULATED_SIGNAL_MUSL_OBJS) : CFLAGS += \
-D_WASI_EMULATED_SIGNAL
-D_WASI_EMULATED_SIGNAL
$(OBJDIR)/%.long-double.o : $( CURDIR ) / %.c include_dirs
$(OBJDIR)/%.long-double.o : %.c include_dirs
@mkdir -p " $( @D) "
@mkdir -p " $( @D) "
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$(OBJDIR)/%.no-floating-point.o : $( CURDIR ) / %.c include_dirs
$(OBJDIR)/%.no-floating-point.o : %.c include_dirs
@mkdir -p " $( @D) "
@mkdir -p " $( @D) "
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$(OBJDIR)/%.o : $( CURDIR ) / %.c include_dirs
$(OBJDIR)/%.o : %.c include_dirs
@mkdir -p " $( @D) "
@mkdir -p " $( @D) "
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$( CC) $( CFLAGS) -MD -MP -o $@ -c $<
$(OBJDIR)/%.o : $( CURDIR ) / %.s include_dirs
$(OBJDIR)/%.o : %.s include_dirs
@mkdir -p " $( @D) "
@mkdir -p " $( @D) "
$( CC) $( ASMFLAGS) -o $@ -c $<
$( CC) $( ASMFLAGS) -o $@ -c $<
@ -582,15 +583,12 @@ include_dirs:
# Remove selected header files.
# Remove selected header files.
$( RM) $( patsubst %,$( SYSROOT_INC) /%,$( MUSL_OMIT_HEADERS) )
$( RM) $( patsubst %,$( SYSROOT_INC) /%,$( MUSL_OMIT_HEADERS) )
startup_files : include_dirs
startup_files : include_dirs $( LIBC_BOTTOM_HALF_CRT_OBJS )
#
#
# Build the startup files .
# Install the startup files (crt1.o etc) .
#
#
@mkdir -p " $( OBJDIR) "
cd " $( OBJDIR) " && \
$( CC) $( CFLAGS) -c $( LIBC_BOTTOM_HALF_CRT_SOURCES) -MD -MP && \
mkdir -p " $( SYSROOT_LIB) " && \
mkdir -p " $( SYSROOT_LIB) " && \
mv *.o " $( SYSROOT_LIB) "
cp $( LIBC_BOTTOM_HALF_CRT_OBJS) " $( SYSROOT_LIB) "
libc : include_dirs \
libc : include_dirs \
$( SYSROOT_LIB) /libc.a \
$( SYSROOT_LIB) /libc.a \
@ -708,7 +706,7 @@ check-symbols: startup_files libc
# Check that the computed metadata matches the expected metadata.
# Check that the computed metadata matches the expected metadata.
# This ignores whitespace because on Windows the output has CRLF line endings.
# This ignores whitespace because on Windows the output has CRLF line endings.
diff -wur " $( CURDIR) / expected/$( TARGET_TRIPLE) " " $( SYSROOT_SHARE) "
diff -wur " expected/$( TARGET_TRIPLE) " " $( SYSROOT_SHARE) "
install : finish
install : finish
mkdir -p " $( INSTALL_DIR) "
mkdir -p " $( INSTALL_DIR) "