Skip to content

Commit 76d1adb

Browse files
authored
Merge pull request #114 from xstrahl/fix/direct-show-find-module
fix: find direct show modules
2 parents f32ff21 + 06d1c98 commit 76d1adb

File tree

1 file changed

+109
-121
lines changed

1 file changed

+109
-121
lines changed

cmake/FindDirectShow.cmake

Lines changed: 109 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,43 @@
11
#
22
# $Id$
33
#
4-
# Author(s): Anton Deguet
5-
# Created on: 2007-02-23
4+
# Author(s): Anton Deguet Created on: 2007-02-23
65
#
7-
# (C) Copyright 2007-2007 Johns Hopkins University (JHU), All Rights
8-
# Reserved.
6+
# (C) Copyright 2007-2007 Johns Hopkins University (JHU), All Rights Reserved.
97
#
108
# --- begin cisst license - do not edit ---
11-
#
12-
# This software is provided "as is" under an open source license, with
13-
# no warranty. The complete license can be found in license.txt and
14-
# http://www.cisst.org/cisst/license.txt.
15-
#
9+
#
10+
# This software is provided "as is" under an open source license, with no warranty. The complete license can be found
11+
# in license.txt and http://www.cisst.org/cisst/license.txt.
12+
#
1613
# --- end cisst license ---
1714

1815
#
1916
# This file contains code found on the Wiki page of CMake
2017
#
2118

22-
# - Test for DirectShow on Windows.
23-
# Once loaded this will define
24-
# DIRECTSHOW_FOUND - system has DirectShow
25-
# DIRECTSHOW_INCLUDE_DIR - include directory for DirectShow
26-
# DIRECTSHOW_LIBRARIES - libraries you need to link to
19+
# * Test for DirectShow on Windows. Once loaded this will define DIRECTSHOW_FOUND - system has DirectShow
20+
# DIRECTSHOW_INCLUDE_DIR - include directory for DirectShow DIRECTSHOW_LIBRARIES - libraries you need to link to
2721

28-
SET(DIRECTSHOW_FOUND "NO")
22+
set(DIRECTSHOW_FOUND "NO")
2923

3024
# DirectShow is only available on Windows platforms
31-
IF(WIN32)
32-
SET(SVL_WIN64 FALSE)
33-
34-
# Note that newer versions of MSVC generators as well as newer versions of CMake do not include the "bitness" of the generator.
35-
IF("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
36-
SET(SVL_WIN64 TRUE)
37-
ENDIF("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
38-
39-
# One more check for bitness
40-
# In CMake 3.1 and up we can use CMAKE_GENERATOR_PLATFORM. For now assume that systems that are still building
41-
# with older versions of CMake are not using the latest build tools.
42-
IF(NOT SVL_WIN64 AND ${CMAKE_MAJOR_VERSION} GREATER_EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER_EQUAL 1)
43-
IF("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(Win64|IA64|x64)")
25+
if(WIN32)
26+
set(SVL_WIN64 FALSE)
27+
message(STATUS "Searching for DirectShow on Windows")
28+
29+
# One more check for bitness In CMake 3.1 and up we can use CMAKE_GENERATOR_PLATFORM. For now assume that systems
30+
# that are still building with older versions of CMake are not using the latest build tools.
31+
if(NOT SVL_WIN64)
32+
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(Win64|IA64|x64)")
4433
set(SVL_WIN64 TRUE)
45-
ENDIF("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(Win64|IA64|x64)")
46-
ENDIF(NOT SVL_WIN64 AND ${CMAKE_MAJOR_VERSION} GREATER_EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER_EQUAL 1)
34+
endif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(Win64|IA64|x64)")
35+
endif(NOT SVL_WIN64)
4736

48-
SET(PROGRAMFILES_DIR "$ENV{SystemDrive}/Program Files")
49-
SET(PROGRAMFILES_X86_DIR "$ENV{SystemDrive}/Program Files (x86)")
37+
set(PROGRAMFILES_DIR "$ENV{SystemDrive}/Program Files")
38+
set(PROGRAMFILES_X86_DIR "$ENV{SystemDrive}/Program Files (x86)")
5039

51-
SET(DIRECTSHOW_INCLUDE_DIRS
40+
set(DIRECTSHOW_INCLUDE_DIRS
5241
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v7.0/Include"
5342
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v6.0A/Include"
5443
"${PROGRAMFILES_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Include"
@@ -60,104 +49,103 @@ IF(WIN32)
6049
"${PROGRAMFILES_X86_DIR}/Microsoft DirectX SDK (February 2006)/Include"
6150
"${PROGRAMFILES_X86_DIR}/Microsoft DirectX 9.0 SDK (June 2005)/Include"
6251
"$ENV{SystemDrive}/DXSDK/Include"
52+
)
53+
54+
if(SVL_WIN64)
55+
message(STATUS "DirectShow using 64-bit static libraries")
56+
set(DIRECTSHOW_LIBRARY_DIRS
57+
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v7.0/Lib/x64"
58+
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v6.0A/Lib/x64"
59+
"${PROGRAMFILES_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib/x64"
60+
"${PROGRAMFILES_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib/x64"
61+
"${PROGRAMFILES_DIR}/Microsoft Platform SDK/Lib/x64"
62+
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v7.0/Lib/x64"
63+
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v6.0A/Lib/x64"
64+
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib/x64"
65+
"${PROGRAMFILES_X86_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib/x64"
66+
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK/Lib/x64"
67+
"$ENV{SystemDrive}/DXSDK/Include/Lib/x64"
6368
)
64-
65-
IF(SVL_WIN64)
66-
MESSAGE(STATUS "DirectShow using 64-bit static libraries")
67-
SET(DIRECTSHOW_LIBRARY_DIRS
68-
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v7.0/Lib/x64"
69-
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v6.0A/Lib/x64"
70-
"${PROGRAMFILES_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib/x64"
71-
"${PROGRAMFILES_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib/x64"
72-
"${PROGRAMFILES_DIR}/Microsoft Platform SDK/Lib/x64"
73-
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v7.0/Lib/x64"
74-
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v6.0A/Lib/x64"
75-
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib/x64"
76-
"${PROGRAMFILES_X86_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib/x64"
77-
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK/Lib/x64"
78-
"$ENV{SystemDrive}/DXSDK/Include/Lib/x64"
79-
)
80-
ELSE(SVL_WIN64)
81-
SET(DIRECTSHOW_LIBRARY_DIRS
82-
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v7.0/Lib"
83-
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v6.0A/Lib"
84-
"${PROGRAMFILES_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib"
85-
"${PROGRAMFILES_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib"
86-
"${PROGRAMFILES_DIR}/Microsoft Platform SDK/Lib"
87-
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v7.0/Lib"
88-
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v6.0A/Lib"
89-
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib"
90-
"${PROGRAMFILES_X86_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib"
91-
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK/Lib"
92-
"$ENV{SystemDrive}/DXSDK/Include/Lib"
93-
)
94-
ENDIF(SVL_WIN64)
69+
else(SVL_WIN64)
70+
set(DIRECTSHOW_LIBRARY_DIRS
71+
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v7.0/Lib"
72+
"${PROGRAMFILES_DIR}/Microsoft SDKs/Windows/v6.0A/Lib"
73+
"${PROGRAMFILES_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib"
74+
"${PROGRAMFILES_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib"
75+
"${PROGRAMFILES_DIR}/Microsoft Platform SDK/Lib"
76+
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v7.0/Lib"
77+
"${PROGRAMFILES_X86_DIR}/Microsoft SDKs/Windows/v6.0A/Lib"
78+
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK for Windows Server 2003 R2/Lib"
79+
"${PROGRAMFILES_X86_DIR}/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib"
80+
"${PROGRAMFILES_X86_DIR}/Microsoft Platform SDK/Lib"
81+
"$ENV{SystemDrive}/DXSDK/Include/Lib"
82+
)
83+
endif(SVL_WIN64)
9584

9685
# Need CMake version 3.4 to use CMAKE_VS_WINDOWS_TARGET_PLATFORM
97-
IF(${CMAKE_MAJOR_VERSION} GREATER_EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER_EQUAL 4)
98-
message(STATUS "Appending paths")
99-
LIST(APPEND DIRECTSHOW_INCLUDE_DIRS "${PROGRAMFILES_X86_DIR}/Windows Kits/10/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
100-
101-
# Figure out which lib folder to use.
102-
SET(LIB_APPEND_PATH "${PROGRAMFILES_X86_DIR}/Windows Kits/10/Lib/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
103-
IF(SVL_WIN64)
104-
SET(LIB_APPEND_PATH "${LIB_APPEND_PATH}/x64")
105-
ELSE()
106-
SET(LIB_APPEND_PATH "${LIB_APPEND_PATH}/x86")
107-
endif(SVL_WIN64)
108-
LIST(APPEND DIRECTSHOW_LIBRARY_DIRS ${LIB_APPEND_PATH})
109-
ENDIF(${CMAKE_MAJOR_VERSION} GREATER_EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER_EQUAL 4)
86+
message(STATUS "Appending paths")
87+
list(APPEND DIRECTSHOW_INCLUDE_DIRS
88+
"${PROGRAMFILES_X86_DIR}/Windows Kits/10/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um"
89+
)
90+
91+
# Figure out which lib folder to use.
92+
set(LIB_APPEND_PATH
93+
"${PROGRAMFILES_X86_DIR}/Windows Kits/10/Lib/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um"
94+
)
95+
if(SVL_WIN64)
96+
set(LIB_APPEND_PATH "${LIB_APPEND_PATH}/x64")
97+
else()
98+
set(LIB_APPEND_PATH "${LIB_APPEND_PATH}/x86")
99+
endif(SVL_WIN64)
100+
list(APPEND DIRECTSHOW_LIBRARY_DIRS ${LIB_APPEND_PATH})
110101

111102
# Find DirectX Include Directory
112-
FIND_PATH(DIRECTX_INCLUDE_DIR
113-
NAMES ddraw.h
114-
PATHS ${DIRECTSHOW_INCLUDE_DIRS}
115-
)
103+
find_path(
104+
DIRECTX_INCLUDE_DIR
105+
NAMES ddraw.h
106+
PATHS ${DIRECTSHOW_INCLUDE_DIRS}
107+
)
116108

117109
# if DirectX found, then find DirectShow include directory
118-
IF(DIRECTX_INCLUDE_DIR)
119-
FIND_PATH(DIRECTSHOW_INCLUDE_DIR
120-
NAMES dshow.h
121-
PATHS ${DIRECTSHOW_INCLUDE_DIRS}
122-
)
110+
if(DIRECTX_INCLUDE_DIR)
111+
find_path(
112+
DIRECTSHOW_INCLUDE_DIR
113+
NAMES dshow.h
114+
PATHS ${DIRECTSHOW_INCLUDE_DIRS}
115+
)
123116

124117
# if DirectShow include dir found, then find DirectShow libraries
125-
IF(DIRECTSHOW_INCLUDE_DIR)
126-
FIND_LIBRARY(DIRECTSHOW_strmiids_LIBRARY
127-
NAMES strmiids
128-
PATHS ${DIRECTSHOW_LIBRARY_DIRS}
129-
)
130-
FIND_LIBRARY(DIRECTSHOW_WinMM_LIBRARY
131-
NAMES WinMM
132-
PATHS ${DIRECTSHOW_LIBRARY_DIRS}
133-
)
118+
if(DIRECTSHOW_INCLUDE_DIR)
119+
find_library(
120+
DIRECTSHOW_strmiids_LIBRARY
121+
NAMES strmiids
122+
PATHS ${DIRECTSHOW_LIBRARY_DIRS}
123+
)
124+
find_library(
125+
DIRECTSHOW_WinMM_LIBRARY
126+
NAMES WinMM
127+
PATHS ${DIRECTSHOW_LIBRARY_DIRS}
128+
)
134129

135130
# if DirectShow libraries found, then we're ok
136-
IF(DIRECTSHOW_strmiids_LIBRARY AND DIRECTSHOW_WinMM_LIBRARY)
131+
if(DIRECTSHOW_strmiids_LIBRARY AND DIRECTSHOW_WinMM_LIBRARY)
137132
# everything found
138-
SET(DIRECTSHOW_FOUND "YES")
139-
ENDIF(DIRECTSHOW_strmiids_LIBRARY AND DIRECTSHOW_WinMM_LIBRARY)
140-
ENDIF(DIRECTSHOW_INCLUDE_DIR)
141-
ENDIF(DIRECTX_INCLUDE_DIR)
142-
ENDIF(WIN32)
143-
144-
145-
IF(DIRECTSHOW_FOUND)
146-
SET(DIRECTSHOW_INCLUDE_DIR
147-
${DIRECTSHOW_INCLUDE_DIR}
148-
${DIRECTX_INCLUDE_DIR}
149-
)
150-
SET(DIRECTSHOW_LIBRARIES
151-
${DIRECTSHOW_strmiids_LIBRARY}
152-
)
153-
ELSE(DIRECTSHOW_FOUND)
133+
set(DIRECTSHOW_FOUND "YES")
134+
endif(DIRECTSHOW_strmiids_LIBRARY AND DIRECTSHOW_WinMM_LIBRARY)
135+
endif(DIRECTSHOW_INCLUDE_DIR)
136+
endif(DIRECTX_INCLUDE_DIR)
137+
endif(WIN32)
138+
139+
if(DIRECTSHOW_FOUND)
140+
set(DIRECTSHOW_INCLUDE_DIR ${DIRECTSHOW_INCLUDE_DIR} ${DIRECTX_INCLUDE_DIR})
141+
set(DIRECTSHOW_LIBRARIES ${DIRECTSHOW_strmiids_LIBRARY})
142+
else(DIRECTSHOW_FOUND)
154143
# make FIND_PACKAGE friendly
155-
IF(NOT DIRECTSHOW_FIND_QUIETLY)
156-
IF(DIRECTSHOW_FIND_REQUIRED)
157-
MESSAGE(FATAL_ERROR "DirectShow required, please specify it's location.")
158-
ELSE(DIRECTSHOW_FIND_REQUIRED)
159-
MESSAGE(STATUS "DirectShow was not found.")
160-
ENDIF(DIRECTSHOW_FIND_REQUIRED)
161-
ENDIF(NOT DIRECTSHOW_FIND_QUIETLY)
162-
ENDIF(DIRECTSHOW_FOUND)
163-
144+
if(NOT DIRECTSHOW_FIND_QUIETLY)
145+
if(DIRECTSHOW_FIND_REQUIRED)
146+
message(FATAL_ERROR "DirectShow required, please specify it's location.")
147+
else(DIRECTSHOW_FIND_REQUIRED)
148+
message(STATUS "DirectShow was not found.")
149+
endif(DIRECTSHOW_FIND_REQUIRED)
150+
endif(NOT DIRECTSHOW_FIND_QUIETLY)
151+
endif(DIRECTSHOW_FOUND)

0 commit comments

Comments
 (0)