The 'dummy' module should avoid errors when libgnu.a is empty. But it does not work with the Solaris /usr/ccs/bin/ranlib and Sun C 5.0. In such a case, although libgnu.a contains a dummy.o, the compiler complains:
cc -O -DHAVE_CONFIG_H -I. -I.. -g -c dummy.c rm -f libgnu.a ar cru libgnu.a dummy.o ranlib libgnu.a ... ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a Same error when dummy.c defines a locally visible variable only. Really one needs an exported variable or function. 2007-03-11 Bruno Haible <[EMAIL PROTECTED]> * lib/dummy.c [__sun]: Define a dummy variable, not just a typedef. Needed for Solaris 2.5.1 ranlib and SunPRO C 5.0. *** lib/dummy.c 14 May 2005 06:03:58 -0000 1.3 --- lib/dummy.c 11 Mar 2007 22:22:36 -0000 *************** *** 1,5 **** /* A dummy file, to prevent empty libraries from breaking builds. ! Copyright (C) 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* A dummy file, to prevent empty libraries from breaking builds. ! Copyright (C) 2004, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 25,30 **** --- 25,44 ---- Compiling this file, and adding its object file to the library, will prevent the library from being empty. */ + /* Some systems, such as Solaris with cc 5.0, refuse to work with libraries + that don't export any symbol. You might get an error like: + + > cc ... libgnu.a + > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a + + Compiling this file, and adding its object file to the library, will + prevent the library from exporting no symbols. */ + + #ifdef __sun + /* This declaration ensures that the library will export at least 1 symbol. */ + int dummy; + #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; + #endif