On 8/8/00 1:29 AM, Ben Wing at ben(a)666.com wrote:
what do you mean unix-style filenames?
do they just have slashes, or cygwin mount points? the latter certainly won't
work under mingw32.
Ah. That would be it. So, while my make utility runs inside cygwin's bash,
and sends command lines to its generated files as cygwin mount points
(/cygdrive/c/xemacs/xemacs-21.2/...), my mingw generated executable can't
understand that path.
What kind of unix-style (forward-slash delimiting) paths does mingw
understand (Windows paths, it definitely understands)? "/" is mounted by
cygwin, and so is "/cygdrive/c/" -- I wasn't aware of other non-cygwin ways
to get to my hard disk. :)
So, what shell and make utility do people use to compile the mingw XEmacs so
that the build process gives the programs it runs proper pathnames?
Andy
Andrew Begel wrote:
>
> Under Win2k, I compiled a just-checked-out Xemacs 21.2 under mingw32
> (./configure i586-pc-mingw32). After making a few adjustments to
> make_arg_list_1 in emacs.c to define Qdll_filename_encoding to be Qnative,
> and then commenting out the extra definition of getloadavg in nt.c, Xemacs
> actually compiles.
>
> Unfortunately, temacs won't load files with unix-style filenames, so the
> build process fails. Temacs wants windows-style filenames only. I'm running
> this all from bash under cygwin 1.1.2. This feels like a bug, somewhere in
> the code that parses the command line arguments, to me.
>
> I added the Qdll_filename_encoding declaration (which wasn't in the code and
> caused it to fail to compile).
>
> Lisp_Object Qdll_filename_encoding;
>
> static Lisp_Object
> make_arg_list_1 (int argc, Extbyte **argv, int skip_args)
> {
> Lisp_Object result = Qnil;
> REGISTER int i;
> Qdll_filename_encoding = Qnative;
>
> for (i = argc - 1; i >= 0; i--)
> {
> if (i == 0 || i > skip_args)
> {
> #ifdef WIN32_NATIVE
> if (i == 0)
> {
> /* Do not trust to what crt0 has stuffed into argv[0] */
> char full_exe_path[MAX_PATH];
> Lisp_Object fullpath;
>
> GetModuleFileName (NULL, full_exe_path, MAX_PATH);
> fullpath = build_ext_string (full_exe_path, Qmswindows_tstr);
> result = Fcons (fullpath, result);
> #if defined(HAVE_SHLIB)
> {
> Extbyte *fullpathext;
>
> LISP_STRING_TO_EXTERNAL (fullpath, fullpathext,
> Qdll_filename_encoding);
> (void) dll_init (fullpathext);
> }
> #endif
> }
> else
> #endif
> result = Fcons (build_ext_string (argv[i],
> Qcommand_argument_encoding),
> result);
> }
> }
> return result;
> }
>
> I think that last build_ext_string perhaps might be converting the pathnames
> if it see's em, but it's not working...
>
> andrew
-----------
Andrew Begel
Computer Science Dept.
UC Berkeley