Am 03.07.2011 16:42 schrieb Uwe Hermann: > On Sun, Jul 03, 2011 at 01:11:51AM +0200, Carl-Daniel Hailfinger wrote: > >>> - Explicitly set CC=gcc in the Makefile, otherwise you get an error like >>> "cc: command not found" on MinGW. >>> >>> >> Mh. Would CC?=gcc work as well? >> > Doesn't work unfortunately. > > > >>> - serial.c: Add missing casts to avoid compile errors due to -Werror. >>> >>> >> Those casts seem to use a Windows-specific cast. >> > Yes (they're in the _WIN32 ifdef though). > > > >>> ifeq ($(CONFIG_FT2232_SPI), yes) >>> +ifeq ($(OS_ARCH), MINGW32_NT-5.1) >>> +# No pkg-config files for libftdi on Windows/MinGW, just assume it's >>> installed. >>> +FTDILIBS := -lftdi -lusb >>> >>> >> Umm... if pkg-config fails, the fallback below will do exactly what you >> did manually above. Does the fallback fail for you? >> > Oops, true, I removed that hunk. > > > >>> - WriteFile(sp_fd, buf, writecnt, &tmp, NULL); >>> + WriteFile(sp_fd, buf, writecnt, (PDWORD)&tmp, NULL); >>> >>> >> Use (uint32_t *) instead of (PDWORD). That said, this might mess up >> aliasing handling in the compiler, and we should fix the type of tmp >> instead. >> > WriteFile(), a Windows API call, expects an 'LPDWORD', i.e. a pointer to > a DWORD, I think it makes sense to use that (in the _WIN32 ifdef part). > > http://msdn.microsoft.com/en-us/library/aa365747%28VS.85%29.aspx > http://msdn.microsoft.com/en-us/library/cc230318%28PROT.10%29.aspx > > We do similar things with 'fdtype' on MinGW: > > programmer.h:typedef HANDLE fdtype; > programmer.h:typedef int fdtype; > > > >>> #else >>> tmp = write(sp_fd, buf, writecnt); >>> > This write() here, however, returns an ssize_t, so I changed "long tmp" > to "ssize_t tmp" here, too. > > > Updated patch attached. > > Fix and improve Windows/MinGW/MSYS build. > > - Makefile: Use $(OS_ARCH) to add some MinGW-specific workarounds and > settings, so that a simple "make" is sufficient on MinGW (instead of > manual Makefile hacking). > > - Explicitly set CC=gcc in the Makefile, otherwise you get an error like > "cc: command not found" on MinGW. > > - MinGW doesn't have ffs(), use gcc's __builtin_ffs() instead. > > - Add /usr/local/include and /usr/local/lib to CPPFLAGS/LDFLAGS, that's > where libusb-win32 and libftdi stuff is usually placed on MinGW/MSYS. > > - Disable serprog (no sockets) and all PCI-based programmers (no libpci) > for now. That leaves dummy, ft2232_spi, and buspirate_spi enabled on > MinGW per default. >
Is it really impossible to enable serprog? IIRC it works with Cygwin. > - serial.c: Use correct type for 'tmp', both on Windows/MinGW (DWORD) > and POSIX (ssize_t). > > Signed-off-by: Uwe Hermann <[email protected]> > Acked-by: Carl-Daniel Hailfinger <[email protected]> Regards, Carl-Daniel -- http://www.hailfinger.org/ _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
