From: Bruno H. <br...@cl...> - 2003-07-31 19:51:48
|
Sam wrote: > > > on unix modules.o depends on clisp.h, so a change in genclisph.d > > > results in rebuild of lisp.run and recompilation of *.lisp. > > > > This is how it should be. > > _why_? 1. All modules should use clisp.h, not lispbibl.c. modules.o is part of the modules infrastructure; modules.c is recompiled by clisp-link. 2. If genclisph were to create a syntactically incorrect clisp.h, the easiest way to catch this early is during the compilation of modules.o. It happens more often than you might think. > modules.d: > > #ifdef NO_CLISP_H > #include "lispbibl.c" > #else > #include "clisp.h" > #endif Ah, I see. This #ifdef is because of this code in makemake.in: if [ $f = modules ] ; then if [ $HOS = unix -a $CROSS = false ] ; then dependsc=$dependsc' clisp.h' else flags=$flags' -DNO_CLISP_H' fi dependsc=$dependsc' modules.h' fi echol "clisp.h : genclisph.o unixconf.h ${PARAMS_H}" How to get rid of this NO_CLISP_H ugliness? - clisp.h depends on unixconf.h; this dependency should be removed for the platforms that don't have unixconf.h. Then the $HOS = unix test can go away. - When cross-compiling, how do you want to create clisp.h ? Bruno |