From: Karl B. <ka...@tu...> - 2000-09-28 06:16:42
|
Hi All, Got the package to compile with the latest cygwin, after a few adjustments here and there. Please read over these adjustments, some of them I'm not sure the best way to deal with them. If any of you can help me figure out what the best way to fix is and checkin, that'd be great. I still have to learn how to use CVS/SSH to check stuff in... Problem #1: In support/cpp/cpplib.c:7492, there is #ifdef HAVE_STRERROR it never evaluates true, so its alway trying to use these old sys_nerr & sys_errlist[] things instead of strerror(). The latest cygwin seems to have removed or altered these so it errors out on the link with these as unresolved. A quick hack of #define HAVE_STRERROR at the top of the module fixes things but is not a decent fix. The module does include sdccconf.h, so if we could get it in there perhaps? Does someone know how to make use of autoconf's config.cache to somehow generate a #define HAVE_STRERROR? My .cache file does show a test for strerror() evaluating to true but I don't think this info is being used. Problem #2: as/z80/Makefile.in - Linker errors out on -lm, which apparently is trying to link in a libm.a library. The new cygwin seems to be linking in this AND another default library which makes it complain about 2 main() references. I took out the -lm option from the makefile, this made it compile fine. So I suppose it would need to be removed from as/z80/makefile.in as a final solution. This assumes that the -lm is not needed - I tested with new/old cygwin and it happily linked it without this. Problem #3: sim/ucsim/cmd.src/newcmd.cc:847 - errors out on compilation, due to accept() third parameter. Wants (int *), has got (unsigned int *). I just added a (int *) cast to fix it. Var defined as SOCKLEN_T, which is defined using configure, autoconf stuff. My guess is that newer version of gcc is getting fussy (2.95.2 versus older 2.91.57). Looks like sim/ucsim/configure might be the place to adjust this for real, it has some scripting to figure if the system is defining this then it has a default to uint. I could troubleshoot/test this somemore later... Problem #4(problem for BCC5 compile): as/aslink.c, as/lklink.c - they have #include <alloc.h> which is actually a local header file with extern declares for malloc, calloc, realloc.. Kevin added <stdlib> to pull in faster qsort() routine, but that must also pull in "real" malloc, calloc.. system headers which clash with this local one causing BCC to error out on compilation. Simple fix would be to comment out whatever is in the local alloc.h file, or take out all the #include <alloc.h> lines from each source file. P.S. New cygwin package looks good, they have figured out a way to handle common unix dirs(/BIN, /USR, etc) without going to C drive. The shell dummys these up in the CYGWIN dir, and the CYGWIN dir is cleaner... Woops, make install only kinda works(I don't use it)..., getting late!,.. See-ya-bye. Karl. |