Make findwinhid mostly MinGW compatible

This commit is contained in:
Ryan Pavlik
2011-05-02 11:37:12 -05:00
parent e8853ee660
commit 75048bb986

View File

@@ -31,9 +31,10 @@ if(NOT WIN32)
WIN32) WIN32)
return() return()
endif() endif()
if(MSVC)
if( (NOT WINHID_ROOT_DIR) AND (NOT ENV{DDKROOT} STREQUAL "") ) if( (NOT WINHID_ROOT_DIR) AND (NOT ENV{DDKROOT} STREQUAL "") )
set(WINHID_ROOT_DIR "$ENV{DDKROOT}") set(WINHID_ROOT_DIR "$ENV{DDKROOT}")
endif()
endif() endif()
set(WINHID_ROOT_DIR set(WINHID_ROOT_DIR
"${WINHID_ROOT_DIR}" "${WINHID_ROOT_DIR}"
@@ -47,78 +48,98 @@ else()
set(_arch i386) set(_arch i386)
endif() endif()
include(PrefixListGlob) if(MSVC)
include(CleanDirectoryList) include(PrefixListGlob)
prefix_list_glob(_prefixed "*/" "$ENV{SYSTEMDRIVE}/WinDDK/" "c:/WinDDK/") include(CleanDirectoryList)
clean_directory_list(_prefixed) prefix_list_glob(_prefixed "*/" "$ENV{SYSTEMDRIVE}/WinDDK/" "c:/WinDDK/")
clean_directory_list(_prefixed)
find_library(WINHID_LIBRARY
NAMES
hid
libhid
HINTS
"${WINHID_ROOT_DIR}"
${_prefixed}
PATH_SUFFIXES
"lib/w2k/${_arch}" # Win2k min requirement
"lib/wxp/${_arch}" # WinXP min requirement
"lib/wnet/${_arch}" # Win Server 2003 min requirement
"lib/wlh/${_arch}" # Win Vista ("Long Horn") min requirement
"lib/win7/${_arch}" # Win 7 min requirement
)
# Might want to look close to the library first for the includes.
get_filename_component(_libdir "${WINHID_LIBRARY}" PATH)
get_filename_component(_basedir "${_libdir}/../../.." ABSOLUTE)
find_library(WINHID_LIBRARY find_path(WINHID_CRT_INCLUDE_DIR # otherwise you get weird compile errors
NAMES NAMES
hid stdio.h
HINTS HINTS
"${WINHID_ROOT_DIR}" "${_basedir}"
${_prefixed} PATHS
PATH_SUFFIXES "${WINHID_ROOT_DIR}"
"lib/w2k/${_arch}" # Win2k min requirement PATH_SUFFIXES
"lib/wxp/${_arch}" # WinXP min requirement inc/crt
"lib/wnet/${_arch}" # Win Server 2003 min requirement NO_DEFAULT_PATH)
"lib/wlh/${_arch}" # Win Vista ("Long Horn") min requirement find_path(WINHID_INCLUDE_DIR
"lib/win7/${_arch}" # Win 7 min requirement NAMES
) hidsdi.h
HINTS
# Might want to look close to the library first for the includes. "${_basedir}"
get_filename_component(_libdir "${WINHID_LIBRARY}" PATH) PATHS
get_filename_component(_basedir "${_libdir}/../../.." ABSOLUTE) "${WINHID_ROOT_DIR}"
PATH_SUFFIXES
find_path(WINHID_INCLUDE_DIR inc/ddk
NAMES inc/api
hidsdi.h inc/w2k
HINTS inc/wxp
"${_basedir}" inc/wnet)
PATHS else()
"${WINHID_ROOT_DIR}" find_library(WINHID_LIBRARY
PATH_SUFFIXES NAMES
inc/api libhid
inc/w2k HINTS
inc/wxp "${WINHID_ROOT_DIR}"
inc/wnet) PATH_SUFFIXES
lib
find_path(WINHID_CRT_INCLUDE_DIR # otherwise you get weird compile errors lib/w32api)
NAMES find_path(WINHID_INCLUDE_DIR
stdio.h NAMES
HINTS hidsdi.h
"${_basedir}" PATHS
PATHS "${WINHID_ROOT_DIR}"
"${WINHID_ROOT_DIR}" PATH_SUFFIXES
PATH_SUFFIXES include/w32api/ddk
inc/crt include/ddk
NO_DEFAULT_PATH) ddk)
endif()
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(WinHID find_package_handle_standard_args(WinHID
DEFAULT_MSG DEFAULT_MSG
WINHID_LIBRARY WINHID_LIBRARY
WINHID_INCLUDE_DIR WINHID_INCLUDE_DIR)
WINHID_CRT_INCLUDE_DIR)
if(WINHID_FOUND) if(WINHID_FOUND)
set(_winreq "Unknown") if(MSVC)
if(WINHID_LIBRARY MATCHES "lib/w2k") set(_winreq "Unknown")
set(_winreq "Windows 2000") if(WINHID_LIBRARY MATCHES "lib/w2k")
elseif(WINHID_LIBRARY MATCHES "lib/wxp") set(_winreq "Windows 2000")
set(_winreq "Windows XP") elseif(WINHID_LIBRARY MATCHES "lib/wxp")
elseif(WINHID_LIBRARY MATCHES "lib/wnet") set(_winreq "Windows XP")
set(_winreq "Windows Server 2003") elseif(WINHID_LIBRARY MATCHES "lib/wnet")
elseif(WINHID_LIBRARY MATCHES "lib/wlh") set(_winreq "Windows Server 2003")
set(_winreq "Windows Vista") elseif(WINHID_LIBRARY MATCHES "lib/wlh")
elseif(WINHID_LIBRARY MATCHES "lib/win7") set(_winreq "Windows Vista")
set(_winreq "Windows 7") elseif(WINHID_LIBRARY MATCHES "lib/win7")
endif() set(_winreq "Windows 7")
if(NOT "${WINHID_MIN_WINDOWS_VER}" STREQUAL "${_winreq}") endif()
if(NOT WinHID_FIND_QUIETLY) if(NOT "${WINHID_MIN_WINDOWS_VER}" STREQUAL "${_winreq}")
message(STATUS "Linking against WINHID_LIBRARY will enforce this minimum version: ${_winreq}") if(NOT WinHID_FIND_QUIETLY)
message(STATUS "Linking against WINHID_LIBRARY will enforce this minimum version: ${_winreq}")
endif()
set(WINHID_MIN_WINDOWS_VER "${_winreq}" CACHE INTERNAL "" FORCE)
endif() endif()
set(WINHID_MIN_WINDOWS_VER "${_winreq}" CACHE INTERNAL "" FORCE)
endif() endif()
set(WINHID_LIBRARIES "${WINHID_LIBRARY}") set(WINHID_LIBRARIES "${WINHID_LIBRARY}")
set(WINHID_INCLUDE_DIRS "${WINHID_CRT_INCLUDE_DIR}" "${WINHID_INCLUDE_DIR}") set(WINHID_INCLUDE_DIRS "${WINHID_CRT_INCLUDE_DIR}" "${WINHID_INCLUDE_DIR}")