diff --git a/Makefile b/Makefile index 9ef144a..d15d08a 100644 --- a/Makefile +++ b/Makefile @@ -177,9 +177,9 @@ else if [ -x /bin/bash ]; then echo /bin/bash; \ else echo sh; fi ; fi) -HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS) -HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS) -HOST_LFS_LIBS := $(shell getconf LFS_LIBS) +HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null) +HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null) +HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null) HOSTCC = gcc HOSTCXX = g++ diff --git a/defaultenv/Makefile b/defaultenv/Makefile index 950ac29..e030355 100644 --- a/defaultenv/Makefile +++ b/defaultenv/Makefile @@ -20,7 +20,8 @@ quiet_cmd_env_h = ENVH $@ cmd_env_h = cat $< | (cd $(obj) && $(objtree)/scripts/bin2c "__aligned(4) default_environment") > $@; \ - echo "static const int default_environment_uncompress_size=`stat -c%s $(obj)/barebox_default_env`;" >> $@ + echo "static const int default_environment_uncompress_size=`${CONFIG_SHELL} \"${srctree}/scripts/file-size.sh\" $(obj)/barebox_default_env`;" >> $@ + $(obj)/barebox_default_env.h: $(obj)/barebox_default_env$(DEFAULT_COMPRESSION_SUFFIX) FORCE $(call if_changed,env_h) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 95eaf52..87bff2d 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -341,7 +341,7 @@ size_append = printf $(shell \ dec_size=0; \ for F in $1; do \ - fsize=$$(stat -c "%s" $$F); \ + fsize=$$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" $$F);\ dec_size=$$(expr $$dec_size + $$fsize); \ done; \ printf "%08x\n" $$dec_size | \ @@ -446,7 +446,7 @@ # Check size of a file quiet_cmd_check_file_size = CHKFILESIZE $2 cmd_check_file_size = set -e; \ - size=`stat -c%s $2`; \ + size=`${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" $2`; \ max_size=`printf "%d" $3`; \ if [ $$size -gt $$max_size ] ; \ then \ diff --git a/scripts/bareboxcrc32.c b/scripts/bareboxcrc32.c index e00ffaf..1b105a4 100644 --- a/scripts/bareboxcrc32.c +++ b/scripts/bareboxcrc32.c @@ -38,7 +38,7 @@ int main(int argc, char *argv[]) { - loff_t start = 0, size = ~0; + ulong start = 0, size = ~0; ulong crc = 0, total = 0; char *filename = NULL; int i; diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c index 7d4cbeb..5ef9183 100644 --- a/scripts/bareboximd.c +++ b/scripts/bareboximd.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -58,7 +57,7 @@ return -EINVAL; } -static int read_file_2(const char *filename, size_t *size, void **outbuf, loff_t max_size) +static int read_file_2(const char *filename, size_t *size, void **outbuf, size_t max_size) { off_t fsize; ssize_t rsize; diff --git a/scripts/check_size b/scripts/check_size index 54f02a6..8530435 100755 --- a/scripts/check_size +++ b/scripts/check_size @@ -5,7 +5,7 @@ max="$3" # extract symbol offset from file, remove leading zeros -ofs=$(nm -t d $file | grep "$symbol" | cut -d ' ' -f1 | sed "s/^[0]*//") +ofs=$(${CROSS_COMPILE}nm -t d $file | grep "$symbol" | cut -d ' ' -f1 | sed "s/^[0]*//") if [ -z "${ofs}" ]; then echo "symbol $symbol not found in $file" diff --git a/scripts/compiler.h b/scripts/compiler.h index 4cf179b..0ad25f9 100644 --- a/scripts/compiler.h +++ b/scripts/compiler.h @@ -13,8 +13,6 @@ defined(__sun__) || \ defined(__APPLE__) # include -#elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__) -# include #endif #include @@ -40,16 +38,38 @@ #define O_BINARY 0 #endif -#ifdef __linux__ -# include -# include -#elif defined(__MACH__) -# include -# define __BYTE_ORDER BYTE_ORDER -# define __LITTLE_ENDIAN LITTLE_ENDIAN -# define __BIG_ENDIAN BIG_ENDIAN +#if defined(__MACH__) +# ifdef __APPLE__ +# include +# define htobe16(x) OSSwapHostToBigInt16(x) +# define htole16(x) OSSwapHostToLittleInt16(x) +# define be16toh(x) OSSwapBigToHostInt16(x) +# define le16toh(x) OSSwapLittleToHostInt16(x) +# define htobe32(x) OSSwapHostToBigInt32(x) +# define htole32(x) OSSwapHostToLittleInt32(x) +# define be32toh(x) OSSwapBigToHostInt32(x) +# define le32toh(x) OSSwapLittleToHostInt32(x) +# define htobe64(x) OSSwapHostToBigInt64(x) +# define htole64(x) OSSwapHostToLittleInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) +# define le64toh(x) OSSwapLittleToHostInt64(x) +# else /* non apple __MACH__ */ +# include +# endif /* __APPLE__ */ typedef unsigned long ulong; typedef unsigned int uint; +#elif defined(__OpenBSD__) || defined(__FreeBSD__) || \ + defined(__NetBSD__) || defined(__DragonFly__) +# include +#else /* assume Linux */ +# include +# include +#endif + +#if defined(__BYTE_ORDER) && !defined(BYTE_ORDER) +# define __BYTE_ORDER BYTE_ORDER +# define __BIG_ENDIAN BIG_ENDIAN +# define __LITTLE_ENDIAN LITTLE_ENDIAN #endif typedef uint8_t __u8; diff --git a/scripts/extract_symbol_offset b/scripts/extract_symbol_offset index 1a1260f..78b8668 100755 --- a/scripts/extract_symbol_offset +++ b/scripts/extract_symbol_offset @@ -4,7 +4,7 @@ file="$2" # extract symbol offset from file, remove leading zeros -ofs=$(nm -t d $file | grep "$symbol" | cut -d ' ' -f1 | sed "s/^[0]*//") +ofs=$(${CROSS_COMPILE}nm -t d $file | grep "$symbol" | cut -d ' ' -f1 | sed "s/^[0]*//") if [ -z "${ofs}" ]; then echo "symbol $symbol not found in $file" diff --git a/scripts/file-size.sh b/scripts/file-size.sh new file mode 100755 index 0000000..7eb7423 --- /dev/null +++ b/scripts/file-size.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +set -- $(ls -dn "$1") +printf '%s\n' "$5" diff --git a/scripts/fix_size.c b/scripts/fix_size.c index cb074e3..e33edec 100644 --- a/scripts/fix_size.c +++ b/scripts/fix_size.c @@ -9,7 +9,8 @@ #include #include #include -#include + +#include "compiler.h" int main(int argc, char**argv) { diff --git a/scripts/gen-dtb-s b/scripts/gen-dtb-s index 307b1f6..b2dd253 100755 --- a/scripts/gen-dtb-s +++ b/scripts/gen-dtb-s @@ -55,8 +55,8 @@ if [ $? != 0 ]; then exit 1 fi -compressed=$(stat $dtb.lzo -c "%s") -uncompressed=$(stat $dtb -c "%s") +compressed=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" $dtb.lzo) +uncompressed=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" $dtb) echo ".section .dtbz.rodata.${name},\"a\"" echo ".balign STRUCT_ALIGNMENT" diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c index 90be8a9..6a258bd 100644 --- a/scripts/imx/imx-image.c +++ b/scripts/imx/imx-image.c @@ -26,10 +26,10 @@ #include #include #include -#include #include #include #include +#include "../compiler.h" #include "imx.h" diff --git a/scripts/imx/imx-usb-loader.c b/scripts/imx/imx-usb-loader.c index e3d3b8f..70883bf 100644 --- a/scripts/imx/imx-usb-loader.c +++ b/scripts/imx/imx-usb-loader.c @@ -26,16 +26,15 @@ #include #include -#include #include #include #include #include #include -#include #include #include +#include "../compiler.h" #include "imx.h" #define get_min(a, b) (((a) < (b)) ? (a) : (b)) diff --git a/scripts/include/linux/err.h b/scripts/include/linux/err.h index bdc3dd8..9982ab1 100644 --- a/scripts/include/linux/err.h +++ b/scripts/include/linux/err.h @@ -4,7 +4,7 @@ #include #include -#include +#include /* * Original kernel header comment: diff --git a/scripts/include/linux/string.h b/scripts/include/linux/string.h index e26223f..649287b 100644 --- a/scripts/include/linux/string.h +++ b/scripts/include/linux/string.h @@ -8,7 +8,11 @@ int strtobool(const char *s, bool *res); -#ifndef __UCLIBC__ +/* + * glibc based builds needs the extern while uClibc doesn't. + * However uClibc headers also define __GLIBC__ hence the hack below + */ +#if defined(__GLIBC) && !defined(__UCLIBC__) extern size_t strlcpy(char *dest, const char *src, size_t size); #endif diff --git a/scripts/include/linux/types.h b/scripts/include/linux/types.h index 8ebf627..e81d7e8 100644 --- a/scripts/include/linux/types.h +++ b/scripts/include/linux/types.h @@ -5,8 +5,18 @@ #include #include -#define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ -#include +typedef uint64_t __u64; +typedef int64_t __s64; +typedef uint32_t __u32; +typedef int32_t __s32; +typedef uint16_t __u16; +typedef int16_t __s16; +typedef uint8_t __u8; +typedef int8_t __s8; + +#ifndef __linux__ +typedef long long loff_t; +#endif struct page; struct kmem_cache; diff --git a/scripts/kwbimage.c b/scripts/kwbimage.c index 2a052a7..6ba4aba 100644 --- a/scripts/kwbimage.c +++ b/scripts/kwbimage.c @@ -860,12 +860,16 @@ ret = stat(binarye->binary.file, &s); if (ret < 0) { - char *cwd = get_current_dir_name(); + char *buf, *cwd = NULL; + size_t size = (size_t)pathconf(".", _PC_PATH_MAX); + buf = malloc(size); + if (buf) + cwd = getcwd(buf, size); fprintf(stderr, "Didn't find the file '%s' in '%s' which is mandatory to generate the image\n" "This file generally contains the DDR3 training code, and should be extracted from an existing bootable\n" "image for your board. See 'kwbimage -x' to extract it from an existing image.\n", - binarye->binary.file, cwd); + binarye->binary.file, cwd ? cwd : "current working directory"); free(cwd); return NULL; } diff --git a/scripts/mkimage.c b/scripts/mkimage.c index 891d7b6..7d283c5 100644 --- a/scripts/mkimage.c +++ b/scripts/mkimage.c @@ -572,7 +572,11 @@ } /* We're a bit of paranoid */ -#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) +#if defined(_POSIX_SYNCHRONIZED_IO) && \ + !defined(__sun__) && \ + !defined(__FreeBSD__) && \ + !defined(__OpenBSD__) && \ + !defined(__APPLE__) (void) fdatasync (ifd); #else (void) fsync (ifd); @@ -622,7 +626,11 @@ (void) munmap((void *)ptr, sbuf.st_size); /* We're a bit of paranoid */ -#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) +#if defined(_POSIX_SYNCHRONIZED_IO) && \ + !defined(__sun__) && \ + !defined(__FreeBSD__) && \ + !defined(__OpenBSD__) && \ + !defined(__APPLE__) (void) fdatasync (ifd); #else (void) fsync (ifd); diff --git a/scripts/omap3-usb-loader.c b/scripts/omap3-usb-loader.c index 3ba9af0..ae6f125 100644 --- a/scripts/omap3-usb-loader.c +++ b/scripts/omap3-usb-loader.c @@ -33,10 +33,6 @@ #define OMAP_IS_BIG_ENDIAN #endif -#ifdef OMAP_IS_BIG_ENDIAN -#include -#endif - #include /* for usleep and friends */ #include #include @@ -403,7 +399,7 @@ data = file->data; dbuf = data; - if (le32toh(dbuf[5]) == 0x45534843) { + if (le32_to_cpu(dbuf[5]) == 0x45534843) { int chsettingssize = 512 + 2 * sizeof(uint32_t); log_info("CHSETTINGS image detected. Skipping header\n");