On Tue, 2010-08-31 at 17:34 -0400, Charles Wilson wrote: > When testing JonY's mingw64 compiler, I found that often the include > files ended up in the wrong directory.
Often? > Also, JonY apparently did as well, since his cygport(5)'s Which were likely borrowed from mine... > included this bit in src_install(): > > mv ${D}${CROSS_PREFIX}/${CROSS_HOST}/* ${D}${CROSS_PREFIX} The reason for that is the *upstream* mingw-w64 Makefiles install to $prefix/$host/{include,lib}, based on the pre-sysroot convention; so if we want to use the sysroot for *everything*, including the system headers, then they end up in $CROSS_PREFIX/$CROSS_HOST/{include,lib} and need to be moved thereafter. IOW this could be seen as an issue with the mingw-w64 sources, not cygport. OTOH, mingw-w64 is not unique; both newlib and avr-libc are coded to install into $prefix/$host/{include,lib}; glibc and mingw.org install correctly into sysroot OOTB. A possible solution is to reconsider to what degree we use the sysroot. > I'm not real sure about the ${prefix%/...} manipulation, either, > especially for cross. (The effect of this manipulation for a cross for > $host=mingw is not apparent, since $prefix doesn't actually end in /usr > in that case). But...the current code seems to be incorrect, IMO. The point is that (per FHS) if prefix=/usr, then sysconfdir=/etc (NOT /usr/etc) and localstatedir=/var (NOT /usr/var), However, if prefix != /usr (e.g. /mingw), then these should also go under the prefix (/mingw/etc and /mingw/var). The same goes for cyginstall. Yaakov