feat: use pkgconfig instead of hard-coded PCSC path (#31)

Signed-off-by: Coelacanthus <CoelacanthusHex@gmail.com>
This commit is contained in:
Coelacanthus 2024-01-05 19:43:28 +08:00 committed by GitHub
parent 228fc5d56d
commit dee7542145
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 2 deletions

View file

@ -1,5 +1,7 @@
option(LINUX_MINGW32 "Build for windows on Linux" OFF)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
if (APPLE)
message(STATUS "Building for macOS")
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")

31
cmake/FindPCSCLite.cmake Normal file
View file

@ -0,0 +1,31 @@
find_package(PkgConfig REQUIRED)
pkg_check_modules(PC_PCSCLITE libpcsclite)
find_path(PCSCLITE_INCLUDE_DIR
NAMES winscard.h pcsclite.h wintypes.h debuglog.h ifdhandler.h reader.h
HINTS ${PC_PCSCLITE_INCLUDEDIR}
${PC_PCSCLITE_INCLUDE_DIRS}
${PC_PCSCLITE_INCLUDE_DIRS}/PCSC
${CMAKE_INSTALL_PREFIX}/include
)
find_library(PCSCLITE_LIBRARIES NAMES pcsclite libpcsclite PCSC
HINTS ${PC_PCSCLITE_LIBDIR}
${PC_PCSCLITE_LIBRARY_DIRS}
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
)
# handle the QUIETLY and REQUIRED arguments and set PCSCLITE_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PCSCLite DEFAULT_MSG PCSCLITE_LIBRARIES PCSCLITE_INCLUDE_DIR)
mark_as_advanced(PCSCLITE_LIBRARIES PCSCLITE_INCLUDE_DIR)
if(PCSCLITE_FOUND AND NOT TARGET PCSCLite::PCSCLite)
add_library(PCSCLite::PCSCLite UNKNOWN IMPORTED)
set_target_properties(PCSCLite::PCSCLite PROPERTIES
IMPORTED_LOCATION "${PCSCLITE_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${PCSCLITE_INCLUDE_DIR}"
)
endif()

View file

@ -10,8 +10,8 @@ if(LINUX_MINGW32 OR CYGWIN)
elseif (APPLE)
target_link_libraries(apduinterface_pcsc "-framework PCSC")
else()
include_directories("/usr/include/PCSC")
target_link_libraries(apduinterface_pcsc pcsclite)
find_package(PCSCLite)
target_link_libraries(apduinterface_pcsc PCSCLite::PCSCLite)
endif()
add_library(apduinterface_at SHARED at.c)