--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -854,44 +854,38 @@ OPTION(ALSOFT_REQUIRE_WINMM "Require Windows Multimedia backend" OFF)
 OPTION(ALSOFT_REQUIRE_DSOUND "Require DirectSound backend" OFF)
 OPTION(ALSOFT_REQUIRE_WASAPI "Require WASAPI backend" OFF)
 IF(WIN32)
-    SET(WINSDK_LIB_DIRS )
-    SET(WINSDK_INCLUDE_DIRS )
-    FIND_PACKAGE(WindowsSDK)
-    IF(WINDOWSSDK_FOUND)
-        get_windowssdk_library_dirs(${WINDOWSSDK_PREFERRED_DIR} WINSDK_LIB_DIRS)
-        get_windowssdk_include_dirs(${WINDOWSSDK_PREFERRED_DIR} WINSDK_INCLUDE_DIRS)
-    ENDIF()
-
-    SET(OLD_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS})
-    SET(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0502)
-
     # Check MMSystem backend
-    CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H)
-    FIND_LIBRARY(WINMM_LIBRARY NAMES winmm
-        PATHS ${WINSDK_LIB_DIRS}
-        PATH_SUFFIXES lib lib/x86 lib/x64)
-    IF(HAVE_MMSYSTEM_H AND WINMM_LIBRARY)
-        OPTION(ALSOFT_BACKEND_WINMM "Enable Windows Multimedia backend" ON)
-        IF(ALSOFT_BACKEND_WINMM)
-            SET(HAVE_WINMM 1)
-            SET(BACKENDS  "${BACKENDS} WinMM,")
-            SET(ALC_OBJS  ${ALC_OBJS} alc/backends/winmm.cpp alc/backends/winmm.h)
-            SET(EXTRA_LIBS ${WINMM_LIBRARY} ${EXTRA_LIBS})
-        ENDIF()
-    ENDIF()
+    option(ALSOFT_BACKEND_WINMM "Enable Windows Multimedia backend" ON)
+    if(ALSOFT_BACKEND_WINMM)
+        set(HAVE_WINMM 1)
+        set(BACKENDS "${BACKENDS} WinMM,")
+        set(ALC_OBJS ${ALC_OBJS} alc/backends/winmm.cpp alc/backends/winmm.h)
+        # There doesn't seem to be good way to search for winmm.lib for MSVC.
+        # find_library doesn't find it without being told to look in a specific
+        # place in the WindowsSDK, but it links anyway. If there ends up being
+        # Windows targets without this, another means to detect it is needed.
+        set(EXTRA_LIBS winmm ${EXTRA_LIBS})
+    endif()
 
     # Check DSound backend
-    FIND_PACKAGE(DSound)
-    IF(DSOUND_FOUND)
-        OPTION(ALSOFT_BACKEND_DSOUND "Enable DirectSound backend" ON)
-        IF(ALSOFT_BACKEND_DSOUND)
-            SET(HAVE_DSOUND 1)
-            SET(BACKENDS  "${BACKENDS} DirectSound${IS_LINKED},")
-            SET(ALC_OBJS  ${ALC_OBJS} alc/backends/dsound.cpp alc/backends/dsound.h)
-            ADD_BACKEND_LIBS(${DSOUND_LIBRARIES})
-            SET(INC_PATHS ${INC_PATHS} ${DSOUND_INCLUDE_DIRS})
-        ENDIF()
-    ENDIF()
+    check_include_file(dsound.h HAVE_DSOUND_H)
+    if(DXSDK_DIR)
+        find_path(DSOUND_INCLUDE_DIR NAMES "dsound.h"
+            PATHS "${DXSDK_DIR}" PATH_SUFFIXES include
+            DOC "The DirectSound include directory")
+    endif()
+    if(HAVE_DSOUND_H OR DSOUND_INCLUDE_DIR)
+        option(ALSOFT_BACKEND_DSOUND "Enable DirectSound backend" ON)
+        if(ALSOFT_BACKEND_DSOUND)
+            set(HAVE_DSOUND 1)
+            set(BACKENDS "${BACKENDS} DirectSound,")
+            set(ALC_OBJS ${ALC_OBJS} alc/backends/dsound.cpp alc/backends/dsound.h)
+
+            if(NOT HAVE_DSOUND_H)
+                set(INC_PATHS ${INC_PATHS} ${DSOUND_INCLUDE_DIR})
+            endif()
+        endif()
+    endif()
 
     # Check for WASAPI backend
     CHECK_INCLUDE_FILE(mmdeviceapi.h HAVE_MMDEVICEAPI_H)
