diff options
| -rw-r--r-- | README | 10 | ||||
| -rw-r--r-- | include/image.h | 2 | ||||
| -rw-r--r-- | include/libfdt_env.h | 12 | ||||
| -rw-r--r-- | tools/Makefile | 23 | ||||
| -rw-r--r-- | tools/mingw_support.c | 79 | ||||
| -rw-r--r-- | tools/mingw_support.h | 51 | ||||
| -rw-r--r-- | tools/mkimage.h | 5 | ||||
| -rw-r--r-- | tools/os_support.c | 24 | ||||
| -rw-r--r-- | tools/os_support.h | 29 | ||||
| -rw-r--r-- | tools/ubsha1.c | 3 | 
10 files changed, 231 insertions, 7 deletions
| @@ -2716,6 +2716,16 @@ necessary. For example using the ELDK on a 4xx CPU, please enter:  	$ CROSS_COMPILE=ppc_4xx-  	$ export CROSS_COMPILE +Note: If you wish to generate Windows versions of the utilities in +      the tools directory you can use the MinGW toolchain +      (http://www.mingw.org).  Set your HOST tools to the MinGW +      toolchain and execute 'make tools'.  For example: + +       $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools + +      Binaries such as tools/mkimage.exe will be created which can +      be executed on computers running Windows. +  U-Boot is intended to be simple to build. After installing the  sources you must configure U-Boot for one specific board type. This  is done by typing: diff --git a/include/image.h b/include/image.h index 74a124006..f183757c8 100644 --- a/include/image.h +++ b/include/image.h @@ -34,7 +34,9 @@  #define __IMAGE_H__  #if USE_HOSTCC +#ifndef __MINGW32__  #include <endian.h> +#endif  /* new uImage format support enabled on host */  #define CONFIG_FIT		1 diff --git a/include/libfdt_env.h b/include/libfdt_env.h index ea474a56b..1c67015a4 100644 --- a/include/libfdt_env.h +++ b/include/libfdt_env.h @@ -24,8 +24,13 @@  #ifdef USE_HOSTCC  #include <stdint.h>  #include <string.h> +#ifdef __MINGW32__ +#include <linux/types.h> +#include <linux/byteorder/swab.h> +#else  #include <endian.h>  #include <byteswap.h> +#endif /* __MINGW32__ */  #else  #include <linux/string.h>  #include <linux/types.h> @@ -36,10 +41,17 @@  extern struct fdt_header *working_fdt;  /* Pointer to the working fdt */  #if __BYTE_ORDER == __LITTLE_ENDIAN +#ifdef __MINGW32__ +#define fdt32_to_cpu(x)		___swab32(x) +#define cpu_to_fdt32(x)		___swab32(x) +#define fdt64_to_cpu(x)		___swab64(x) +#define cpu_to_fdt64(x)		___swab64(x) +#else  #define fdt32_to_cpu(x)		bswap_32(x)  #define cpu_to_fdt32(x)		bswap_32(x)  #define fdt64_to_cpu(x)		bswap_64(x)  #define cpu_to_fdt64(x)		bswap_64(x) +#endif  #else  #define fdt32_to_cpu(x)		(x)  #define cpu_to_fdt32(x)		(x) diff --git a/tools/Makefile b/tools/Makefile index 9fe5b1a0f..122e5bb7b 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -46,12 +46,15 @@ else  HOST_CFLAGS += -pedantic  endif +ifeq ($(HOSTOS),cygwin) +HOST_CFLAGS += -ansi +endif +  # -# Cygwin needs .exe files :-( +# toolchains targeting win32 generate .exe files  # -ifeq ($(HOSTOS),cygwin) +ifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null)))  SFX = .exe -HOST_CFLAGS += -ansi  else  SFX =  endif @@ -90,6 +93,7 @@ OBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o  OBJ_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo.o  OBJ_FILES-$(CONFIG_INCA_IP) += inca-swap-bytes.o  OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o +OBJ_FILES-y += os_support.o  # Don't build by default  #ifeq ($(ARCH),ppc) @@ -125,13 +129,15 @@ LIBFDT_OBJS	:= $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y))  #  # Use native tools and options +# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps  #  CPPFLAGS   = -idirafter $(SRCTREE)/include \  		-idirafter $(OBJTREE)/include2 \  		-idirafter $(OBJTREE)/include \  	        -I $(SRCTREE)/libfdt \  		-I $(SRCTREE)/tools \ -		-DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC +		-DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC \ +		-D__KERNEL_STRICT_NAMES  CFLAGS     = $(HOST_CFLAGS) $(CPPFLAGS) -O  # No -pedantic switch to avoid libfdt compilation warnings @@ -147,7 +153,7 @@ all:	$(obj).depend $(BINS) $(LOGO-y) subdirs  $(obj)envcrc$(SFX):	$(obj)envcrc.o $(obj)crc32.o $(obj)env_embedded.o $(obj)sha1.o  	$(CC) $(CFLAGS) -o $@ $^ -$(obj)ubsha1$(SFX):	$(obj)ubsha1.o $(obj)sha1.o +$(obj)ubsha1$(SFX):	$(obj)ubsha1.o $(obj)sha1.o $(obj)os_support.o  	$(CC) $(CFLAGS) -o $@ $^  $(obj)img2srec$(SFX):	$(obj)img2srec.o @@ -155,7 +161,7 @@ $(obj)img2srec$(SFX):	$(obj)img2srec.o  	$(STRIP) $@  $(obj)mkimage$(SFX):	$(obj)mkimage.o $(obj)crc32.o $(obj)image.o $(obj)md5.o \ -			$(obj)sha1.o $(LIBFDT_OBJS) +			$(obj)sha1.o $(LIBFDT_OBJS) $(obj)os_support.o  	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^  	$(STRIP) $@ @@ -183,13 +189,16 @@ $(obj)bin2header$(SFX): $(obj)bin2header.o  	$(CC) $(CFLAGS) $(HOST_LDFLAGS) -o $@ $^  	$(STRIP) $@ -# image.c and mkimage.c require FIT_CFLAGS instead of standard CFLAGS +# Some files complain if compiled with -pedantic, use FIT_CFLAGS  $(obj)image.o: $(SRCTREE)/tools/image.c  	$(CC) -g $(FIT_CFLAGS) -c -o $@ $<  $(obj)mkimage.o: $(SRCTREE)/tools/mkimage.c  	$(CC) -g $(FIT_CFLAGS) -c -o $@ $< +$(obj)os_support.o: $(SRCTREE)/tools/os_support.c +	$(CC) -g $(FIT_CFLAGS) -c -o $@ $< +  # Some of the tool objects need to be accessed from outside the tools directory  $(obj)%.o: $(SRCTREE)/common/%.c  	$(CC) -g $(FIT_CFLAGS) -c -o $@ $< diff --git a/tools/mingw_support.c b/tools/mingw_support.c new file mode 100644 index 000000000..67cd6e115 --- /dev/null +++ b/tools/mingw_support.c @@ -0,0 +1,79 @@ +/* + * Copyright 2008 Extreme Engineering Solutions, Inc. + * + * mmap/munmap implementation derived from: + * Clamav Native Windows Port : mmap win32 compatibility layer + * Copyright (c) 2005-2006 Gianluigi Tiesi <sherpya@netfarm.it> + * Parts by Kees Zeelenberg <kzlg@users.sourceforge.net> (LibGW32C) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this software; if not, write to the + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "mingw_support.h" +#include <stdio.h> +#include <stdint.h> +#include <errno.h> +#include <io.h> + +int fsync(int fd) +{ +	return _commit(fd); +} + +void *mmap(void *addr, size_t len, int prot, int flags, int fd, int offset) +{ +	void *map = NULL; +	HANDLE handle = INVALID_HANDLE_VALUE; +	DWORD cfm_flags = 0, mvf_flags = 0; + +	switch (prot) { +	case PROT_READ | PROT_WRITE: +		cfm_flags = PAGE_READWRITE; +		mvf_flags = FILE_MAP_ALL_ACCESS; +		break; +	case PROT_WRITE: +		cfm_flags = PAGE_READWRITE; +		mvf_flags = FILE_MAP_WRITE; +		break; +	case PROT_READ: +		cfm_flags = PAGE_READONLY; +		mvf_flags = FILE_MAP_READ; +		break; +	default: +		return MAP_FAILED; +	} + +	handle = CreateFileMappingA((HANDLE) _get_osfhandle(fd), NULL, +				cfm_flags, HIDWORD(len), LODWORD(len), NULL); +	if (!handle) +		return MAP_FAILED; + +	map = MapViewOfFile(handle, mvf_flags, HIDWORD(offset), +			LODWORD(offset), len); +	CloseHandle(handle); + +	if (!map) +		return MAP_FAILED; + +	return map; +} + +int munmap(void *addr, size_t len) +{ +	if (!UnmapViewOfFile(addr)) +		return -1; + +	return 0; +} diff --git a/tools/mingw_support.h b/tools/mingw_support.h new file mode 100644 index 000000000..1fb6c9382 --- /dev/null +++ b/tools/mingw_support.h @@ -0,0 +1,51 @@ +/* + * Copyright 2008 Extreme Engineering Solutions, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this software; if not, write to the + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __MINGW_SUPPORT_H_ +#define __WINGW_SUPPORT_H_	1 + +/* Defining __INSIDE_MSYS__ helps to prevent u-boot/mingw overlap */ +#define __INSIDE_MSYS__	1 + +#include <windows.h> + +/* mmap protections */ +#define PROT_READ	0x1		/* Page can be read */ +#define PROT_WRITE	0x2		/* Page can be written */ +#define PROT_EXEC	0x4		/* Page can be executed */ +#define PROT_NONE	0x0		/* Page can not be accessed */ + +/* Sharing types (must choose one and only one of these) */ +#define MAP_SHARED	0x01		/* Share changes */ +#define MAP_PRIVATE	0x02		/* Changes are private */ + +/* Return value of `mmap' in case of an error */ +#define MAP_FAILED	((void *) -1) + +/* Windows 64-bit access macros */ +#define LODWORD(x) ((DWORD)((DWORDLONG)(x))) +#define HIDWORD(x) ((DWORD)(((DWORDLONG)(x) >> 32) & 0xffffffff)) + +typedef	UINT	uint; +typedef	ULONG	ulong; + +int fsync(int fd); +void *mmap(void *, size_t, int, int, int, int); +int munmap(void *, size_t); + +#endif /* __MINGW_SUPPORT_H_ */ diff --git a/tools/mkimage.h b/tools/mkimage.h index a2d524894..c8df6e1f6 100644 --- a/tools/mkimage.h +++ b/tools/mkimage.h @@ -20,6 +20,7 @@   * MA 02111-1307 USA   */ +#include "os_support.h"  #include <errno.h>  #include <fcntl.h>  #include <stdio.h> @@ -28,7 +29,11 @@  #ifndef __WIN32__  #include <netinet/in.h>		/* for host / network byte order conversions	*/  #endif +#ifdef __MINGW32__ +#include <stdint.h> +#else  #include <sys/mman.h> +#endif  #include <sys/stat.h>  #include <time.h>  #include <unistd.h> diff --git a/tools/os_support.c b/tools/os_support.c new file mode 100644 index 000000000..001fe6476 --- /dev/null +++ b/tools/os_support.c @@ -0,0 +1,24 @@ +/* + * Copyright 2009 Extreme Engineering Solutions, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this software; if not, write to the + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * Include additional files required for supporting different operating systems + */ +#ifdef __MINGW32__ +#include "mingw_support.c" +#endif diff --git a/tools/os_support.h b/tools/os_support.h new file mode 100644 index 000000000..f6f86b04d --- /dev/null +++ b/tools/os_support.h @@ -0,0 +1,29 @@ +/* + * Copyright 2009 Extreme Engineering Solutions, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this software; if not, write to the + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __OS_SUPPORT_H_ +#define __OS_SUPPORT_H_ + +/* + * Include additional files required for supporting different operating systems + */ +#ifdef __MINGW32__ +#include "mingw_support.h" +#endif + +#endif /* __OS_SUPPORT_H_ */ diff --git a/tools/ubsha1.c b/tools/ubsha1.c index b37b2b722..c4203ed99 100644 --- a/tools/ubsha1.c +++ b/tools/ubsha1.c @@ -21,13 +21,16 @@   * MA 02111-1307 USA   */ +#include "os_support.h"  #include <stdio.h>  #include <stdlib.h>  #include <unistd.h>  #include <fcntl.h>  #include <errno.h>  #include <string.h> +#ifndef __MINGW32__  #include <sys/mman.h> +#endif  #include <sys/stat.h>  #include "sha1.h" |