From 9b5f0fcb4c0bd736ec71bf289af8320812f3b502 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 12:50:19 -0700 Subject: [PATCH 01/11] Use ?= for variables intended to be overridable. --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 4fa5fcb96..bc922edcb 100644 --- a/Makefile +++ b/Makefile @@ -9,13 +9,13 @@ SYSROOT ?= $(CURDIR)/sysroot # A directory to install to for "make install". INSTALL_DIR ?= /usr/local # single or posix -THREAD_MODEL = single +THREAD_MODEL ?= single # yes or no -BUILD_DLMALLOC = yes -BUILD_LIBC_BOTTOM_HALF = yes -BUILD_LIBC_TOP_HALF = yes +BUILD_DLMALLOC ?= yes +BUILD_LIBC_BOTTOM_HALF ?= yes +BUILD_LIBC_TOP_HALF ?= yes # The directory where we're store intermediate artifacts. -OBJDIR = $(CURDIR)/build +OBJDIR ?= $(CURDIR)/build # Check dependencies. ifeq ($(BUILD_LIBC_TOP_HALF),yes) From b17109078fd1d4bc9da7c6ca6ce1ed36d215cf33 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 12:53:21 -0700 Subject: [PATCH 02/11] Use `override` consistently for variables not meant to be overridden. --- Makefile | 66 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index bc922edcb..3b92f78c1 100644 --- a/Makefile +++ b/Makefile @@ -31,35 +31,35 @@ endif # These variables describe the locations of various files and # directories in the source tree. -BASICS_DIR = $(CURDIR)/basics -BASICS_INC = $(BASICS_DIR)/include -BASICS_CRT_SOURCES = $(wildcard $(BASICS_DIR)/crt/*.c) -BASICS_SOURCES = \ +override BASICS_DIR = $(CURDIR)/basics +override BASICS_INC = $(BASICS_DIR)/include +override BASICS_CRT_SOURCES = $(wildcard $(BASICS_DIR)/crt/*.c) +override BASICS_SOURCES = \ $(wildcard $(BASICS_DIR)/sources/*.c) \ $(wildcard $(BASICS_DIR)/sources/math/*.c) -DLMALLOC_DIR = $(CURDIR)/dlmalloc -DLMALLOC_SRC_DIR = $(DLMALLOC_DIR)/src -DLMALLOC_SOURCES = $(DLMALLOC_SRC_DIR)/dlmalloc.c -DLMALLOC_INC = $(DLMALLOC_DIR)/include -LIBC_BOTTOM_HALF_DIR = $(CURDIR)/libc-bottom-half -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_HEADERS_PUBLIC = $(LIBC_BOTTOM_HALF_DIR)/headers/public -LIBC_BOTTOM_HALF_HEADERS_PRIVATE = $(LIBC_BOTTOM_HALF_DIR)/headers/private -LIBC_BOTTOM_HALF_LIBPREOPEN_DIR = $(LIBC_BOTTOM_HALF_DIR)/libpreopen -LIBC_BOTTOM_HALF_SOURCES = $(LIBC_BOTTOM_HALF_DIR)/sources -LIBC_BOTTOM_HALF_ALL_SOURCES = \ +override DLMALLOC_DIR = $(CURDIR)/dlmalloc +override DLMALLOC_SRC_DIR = $(DLMALLOC_DIR)/src +override DLMALLOC_SOURCES = $(DLMALLOC_SRC_DIR)/dlmalloc.c +override DLMALLOC_INC = $(DLMALLOC_DIR)/include +override LIBC_BOTTOM_HALF_DIR = $(CURDIR)/libc-bottom-half +override LIBC_BOTTOM_HALF_CLOUDLIBC_SRC = $(LIBC_BOTTOM_HALF_DIR)/cloudlibc/src +override LIBC_BOTTOM_HALF_CLOUDLIBC_SRC_INC = $(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC)/include +override LIBC_BOTTOM_HALF_HEADERS_PUBLIC = $(LIBC_BOTTOM_HALF_DIR)/headers/public +override LIBC_BOTTOM_HALF_HEADERS_PRIVATE = $(LIBC_BOTTOM_HALF_DIR)/headers/private +override LIBC_BOTTOM_HALF_LIBPREOPEN_DIR = $(LIBC_BOTTOM_HALF_DIR)/libpreopen +override LIBC_BOTTOM_HALF_SOURCES = $(LIBC_BOTTOM_HALF_DIR)/sources +override LIBC_BOTTOM_HALF_ALL_SOURCES = \ $(shell find $(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC) -name \*.c) \ $(LIBC_BOTTOM_HALF_LIBPREOPEN_DIR)/libpreopen.c \ $(shell find $(LIBC_BOTTOM_HALF_SOURCES) -name \*.c) -LIBWASI_EMULATED_MMAN_SOURCES = \ +override LIBWASI_EMULATED_MMAN_SOURCES = \ $(shell find $(LIBC_BOTTOM_HALF_DIR)/mman -name \*.c) -LIBC_BOTTOM_HALF_CRT_SOURCES = $(wildcard $(LIBC_BOTTOM_HALF_DIR)/crt/*.c) -LIBC_TOP_HALF_DIR = $(CURDIR)/libc-top-half -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_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include -LIBC_TOP_HALF_MUSL_SOURCES = \ +override LIBC_BOTTOM_HALF_CRT_SOURCES = $(wildcard $(LIBC_BOTTOM_HALF_DIR)/crt/*.c) +override LIBC_TOP_HALF_DIR = $(CURDIR)/libc-top-half +override LIBC_TOP_HALF_MUSL_DIR = $(LIBC_TOP_HALF_DIR)/musl +override LIBC_TOP_HALF_MUSL_SRC_DIR = $(LIBC_TOP_HALF_MUSL_DIR)/src +override LIBC_TOP_HALF_MUSL_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include +override LIBC_TOP_HALF_MUSL_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/a64l.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/basename.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/dirname.c \ @@ -163,29 +163,29 @@ LIBC_TOP_HALF_MUSL_SOURCES = \ %/cimagf.c %/cimag.c, \ $(wildcard $(LIBC_TOP_HALF_MUSL_SRC_DIR)/complex/*.c)) \ $(wildcard $(LIBC_TOP_HALF_MUSL_SRC_DIR)/crypt/*.c) -MUSL_PRINTSCAN_SOURCES = \ +override MUSL_PRINTSCAN_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/internal/floatscan.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfprintf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfwprintf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfscanf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdlib/strtod.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdlib/wcstod.c -LIBC_TOP_HALF_HEADERS_PRIVATE = $(LIBC_TOP_HALF_DIR)/headers/private -LIBC_TOP_HALF_SOURCES = $(LIBC_TOP_HALF_DIR)/sources -LIBC_TOP_HALF_ALL_SOURCES = \ +override LIBC_TOP_HALF_HEADERS_PRIVATE = $(LIBC_TOP_HALF_DIR)/headers/private +override LIBC_TOP_HALF_SOURCES = $(LIBC_TOP_HALF_DIR)/sources +override LIBC_TOP_HALF_ALL_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SOURCES) \ $(shell find $(LIBC_TOP_HALF_SOURCES) -name \*.c) # Set the target variables. Multiarch triples notably omit the vendor # field, which happens to be what we do for the main target triple too. -TARGET_TRIPLE = wasm32-wasi -MULTIARCH_TRIPLE = wasm32-wasi +override TARGET_TRIPLE = wasm32-wasi +override MULTIARCH_TRIPLE = wasm32-wasi # These variables describe the locations of various files and # directories in the generated sysroot tree. -SYSROOT_LIB = $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) -SYSROOT_INC = $(SYSROOT)/include -SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) +override SYSROOT_LIB = $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) +override SYSROOT_INC = $(SYSROOT)/include +override SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) # Set the target. override WASM_CFLAGS += --target=$(TARGET_TRIPLE) @@ -204,7 +204,7 @@ endif # Set the sysroot. override WASM_CFLAGS += --sysroot="$(SYSROOT)" -objs = $(patsubst $(CURDIR)/%.c,$(OBJDIR)/%.o,$(1)) +override objs = $(patsubst $(CURDIR)/%.c,$(OBJDIR)/%.o,$(1)) override BASICS_OBJS = $(call objs,$(BASICS_SOURCES)) override DLMALLOC_OBJS = $(call objs,$(DLMALLOC_SOURCES)) override LIBC_BOTTOM_HALF_ALL_OBJS = $(call objs,$(LIBC_BOTTOM_HALF_ALL_SOURCES)) From 98f6b06cf7c8cbda7893c92502581e2adc3c786b Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 12:58:32 -0700 Subject: [PATCH 03/11] Omit miscellaneous comments from the build output. --- Makefile | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 3b92f78c1..8549312b3 100644 --- a/Makefile +++ b/Makefile @@ -443,11 +443,13 @@ finish: startup_files libc # mkdir -p "$(SYSROOT_SHARE)" + # # Collect symbol information. - # TODO: Use llvm-nm --extern-only instead of grep. This is blocked on - # LLVM PR40497, which is fixed in 9.0, but not in 8.0. - # Ignore certain llvm builtin symbols such as those starting with __mul - # since these dependencies can vary between llvm versions. + # + @# TODO: Use llvm-nm --extern-only instead of grep. This is blocked on + @# LLVM PR40497, which is fixed in 9.0, but not in 8.0. + @# Ignore certain llvm builtin symbols such as those starting with __mul + @# since these dependencies can vary between llvm versions. "$(WASM_NM)" --defined-only "$(SYSROOT_LIB)"/libc.a "$(SYSROOT_LIB)"/*.o \ |grep ' [[:upper:]] ' |sed 's/.* [[:upper:]] //' |LC_ALL=C sort > "$(SYSROOT_SHARE)/defined-symbols.txt" for undef_sym in $$("$(WASM_NM)" --undefined-only "$(SYSROOT_LIB)"/*.a "$(SYSROOT_LIB)"/*.o \ @@ -457,27 +459,33 @@ finish: startup_files libc grep '^_*wasi_' "$(SYSROOT_SHARE)/undefined-symbols.txt" \ > "$(SYSROOT_LIB)/libc.imports" + # # Generate a test file that includes all public header files. + # cd "$(SYSROOT)" && \ for header in $$(find include -type f -not -name mman.h |grep -v /bits/); do \ echo '#include <'$$header'>' | sed 's/include\///' ; \ done |LC_ALL=C sort >share/$(MULTIARCH_TRIPLE)/include-all.c ; \ cd - >/dev/null + # # Test that it compiles. + # "$(WASM_CC)" $(WASM_CFLAGS) -fsyntax-only "$(SYSROOT_SHARE)/include-all.c" -Wno-\#warnings - # Collect all the predefined macros, except for compiler version macros - # which we don't need to track here. For the __*_ATOMIC_*_LOCK_FREE - # macros, squash individual compiler names to attempt, toward keeping - # these files compiler-independent. # - # We have to add `-isystem $(SYSROOT_INC)` because otherwise clang puts - # its builtin include path first, which produces compiler-specific - # output. + # Collect all the predefined macros, except for compiler version macros + # which we don't need to track here. # - # TODO: Undefine __FLOAT128__ for now since it's not in clang 8.0. - # TODO: Filter out __FLT16_* for now, as not all versions of clang have these. + @# For the __*_ATOMIC_*_LOCK_FREE macros, squash individual compiler + @# names to attempt, toward keeping these files compiler-independent. + @# + @# We have to add `-isystem $(SYSROOT_INC)` because otherwise clang puts + @# its builtin include path first, which produces compiler-specific + @# output. + @# + @# TODO: Undefine __FLOAT128__ for now since it's not in clang 8.0. + @# TODO: Filter out __FLT16_* for now, as not all versions of clang have these. "$(WASM_CC)" $(WASM_CFLAGS) "$(SYSROOT_SHARE)/include-all.c" \ -isystem $(SYSROOT_INC) \ -E -dM -Wno-\#warnings \ From beef9ba4c21a9bbc9e6b2f3a73a82eac23ba9b00 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:04:04 -0700 Subject: [PATCH 04/11] Tidy up some comments. --- Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 8549312b3..92b0b9216 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -# These variables are specifically meant to be overridable via -# the make command-line. +# These variables are specifically meant to be overridable via the make +# command-line. WASM_CC ?= clang WASM_NM ?= $(patsubst %clang,%llvm-nm,$(WASM_CC)) WASM_AR ?= $(patsubst %clang,%llvm-ar,$(WASM_CC)) @@ -29,8 +29,8 @@ $(error BUILD_LIBC_BOTTOM_HALF=yes depends on BUILD_DLMALLOC=yes) endif endif -# These variables describe the locations of various files and -# directories in the source tree. +# These variables describe the locations of various files and directories in +# the source tree. override BASICS_DIR = $(CURDIR)/basics override BASICS_INC = $(BASICS_DIR)/include override BASICS_CRT_SOURCES = $(wildcard $(BASICS_DIR)/crt/*.c) @@ -477,8 +477,9 @@ finish: startup_files libc # Collect all the predefined macros, except for compiler version macros # which we don't need to track here. # - @# For the __*_ATOMIC_*_LOCK_FREE macros, squash individual compiler - @# names to attempt, toward keeping these files compiler-independent. + @# + @# For the __*_ATOMIC_*_LOCK_FREE macros, squash individual compiler names + @# to attempt, toward keeping these files compiler-independent. @# @# We have to add `-isystem $(SYSROOT_INC)` because otherwise clang puts @# its builtin include path first, which produces compiler-specific From 265050171bc0816b843f8e4117e9d581ae07b941 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:39:45 -0700 Subject: [PATCH 05/11] Use `addprefix` to factor out a common prefix. --- Makefile | 100 +++++++++++++++++++------------------------------------ 1 file changed, 34 insertions(+), 66 deletions(-) diff --git a/Makefile b/Makefile index 92b0b9216..5c19ce50f 100644 --- a/Makefile +++ b/Makefile @@ -60,72 +60,40 @@ override LIBC_TOP_HALF_MUSL_DIR = $(LIBC_TOP_HALF_DIR)/musl override LIBC_TOP_HALF_MUSL_SRC_DIR = $(LIBC_TOP_HALF_MUSL_DIR)/src override LIBC_TOP_HALF_MUSL_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include override LIBC_TOP_HALF_MUSL_SOURCES = \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/a64l.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/basename.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/dirname.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/ffs.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/ffsl.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/ffsll.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/fmtmsg.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/getdomainname.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/gethostid.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/getopt.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/getopt_long.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/getsubopt.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/uname.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/misc/nftw.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/errno/strerror.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/htonl.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/htons.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/ntohl.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/ntohs.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/inet_ntop.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/inet_pton.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/inet_aton.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/in6addr_any.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/network/in6addr_loopback.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/fenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/fesetround.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/feupdateenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/fesetexceptflag.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/fegetexceptflag.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fenv/feholdexcept.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/exit/exit.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/exit/atexit.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/exit/assert.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/exit/quick_exit.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/exit/at_quick_exit.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/strftime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/asctime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/asctime_r.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/ctime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/ctime_r.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/wcsftime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/strptime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/difftime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/timegm.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/ftime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/gmtime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/gmtime_r.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/timespec_get.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/getdate.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/localtime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/localtime_r.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/mktime.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/__tm_to_secs.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/__month_to_secs.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/__secs_to_tm.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/__year_to_secs.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/time/__tz.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/fcntl/creat.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/dirent/alphasort.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/dirent/versionsort.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/env/clearenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/env/getenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/env/putenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/env/setenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/env/unsetenv.c \ - $(LIBC_TOP_HALF_MUSL_SRC_DIR)/unistd/posix_close.c \ + $(addprefix $(LIBC_TOP_HALF_MUSL_SRC_DIR)/, \ + misc/a64l.c \ + misc/basename.c misc/dirname.c \ + misc/ffs.c misc/ffsl.c misc/ffsll.c \ + misc/fmtmsg.c \ + misc/getdomainname.c misc/gethostid.c \ + misc/getopt.c misc/getopt_long.c \ + misc/getsubopt.c \ + misc/uname.c \ + misc/nftw.c \ + errno/strerror.c \ + network/htonl.c network/htons.c network/ntohl.c network/ntohs.c \ + network/inet_ntop.c network/inet_pton.c network/inet_aton.c \ + network/in6addr_any.c network/in6addr_loopback.c \ + fenv/fenv.c fenv/fesetround.c fenv/feupdateenv.c \ + fenv/fesetexceptflag.c fenv/fegetexceptflag.c fenv/feholdexcept.c \ + exit/exit.c exit/atexit.c exit/assert.c \ + exit/quick_exit.c exit/at_quick_exit.c \ + time/strftime.c time/asctime.c time/asctime_r.c \ + time/ctime.c time/ctime_r.c \ + time/wcsftime.c time/strptime.c time/difftime.c \ + time/timegm.c time/ftime.c time/gmtime.c time/gmtime_r.c \ + time/timespec_get.c \ + time/getdate.c \ + time/localtime.c time/localtime_r.c \ + time/mktime.c \ + time/__tm_to_secs.c time/__month_to_secs.c \ + time/__secs_to_tm.c time/__year_to_secs.c \ + time/__tz.c \ + fcntl/creat.c \ + dirent/alphasort.c dirent/versionsort.c \ + env/clearenv.c env/getenv.c env/putenv.c env/setenv.c env/unsetenv.c \ + unistd/posix_close.c \ + ) \ $(filter-out %/procfdname.c %/syscall.c %/syscall_ret.c %/vdso.c %/version.c, \ $(wildcard $(LIBC_TOP_HALF_MUSL_SRC_DIR)/internal/*.c)) \ $(filter-out %/flockfile.c %/funlockfile.c %/__lockfile.c %/ftrylockfile.c \ From a52e69a81ab54104bcfa3d2a8a6e9c8edbe10099 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:40:12 -0700 Subject: [PATCH 06/11] Add a comment. --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 5c19ce50f..5a532549f 100644 --- a/Makefile +++ b/Makefile @@ -172,6 +172,8 @@ endif # Set the sysroot. override WASM_CFLAGS += --sysroot="$(SYSROOT)" +# These variables describe the locations of various files and directories in +# the build tree. override objs = $(patsubst $(CURDIR)/%.c,$(OBJDIR)/%.o,$(1)) override BASICS_OBJS = $(call objs,$(BASICS_SOURCES)) override DLMALLOC_OBJS = $(call objs,$(DLMALLOC_SOURCES)) From eafa84c6b93c30e4c3b3c6f58feaba66c637a340 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:44:36 -0700 Subject: [PATCH 07/11] Reorganize. --- Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 5a532549f..8795a5c1b 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,11 @@ $(error BUILD_LIBC_BOTTOM_HALF=yes depends on BUILD_DLMALLOC=yes) endif endif +# Set the target variables. Multiarch triples notably omit the vendor field, +# which happens to be what we do for the main target triple too. +override TARGET_TRIPLE = wasm32-wasi +override MULTIARCH_TRIPLE = wasm32-wasi + # These variables describe the locations of various files and directories in # the source tree. override BASICS_DIR = $(CURDIR)/basics @@ -144,17 +149,6 @@ override LIBC_TOP_HALF_ALL_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SOURCES) \ $(shell find $(LIBC_TOP_HALF_SOURCES) -name \*.c) -# Set the target variables. Multiarch triples notably omit the vendor -# field, which happens to be what we do for the main target triple too. -override TARGET_TRIPLE = wasm32-wasi -override MULTIARCH_TRIPLE = wasm32-wasi - -# These variables describe the locations of various files and -# directories in the generated sysroot tree. -override SYSROOT_LIB = $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) -override SYSROOT_INC = $(SYSROOT)/include -override SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) - # Set the target. override WASM_CFLAGS += --target=$(TARGET_TRIPLE) # WebAssembly floating-point match doesn't trap. @@ -202,6 +196,12 @@ override MUSL_PRINTSCAN_LONG_DOUBLE_OBJS = $(patsubst %.o,%.long-double.o,$(MUSL override MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS = $(patsubst %.o,%.no-floating-point.o,$(MUSL_PRINTSCAN_OBJS)) override LIBWASI_EMULATED_MMAN_OBJS = $(call objs,$(LIBWASI_EMULATED_MMAN_SOURCES)) +# These variables describe the locations of various files and +# directories in the generated sysroot tree. +override SYSROOT_LIB := $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) +override SYSROOT_INC = $(SYSROOT)/include +override SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) + # Files from musl's include directory that we don't want to install in the # sysroot's include directory. override MUSL_OMIT_HEADERS := From 02f3180005fe5e2c7e292f8e3536bb8f1b982508 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:46:46 -0700 Subject: [PATCH 08/11] Adjust indentation. --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8795a5c1b..16d1f543a 100644 --- a/Makefile +++ b/Makefile @@ -433,8 +433,8 @@ finish: startup_files libc # Generate a test file that includes all public header files. # cd "$(SYSROOT)" && \ - for header in $$(find include -type f -not -name mman.h |grep -v /bits/); do \ - echo '#include <'$$header'>' | sed 's/include\///' ; \ + for header in $$(find include -type f -not -name mman.h |grep -v /bits/); do \ + echo '#include <'$$header'>' | sed 's/include\///' ; \ done |LC_ALL=C sort >share/$(MULTIARCH_TRIPLE)/include-all.c ; \ cd - >/dev/null From 5bdd8862382ea22d87d490f06d7af8aef2cf607e Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 17 Mar 2020 14:48:43 -0700 Subject: [PATCH 09/11] Simplify the logic for the `check` rule. --- Makefile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 16d1f543a..96a54f242 100644 --- a/Makefile +++ b/Makefile @@ -287,7 +287,7 @@ ifeq ($(THREAD_MODEL), single) override MUSL_OMIT_HEADERS += "aio.h" "pthread.h" endif -default: check +default: finish $(SYSROOT_LIB)/libc.a: $(LIBC_OBJS) @@ -476,17 +476,16 @@ finish: startup_files libc | grep -v '^#define __FLT16_' \ > "$(SYSROOT_SHARE)/predefined-macros.txt" - # - # The build succeeded! The generated sysroot is in $(SYSROOT). - # - -check: finish # Check that the computed metadata matches the expected metadata. # This ignores whitespace because on Windows the output has CRLF line endings. diff -wur "$(CURDIR)/expected/$(MULTIARCH_TRIPLE)" "$(SYSROOT_SHARE)" + # + # The build succeeded! The generated sysroot is in $(SYSROOT). + # + install: finish mkdir -p "$(INSTALL_DIR)" cp -r "$(SYSROOT)/lib" "$(SYSROOT)/share" "$(SYSROOT)/include" "$(INSTALL_DIR)" -.PHONY: default startup_files libc finish check install include_dirs +.PHONY: default startup_files libc finish install include_dirs From 6b4f926cc74d772702503899fe2ecb94119e6cef Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 18 Mar 2020 14:12:28 -0700 Subject: [PATCH 10/11] Remove the `override` keywords. They theoretically protect what the Makefile considers to be implementation details from being overridden on the command-line, but in practice this isn't super important, and they add a lot of clutter. --- Makefile | 135 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 69 insertions(+), 66 deletions(-) diff --git a/Makefile b/Makefile index 96a54f242..c03a90a9a 100644 --- a/Makefile +++ b/Makefile @@ -29,42 +29,45 @@ $(error BUILD_LIBC_BOTTOM_HALF=yes depends on BUILD_DLMALLOC=yes) endif endif +# Variables from this point on are not meant to be overridable via the +# make command-line. + # Set the target variables. Multiarch triples notably omit the vendor field, # which happens to be what we do for the main target triple too. -override TARGET_TRIPLE = wasm32-wasi -override MULTIARCH_TRIPLE = wasm32-wasi +TARGET_TRIPLE = wasm32-wasi +MULTIARCH_TRIPLE = wasm32-wasi # These variables describe the locations of various files and directories in # the source tree. -override BASICS_DIR = $(CURDIR)/basics -override BASICS_INC = $(BASICS_DIR)/include -override BASICS_CRT_SOURCES = $(wildcard $(BASICS_DIR)/crt/*.c) -override BASICS_SOURCES = \ +BASICS_DIR = $(CURDIR)/basics +BASICS_INC = $(BASICS_DIR)/include +BASICS_CRT_SOURCES = $(wildcard $(BASICS_DIR)/crt/*.c) +BASICS_SOURCES = \ $(wildcard $(BASICS_DIR)/sources/*.c) \ $(wildcard $(BASICS_DIR)/sources/math/*.c) -override DLMALLOC_DIR = $(CURDIR)/dlmalloc -override DLMALLOC_SRC_DIR = $(DLMALLOC_DIR)/src -override DLMALLOC_SOURCES = $(DLMALLOC_SRC_DIR)/dlmalloc.c -override DLMALLOC_INC = $(DLMALLOC_DIR)/include -override LIBC_BOTTOM_HALF_DIR = $(CURDIR)/libc-bottom-half -override LIBC_BOTTOM_HALF_CLOUDLIBC_SRC = $(LIBC_BOTTOM_HALF_DIR)/cloudlibc/src -override LIBC_BOTTOM_HALF_CLOUDLIBC_SRC_INC = $(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC)/include -override LIBC_BOTTOM_HALF_HEADERS_PUBLIC = $(LIBC_BOTTOM_HALF_DIR)/headers/public -override LIBC_BOTTOM_HALF_HEADERS_PRIVATE = $(LIBC_BOTTOM_HALF_DIR)/headers/private -override LIBC_BOTTOM_HALF_LIBPREOPEN_DIR = $(LIBC_BOTTOM_HALF_DIR)/libpreopen -override LIBC_BOTTOM_HALF_SOURCES = $(LIBC_BOTTOM_HALF_DIR)/sources -override LIBC_BOTTOM_HALF_ALL_SOURCES = \ +DLMALLOC_DIR = $(CURDIR)/dlmalloc +DLMALLOC_SRC_DIR = $(DLMALLOC_DIR)/src +DLMALLOC_SOURCES = $(DLMALLOC_SRC_DIR)/dlmalloc.c +DLMALLOC_INC = $(DLMALLOC_DIR)/include +LIBC_BOTTOM_HALF_DIR = $(CURDIR)/libc-bottom-half +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_HEADERS_PUBLIC = $(LIBC_BOTTOM_HALF_DIR)/headers/public +LIBC_BOTTOM_HALF_HEADERS_PRIVATE = $(LIBC_BOTTOM_HALF_DIR)/headers/private +LIBC_BOTTOM_HALF_LIBPREOPEN_DIR = $(LIBC_BOTTOM_HALF_DIR)/libpreopen +LIBC_BOTTOM_HALF_SOURCES = $(LIBC_BOTTOM_HALF_DIR)/sources +LIBC_BOTTOM_HALF_ALL_SOURCES = \ $(shell find $(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC) -name \*.c) \ $(LIBC_BOTTOM_HALF_LIBPREOPEN_DIR)/libpreopen.c \ $(shell find $(LIBC_BOTTOM_HALF_SOURCES) -name \*.c) -override LIBWASI_EMULATED_MMAN_SOURCES = \ +LIBWASI_EMULATED_MMAN_SOURCES = \ $(shell find $(LIBC_BOTTOM_HALF_DIR)/mman -name \*.c) -override LIBC_BOTTOM_HALF_CRT_SOURCES = $(wildcard $(LIBC_BOTTOM_HALF_DIR)/crt/*.c) -override LIBC_TOP_HALF_DIR = $(CURDIR)/libc-top-half -override LIBC_TOP_HALF_MUSL_DIR = $(LIBC_TOP_HALF_DIR)/musl -override LIBC_TOP_HALF_MUSL_SRC_DIR = $(LIBC_TOP_HALF_MUSL_DIR)/src -override LIBC_TOP_HALF_MUSL_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include -override LIBC_TOP_HALF_MUSL_SOURCES = \ +LIBC_BOTTOM_HALF_CRT_SOURCES = $(wildcard $(LIBC_BOTTOM_HALF_DIR)/crt/*.c) +LIBC_TOP_HALF_DIR = $(CURDIR)/libc-top-half +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_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include +LIBC_TOP_HALF_MUSL_SOURCES = \ $(addprefix $(LIBC_TOP_HALF_MUSL_SRC_DIR)/, \ misc/a64l.c \ misc/basename.c misc/dirname.c \ @@ -136,93 +139,93 @@ override LIBC_TOP_HALF_MUSL_SOURCES = \ %/cimagf.c %/cimag.c, \ $(wildcard $(LIBC_TOP_HALF_MUSL_SRC_DIR)/complex/*.c)) \ $(wildcard $(LIBC_TOP_HALF_MUSL_SRC_DIR)/crypt/*.c) -override MUSL_PRINTSCAN_SOURCES = \ +MUSL_PRINTSCAN_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/internal/floatscan.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfprintf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfwprintf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdio/vfscanf.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdlib/strtod.c \ $(LIBC_TOP_HALF_MUSL_SRC_DIR)/stdlib/wcstod.c -override LIBC_TOP_HALF_HEADERS_PRIVATE = $(LIBC_TOP_HALF_DIR)/headers/private -override LIBC_TOP_HALF_SOURCES = $(LIBC_TOP_HALF_DIR)/sources -override LIBC_TOP_HALF_ALL_SOURCES = \ +LIBC_TOP_HALF_HEADERS_PRIVATE = $(LIBC_TOP_HALF_DIR)/headers/private +LIBC_TOP_HALF_SOURCES = $(LIBC_TOP_HALF_DIR)/sources +LIBC_TOP_HALF_ALL_SOURCES = \ $(LIBC_TOP_HALF_MUSL_SOURCES) \ $(shell find $(LIBC_TOP_HALF_SOURCES) -name \*.c) # Set the target. -override WASM_CFLAGS += --target=$(TARGET_TRIPLE) +WASM_CFLAGS += --target=$(TARGET_TRIPLE) # WebAssembly floating-point match doesn't trap. # TODO: Add -fno-signaling-nans when the compiler supports it. -override WASM_CFLAGS += -fno-trapping-math +WASM_CFLAGS += -fno-trapping-math # Configure support for threads. ifeq ($(THREAD_MODEL), single) -override WASM_CFLAGS += -mthread-model single +WASM_CFLAGS += -mthread-model single endif ifeq ($(THREAD_MODEL), posix) -override WASM_CFLAGS += -mthread-model posix -pthread +WASM_CFLAGS += -mthread-model posix -pthread endif # Set the sysroot. -override WASM_CFLAGS += --sysroot="$(SYSROOT)" +WASM_CFLAGS += --sysroot="$(SYSROOT)" # These variables describe the locations of various files and directories in # the build tree. -override objs = $(patsubst $(CURDIR)/%.c,$(OBJDIR)/%.o,$(1)) -override BASICS_OBJS = $(call objs,$(BASICS_SOURCES)) -override DLMALLOC_OBJS = $(call objs,$(DLMALLOC_SOURCES)) -override LIBC_BOTTOM_HALF_ALL_OBJS = $(call objs,$(LIBC_BOTTOM_HALF_ALL_SOURCES)) -override LIBC_TOP_HALF_ALL_OBJS = $(call objs,$(LIBC_TOP_HALF_ALL_SOURCES)) -override LIBC_OBJS := $(BASICS_OBJS) +objs = $(patsubst $(CURDIR)/%.c,$(OBJDIR)/%.o,$(1)) +BASICS_OBJS = $(call objs,$(BASICS_SOURCES)) +DLMALLOC_OBJS = $(call objs,$(DLMALLOC_SOURCES)) +LIBC_BOTTOM_HALF_ALL_OBJS = $(call objs,$(LIBC_BOTTOM_HALF_ALL_SOURCES)) +LIBC_TOP_HALF_ALL_OBJS = $(call objs,$(LIBC_TOP_HALF_ALL_SOURCES)) +LIBC_OBJS := $(BASICS_OBJS) ifeq ($(BUILD_DLMALLOC),yes) -override LIBC_OBJS += $(DLMALLOC_OBJS) +LIBC_OBJS += $(DLMALLOC_OBJS) endif ifeq ($(BUILD_LIBC_BOTTOM_HALF),yes) # Override basics' string.o with libc-bottom-half's. -override LIBC_OBJS := $(filter-out %/string.o,$(LIBC_OBJS)) +LIBC_OBJS := $(filter-out %/string.o,$(LIBC_OBJS)) # Add libc-bottom-half's objects. -override LIBC_OBJS += $(LIBC_BOTTOM_HALF_ALL_OBJS) +LIBC_OBJS += $(LIBC_BOTTOM_HALF_ALL_OBJS) endif ifeq ($(BUILD_LIBC_TOP_HALF),yes) # Override libc-bottom-half's string.o with libc-top-half's. -override LIBC_OBJS := $(filter-out %/string.o,$(LIBC_OBJS)) +LIBC_OBJS := $(filter-out %/string.o,$(LIBC_OBJS)) # Override libc-bottom-half's qsort.o with libc-top-half's. -override LIBC_OBJS := $(filter-out %/qsort.o,$(LIBC_OBJS)) +LIBC_OBJS := $(filter-out %/qsort.o,$(LIBC_OBJS)) # libc-top-half is musl. -override LIBC_OBJS += $(LIBC_TOP_HALF_ALL_OBJS) +LIBC_OBJS += $(LIBC_TOP_HALF_ALL_OBJS) endif -override MUSL_PRINTSCAN_OBJS = $(call objs,$(MUSL_PRINTSCAN_SOURCES)) -override MUSL_PRINTSCAN_LONG_DOUBLE_OBJS = $(patsubst %.o,%.long-double.o,$(MUSL_PRINTSCAN_OBJS)) -override MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS = $(patsubst %.o,%.no-floating-point.o,$(MUSL_PRINTSCAN_OBJS)) -override LIBWASI_EMULATED_MMAN_OBJS = $(call objs,$(LIBWASI_EMULATED_MMAN_SOURCES)) +MUSL_PRINTSCAN_OBJS = $(call objs,$(MUSL_PRINTSCAN_SOURCES)) +MUSL_PRINTSCAN_LONG_DOUBLE_OBJS = $(patsubst %.o,%.long-double.o,$(MUSL_PRINTSCAN_OBJS)) +MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS = $(patsubst %.o,%.no-floating-point.o,$(MUSL_PRINTSCAN_OBJS)) +LIBWASI_EMULATED_MMAN_OBJS = $(call objs,$(LIBWASI_EMULATED_MMAN_SOURCES)) # These variables describe the locations of various files and # directories in the generated sysroot tree. -override SYSROOT_LIB := $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) -override SYSROOT_INC = $(SYSROOT)/include -override SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) +SYSROOT_LIB := $(SYSROOT)/lib/$(MULTIARCH_TRIPLE) +SYSROOT_INC = $(SYSROOT)/include +SYSROOT_SHARE = $(SYSROOT)/share/$(MULTIARCH_TRIPLE) # Files from musl's include directory that we don't want to install in the # sysroot's include directory. -override MUSL_OMIT_HEADERS := +MUSL_OMIT_HEADERS := # Remove files which aren't headers (we generate alltypes.h below). -override MUSL_OMIT_HEADERS += \ +MUSL_OMIT_HEADERS += \ "bits/syscall.h.in" \ "bits/alltypes.h.in" \ "alltypes.h.in" # Use the compiler's version of these headers. -override MUSL_OMIT_HEADERS += \ +MUSL_OMIT_HEADERS += \ "stdarg.h" \ "stddef.h" # Use the WASI errno definitions. -override MUSL_OMIT_HEADERS += \ +MUSL_OMIT_HEADERS += \ "bits/errno.h" # Remove headers that aren't supported yet or that aren't relevant for WASI. -override MUSL_OMIT_HEADERS += \ +MUSL_OMIT_HEADERS += \ "sys/procfs.h" \ "sys/user.h" \ "sys/kd.h" "sys/vt.h" "sys/soundcard.h" "sys/sem.h" \ @@ -284,7 +287,7 @@ override MUSL_OMIT_HEADERS += \ ifeq ($(THREAD_MODEL), single) # Remove headers not supported in single-threaded mode. -override MUSL_OMIT_HEADERS += "aio.h" "pthread.h" +MUSL_OMIT_HEADERS += "aio.h" "pthread.h" endif default: finish @@ -308,11 +311,11 @@ $(SYSROOT_LIB)/libwasi-emulated-mman.a: $(LIBWASI_EMULATED_MMAN_OBJS) # silently dropping the tail. $(WASM_AR) crs $@ $(wordlist 800, 100000, $^) -$(MUSL_PRINTSCAN_OBJS): override WASM_CFLAGS += \ +$(MUSL_PRINTSCAN_OBJS): WASM_CFLAGS += \ -D__wasilibc_printscan_no_long_double \ -D__wasilibc_printscan_full_support_option="\"add -lc-printscan-long-double to the link command\"" -$(MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS): override WASM_CFLAGS += \ +$(MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS): WASM_CFLAGS += \ -D__wasilibc_printscan_no_floating_point \ -D__wasilibc_printscan_floating_point_support_option="\"remove -lc-printscan-no-floating-point from the link command\"" @@ -330,15 +333,15 @@ $(OBJDIR)/%.o: $(CURDIR)/%.c include_dirs -include $(shell find $(OBJDIR) -name \*.d) -$(DLMALLOC_OBJS): override WASM_CFLAGS += \ +$(DLMALLOC_OBJS): WASM_CFLAGS += \ -I$(DLMALLOC_INC) -startup_files $(LIBC_BOTTOM_HALF_ALL_OBJS): override WASM_CFLAGS += \ +startup_files $(LIBC_BOTTOM_HALF_ALL_OBJS): WASM_CFLAGS += \ -I$(LIBC_BOTTOM_HALF_HEADERS_PRIVATE) \ -I$(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC_INC) \ -I$(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC) -$(LIBC_TOP_HALF_ALL_OBJS) $(MUSL_PRINTSCAN_LONG_DOUBLE_OBJS) $(MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS): override WASM_CFLAGS += \ +$(LIBC_TOP_HALF_ALL_OBJS) $(MUSL_PRINTSCAN_LONG_DOUBLE_OBJS) $(MUSL_PRINTSCAN_NO_FLOATING_POINT_OBJS): WASM_CFLAGS += \ -I$(LIBC_TOP_HALF_MUSL_SRC_DIR)/include \ -I$(LIBC_TOP_HALF_MUSL_SRC_DIR)/internal \ -I$(LIBC_TOP_HALF_MUSL_DIR)/arch/wasm32 \ @@ -379,9 +382,9 @@ include_dirs: $(RM) $(patsubst %,$(SYSROOT_INC)/%,$(MUSL_OMIT_HEADERS)) ifeq ($(BUILD_LIBC_BOTTOM_HALF),no) -override CRT_SOURCES = $(BASICS_CRT_SOURCES) +CRT_SOURCES = $(BASICS_CRT_SOURCES) else -override CRT_SOURCES = $(LIBC_BOTTOM_HALF_CRT_SOURCES) +CRT_SOURCES = $(LIBC_BOTTOM_HALF_CRT_SOURCES) endif startup_files: include_dirs From 9f0662b6ea47d487081dfe9f6427940e7f8459bb Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 18 Mar 2020 14:38:28 -0700 Subject: [PATCH 11/11] Put source file names on their own lines. --- Makefile | 74 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index c03a90a9a..22b7d37c5 100644 --- a/Makefile +++ b/Makefile @@ -70,36 +70,70 @@ LIBC_TOP_HALF_MUSL_INC = $(LIBC_TOP_HALF_MUSL_DIR)/include LIBC_TOP_HALF_MUSL_SOURCES = \ $(addprefix $(LIBC_TOP_HALF_MUSL_SRC_DIR)/, \ misc/a64l.c \ - misc/basename.c misc/dirname.c \ - misc/ffs.c misc/ffsl.c misc/ffsll.c \ + misc/basename.c \ + misc/dirname.c \ + misc/ffs.c \ + misc/ffsl.c \ + misc/ffsll.c \ misc/fmtmsg.c \ - misc/getdomainname.c misc/gethostid.c \ - misc/getopt.c misc/getopt_long.c \ + misc/getdomainname.c \ + misc/gethostid.c \ + misc/getopt.c \ + misc/getopt_long.c \ misc/getsubopt.c \ misc/uname.c \ misc/nftw.c \ errno/strerror.c \ - network/htonl.c network/htons.c network/ntohl.c network/ntohs.c \ - network/inet_ntop.c network/inet_pton.c network/inet_aton.c \ - network/in6addr_any.c network/in6addr_loopback.c \ - fenv/fenv.c fenv/fesetround.c fenv/feupdateenv.c \ - fenv/fesetexceptflag.c fenv/fegetexceptflag.c fenv/feholdexcept.c \ - exit/exit.c exit/atexit.c exit/assert.c \ - exit/quick_exit.c exit/at_quick_exit.c \ - time/strftime.c time/asctime.c time/asctime_r.c \ - time/ctime.c time/ctime_r.c \ - time/wcsftime.c time/strptime.c time/difftime.c \ - time/timegm.c time/ftime.c time/gmtime.c time/gmtime_r.c \ + network/htonl.c \ + network/htons.c \ + network/ntohl.c \ + network/ntohs.c \ + network/inet_ntop.c \ + network/inet_pton.c \ + network/inet_aton.c \ + network/in6addr_any.c \ + network/in6addr_loopback.c \ + fenv/fenv.c \ + fenv/fesetround.c \ + fenv/feupdateenv.c \ + fenv/fesetexceptflag.c \ + fenv/fegetexceptflag.c \ + fenv/feholdexcept.c \ + exit/exit.c \ + exit/atexit.c \ + exit/assert.c \ + exit/quick_exit.c \ + exit/at_quick_exit.c \ + time/strftime.c \ + time/asctime.c \ + time/asctime_r.c \ + time/ctime.c \ + time/ctime_r.c \ + time/wcsftime.c \ + time/strptime.c \ + time/difftime.c \ + time/timegm.c \ + time/ftime.c \ + time/gmtime.c \ + time/gmtime_r.c \ time/timespec_get.c \ time/getdate.c \ - time/localtime.c time/localtime_r.c \ + time/localtime.c \ + time/localtime_r.c \ time/mktime.c \ - time/__tm_to_secs.c time/__month_to_secs.c \ - time/__secs_to_tm.c time/__year_to_secs.c \ + time/__tm_to_secs.c \ + time/__month_to_secs.c \ + time/__secs_to_tm.c \ + time/__year_to_secs.c \ time/__tz.c \ fcntl/creat.c \ - dirent/alphasort.c dirent/versionsort.c \ - env/clearenv.c env/getenv.c env/putenv.c env/setenv.c env/unsetenv.c \ + dirent/alphasort.c \ + dirent/versionsort.c \ + env/clearenv.c \ + env/getenv.c \ + env/putenv.c \ + env/setenv.c \ + env/unsetenv.c \ unistd/posix_close.c \ ) \ $(filter-out %/procfdname.c %/syscall.c %/syscall_ret.c %/vdso.c %/version.c, \