From: SourceForge.net <no...@so...> - 2005-03-11 21:33:56
|
Read and respond to this message at: https://sourceforge.net/forum/message.php?msg_id=3043264 By: tml1024 > Putting them on separate lines helps, but seems kludgy I'm sorry, but I would say almost anything you do to get Unix-Windows cross-platform makefiles is going to be kludgy. You could look into automake... but unless your project otherwise is going to use the whole autoshebang and you routinely build other stuff using autotools, it might not be worth it. ______________________________________________________________________ You are receiving this email because you elected to monitor this forum. To stop monitoring this forum, login to SourceForge.net and visit: https://sourceforge.net/forum/unmonitor.php?forum_id=7134 |
From: SourceForge.net <no...@so...> - 2005-03-11 23:32:09
|
Read and respond to this message at: https://sourceforge.net/forum/message.php?msg_id=3043437 By: chicares On 2005-03-11 16:11, "REH - drxenos" wrote: > I am trying to create multi-platform compatible makefiles > (using GNU make of course). Good. If you haven't already, look at make.paulandlesley.org but that site seems to be down at the moment, so google for "white papers" site:paulandlesley.org > I am having trouble supporting MinGW. Do you mean the compiler, or the MSYS environment? I think it's the latter: > The problem is shell support. If sh.exe is in my path, it > is used by make and I have problems with file globbing. http://www.gnu.org/software/make/manual/html_chapter/make_5.html#SEC54 Consider setting $(SHELL) in your makefile: http://www.gnu.org/software/make/manual/html_chapter/make_14.html#SEC127 What exactly is your 'sh.exe'? Is it MSYS bash? Is it different from the shell you run 'make' in? Do you have some option like 'nullglob' set in this shell, but not in the others you're testing? If you have reason to suspect that the shell is the problem, then gather more evidence by substituting another shell. I like using cygwin's almquist shell for testing makefiles. > Specifically, in my "clean" target, if for example I have > "-rm -f *.o *.exe", and there are no .o files, it will > stop and not delete the .exe files. http://www.gnu.org/software/make/manual/html_chapter/make_4.html#SEC32 Why not use $(wildcard) instead? > Putting them on separate lines helps, but seems kludgy. > Depending on the version of rm I am using, I can workaround > this by double-quoting each glob, such as "*.o". Some > versions will work fine, others will complain about the > filename. I'd guess that some ms windows ports of 'rm' are written to do globbing themselves, if you prevent the shell from doing it; but I haven't checked to make sure. > Worse, if I want to support Window's built-in shell > command "DEL" I've found it much easier to require a *nix shell. > Now, if I remove sh.exe from my path (so it uses window's > shells for subprocesses), it gets worse. Indeed. > Has anyone successfully created non-trivial gnu makefiles, > that will work on Unix and Windows? I want to have as much > of the file "common" as I can without a lot of if constructs > and special defines. I think I am mostly there if I stick to > gnu tools (i.e., rm instead of del) and use sh.exe I think that goal and that method are both good. Here: http://savannah.nongnu.org/cgi-bin/viewcvs/lmi/lmi/ you can find some fairly complex makefiles (they all match '*make*') that work with at least three windows ports of different shells. They work with the MinGW + MSYS toolchain except for one particular usage of 'sed' in autodependency generation, but that's a known problem with one tool that I just haven't had time to work on yet. > and can fix the globbing so I can put them all in one call I think $(wildcard) should solve that. > (I have reasons needing to do that). To avoid the inefficiency of invoking a shell many times? ______________________________________________________________________ You are receiving this email because you elected to monitor this forum. To stop monitoring this forum, login to SourceForge.net and visit: https://sourceforge.net/forum/unmonitor.php?forum_id=7134 |
From: SourceForge.net <no...@so...> - 2005-03-12 01:00:21
|
Read and respond to this message at: https://sourceforge.net/forum/message.php?msg_id=3043505 By: drxenos >What exactly is your 'sh.exe'? Is it MSYS bash? Is it >different from the shell you run 'make' in? Do you have >some option like 'nullglob' set in this shell, but not in >the others you're testing? OH MY GOD!!! That's it!!! It has had me stumped for months why this won't work!! I have a set of unix tools build for windows I got off of the web somewhere. My path had this before the msys path, so it was finding the sh.exe in there, NOT the one with msys. I changed my path and all my problems are gone. You, my friend, are my hero!! Thank you so much. ______________________________________________________________________ You are receiving this email because you elected to monitor this forum. To stop monitoring this forum, login to SourceForge.net and visit: https://sourceforge.net/forum/unmonitor.php?forum_id=7134 |