Thread overview
Problem Building ldc with llvm3-5 on Ubuntu 14.04
Sep 27, 2014
Nordlöw
Sep 29, 2014
Kai Nacke
Sep 29, 2014
Nordlöw
Oct 02, 2014
Eugene
Oct 02, 2014
Nordlöw
Oct 02, 2014
David Nadlinger
Oct 04, 2014
Nordlöw
September 27, 2014
I've done

- git clone --recursive https://github.com/ldc-developers/ldc.git
- mkdir build
- cd build
- cmake ..

but it errors as

-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
llvm-config: unknown component name: profiledata
CMake Error at cmake/Modules/FindLLVM.cmake:125 (string):
  string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to
  command.
Call Stack (most recent call first):
  cmake/Modules/FindLLVM.cmake:153 (llvm_set_libs)
  CMakeLists.txt:18 (find_package)


-- Found LLVM: /usr/lib/llvm-3.5 (found suitable version "3.5", minimum required is "3.1")
-- Found LibConfig++: /usr/include
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- LDC version identifier: 613375
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Looking for setupterm in tinfo
-- Looking for setupterm in tinfo - found
-- Using path for Intrinsics.td: /usr/lib/llvm-3.5/include
-- Looking for _SC_ARG_MAX
-- Looking for _SC_ARG_MAX - found
-- Check size of void*
-- Check size of void* - done
-- Configuring incomplete, errors occurred!
See also "/home/per/ware/ldc/build/CMakeFiles/CMakeOutput.log".
See also "/home/per/ware/ldc/build/CMakeFiles/CMakeError.log".

What's wrong?
September 29, 2014
Hi Nordlöw!

On Saturday, 27 September 2014 at 17:34:21 UTC, Nordlöw wrote:
> llvm-config: unknown component name: profiledata
> CMake Error at cmake/Modules/FindLLVM.cmake:125 (string):
>   string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to
>   command.
> Call Stack (most recent call first):
>   cmake/Modules/FindLLVM.cmake:153 (llvm_set_libs)
>   CMakeLists.txt:18 (find_package)
>
>
> -- Found LLVM: /usr/lib/llvm-3.5 (found suitable version "3.5", minimum required is "3.1")

I don't have Ubuntu 14.04 at hand. Could you please post the output of

llvm-config --version
llvm-config --components

Thanks!

Regards,
Kai
September 29, 2014
On Monday, 29 September 2014 at 05:59:02 UTC, Kai Nacke wrote:
> llvm-config --version
> llvm-config --components

llvm-config --version
3.4

llvm-config --components
 aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils all all-targets analysis arm armasmparser armasmprinter armcodegen armdesc armdisassembler arminfo asmparser asmprinter bitreader bitwriter codegen core cppbackend cppbackendcodegen cppbackendinfo debuginfo engine executionengine hexagon hexagonasmprinter hexagoncodegen hexagondesc hexagoninfo instcombine instrumentation interpreter ipa ipo irreader jit linker lto mc mcdisassembler mcjit mcparser mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo msp430 msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter nvptxcodegen nvptxdesc nvptxinfo objcarcopts object option powerpc powerpcasmparser powerpcasmprinter powerpccodegen powerpcdesc powerpcinfo r600 r600asmprinter r600codegen r600desc r600info runtimedyld scalaropts selectiondag sparc sparccodegen sparcdesc sparcinfo support systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target transformutils vectorize x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo

I have multiple llvm versions installed.

Could that be the problem?
October 02, 2014
I had the same problem.
1. in your case cmake picked up llvm version 3.5
2. cmake complains that it llvm-config-3.5 can't find profiledata component. I don't know why it is missing. I simply commented out the lines mentioning profiledata in cmake/Modules/FindLLVM.cmake

For me compilation still fails because llvm include file paths don't match the ones used in ldc source code.

Eugene

On Monday, 29 September 2014 at 16:38:13 UTC, Nordlöw wrote:
> On Monday, 29 September 2014 at 05:59:02 UTC, Kai Nacke wrote:
>> llvm-config --version
>> llvm-config --components
>
> llvm-config --version
> 3.4
>
> llvm-config --components
>  aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils all all-targets analysis arm armasmparser armasmprinter armcodegen armdesc armdisassembler arminfo asmparser asmprinter bitreader bitwriter codegen core cppbackend cppbackendcodegen cppbackendinfo debuginfo engine executionengine hexagon hexagonasmprinter hexagoncodegen hexagondesc hexagoninfo instcombine instrumentation interpreter ipa ipo irreader jit linker lto mc mcdisassembler mcjit mcparser mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo msp430 msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter nvptxcodegen nvptxdesc nvptxinfo objcarcopts object option powerpc powerpcasmparser powerpcasmprinter powerpccodegen powerpcdesc powerpcinfo r600 r600asmprinter r600codegen r600desc r600info runtimedyld scalaropts selectiondag sparc sparccodegen sparcdesc sparcinfo support systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target transformutils vectorize x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo
>
> I have multiple llvm versions installed.
>
> Could that be the problem?

October 02, 2014
On Thursday, 2 October 2014 at 00:05:50 UTC, Eugene wrote:
> I had the same problem.
> 1. in your case cmake picked up llvm version 3.5
> 2. cmake complains that it llvm-config-3.5 can't find profiledata component. I don't know why it is missing. I simply commented out the lines mentioning profiledata in cmake/Modules/FindLLVM.cmake
>
> For me compilation still fails because llvm include file paths don't match the ones used in ldc source code.

Should I try removing some LLVM version?
October 02, 2014
On 2 Oct 2014, at 21:01, "Nordlöw" via digitalmars-d-ldc wrote:
> On Thursday, 2 October 2014 at 00:05:50 UTC, Eugene wrote:
>> I had the same problem.
>> 1. in your case cmake picked up llvm version 3.5

It tries versioned names (e.g. with the -3.5 suffix) in descending order, so that seems to work like intended.

>> 2. cmake complains that it llvm-config-3.5 can't find profiledata component. I don't know why it is missing. I simply commented out the lines mentioning profiledata in cmake/Modules/FindLLVM.cmake

Where is your LLVM installation from? Distro packagages or how exactly did you build it?

>> For me compilation still fails because llvm include file paths don't match the ones used in ldc source code.

Could you elaborate a bit? The correct include paths should be picked up from the llvm-config output and added as command line arguments. If this doesn't work, there is either a bug in our CMake scripts or your LLVM installation is broken (we've had issues with broken distro packages before). The "paths" in the source code (really just llvm/) should be fine.

> Should I try removing some LLVM version?

In theory this should not be necessary, although it might certainly help to track down the problem.

Thanks,
David
October 04, 2014
On Thursday, 2 October 2014 at 19:01:52 UTC, Nordlöw wrote:
> Should I try removing some LLVM version?

I removed all but version 3.4 of LLVM and now it compiles all the till the end. Yay!