mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-01-12 15:59:58 -05:00
9228401e6f
Improved the fix of PCS library find on windows
76 lines
2.7 KiB
CMake
76 lines
2.7 KiB
CMake
# Copyright (C) 2021 KeePassXC Team <team@keepassxc.org>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 or (at your option)
|
|
# version 3 of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Use pkgconfig on Linux
|
|
if(NOT WIN32)
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(PCSC libpcsclite)
|
|
endif()
|
|
|
|
if(NOT PCSC_FOUND)
|
|
# Search for PC/SC headers on Mac and Windows
|
|
|
|
if (WIN32) # some special handling on windows for finding the SDK
|
|
|
|
# Resolve the ambiguity of using two names for one architechture
|
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x64")
|
|
set(ARCH_DIR "x64")
|
|
else()
|
|
set(ARCH_DIR "${CMAKE_SYSTEM_PROCESSOR}")
|
|
endif()
|
|
|
|
# LOCATE WINDOWS SDK PATHs
|
|
if (CMAKE_WINDOWS_KITS_10_DIR)
|
|
set (WINSDKROOTC_INCLUDE "${CMAKE_WINDOWS_KITS_10_DIR}/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
|
|
set (WINSDKROOTC_LIB "${CMAKE_WINDOWS_KITS_10_DIR}/LIB/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um/${ARCH_DIR}")
|
|
else()
|
|
set (WINSDKROOTC_INCLUDE "$ENV{ProgramFiles\(x86\)}/Windows Kits/10/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
|
|
set (WINSDKROOTC_LIB "$ENV{ProgramFiles\(x86\)}/Windows Kits/10/LIB/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um/${ARCH_DIR}")
|
|
endif()
|
|
endif()
|
|
|
|
find_path(PCSC_INCLUDE_DIRS winscard.h
|
|
HINTS
|
|
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
|
|
/usr/include/PCSC
|
|
${WINSDKROOTC_INCLUDE}
|
|
PATH_SUFFIXES PCSC)
|
|
|
|
# Check if the library was found
|
|
if (PCSC_INCLUDE_DIRS)
|
|
message(STATUS "pcsc-header FOUND")
|
|
else()
|
|
message(FATAL_ERROR "pcsc-header not found")
|
|
endif()
|
|
|
|
# MAC library is PCSC, Windows library is WinSCard
|
|
find_library(PCSC_LIBRARIES NAMES pcsclite libpcsclite WinSCard PCSC
|
|
HINTS
|
|
${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}
|
|
${WINSDKROOTC_LIB}
|
|
)
|
|
|
|
if (PCSC_LIBRARIES)
|
|
message(STATUS "PCSC_LIBRARIES FOUND")
|
|
else()
|
|
message(FATAL_ERROR "PCSC_LIBRARIES _NOT_ FOUND")
|
|
endif()
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(PCSC DEFAULT_MSG PCSC_LIBRARIES PCSC_INCLUDE_DIRS)
|
|
|
|
mark_as_advanced(PCSC_LIBRARIES PCSC_INCLUDE_DIRS)
|