diff options
author | evpobr <evpobr@users.noreply.github.com> | 2017-06-08 18:59:14 +0500 |
---|---|---|
committer | evpobr <evpobr@users.noreply.github.com> | 2017-06-08 19:00:37 +0500 |
commit | 5ebd3d5276ad86e36fddcb95217f6dbf62746633 (patch) | |
tree | aef27607620f6e7e7754018cf3fe52a0e503b09a | |
parent | 4891ee729d5bd98fbe8ff82b89e9758f00d18815 (diff) |
Fix WinRT configuring
Don't rely on _WIN32_WINNT value to enable WinRT support.
if _WIN32_WINNT is not set manually, it is defaulted to SDK version. So
if you use SDK > 8 you cannot use TagLib under Win7 and lower because of
CreateFile2 function dependency.
PLATFORM_WINRT option (OFF by default) was introduced to enable WinRT
build.
Related issues: https://github.com/Microsoft/vcpkg/issues/1240
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | ConfigureChecks.cmake | 4 | ||||
-rw-r--r-- | taglib/toolkit/tfilestream.cpp | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bbd7d7cc..3e081ea2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,11 @@ option(BUILD_BINDINGS "Build the bindings" ON) option(NO_ITUNES_HACKS "Disable workarounds for iTunes bugs" OFF) +option(PLATFORM_WINRT "Enable WinRT support" OFF) +if(PLATFORM_WINRT) + add_definitions(-DPLATFORM_WINRT) +endif() + add_definitions(-DHAVE_CONFIG_H) set(TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/") diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index e39d97b2..5e5fca2f 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -209,3 +209,7 @@ if(BUILD_TESTS AND NOT BUILD_SHARED_LIBS) endif() endif() +# Detect WinRT mode +if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(PLATFORM WINRT 1) +endif() diff --git a/taglib/toolkit/tfilestream.cpp b/taglib/toolkit/tfilestream.cpp index 219913af..17a09f3d 100644 --- a/taglib/toolkit/tfilestream.cpp +++ b/taglib/toolkit/tfilestream.cpp @@ -51,7 +51,7 @@ namespace { const DWORD access = readOnly ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE); -#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602) +#if defined (PLATFORM_WINRT) return CreateFile2(path.wstr().c_str(), access, FILE_SHARE_READ, OPEN_EXISTING, NULL); #else return CreateFileW(path.wstr().c_str(), access, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); |