delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2023/07/07/04:02:19

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D2F1D3854833
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1688716895;
bh=wrBIfubwx/7/74BJnZvYoxYX+AN2MwHofduUxMgBARc=;
h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:
From;
b=atg4muoGq7ydI1qXRac+OQfymzGBYWUbg9uX/a8MLGMeIJXvwXaF6DW4qUvPztMpz
GIN4EEEM3Gxb/FnV6fbW+I7n9g7wPEs2N1Wi7X0F1cNBUeIhhTPliNGxxWxwSJAUNh
WD20QxvY2ELIvcQtDzhr9Ru79JW5k4FmXl+aOAcI=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 49A29385C6DE
Subject: Re: iostream doesn't work (clang++)
To: cygwin AT cygwin DOT com
References: <7e07e251-2ec6-b7a5-62da-8578eb638993 AT gmail DOT com>
<47f9e50d-763b-e6a9-b2b0-8d3cc311a63b AT maxrnd DOT com>
<3c02f650-248e-9e03-94a8-d508c857474e AT gmail DOT com>
<dbce604a-f7ac-e30f-19db-609a71d2757e AT Shaw DOT ca>
Message-ID: <9105f726-bc59-5585-a42d-1f0a52188c0b@maxrnd.com>
Date: Fri, 7 Jul 2023 01:01:18 -0700
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Firefox/52.0 SeaMonkey/2.49.4
MIME-Version: 1.0
In-Reply-To: <dbce604a-f7ac-e30f-19db-609a71d2757e@Shaw.ca>
X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, BODY_8BITS,
KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, SPF_HELO_NONE,
SPF_NONE, TXREP,
T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Mark Geisert via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Mark Geisert <mark AT maxrnd DOT com>
Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com>
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 367820rf025802

Brian Inglis via Cygwin wrote:
> On 2023-07-05 09:54, ggl329 via Cygwin wrote:
>> Hi Mark,
>>
>> On 2023/07/05 12:06, Mark Geisert via Cygwin wrote:
>>> My previous reply addressed the specific error reported by your testcase.
>>> But I am unable to make progress on the root cause because I can't reproduce 
>>> your report.
>>
>> Hm, it seems to be difficult to track down the root cause...
>>
>>> On my system I try the compilation and see:
>>> ~ clang++ sample.cc
>>> sample.cc:1:10: fatal error: 'iostream' file not found
>>> #include <iostream>
>>>           ^~~~~~~~~~
>>> 1 error generated.
>>
>> I tried with clang++ --verbose, and the log showed search paths for #include.
>> iostream is at /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream.
>> Can you find it? It comes from gcc-g++.
>> Or the search path includes /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++?
> 
> Package clang pulls in headers and libraries from libc++-devel libclang8 
> libunwind-devel gcc-g++ libstdc++6 gcc-core cygwin-devel so the primary include 
> paths should be from:
> libc++-devel /usr/include/c++/v1/ for most language and library definitions and 
> libraries,
> libclang8 /usr/lib/clang/8.0.1/include/ for clang intrinsics and builtins,
> libunwind-devel /usr/include/ for exception handling definitions and libraries,
> gcc-g++ /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/{x86_64-pc-cygwin/,} and 
> libstdc++6 for C++ system dependent and low level definitions and libraries,
> gcc-core /usr/lib/gcc/x86_64-pc-cygwin/11/include/ for system dependent and low 
> level intrinsics and interfaces, and
> cygwin-devel /usr/include/{*/,} for system dependent and low level definitions and 
> libraries.
> 
> Everything clang should be prioritized over anything gcc to prevent such issues, 
> so cygcheck -c clang llvm libc++-devel libclang8 libunwind-devel gcc-g++ 
> libstdc++6 gcc-core cygwin-devel to ensure eveything has been installed properly.
> 
> Unfortunately clang{,++,-cpp} -print-search-dirs does *NOT* show include paths,
> but -v and -### complain about nonexistent /usr/include/c++/11 where 
> /usr/include/c++/v1 exists!
> It appears the search list ignores the directories populated in libc++-devel:
> ... -resource-dir /usr/lib/clang/8.0.1
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++/x86_64-pc-cygwin
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++/backward
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++/11
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++/11/x86_64-pc-cygwin 
> -internal-isystem /usr/x86_64-pc-cygwin/include/c++/11/backward
> -internal-isystem /usr/include/c++/11
> -internal-isystem /usr/include/c++/11/x86_64-pc-cygwin
> -internal-isystem /usr/include/c++/11/backward
> -internal-isystem /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++
> -internal-isystem /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/x86_64-pc-cygwin 
> -internal-isystem /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/backward
> -internal-isystem /usr/lib/clang/8.0.1/include
> -internal-isystem /usr/local/include
> -internal-isystem /usr/lib/clang/8.0.1/include
> -internal-isystem /usr/x86_64-pc-cygwin/include
> -internal-isystem /usr/include
> -internal-isystem /usr/include/w32api ...
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include/c++"
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include/c++/x86_64-pc-cygwin"
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include/c++/backward"
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include/c++/11"
> ignoring nonexistent directory 
> "/usr/x86_64-pc-cygwin/include/c++/11/x86_64-pc-cygwin"
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include/c++/11/backward"
> ignoring nonexistent directory "/usr/include/c++/11"
> ignoring nonexistent directory "/usr/include/c++/11/x86_64-pc-cygwin"
> ignoring nonexistent directory "/usr/include/c++/11/backward"
> ignoring nonexistent directory "/usr/x86_64-pc-cygwin/include"
> ignoring duplicate directory "/usr/lib/clang/8.0.1/include"
> #include "..." search starts here:
> #include <...> search starts here:
>   /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++
>   /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/x86_64-pc-cygwin
>   /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/backward
>   /usr/lib/clang/8.0.1/include
>   /usr/local/include
>   /usr/include
>   /usr/include/w32api
> End of search list.
> 
> You may want to try to override the built in includes from -internal-isystem with 
> those mentioned above but not built in.
> 
> I have no idea why both compilers would include w32api headers as if they were 
> building Mingw cross compilers!

Thanks very much Brian for this overview.  I'd rather not delay a fix for the OP 
any longer, so I have submitted a patch for the reported issue.  If it turns out 
that, with the patch, the OP can successfully compile and build his testcase, we 
may be done.

If not, somebody (TM) may have to dig into what's been discovered and how to 
remedy it.  Comparing Cygwin's clang/clang++ installation with some Linux's 
installation might be helpful.  I have some other ideas but I can't commit time to 
following them up ATM.
Thanks all,

..mark

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019