Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for user-supplied prefix/suffix in function declarations #154

Merged
merged 1 commit into from
Feb 15, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 51 additions & 40 deletions CL/cl_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,33 @@ extern "C" {
* deprecation but is deprecated in versions later than 1.1.
*/

#define CL_API_SUFFIX__VERSION_1_0
#define CL_EXT_SUFFIX__VERSION_1_0
#define CL_API_SUFFIX__VERSION_1_1
#define CL_EXT_SUFFIX__VERSION_1_1
#define CL_API_SUFFIX__VERSION_1_2
#define CL_EXT_SUFFIX__VERSION_1_2
#define CL_API_SUFFIX__VERSION_2_0
#define CL_EXT_SUFFIX__VERSION_2_0
#define CL_API_SUFFIX__VERSION_2_1
#define CL_EXT_SUFFIX__VERSION_2_1
#define CL_API_SUFFIX__VERSION_2_2
#define CL_EXT_SUFFIX__VERSION_2_2
#define CL_API_SUFFIX__VERSION_3_0
#define CL_EXT_SUFFIX__VERSION_3_0
#define CL_API_SUFFIX__EXPERIMENTAL
#define CL_EXT_SUFFIX__EXPERIMENTAL
#ifndef CL_API_SUFFIX_USER
#define CL_API_SUFFIX_USER
#endif

#ifndef CL_API_PREFIX_USER
#define CL_API_PREFIX_USER
#endif

#define CL_API_SUFFIX_COMMON CL_API_SUFFIX_USER
#define CL_API_PREFIX_COMMON CL_API_PREFIX_USER
Comment on lines +52 to +53
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know how much we care about this, but I think we could avoid defining these symbols and just use the user-defined prefix and suffixes directly. Alternatively, we could #undef these symbols after they're used.

As a separate issue (not for this PR), I think we should also formally reserve all of the CL_API_XXX names in the spec for usage in the headers.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added these to make it easier to manage common definitions in the future. I agree they're not strictly required for this change. We could indeed #undef them after but I'm not sure it matters too much, especially if we're reserving all the CL_API* names (I've added this to a checlist in #153).


#define CL_API_SUFFIX__VERSION_1_0 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_1_0 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_1_1 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_1_1 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_1_2 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_1_2 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_2_0 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_2_0 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_2_1 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_2_1 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_2_2 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_2_2 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__VERSION_3_0 CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__VERSION_3_0 CL_API_SUFFIX_COMMON
#define CL_API_SUFFIX__EXPERIMENTAL CL_API_SUFFIX_COMMON
#define CL_EXT_SUFFIX__EXPERIMENTAL CL_API_SUFFIX_COMMON


#ifdef __GNUC__
Expand All @@ -71,51 +82,51 @@ extern "C" {
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS
#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS
#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS
#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_2_1_APIS
#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#ifdef CL_USE_DEPRECATED_OPENCL_2_2_APIS
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED CL_API_SUFFIX_COMMON
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED CL_API_PREFIX_COMMON
#else
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED CL_API_SUFFIX_COMMON CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED CL_API_PREFIX_COMMON CL_EXT_PREFIX_DEPRECATED
#endif

#if (defined (_WIN32) && defined(_MSC_VER))
Expand Down