roken: do not clobber __attribute__ 61/12961/6
authorMichael Meffie <mmeffie@sinenomine.net>
Thu, 15 Mar 2018 22:53:59 +0000 (18:53 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Tue, 14 Aug 2018 21:56:39 +0000 (17:56 -0400)
commit388eaec3452ed4b18a95ee34efcbe4cf64814701
tree47620e94c954b83755de2a6d673f6de97995d990
parent1711917e7ded7ebebae74d7bfeb8359a69db8869
roken: do not clobber __attribute__

The roken-common.h header defines an empty macro called __attribute__
when HAVE___ATTRIBUTE__ is not defined. This macro conditionally removes
the `format' function attributes in the roken headers at compile time.
Unfortunately, the empty __attribute__ macro will also clobber other
attribute types encountered after the roken.h header inclusion.

This is not an issue when building under gcc or clang, since the empty
attribute macro will not be defined. However Solaris Studio supports a
subset of the function attribute types, with `format' not currently
supported. This means roken will define an empty __attribute__ macro,
which prevents the use of other attribute types.

This commit does not change the roken files directly because they are
external.  Instead, the processing of the roken.h.in file has been
updated to undefine the __attribute__ macro at the end of the generated
roken.h header.

Change-Id: Iea5622ae175e7f82a60780838948178bd7f8b56f
Reviewed-on: https://gerrit.openafs.org/12961
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/roken/Makefile.in
src/roken/roken-post.h [new file with mode: 0644]