diff --git a/Makefile b/Makefile index 7b57cc9..d43e73b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -OUTPUT = $(PWD)/output +OUTPUT = $(CURDIR)/output SOURCES = sources CONFIG_SUB_REV = 3d5db9ebe860 @@ -26,6 +26,8 @@ LINUX_SITE = https://cdn.kernel.org/pub/linux/kernel BUILD_DIR = build-$(TARGET) +HTTP_GET = wget -c -O $(2) $(1) + -include config.mak SRC_DIRS = gcc-$(GCC_VER) binutils-$(BINUTILS_VER) musl-$(MUSL_VER) \ @@ -65,17 +67,17 @@ $(SOURCES): $(SOURCES)/config.sub: | $(SOURCES) mkdir -p $@.tmp - cd $@.tmp && wget -c -O $(notdir $@) "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=$(CONFIG_SUB_REV)" + cd $@.tmp && $(call HTTP_GET,"http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=$(CONFIG_SUB_REV)",$(notdir $@)) cd $@.tmp && touch $(notdir $@) - cd $@.tmp && sha1sum -c $(PWD)/hashes/$(notdir $@).$(CONFIG_SUB_REV).sha1 + cd $@.tmp && sha1sum -c $(CURDIR)/hashes/$(notdir $@).$(CONFIG_SUB_REV).sha1 mv $@.tmp/$(notdir $@) $@ rm -rf $@.tmp $(SOURCES)/%: hashes/%.sha1 | $(SOURCES) mkdir -p $@.tmp - cd $@.tmp && wget -c -O $(notdir $@) $(SITE)/$(notdir $@) + cd $@.tmp && $(call HTTP_GET,$(SITE)/$(notdir $@),$(notdir $@)) cd $@.tmp && touch $(notdir $@) - cd $@.tmp && sha1sum -c $(PWD)/hashes/$(notdir $@).sha1 + cd $@.tmp && sha1sum -c $(CURDIR)/hashes/$(notdir $@).sha1 mv $@.tmp/$(notdir $@) $@ rm -rf $@.tmp @@ -143,7 +145,7 @@ $(BUILD_DIR)/Makefile: | $(BUILD_DIR) ln -sf ../litecross/Makefile $@ $(BUILD_DIR)/config.mak: | $(BUILD_DIR) - printf >$@ -- '%s\n' \ + printf >$@ '%s\n' \ "MUSL_SRCDIR = ../musl-$(MUSL_VER)" \ "GCC_SRCDIR = ../gcc-$(GCC_VER)" \ "BINUTILS_SRCDIR = ../binutils-$(BINUTILS_VER)" \ diff --git a/config.mak.dist b/config.mak.dist index ccbc194..fcdaad6 100644 --- a/config.mak.dist +++ b/config.mak.dist @@ -41,6 +41,11 @@ # ISL_VER = # LINUX_VER = +# By default source archives are downloaded with wget. curl is also an option. + +# HTTP_GET = wget -c -O $(2) $(1) +# HTTP_GET = curl -C - -L -o $(2) $(1) + # Something like the following can be used to produce a static-linked # toolchain that's deployable to any system with matching arch, using # an existing musl-targeted cross compiler. This only # works if the @@ -64,4 +69,4 @@ # target libraries with the following, but then gdb needs to be told # where to look for source files. -# COMMON_CONFIG += --with-debug-prefix-map=$(PWD)= +# COMMON_CONFIG += --with-debug-prefix-map=$(CURDIR)= diff --git a/litecross/Makefile b/litecross/Makefile index d3c065a..3a91b1c 100644 --- a/litecross/Makefile +++ b/litecross/Makefile @@ -1,5 +1,5 @@ -OUTPUT = $(PWD)/output +OUTPUT = $(CURDIR)/output BINUTILS_SRCDIR = BINUTILS_SRCDIR_not_set GCC_SRCDIR = GCC_SRCDIR_not_set @@ -51,7 +51,6 @@ FULL_TOOLCHAIN_CONFIG = --enable-languages=c,c++ \ --target=$(TARGET) --prefix= \ --libdir=/lib --disable-multilib \ --with-sysroot=$(SYSROOT) \ - --with-build-sysroot=$(PWD)/obj_sysroot \ --enable-tls \ --disable-libmudflap --disable-libsanitizer \ --disable-gnu-indirect-function \ @@ -63,9 +62,12 @@ FULL_MUSL_CONFIG = $(MUSL_CONFIG) \ ifeq ($(NATIVE),) SYSROOT = /$(TARGET) +FULL_TOOLCHAIN_CONFIG += --with-build-sysroot=$(CURDIR)/obj_sysroot FULL_MUSL_CONFIG += CC="$(XGCC)" LIBCC="../obj_toolchain/$(TARGET)/libgcc/libgcc.a" MUSL_VARS = AR=../obj_toolchain/binutils/ar RANLIB=../obj_toolchain/binutils/ranlib +obj_musl/.lc_configured: | obj_toolchain/gcc/.lc_built obj_musl/.lc_built: | obj_toolchain/$(TARGET)/libgcc/libgcc.a +obj_toolchain/gcc/.lc_built: | obj_sysroot/usr obj_sysroot/lib64 obj_sysroot/include obj_toolchain/.lc_built: | obj_sysroot/.lc_libs obj_sysroot/.lc_headers else SYSROOT = / @@ -153,16 +155,16 @@ obj_toolchain/.lc_configured: | obj_toolchain src_toolchain cd obj_toolchain && ../src_toolchain/configure $(FULL_TOOLCHAIN_CONFIG) touch $@ -obj_toolchain/gcc/.lc_built: | obj_toolchain/.lc_configured obj_sysroot/usr obj_sysroot/lib64 obj_sysroot/include +obj_toolchain/gcc/.lc_built: | obj_toolchain/.lc_configured cd obj_toolchain && $(MAKE) MAKE="$(MAKE)" all-gcc touch $@ -obj_musl/.lc_configured: | obj_toolchain/gcc/.lc_built obj_musl src_musl +obj_musl/.lc_configured: | obj_musl src_musl cd obj_musl && ../src_musl/configure $(FULL_MUSL_CONFIG) touch $@ obj_sysroot/.lc_headers: | obj_musl/.lc_configured obj_sysroot - cd obj_musl && $(MAKE) DESTDIR=$(PWD)/obj_sysroot install-headers + cd obj_musl && $(MAKE) DESTDIR=$(CURDIR)/obj_sysroot install-headers touch $@ obj_toolchain/$(TARGET)/libgcc/.lc_configured: | obj_sysroot/.lc_headers @@ -177,7 +179,7 @@ obj_musl/.lc_built: | obj_musl/.lc_configured touch $@ obj_sysroot/.lc_libs: | obj_musl/.lc_built - cd obj_musl && $(MAKE) $(MUSL_VARS) DESTDIR=$(PWD)/obj_sysroot install + cd obj_musl && $(MAKE) $(MUSL_VARS) DESTDIR=$(CURDIR)/obj_sysroot install touch $@ obj_toolchain/.lc_built: | obj_toolchain/.lc_configured obj_toolchain/gcc/.lc_built @@ -203,8 +205,9 @@ kernel-headers: | obj_kernel_headers/.lc_built src_kernel_headers: | $(LINUX_SRCDIR) ln -sf "$(LINUX_SRCDIR)" $@ obj_kernel_headers/.lc_built: | src_kernel_headers - mkdir -p $(PWD)/obj_kernel_headers/staged - cd src_kernel_headers && $(MAKE) ARCH=$(LINUX_ARCH) O=$(PWD)/obj_kernel_headers INSTALL_HDR_PATH=$(PWD)/obj_kernel_headers/staged headers_install + mkdir -p $(CURDIR)/obj_kernel_headers/staged + cd src_kernel_headers && $(MAKE) $(KERNEL_VARS) ARCH=$(LINUX_ARCH) O=$(CURDIR)/obj_kernel_headers INSTALL_HDR_PATH=$(CURDIR)/obj_kernel_headers/staged headers_install + find obj_kernel_headers/staged/include '(' -name .install -o -name ..install.cmd ')' -exec rm {} + touch $@ install-kernel-headers: | obj_kernel_headers/.lc_built mkdir -p $(DESTDIR)$(OUTPUT)$(SYSROOT)/include diff --git a/patches/linux-4.4.10/0002-Expand-t-escapes-in-sed-expressions.patch b/patches/linux-4.4.10/0002-Expand-t-escapes-in-sed-expressions.patch new file mode 100644 index 0000000..856313a --- /dev/null +++ b/patches/linux-4.4.10/0002-Expand-t-escapes-in-sed-expressions.patch @@ -0,0 +1,33 @@ +From 22cbfa6ae94c9a09ee2ea6b6237d9674be3b7e03 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Tue, 6 Dec 2016 21:43:13 -0800 +Subject: [PATCH] Expand \t escapes in sed expressions + +--- + scripts/headers_install.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh +index fdebd66..a9a9ef2 100755 +--- a/scripts/headers_install.sh ++++ b/scripts/headers_install.sh +@@ -31,12 +31,12 @@ for i in "$@" + do + FILE="$(basename "$i")" + sed -r \ +- -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \ +- -e 's/__attribute_const__([ \t]|$)/\1/g' \ ++ -e 's/([ (])(__user|__force|__iomem)[ ]/\1/g' \ ++ -e 's/__attribute_const__([ ]|$)/\1/g' \ + -e 's@^#include @@' \ + -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \ +- -e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \ +- -e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \ ++ -e 's/(^|[ (])(inline|asm|volatile)([ (]|$)/\1__\2__\3/g' \ ++ -e 's@#(ifndef|define|endif[ ]*/[*])[ ]*_UAPI@#\1 @' \ + "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1 + scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \ + > "$OUTDIR/$FILE" +-- +2.10.2 +