[cfe-dev] Removing InitHeaderSearch
Edward Meewis
ed at extraordinarymachine.nl
Tue Oct 15 16:16:50 PDT 2013
Yeah,
I use Qt quite a lot, so that's an other one. It is a big mess indeed.
For now, I'll abandon nuking InitHeaderSearch until I've figured out the
intricacies of Mingw builds. It is just another toolchain, so how hard
can it be?
;-) Ed.
On 16/10/2013 00:35, Yaron Keren wrote:
> MingW does use InitHeaderSearch to populate the include directories.
> Frankly, between the C, C++ headers and the hardcoded version
> directories it's a big mess.
>
> Regrading the MingW version, practically I found three popular
> distributions.
>
> 1) http://www.mingw.org/
> 2) http://tdm-gcc.tdragon.net/
> 3) http://sourceforge.net/projects/mingwbuilds/
>
> The first two are quite easy to support since they are installed to a
> fixed default directory. Code for the C includes would be:
> AddPath("c:/mingw/include", System, false);
> and
> AddPath("c:/TDM-GCC-32/include", System, false);
> respectively. Library code would be similar.
>
> mingw-builds is smarter installing into different directories based on
> gcc version, thread package and EH method. So that you can have
> multiple versions of mingw-builds installed and choose between them by
> changing the PATH only. I wrote some not-very-elegant code (below) for
> the C includes of mingw-builds, I think it's not committed to svn.
>
> For C++ headers, a decision to be made is if the clang+MingW uses by
> default libstdc++ or libcxx headers and if libcxx, where it is to be
> found. This may be changed later by the user with -nostdinc and such
> but it is an headache of flags. Maybe a command line flag?
>
> Yaron
>
> // mingw-builds include path.
> // Recursively search all dirs for i686-w64-mingw32, include below.
> llvm::error_code EC;
> for (llvm::sys::fs::recursive_directory_iterator
> Dir("c:\\Program Files (x86)\\mingw-builds", EC),
> DirEnd;
> Dir != DirEnd && !EC; Dir.increment(EC)) {
> std::string DirName = Dir->path();
> if (llvm::sys::fs::is_directory(DirName)) {
> if (DirName.find("i686-w64-mingw32") != std::string::npos) {
> SmallString<512> P = DirName;
> llvm::sys::path::append(P, "include");
> AddPath(P.str(), System, false);
> // Stop searching upon first find.
> break;
> }
> }
> }
>
>
>
>
>
>
>
> 2013/10/16 Edward Meewis <ed at extraordinarymachine.nl
> <mailto:ed at extraordinarymachine.nl>>
>
> Hi G M,
>
>
> On 15/10/2013 22:56, G M wrote:
>
> Hi Edward
>
> On Wed, Oct 16, 2013 at 9:40 AM, Edward Meewis
> <ed at extraordinarymachine.nl
> <mailto:ed at extraordinarymachine.nl>
> <mailto:ed at extraordinarymachine.nl
> <mailto:ed at extraordinarymachine.nl>>> wrote:
>
> Hi,
>
> I was looking into polishing up the header inclusion for
> FreeBSD,
> due to some cmake build issues I have when building the
> the latest
> libcxx with the latest clang.
>
> I'm curious what the cmake issues are.
>
>
> I build clang ToT and libcxx with the previous clang-ToT, using
> the previous libcxx. Sometimes the introduction of new macros,
> e.g., _LIB_WEAK, breaks the build. The cause is subtle: I have to
> point CXX to -I/usr/local/include/c++/v1, but when libcxx is build
> this needs to be overridden to $MYLIBCXXLIB/include when libcxx is
> built. -nostdcxxinc is no help here, because I had to set it
> explicitly.
> I can work around it by pointing the build to
> $MYLIBCXXLIB/include, but that's not very nice. New headers with
> old libraries usually spell disaster.
>
>
>
> It seems that the InitHeaderSearch is almost obsolete, I think
> that most of the header search path information has moved
> to the
> Frontend/Tool(Chain)(s) files.
>
> It turns out that (naively) removing InitHeaderSearc.cpp
> broke the
> CPP init and consequently 'diagtool'.
>
> I think InitHeaderSearch is needed by mingw tool chain at
> least, maybe others. It could be cleaned up but the
> functionality is needed for now.
>
>
> Is it worth while to move CPP to the ToolChain infra?
>
> What does that mean in practice?
>
>
> Don't know yet. I guess defining a mingw toolchain in ToolChains,
> that includes the necessary funtionality, but the miriad of MinGW
> versions scares me a bit.
>
>
> Thanks
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
More information about the cfe-dev
mailing list