[LLVMdev] Ideas for making llvm-config --cxxflags more useful

tom at stellard.net tom at stellard.net
Thu Jul 30 13:04:38 PDT 2015


Hi,

My understanding of llvm-config --cxxflags is that it is supposed to report
which flags are necessary to compile a program that will include LLVM's
headers and link against its libraries.  What it currently reports is
all of the flags which were used to compile LLVM.  This is not very useful,
because users are required in most cases to filter out flags they don't
want.

I would like to try to fix this so that it reports only the bare minimum
of required flags.  As an example here all the flags that it reports in
my autoconf build of llvm:

-I/usr/local/llvm/3.8/include
-D_DEBUG
-D_GNU_SOURCE
-D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS
-D__STDC_LIMIT_MACROS
-O3
-fomit-frame-pointer
-std=c++11
-fvisibility-inlines-hidden
-fno-exceptions
-fno-rtti
-fPIC
-ffunction-sections
-fdata-sections
-Wcast-qual

Of these flags the only ones that are really required are (c++ experts
please correct me if I'm wrong here):

-I/usr/local/llvm/3.8/include
-D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS
-D__STDC_LIMIT_MACROS
-std=c++11

Technically the -D__STDC* macros are only required if you include
Support/DataTypes.h, but I think that is hard to avoid.

As I understand, The rest of the flags are not required in 100% of the
use cases.

My proposal for fixing this is to remove everything but the 5 options listed
above.

For flags like -fno-rtti (are there others?) that are required in some cases
(I think -fno-rtti is required only if you sub-class LLVM objects), I would propose
adding a separate flag like --uses-rtti.  This would give users more fine-grained
control over which flags they use, and also would let them choose the correct
flag since, for example, -fno-rtti is not understood by MSVC.

How do people feel about this proposal?

Thanks,
Tom



More information about the llvm-dev mailing list