Actually Karel, if "gcc -dumpspecs" shows you that same -P as I get you can override it with spec files as described here:
I think this means that you could specify "gcc -specs=/path/to/overridecpp.spec" as --with-hs-cpp when building GHC. I'm trying that now. I've already gotten a strawman example based on your post to the GCC list working, and I'm going to try to expand on it.
True, but I'd still like to find a mutual solution since we're both somewhat at the edge of the supported landscape for GHC.
Is installing cpphs and configuring GHC to use that an option on Solaris 11? I haven't built cpphs successfully on SmartOS yet. Supplying a custom C preprocessor may be your best bet and using GCC 3.4's works for you. If I can get cpphs working that may be the common ground needed to keep Illumos and Solaris support from diverging.
Alain,
indeed, on SmartOS you are free to modify the supplied GCC so the fix to
remove -P is most natural one. On the other hand I'm not so lucky with
binary Solaris 11.x distribution provided by Oracle so I need to use not
so clean and nice workarounds...
Karel
On 01/ 1/16 12:17 AM, Alain O'Dea wrote:
> cpphs isn't a direct option. It won't install on SmartOS with Cabal.
> GCC 4.7 is the earliest GCC supported so I'll have to try something else
> for SmartOS.
>
> It looks like the GCC Specs are the problem.
>
> On Ubuntu the Spec for cpp is:
>
> *cpp:
> %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
>
> On SmartOS the Spec for cpp is:
>
> *cpp:
> %{,assembler-with-cpp:-P} %(cpp_subtarget)
>
> I think this is how the -P gets injected. I think this is correctable.
> I had a similar issue with -std=c99 which is the default for C compiling
> on Ubuntu but not on SmartOS leading to issues with compiling source
> that isn't old school C (like persistent-sqlite).
>
> Anyways I must retire from this and entertain my guests. Happy New Year
> folks.
>
>
> On Thu, Dec 31, 2015 at 5:19 PM Alain O'Dea <alain.odea@gmail.com
> <mailto:alain.odea@gmail.com>> wrote:
>
> Thanks for the clarification. I understand now.
> On Thu, Dec 31, 2015 at 16:52 Karel Gardas <karel.gardas@centrum.cz
> <mailto:karel.gardas@centrum.cz>> wrote:
>
> On 12/31/15 07:41 PM, Alain O'Dea wrote:
> > Yes. I can do that.
> >
> > On SmartOS it may not be GCC 3.4.3 causing this. I see this
> on GCC 4.7.x
> > through 4.9.x. The paths to gcc on SmartOS also differ. I'll
> have to
> > verify that as part of checking this.
>
> This is misunderstanding. GCC 3.4.3 provides *correct* CPP behavior,
> while all 4.x provides broken CPP. That means as a workaround
> when GCC
> 3.4.3 is installed I set it as GHC's CPP automatically on
> Solaris. When
> it is not available, then GHC behaves like you've seen when
> using CPP...
>
> Hopefully this is more clear now,
>
> Karel
>