Huh? pike.m4's purpose is would be to:
a) detect the presence of the Pike binaries on the system (or requested components thereof)
b) inform the application where the .h, .pmod etc. etc. files are located.
Yes? In order to find the information in b) though, it need to either run the Pike binary detected in a), asking it to disclose this information (which is equivalent to the use of pike -x module today), or grope this information out in some other way. The latter solution would have to include support for all systems, packagings and installations, since the stuff from the .m4 file goes into the generated "configure" script, to be distributed together with the module. So you can't tailor the .m4 file for your own system, since the generated configure script needs to work on any system with any Pike.
How could that prevent the code from being compiled on different operating systems??? Since when the contents of the information above matters and not the way you get the information? If you have 10 OSes and each of them keeps the .h files in a different location, but you have one pike.m4 which has a macro
PIKE_C_HEADER_FILES
which sets the PIKE_HEADERS variable to the location of the .h files on the system, then where is the problem?
The problem was how to write the macro PIKE_C_HEADER_FILES so that the shellscript code it expands to works on all systems without resorting to running the Pike interpreter.
As said previously somewhere, the .m4 could just source a config file put in a well-known location. That would make it extremely configurable and flexible, not to mention simple.
I'm sorry, but I don't think it's realistic to require a "well-known location" to exist in all Pike installations. Just consider users installing pike without having global write access, or ports to operatings systems with completely different pathname conventions (win32, AmigaOS, etc). pike -x module works because it only needs to follow $PATH to find everything it needs to bootstrap. You can have the Pike installed anywhere, using any directory layout (under the current limitations of the master and the Makefiles), as long as you have the intepreter binary in your $PATH.
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)
Previous text:
2004-01-26 21:32: Subject: Re: Pike @ Debian
On Mon, Jan 26, 2004 at 08:55:02PM +0100, Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum scribbled:
_No_. It can _not_ be tailored to the distribution, because then the Pike modules you distribute could only be compiled with that distrubution. That would be totally useless.
Huh? pike.m4's purpose is would be to:
a) detect the presence of the Pike binaries on the system (or requested components thereof)
b) inform the application where the .h, .pmod etc. etc. files are located.
How could that prevent the code from being compiled on different operating systems??? Since when the contents of the information above matters and not the way you get the information? If you have 10 OSes and each of them keeps the .h files in a different location, but you have one pike.m4 which has a macro
PIKE_C_HEADER_FILES
which sets the PIKE_HEADERS variable to the location of the .h files on the system, then where is the problem?
You put
CC_INCLUDES=$(PIKE_HEADERS)
in your makefile and your code perfectly compiles on any OS, no matter where it keeps the files. Suspecting that you might have misunderstood the 'tailoring' part - I meant by it that the maintainer of the Pike port for a particular system can modify it and customize for his platform. I didn't mean it has to be done in the Pike core, all gods of the universe forbid! As said previously somewhere, the .m4 could just source a config file put in a well-known location. That would make it extremely configurable and flexible, not to mention simple.
marek
/ Brevbäraren
pike-devel@lists.lysator.liu.se