On Wed, Mar 5, 2025 at 12:46 PM Richard Biener <richard.guent...@gmail.com> wrote: > > On Wed, Mar 5, 2025 at 11:43 AM Richard Biener > <richard.guent...@gmail.com> wrote: > > > > On Tue, Mar 4, 2025 at 7:18 PM James K. Lowden <jklow...@schemamania.org> > > wrote: > > > > > > On Tue, 4 Mar 2025 00:08:16 +0100 > > > Jakub Jelinek <ja...@redhat.com> wrote: > > > > > > > On Mon, Mar 03, 2025 at 05:21:38PM -0500, James K. Lowden wrote: > > > > > However IMO, the incantation: > > > > > > > > > > make install DESTDIR=/foo > > > > > > > > > > is invalid. The compiler's library search path is fixed when the > > > > > compiler is built, based on configure options. Installing into an > > > > > arbitrary directory cannot work; there is no opportunity then to > > > > > alter the gcobol binary. > > > > > > > > This is how most distros install stuff for their packaging systems, > > > > make install DESTDIR=/some/directory > > > > and then everything under /some/directory > > > > is packaged into the package. > > > > GCC is generally relocatable, the compiler driver should find the > > > > compiler and library/include directories etc. relative to where the > > > > driver resides in the filesystem. > > > > > > Thank you for taking the time to explain that, Jakub. I stand > > > corrected, and I believe you'll find that DESTDIR works as intended > > > using the current cobol-patched branch. It works here for me. > > > > > > Somehow, despite reading the automake documentation over and over > > > these last several days while we struggled to bring the libgcobol > > > build process into the 20th [sic] century, I didn't put 2 + 2 together. > > > Looking at it now, I see that by using automake we get DESTDIR for free, > > > provided (as we do) that we use libtool for installation. > > > > > > In short, despite not trying to support DESTDIR, we do anyway, by happy > > > accident. And we are now better informed. > > > > Thanks. Checking cobol-patched again I see > > > > obj2> make install DESTDIR=/home/rguenther/install/gcc-cobol > > ... > > libtool: install: /usr/bin/install -c .libs/libgcobol.so.1.0.0T > > /usr/local/lib64/../lib64/libgcobol.so.1.0.0 > > /usr/bin/install: cannot create regular file > > '/usr/local/lib64/../lib64/libgcobol.so.1.0.0': Permission denied > > make[2]: *** [Makefile:956: install] Error 1 > > make[2]: Leaving directory > > '/home/rguenther/obj2/x86_64-pc-linux-gnu/libgcobol' > > make[1]: *** [Makefile:18349: install-target-libgcobol] Error 2 > > make[1]: Leaving directory '/home/rguenther/obj2' > > make: *** [Makefile:2671: install] Error 2 > > > > so a DESTDIR install isn't quite working yet. > > > > install: libgcobol$(libsuffix).la > > $(LIBTOOL) --mode=install $(INSTALL) $^ $(libdir)/../lib64 > > > > the usual way would be to have automake/libtool generate the install rule by > > only doing > > > > toolexeclib_LTLIBRARIES = libgcobol.la > > > > you have > > > > lib_LTLIBRARIES = libgcobol.la > > > > so simply removing the install: rule might work (there's toolexeeclib vs. > > lib, > > this might or might not mean --enable-version-specific-runtime-libs will > > break).
... aaand it fails: (../gcc-cobol/configure --enable-languages=cobol --disable-bootstrap --enable-checking=release --enable-version-specific-runtime-libs) > make install DESTDIR=/home/rguenther/install/gcc-cobol ... libtool: install: error: cannot install `libgcobol.la' to a directory not ending in /usr/local/lib64/../lib64 make[3]: *** [Makefile:512: install-toolexeclibLTLIBRARIES] Error 1 make[3]: Leaving directory '/home/rguenther/obj2/x86_64-pc-linux-gnu/libgcobol' make[2]: *** [Makefile:825: install-am] Error 2 make[2]: Leaving directory '/home/rguenther/obj2/x86_64-pc-linux-gnu/libgcobol' make[1]: *** [Makefile:18349: install-target-libgcobol] Error 2 make[1]: Leaving directory '/home/rguenther/obj2' make: *** [Makefile:2671: install] Error 2 see how others (like libatomic) handle --enable-version-specific-runtime-libs in their configure.ac. That later adjusts toolexeclibdir - you also seem to miss using GCC_WITH_TOOLEXECLIBDIR in libgcobol/configure.ac. I really always go by copy&pasting from working examples ... there's to many specialities in how GCC does things :/ Richard. > > > > [time passes] > > > > So dropping the install rule makes make install succeed but there's no > > libgcobol installed. I have the wrong automake on the test machine so > > can't quickly check what happens when using toolexeclib_LTLIBRARIES > > So I now checked and using toolexeclib_LTLIBRARIES = libgcobol.la works: > > > find install/gcc-cobol/ -name libgcobol* > install/gcc-cobol/usr/local/lib64/libgcobol.la > install/gcc-cobol/usr/local/lib64/libgcobol.so.1 > install/gcc-cobol/usr/local/lib64/libgcobol.a > install/gcc-cobol/usr/local/lib64/libgcobol.so.1.0.0 > install/gcc-cobol/usr/local/lib64/libgcobol.so > > and the installed compiler behaves as intended. I can trick -m32 to "work" > by using the generic gcc diriver: > > > ./install/gcc-cobol/usr/local/bin/gcc -x cobol t.cob -m32 -c > > but I think this is a less important issue. > > Richard. > > > > > > > > Regards, > > > > > > --jkl