Re: cpp behavior?

From: Steve Kargl <sgk_at_troutmask.apl.washington.edu>
Date: Sat, 20 May 2017 13:12:08 -0700
On Sat, May 20, 2017 at 11:39:14AM -0600, Ian Lepore wrote:
> On Fri, 2017-05-19 at 17:07 -0700, Steve Kargl wrote:
> > % which cpp
> > /usr/bin/cpp
> > troutmask:kargl[408] cpp --version
> > FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on
> > LLVM 4.0.0)
> > Target: x86_64-unknown-freebsd12.0
> > Thread model: posix
> > InstalledDir: /usr/bin
> > troutmask:kargl[409] cpp --help |grep trad
> >   -traditional-cpp        Enable some traditional CPP emulation
> > troutmask:kargl[410] cpp -traditional-cpp boxmuller.F90 
> > cpp: error: unable to execute command: Executable "gcc" doesn't
> > exist!
> > 
> > OK, so what is the preprocessor for clang?
> > 
> 
> It looks like the problem is that it sees the .F90 and wants to "do the
> right thing" for fortran sources, which is "invoke gcc".  I got a clue
> by adding '-###' (quotes required) to see what cpp was trying to do
> internally.

Thanks.  I did not know about the -### option.

> You might get the effect you want by either adding something like -x
> assembler-with-cpp, or maybe by hiding the filetype from cpp:

I'm checking out the new devel/flang port (a Fortran front-end
for clang).  Although flang recognizes the .F90 extension,
'flang -c boxmuller.F90' dies a horrible death because it assumes
a modern cpp syntax.  AFAIK, the traditional syntax that gcc 
uses with the -traditional-cpp option is required by those who
use C preprocessing directives in their Fortran.  Modern cpp
can corrupt valid Fortran.  Having clang invoke gcc when I tried
cpp caught me off guard.

-- 
Steve
20170425 https://www.youtube.com/watch?v=VWUpyCsUKR4
20161221 https://www.youtube.com/watch?v=IbCHE-hONow
Received on Sat May 20 2017 - 18:12:09 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:11 UTC