[LLVMdev] [PATCH] llvm-config: Support LLVM_LIBDIR_SUFFIX on CMake build.
Johannes Obermayr
johannesobermayr at gmx.de
Sat Jul 30 03:04:30 PDT 2011
Another attempt didn't work (autoconf is broken then).
Also './configure --libdir=/usr/lib64' does not work because
my $LIBDIR = "$ABS_RUN_DIR/lib"
is hardcoded in tools/llvm-config/llvm-config.in.in
So at least one buildsystem (the one which is easier to understand) has been fixed :-)
/start discussion [Sonntag, 24. April 2011] [02:01:12]
<jobermayr> Hi. Please push this patch: http://susepaste.org/28819300
<jobermayr> I tried it - it works :-)
<nicholas> suse needs this for some reason? who sets LLVM_LIBDIR_SUFFIX, the user?
<jobermayr> Nope. It is set via cmake -DLLVM_LIBDIR_SUFFIX=64 (on x86_64)
<jobermayr> Also fedora needs it
<nicholas> i'm curious, what's the suffix here? is it /usr/lib-ia32 or something?
<jobermayr> Nope. /usr/lib on x86, /usr/lib64 on x86_64
<nicholas> ah ok, thanks.
<jobermayr> But it can also be /usr/lib on x86_64 if you install the additional 32-bit package ...
<impulze> lrwxrwxrwx 1 root root 5 Apr 3 18:21 /usr/lib -> lib64
<impulze> drwxr-xr-x 18 root root 36864 Apr 23 13:54 /usr/lib32
<impulze> drwxr-xr-x 95 root root 122880 Apr 23 14:03 /usr/lib64
<impulze> :)
<jobermayr> impulze: Is it fedora?
<impulze> nuh
<impulze> just throwing my hat in
<impulze> in case someone wants to know another suffix combination :)
<nicholas> let me just make sure autoconf substitutes @LLVM_LIBDIR_SUFFIX@ with something sensible (like nothing) and then i'll commit it.
<chandlerc> jobermayr: why does that work for you?
<chandlerc> ah
<chandlerc> because you're manually setting it in CMake
<chandlerc> jobermayr: i think you'll have to teach autoconf to substitute that string as well
<jobermayr> Yes. It does not make sense if I install libs via -DLLVM_LIBDIR_SUFFIX=64 in /usr/lib64 (already supported) but llvm-config --libdir tells me /usr/lib ...
<nicholas> indeed, it breaks autoconf builds.
<nicholas> make[2]: *** No rule to make target `/home/nicholas/llvm-commit/Debug+Asserts/lib at LLVM_LIBDIR_SUFFIX/libLLVMipo.a', needed by `/home/nicholas/llvm-commit/Debug+Asserts/bin/opt'. Stop.
<chandlerc> jobermayr: you need to update autoconf/configure.ac at the same time as you do this update; we need both cmake *and* autoconf to work
<chandlerc> nicholas: btw, i also checked and cmake does already track this variable, so it doesn't break cmake builds even when using normal commandlines
<nicholas> chandlerc: yep, i grep'd for it and found that.
<chandlerc> jobermayr: i think this is the wrong way to do this anyways. autoconf sets up libdir to already have the '64' suffix when needed afaict. cmake should do the same
* chandlerc goes back to the standard and implementing f-ing type traits...
<jobermayr> chandlerc: But .../lib is hardcoded ATM (my $LIBDIR = "$ABS_RUN_DIR/lib";). So the 64 suffix in autoconf does not change it ...
<chandlerc> then that's what should be fixed
<chandlerc> (the hard coding)
* chandlerc sighs
<chandlerc> great
<chandlerc> our autoconf is busted too
<chandlerc> so, autoconf provides @LLVM_LIBDIR@
<chandlerc> which, after prefix adjustment, is what the above should be using (mapping prefix -> abs_run_dir)
<chandlerc> but the way autoconf provides @LLVM_LIBDIR@ is actually broken, and doesn't use the system set up by autoconf, instead baking its own incorrect one...
<chandlerc> jobermayr: how many yaks do you feel like shaving? ;]
<chandlerc> basicaly, if you can get your patch to use @LLVM_LIBDIR@, and still be correct w/ CMake, the autoconf fixes can probably wait
<jobermayr> I can also implement a sed "s:my \$LIBDIR = \"\$ABS_RUN_DIR/lib\";:my \$LIBDIR = \"\$ABS_RUN_DIR/lib$LIB_SUFFIX\";:g" in CMakeLists.txt.
<jobermayr> s:$LIB_SUFFIX:$LLVM_LIBDIR_SUFFIX
<jobermayr> So at least the cmake will be fixed and autoconf runs, too ...
<chandlerc> jobermayr: no, CMake doesn't need to recognize this one sequence of text and change it. =[
* chandlerc sighs
/end discussion [Sonntag, 24. April 2011] [02:50:38]
On Saturday 30 July 2011 01:41:12 Chandler Carruth wrote:
> Rather than using sed, it would be better to change the .in to use @...@
> variables to expand the libdir suffix along with the other variables
> expanded when going from llvm-config.in to llvm-config.
>
> On Sat, Jul 30, 2011 at 1:32 AM, Johannes Obermayr
> <johannesobermayr at gmx.de>wrote:
>
> > Hi,
> >
> > here is a patch for fixing the libdir suffix issue in llvm-config on CMake
> > builds (if using -DLLVM_LIBDIR_SUFFIX=32/64).
> >
> > It works successfully on my openSUSE i586 (/usr/lib/) and x86_64
> > (/usr/lib64/) systems.
> >
> > Please CC me on further discussion.
> >
> > Thanks.
> > Johannes
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
> >
More information about the llvm-dev
mailing list