From b5fece03812dfe8edc1d3a613f3328a2df34f4cd Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 7 Oct 2013 06:36:58 -0700 Subject: [PATCH] Add a CMake option to not define the IDs used on Windows This includes the GUIDs, IIDs, CLSID, and PropertyKeys. It is up to the user to ensure the appropriate IDs are defined when linked. --- Alc/helpers.c | 3 +++ CMakeLists.txt | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Alc/helpers.c b/Alc/helpers.c index fe1318ce..1eadc99c 100644 --- a/Alc/helpers.c +++ b/Alc/helpers.c @@ -28,6 +28,7 @@ #include #endif +#ifndef AL_NO_UID_DEFS #if defined(HAVE_GUIDDEF_H) || defined(HAVE_INITGUID_H) #define INITGUID #include @@ -52,6 +53,8 @@ DEFINE_GUID(IID_IAudioRenderClient, 0xf294acfc, 0x3146, 0x4483, 0xa7,0xbf, 0xa DEFINE_DEVPROPKEY(DEVPKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80,0x20, 0x67,0xd1,0x46,0xa8,0x50,0xe0, 14); #endif #endif +#endif /* AL_NO_UID_DEFS */ + #ifdef HAVE_DLFCN_H #include #endif diff --git a/CMakeLists.txt b/CMakeLists.txt index 44903eb3..0b553b43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,13 @@ OPTION(ALSOFT_CPUEXT_NEON "Check for ARM Neon support" ON) OPTION(ALSOFT_REQUIRE_SSE "Require SSE/SSE2 support" OFF) OPTION(ALSOFT_REQUIRE_NEON "Require ARM Neon support" OFF) +IF(WIN32) + # This option is mainly for static linking OpenAL Soft into another project + # that already defines the IDs. It is up to that project to ensure all + # required IDs are defined. + OPTION(ALSOFT_NO_UID_DEFS "Do not define GUIDs, IIDs, CLSIDs, or PropertyKeys" OFF) +ENDIF() + OPTION(ALSOFT_BACKEND_ALSA "Check for ALSA backend" ON) OPTION(ALSOFT_BACKEND_OSS "Check for OSS backend" ON) @@ -140,6 +147,9 @@ ENDIF() INCLUDE_DIRECTORIES("${OpenAL_SOURCE_DIR}/include" "${OpenAL_BINARY_DIR}") IF(CMAKE_VERSION VERSION_LESS "2.8.8") INCLUDE_DIRECTORIES("${OpenAL_SOURCE_DIR}/OpenAL32/Include") + IF(WIN32 AND ALSOFT_NO_UID_DEFS) + ADD_DEFINITIONS("-DAL_NO_UID_DEFS") + ENDIF() ENDIF() IF(NOT CMAKE_BUILD_TYPE) @@ -815,6 +825,9 @@ CONFIGURE_FILE( # Build a library ADD_LIBRARY(${LIBNAME} ${LIBTYPE} ${OPENAL_OBJS} ${ALC_OBJS}) SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY COMPILE_DEFINITIONS AL_BUILD_LIBRARY AL_ALEXT_PROTOTYPES) +IF(WIN32 AND ALSOFT_NO_UID_DEFS) + SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY COMPILE_DEFINITIONS AL_NO_UID_DEFS) +ENDIF() SET_PROPERTY(TARGET ${LIBNAME} APPEND PROPERTY INCLUDE_DIRECTORIES "${OpenAL_SOURCE_DIR}/OpenAL32/Include") SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${LIB_VERSION} SOVERSION ${LIB_MAJOR_VERSION})