From 82c21014fa05572e6d7bac85cce9a0ce18e69710 Mon Sep 17 00:00:00 2001 From: Takuya Sawada Date: Thu, 8 Jun 2017 22:12:00 +0900 Subject: [PATCH] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E3=83=A9=E3=82=A4=E3=83=96?= =?UTF-8?q?=E3=83=A9=E3=83=AA=E3=81=AE=E6=8E=A2=E7=B4=A2=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E3=82=92=E4=B8=80=E8=88=AC=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 32 ++++++++++++++++++-------------- cmake/FindPCSC.cmake | 31 +++++++++++++++++++++++++++++++ cmake/FindWINSCARD.cmake | 7 ------- src/libarib25.pc.in | 1 - 4 files changed, 49 insertions(+), 22 deletions(-) create mode 100644 cmake/FindPCSC.cmake delete mode 100644 cmake/FindWINSCARD.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 13a862d..fc55b47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,13 +7,19 @@ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "default build type") set(CMAKE_INSTALL_SO_NO_EXE False) set(CMAKE_LEGACY_CYGWIN_WIN32 False) -if (UNIX) - find_program(LDCONFIG_EXECUTABLE "ldconfig") -endif() - project(arib_std_b25 C) enable_language(CXX) +include(GitRevision) +include(GenerateExportHeader) +find_package(PCSC REQUIRED) + +if (UNIX OR MSYS) + find_program(LDCONFIG_EXECUTABLE "ldconfig") + set(WITH_PCSC_PACKAGE "libpcsclite" CACHE STRING "pkg-config package name for PC/SC") + set(WITH_PCSC_LIBRARY "" CACHE STRING "library name for PC/SC") +endif() + set(ARIB25_LIB_NAME "arib25") set(ARIB25_CMD_NAME "b25") @@ -46,25 +52,23 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "(MSVC)") set(CMAKE_SUPPRESS_REGENERATION TRUE) endif() -include(GitRevision) -include(GenerateExportHeader) -find_package(WINSCARD REQUIRED) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions("-DDEBUG") endif() add_definitions("-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64") include_directories(${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${WINSCARD_INCLUDE_DIRS}) - +if(PCSC_INCLUDE_DIRS) + include_directories(${PCSC_INCLUDE_DIRS}) +endif() +link_directories(${PCSC_LIBRARY_DIRS}) add_library(arib25-objlib OBJECT src/arib_std_b25.c src/b_cas_card.c src/multi2.c src/ts_section_parser.c src/version.c) set_target_properties(arib25-objlib PROPERTIES COMPILE_DEFINITIONS ARIB25_DLL) add_library(arib25-static STATIC $) set_target_properties(arib25-static PROPERTIES OUTPUT_NAME ${ARIB25_LIB_NAME}) -target_link_libraries(arib25-static PRIVATE ${WINSCARD_LIBRARIES}) +target_link_libraries(arib25-static PRIVATE ${PCSC_LIBRARIES}) add_library(arib25-shared SHARED $ ${CMAKE_CURRENT_BINARY_DIR}/version.rc) set_target_properties(arib25-shared PROPERTIES MACOSX_RPATH ON) @@ -73,12 +77,12 @@ set_target_properties(arib25-shared PROPERTIES COMPILE_DEFINITIONS ARIB25_DLL) set_target_properties(arib25-shared PROPERTIES OUTPUT_NAME ${ARIB25_LIB_NAME}) set_target_properties(arib25-shared PROPERTIES SOVERSION ${ARIB25_MAJOR_VERSION}) set_target_properties(arib25-shared PROPERTIES VERSION ${ARIB25_VERSION_NUMBER}) -target_link_libraries(arib25-shared PRIVATE ${WINSCARD_LIBRARIES}) -generate_export_header(arib25-shared BASE_NAME arib25_api EXPORT_FILE_NAME arib25_api.h) +target_link_libraries(arib25-shared PRIVATE ${PCSC_LIBRARIES}) +generate_export_header(arib25-shared BASE_NAME arib25_api EXPORT_FILE_NAME arib25_api.h) add_executable(b25 src/td.c ${CMAKE_CURRENT_BINARY_DIR}/version.rc) set_target_properties(b25 PROPERTIES OUTPUT_NAME ${ARIB25_CMD_NAME}) -target_link_libraries(b25 PRIVATE ${WINSCARD_LIBRARIES}) +target_link_libraries(b25 PRIVATE ${PCSC_LIBRARIES}) target_link_libraries(b25 PRIVATE arib25-shared) configure_file(src/config.h.in config.h @ONLY) diff --git a/cmake/FindPCSC.cmake b/cmake/FindPCSC.cmake new file mode 100644 index 0000000..dfb9ba0 --- /dev/null +++ b/cmake/FindPCSC.cmake @@ -0,0 +1,31 @@ +find_package(PkgConfig) +if(PKG_CONFIG_FOUND AND WITH_PCSC_PACKAGE AND NOT CMAKE_CROSSCOMPILING) + if(WITH_PCSC_PACKAGE STREQUAL "libpcsclite") + pkg_check_modules(PCSC ${WITH_PCSC_PACKAGE}) + else() + pkg_check_modules(PCSC REQUIRED ${WITH_PCSC_PACKAGE}) + endif() +endif() + +if(NOT PCSC_FOUND) + find_path(PCSC_INCLUDE_DIRS NAMES WinSCard.h winscard.h PATH_SUFFIXES PCSC) + if(WITH_PCSC_LIBRARY) + find_library(PCSC_LIBRARIES NAMES ${WITH_PCSC_LIBRARY}) + else() + find_library(PCSC_LIBRARIES NAMES pcsclite PCSC WinSCard winscard) + endif() + + if(PCSC_LIBRARIES) + set(PCSC_FOUND True) + endif() +endif() + +if(NOT PCSC_FOUND AND NOT WITH_PCSC_LIBRARY AND WIN32) + set(PCSC_LIBRARIES winscard) + set(PCSC_FOUND True) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PCSC DEFAULT_MSG PCSC_LIBRARIES) + +mark_as_advanced(PCSC_INCLUDE_DIRS PCSC_LIBRARIES) diff --git a/cmake/FindWINSCARD.cmake b/cmake/FindWINSCARD.cmake deleted file mode 100644 index 4a143d5..0000000 --- a/cmake/FindWINSCARD.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(UNIX AND NOT CYGWIN) - find_package(PkgConfig REQUIRED) - pkg_check_modules(WINSCARD REQUIRED libpcsclite) -else() - set(WINSCARD_LIBRARIES winscard) - set(WINSCARD_FOUND True) -endif() diff --git a/src/libarib25.pc.in b/src/libarib25.pc.in index e6ae729..ae56b5c 100644 --- a/src/libarib25.pc.in +++ b/src/libarib25.pc.in @@ -7,6 +7,5 @@ Name: @CMAKE_LIBRARY_PREFIX@@ARIB25_LIB_NAME@ Description: @ARIB25_DESCRIPTION@ URL: @ARIB25_URL@ Version: @ARIB25_VERSION_STRING@ -Requires: libpcsclite Libs: -L${libdir} -l@ARIB25_LIB_NAME@ Cflags: -I${includedir}