<div dir="ltr"><div>Well, for sure you can in define that in .cabal file:<br><br>    if !os(windows)<br>      CC-Options: &quot;-DWINDOWS&quot;<br><br></div>or something. See: <a href="http://www.haskell.org/cabal/users-guide/developing-packages.html#configurations">http://www.haskell.org/cabal/users-guide/developing-packages.html#configurations</a><br>

<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Feb 15, 2013 at 3:05 PM, Andrew Cowie <span dir="ltr">&lt;<a href="mailto:andrew@operationaldynamics.com" target="_blank">andrew@operationaldynamics.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;ve got a piece of code that looks like this:<br>
<br>
        baselineContextSSL :: IO SSLContext<br>
        baselineContextSSL = do<br>
            ctx &lt;- SSL.context<br>
            SSL.contextSetDefaultCiphers ctx<br>
        #if defined __MACOSX__<br>
            SSL.contextSetVerificationMode ctx SSL.VerifyNone<br>
        #elif defined __WIN32__<br>
            SSL.contextSetVerificationMode ctx SSL.VerifyNone<br>
        #else<br>
            SSL.contextSetCADirectory ctx &quot;/etc/ssl/certs&quot;<br>
            SSL.contextSetVerificationMode ctx $<br>
                SSL.VerifyPeer True True Nothing<br>
        #endif<br>
            return ctx<br>
<br>
all very nice (this being necessary because apparently the non-free<br>
operating systems don&#39;t store their certs in a reliably discoverable<br>
place; bummer).<br>
<br>
That, however, is not the problem. After all, this sort of thing is what<br>
#ifdefs are for. The problem is needing to get an appropriate symbol<br>
based on what OS you&#39;re using defined.<br>
<br>
I naively assumed there would be __LINUX__ and __MACOSX__ and __WIN32__<br>
defined by GHC because, well, that&#39;s just the sort of wishful thinking<br>
that powers the universe.<br>
<br>
So my question is: what&#39;s an appropriate Haskell mechanism for building<br>
code that is OS / arch  / distro specific? It&#39;s not like I have autoconf<br>
running generating me a config.h I could #include, right?<br>
<br>
This feels simple and an appropriate use of CPP; even the symbol names<br>
look just about like what I would have expected; stackoverflow said so,<br>
must be true. Just need to get the right symbol defined at build time.<br>
<br>
Any suggestions?<br>
<br>
AfC<br>
Sydney<br>
<br>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>