Re: Building v15 on Solaris fails xxhash.h error: '_Static_assert' was not declared in this scope

Andrew Watkins <[email protected]> Fri, 1 May 2026 19:57:20 +0100
Newsgroups gmane.comp.sysutils.backup.bacula.devel
Message-ID <[email protected]>
--------------zyopHVwr0vziju7MU1P3Yt9d
Content-Type: multipart/alternative;
 boundary="------------l08C5M8x4mzAaG3xMQZAD2Qx"

--------------l08C5M8x4mzAaG3xMQZAD2Qx
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

I can see what it is doing but why?

 From xxhash.h

/* note: use after variable declarations */
#ifndef XXH_STATIC_ASSERT
#  if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)    /* 
C11 */          <<<<<
#    define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { 
_Static_assert((c),m); } while(0) <<<<< This being picked in error!!!
#  elif defined(__cplusplus) && (__cplusplus >= 201103L)            /* 
C++11 */
#    define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { 
static_assert((c),m); } while(0)  <<<<< Is this correct for Solaris?
#  else
#    define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { struct xxh_sa { 
char x[(c) ? 1 : -1]; }; } while(0)
#  endif
#  define XXH_STATIC_ASSERT(c) XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c)
#endif

Attached is config.out

Thanks,
Andrew


On 5/1/2026 5:27 PM, Martin Simmons wrote:
>>>>>> On Fri, 1 May 2026 12:14:09 +0100, Andrew Watkins said:
>> Hello,
>>
>> I was looking at moving to Bacula 15.0.3 on our servers, but it does not
>> build on Solaris 11.4
>>
>> Version 13.0.4 builds on Solaris.
>>
>> I get this in xxhash (doesn't look like this is in v13)
>>
>> In file included from xxhash.c:43:
>> xxhash.h: In function 'void XXH32_canonicalFromHash(XXH32_canonical_t*,
>> XXH32_hash_t)':
>> xxhash.h:1812:54: error: '_Static_assert' was not declared in this
>> scope; did you mean 'static_assert'?
>>    1812 | #    define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do {
>> _Static_assert((c),m); } while(0)
>>         | ^~~~~~~~~~~~~~
>> xxhash.h:1818:32: note: in expansion of macro
>> 'XXH_STATIC_ASSERT_WITH_MESSAGE'
>>    1818 | #  define XXH_STATIC_ASSERT(c)
>> XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c)
>>         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> xxhash.h:2535:5: note: in expansion of macro 'XXH_STATIC_ASSERT'
>>    2535 |     XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) ==
>> sizeof(XXH32_hash_t));
>>         |     ^~~~~~~~~~~~~~~~~
> It looks like there is some confusion about C v.s. C++.
>
> What C++ compiler & version are you using?
>
> Can you show us the contents of config.out (generated by configure)?
>
> __Martin

-- 
*****************************************************
*****    Support Request [email protected]    *****
*****************************************************
* Andrew Watkins                                    *
* Birkbeck, University of London                    *
* Computing and Mathematical Sciences               *
*http://notallmicrosoft.blogspot.com               *
*****************************************************

--------------l08C5M8x4mzAaG3xMQZAD2Qx
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html><html data-lt-installed="true"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body style="padding-bottom: 1px;">
    <p>Hi,</p>
    <p>I can see what it is doing but why?</p>
    <p>From xxhash.h</p>
    <font face="monospace">/* note: use after variable declarations */<br>
      #ifndef XXH_STATIC_ASSERT<br>
      #&nbsp; if defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;=
      201112L)&nbsp; &nbsp; /* C11 */&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;&lt;&lt;&lt;&nbsp;<br>
      #&nbsp; &nbsp; define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do {
      _Static_assert((c),m); } while(0) &lt;&lt;&lt;&lt;&lt; This being
      picked in error!!!<br>
      #&nbsp; elif defined(__cplusplus) &amp;&amp; (__cplusplus &gt;=
      201103L)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* C++11 */<br>
      #&nbsp; &nbsp; define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do {
      static_assert((c),m); } while(0)&nbsp; &lt;&lt;&lt;&lt;&lt; Is this
      correct for Solaris?<br>
      #&nbsp; else<br>
      #&nbsp; &nbsp; define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { struct xxh_sa
      { char x[(c) ? 1 : -1]; }; } while(0)<br>
      #&nbsp; endif<br>
      #&nbsp; define XXH_STATIC_ASSERT(c)
      XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c)<br>
      #endif</font>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Attached is config.out</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Thanks,</div>
    <div class="moz-cite-prefix">Andrew</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 5/1/2026 5:27 PM, Martin Simmons
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:[email protected]">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">
                <pre wrap="" class="moz-quote-pre">On Fri, 1 May 2026 12:14:09 +0100, Andrew Watkins said:
</pre>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
        <pre wrap="" class="moz-quote-pre">
Hello,

I was looking at moving to Bacula 15.0.3 on our servers, but it does not 
build on Solaris 11.4

Version 13.0.4 builds on Solaris.

I get this in xxhash (doesn't look like this is in v13)

In file included from xxhash.c:43:
xxhash.h: In function 'void XXH32_canonicalFromHash(XXH32_canonical_t*, 
XXH32_hash_t)':
xxhash.h:1812:54: error: '_Static_assert' was not declared in this 
scope; did you mean 'static_assert'?
 &nbsp;1812 | #&nbsp; &nbsp; define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { 
_Static_assert((c),m); } while(0)
 &nbsp; &nbsp; &nbsp; | ^~~~~~~~~~~~~~
xxhash.h:1818:32: note: in expansion of macro 
'XXH_STATIC_ASSERT_WITH_MESSAGE'
 &nbsp;1818 | #&nbsp; define XXH_STATIC_ASSERT(c) 
XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c)
 &nbsp; &nbsp; &nbsp; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xxhash.h:2535:5: note: in expansion of macro 'XXH_STATIC_ASSERT'
 &nbsp;2535 |&nbsp; &nbsp; &nbsp;XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == 
sizeof(XXH32_hash_t));
 &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp;^~~~~~~~~~~~~~~~~
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
It looks like there is some confusion about C v.s. C++.

What C++ compiler &amp; version are you using?

Can you show us the contents of config.out (generated by configure)?

__Martin
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
*****************************************************
*****    Support Request to <a class="moz-txt-link-abbreviated" href="mailto:[email protected]">[email protected]</a>    *****
*****************************************************
* Andrew Watkins                                    *
* Birkbeck, University of London                    *
* Computing and Mathematical Sciences               *
* <a class="moz-txt-link-freetext" href="http://notallmicrosoft.blogspot.com">http://notallmicrosoft.blogspot.com</a>               *
*****************************************************</pre>
  </body>
  <lt-container></lt-container>
</html>

--------------l08C5M8x4mzAaG3xMQZAD2Qx--

--------------zyopHVwr0vziju7MU1P3Yt9d
Content-Type: text/plain; charset=UTF-8; name="config.out"
Content-Disposition: attachment; filename="config.out"
Content-Transfer-Encoding: base64

CkNvbmZpZ3VyYXRpb24gb24gRnJpIE1heSAgMSAxMjowMzowOCBCU1QgMjAyNjoKCiAgIEhvc3Q6
ICAgICAgICAgICAgICAgICAgICAgIHg4Nl82NC1wYy1zb2xhcmlzMi4xMSAtLSBzb2xhcmlzIDUu
MTEKICAgQmFjdWxhIHZlcnNpb246ICAgICAgICAgICAgQmFjdWxhIDE1LjAuMyAoMjUgTWFyY2gg
MjAyNSkKICAgU291cmNlIGNvZGUgbG9jYXRpb246ICAgICAgLgogICBJbnN0YWxsIGJpbmFyaWVz
OiAgICAgICAgICAvb3B0L2JhY3VsYTE1MDMvYmluCiAgIEluc3RhbGwgbGlicmFyaWVzOiAgICAg
ICAgIC9vcHQvYmFjdWxhMTUwMy9saWIKICAgSW5zdGFsbCBjb25maWcgZmlsZXM6ICAgICAgL29w
dC9iYWN1bGExNTAzL2V0YwogICBTY3JpcHRzIGRpcmVjdG9yeTogICAgICAgICAvb3B0L2JhY3Vs
YTE1MDMvc2NyaXB0cwogICBBcmNoaXZlIGRpcmVjdG9yeTogICAgICAgICAvdmFyL3NoYXJlL2Jh
Y3VsYS9iYWNrdXAKICAgV29ya2luZyBkaXJlY3Rvcnk6ICAgICAgICAgL3Zhci9zaGFyZS9iYWN1
bGEvd29ya2luZwogICBQSUQgZGlyZWN0b3J5OiAgICAgICAgICAgICAvdmFyL3J1bgogICBTdWJz
eXMgZGlyZWN0b3J5OiAgICAgICAgICAvdmFyL3J1bi9zdWJzeXMKICAgTWFuIGRpcmVjdG9yeTog
ICAgICAgICAgICAgL29wdC9iYWN1bGExNTAzL21hbgogICBEYXRhIGRpcmVjdG9yeTogICAgICAg
ICAgICAvdXNyL3NoYXJlCiAgIFBsdWdpbiBkaXJlY3Rvcnk6ICAgICAgICAgIC9vcHQvYmFjdWxh
MTUwMy9wbHVnaW5zCiAgIEMgQ29tcGlsZXI6ICAgICAgICAgICAgICAgIGdjYyAxMy40LjAKICAg
QysrIENvbXBpbGVyOiAgICAgICAgICAgICAgL3Vzci9nY2MvMTMvYmluL2crKyAxMy40LjAKICAg
Q29tcGlsZXIgZmxhZ3M6ICAgICAgICAgICAgIC1nIC1PMiAtV2FsbCAtbTY0IC14IGMrKyAtZm5v
LXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMgLWZuby1ydHRpCiAgIExpbmtlciBmbGFn
czogICAgICAgICAgICAgICAtbTY0CiAgIExpYnJhcmllczogICAgICAgICAgICAgICAgIC1scHRo
cmVhZCAgLWxpbnRsIC1scmVzb2x2IC1scnQKICAgU3RhdGljYWxseSBMaW5rZWQgVG9vbHM6ICAg
bm8KICAgU3RhdGljYWxseSBMaW5rZWQgRkQ6ICAgICAgbm8KICAgU3RhdGljYWxseSBMaW5rZWQg
U0Q6ICAgICAgbm8KICAgU3RhdGljYWxseSBMaW5rZWQgRElSOiAgICAgbm8KICAgU3RhdGljYWxs
eSBMaW5rZWQgQ09OUzogICAgbm8KICAgRGF0YWJhc2UgYmFja2VuZHM6ICAgICAgICAgTXlTUUwK
ICAgRGF0YWJhc2UgcG9ydDogICAgICAgICAgICAgIAogICBEYXRhYmFzZSBuYW1lOiAgICAgICAg
ICAgICBiYWN1bGFkYgogICBEYXRhYmFzZSB1c2VyOiAgICAgICAgICAgICBiYWN1bGEKICAgRGF0
YWJhc2UgU1NMIG9wdGlvbnM6ICAgICAgCgogICBKb2IgT3V0cHV0IEVtYWlsOiAgICAgICAgICBi
YWNrdXBAZGNzLmJiay5hYy51awogICBUcmFjZWJhY2sgRW1haWw6ICAgICAgICAgICBiYWNrdXBA
ZGNzLmJiay5hYy51awogICBTTVRQIEhvc3QgQWRkcmVzczogICAgICAgICBzbXRwLmRjcy5iYmsu
YWMudWsKCiAgIERpcmVjdG9yIFBvcnQ6ICAgICAgICAgICAgIDkxMDEKICAgRmlsZSBkYWVtb24g
UG9ydDogICAgICAgICAgOTEwMgogICBTdG9yYWdlIGRhZW1vbiBQb3J0OiAgICAgICA5MTAzCgog
ICBEaXJlY3RvciBVc2VyOiAgICAgICAgICAgICAKICAgRGlyZWN0b3IgR3JvdXA6ICAgICAgICAg
ICAgCiAgIFN0b3JhZ2UgRGFlbW9uIFVzZXI6ICAgICAgIAogICBTdG9yYWdlIERhZW1vbkdyb3Vw
OiAgICAgICAKICAgRmlsZSBEYWVtb24gVXNlcjogICAgICAgICAgCiAgIEZpbGUgRGFlbW9uIEdy
b3VwOiAgICAgICAgIAoKICAgTGFyZ2UgZmlsZSBzdXBwb3J0OiAgICAgICAgeWVzCiAgIEJhY3Vs
YSBjb25pbyBzdXBwb3J0OiAgICAgIHllcyAtbG5jdXJzZXMKICAgcmVhZGxpbmUgc3VwcG9ydDog
ICAgICAgICAgbm8gCiAgIFRDUCBXcmFwcGVycyBzdXBwb3J0OiAgICAgIG5vIAogICBUTFMgc3Vw
cG9ydDogICAgICAgICAgICAgICB5ZXMKICAgRW5jcnlwdGlvbiBzdXBwb3J0OiAgICAgICAgeWVz
CiAgIFpMSUIgc3VwcG9ydDogICAgICAgICAgICAgIHllcwogICBMWk8gc3VwcG9ydDogICAgICAg
ICAgICAgICBubwogICBTMyBzdXBwb3J0OiAgICAgICAgICAgICAgICBubwogICBMSUJDQVAgc3Vw
cG9ydDogCSAgICAgbm8KICAgWlNURCBzdXBwb3J0OiAgICAgICAgICAgICB5ZXMKICAgZW5hYmxl
LXNtYXJ0YWxsb2M6ICAgICAgICAgeWVzCiAgIGVuYWJsZS1sb2NrbWdyOiAgICAgICAgICAgIG5v
CiAgIGJhdCBzdXBwb3J0OiAgICAgICAgICAgICAgIG5vCiAgIGNsaWVudC1vbmx5OiAgICAgICAg
ICAgICAgIG5vCiAgIGJ1aWxkLWRpcmQ6ICAgICAgICAgICAgICAgIHllcwogICBidWlsZC1zdG9y
ZWQ6ICAgICAgICAgICAgICB5ZXMKICAgUGx1Z2luIHN1cHBvcnQ6ICAgICAgICAgICAgeWVzCiAg
IExEQVAgc3VwcG9ydDogICAgICAgICAgICAgIG5vCiAgIExEQVAgU3RhcnRUTFMgc3VwcG9ydDog
ICAgIG5vCiAgIEFGUyBzdXBwb3J0OiAgICAgICAgICAgICAgIG5vCiAgIEFDTCBzdXBwb3J0OiAg
ICAgICAgICAgICAgIHllcwogICBYQVRUUiBzdXBwb3J0OiAgICAgICAgICAgICB5ZXMKICAgR1BG
UyBzdXBwb3J0OiAgICAgICAgICAgICAgbm8gCiAgIHN5c3RlbWQgc3VwcG9ydDogICAgICAgICAg
IG5vIAogICBCYXRjaCBpbnNlcnQgZW5hYmxlZDogICAgICBNeVNRTAoKICAgUGx1Z2luczoKICAg
LSBEb2NrZXI6ICAgICAgICAgICAgICAgICAgbm8KICAgLSBLdWJlcm5ldGVzOiAgICAgICAgICAg
ICAgCiAgIC0gTERBUCBCUEFNOiAgICAgICAgICAgICAgIG5vCiAgIC0gVE9UUCBCUEFNOiAgICAg
ICAgICAgICAgIG5vCiAgIC0gQ0RQOiAgICAgICAgICAgICAgICAgICAgIGF1dG8KICAgLSBBbnRp
dmlydXM6ICAgICAgICAgICAgICAgbm8KICAgLSBhd3M6ICAgICAgICAgICAgICAgICAgICAgbm8K
ICAK

--------------zyopHVwr0vziju7MU1P3Yt9d
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--------------zyopHVwr0vziju7MU1P3Yt9d
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

--------------zyopHVwr0vziju7MU1P3Yt9d--