William A. Rowe, Jr. wrote:
Henry Jen wrote:

+ elif test -r "$1/include/expat.h"; then + dnl Expat 1.95.* installation (without libtool)
+    dnl Solaris
+    expat_include_dir="$1/include"
+    expat_ldflags="-L$1/lib -R$1/lib"
+    expat_libs="-lexpat"

Here's my essential problems with growing this cruft further :(

-L and -R should be redundant, no?

No, they are not. -L is for link time, -R for runtime. For the default
linker on Solaris, the -R is taking the value from -L as gnu ld.

Further, there's this lovely assumption
that because we find an expat .h in X/include/ we infer without any testing
whatsoever there is a ld in X/lib.

These sorts of fragile assumptions *throughout* the build system (not singling out specifically your patch), e.g. the old uuid detection code, ongoing debates about lib64 (you assume $1/lib, how do you know X/include/ isn't X/lib64/'s?) Make me really hesitate to touch the code further without a real test-compile and test-link as the new uuid code performs (before bailing with 'I surrender!')


Thank you for the feedback, I will redo the patch.

IMHO, we should do AC_CHECK_LIB with the default LDFLAGS/CFLAGS appended by the value of --with-expat suffixed with /include|/liband then make sure those flags are passed into the result Makefiles.

Depending on the .a or .la file is in the place and readable is not more correct, I would think. Even if we want to do that, should we check for .so rather than .la or .a? Because the .a or .la should not be necessary if the libexpat.so is built correctly. Take the Solaris example, there is no .la or .a, only .so exist in /usr/sfw/lib, and the link will succeed.

Cheers,
Henry

Reply via email to