Codebase list libfreefare / 5db8be9
Windows support contribution: - Move CMake modules from cmake_modules/ to cmake/modules/ - CMake now use cmake/config_windows.h.cmake to create config.h on Windows platform - contrib/windows.h header is automagically included by config.h - Put missing NFC_EXPORT macro on front of emulation API - nfc-mfclassic and nfc-mfcultralight examples are now compiled under Windows Many thanks to Glenn Ergeerts which provide the initial patch. Romuald Conty 13 years ago
27 changed file(s) with 295 addition(s) and 289 deletion(s). Raw diff Collapse all Expand all
1010 SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
1111
1212 # config.h
13 IF(NOT WIN32)
13 IF(WIN32)
14 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config_windows.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
15 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/contrib/win32)
16 ELSE(WIN32)
1417 SET(_XOPEN_SOURCE 600)
15 ENDIF(NOT WIN32)
18 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config_posix.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
19 ENDIF(WIN32)
1620
17 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
1821 ADD_DEFINITIONS("-DHAVE_CONFIG_H")
1922
2023 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include)
2124
22 # Win32
23 IF(WIN32)
24 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/contrib/win32)
25 ENDIF(WIN32)
26
2725 # make it easy to locate CMake modules for finding libraries
28 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/")
26 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
2927
3028 # Options
3129 SET(LIBNFC_DEBUG_OUTPUT OFF CACHE BOOL "Debug output of communication with the NFC chip")
7775 SET(prefix ${CMAKE_INSTALL_PREFIX})
7876 SET(exec_prefix ${CMAKE_INSTALL_PREFIX})
7977 SET(PACKAGE "libnfc")
80 IF(LIBNFC_DRIVER_PN531_USB OR LIBNFC_DRIVER_PN533_USB)
78 IF(LIBNFC_DRIVER_PN53X_USB)
8179 SET(PKG_REQ ${PKG_REQ} "libusb")
82 ENDIF(LIBNFC_DRIVER_PN531_USB OR LIBNFC_DRIVER_PN533_USB)
80 ENDIF(LIBNFC_DRIVER_PN53X_USB)
8381 IF(LIBNFC_DRIVER_ACR122)
8482 SET(PKG_REQ ${PKG_REQ} "libpcsclite")
8583 ENDIF(LIBNFC_DRIVER_ACR122)
0 #cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
1 #cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
2 #cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
3 #cmakedefine _XOPEN_SOURCE @_XOPEN_SOURCE@
0 #include "contrib/windows.h"
1
2 #cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
3 #cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
4 #cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
0 Redistribution and use in source and binary forms, with or without
1 modification, are permitted provided that the following conditions
2 are met:
3
4 1. Redistributions of source code must retain the copyright
5 notice, this list of conditions and the following disclaimer.
6 2. Redistributions in binary form must reproduce the copyright
7 notice, this list of conditions and the following disclaimer in the
8 documentation and/or other materials provided with the distribution.
9 3. The name of the author may not be used to endorse or promote products
10 derived from this software without specific prior written permission.
11
12 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
13 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
14 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
15 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
16 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0 # This CMake script wants to use libusb functionality, therefore it looks
1 # for libusb include files and libraries.
2 #
3 # Operating Systems Supported:
4 # - Unix (requires pkg-config)
5 # Tested with Ubuntu 9.04 and Fedora 11
6 # - Windows (requires MSVC)
7 # Tested with Windows XP
8 #
9 # This should work for both 32 bit and 64 bit systems.
10 #
11 # Author: F. Kooman <fkooman@tuxed.net>
12 #
13
14 # FreeBSD has built-in libusb since 800069
15 IF(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
16 EXEC_PROGRAM(sysctl ARGS -n kern.osreldate OUTPUT_VARIABLE FREEBSD_VERSION)
17 SET(MIN_FREEBSD_VERSION 800068)
18 IF(FREEBSD_VERSION GREATER ${MIN_FREEBSD_VERSION})
19 SET(LIBUSB_FOUND TRUE)
20 SET(LIBUSB_INCLUDE_DIRS "/usr/include")
21 SET(LIBUSB_LIBRARIES "usb")
22 SET(LIBUSB_LIBRARY_DIRS "/usr/lib/")
23 ENDIF(FREEBSD_VERSION GREATER ${MIN_FREEBSD_VERSION})
24 ENDIF(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
25
26 IF(NOT LIBUSB_FOUND)
27 IF(WIN32)
28 # Windows with Microsoft Visual C++
29 FIND_PATH(LIBUSB_INCLUDE_DIRS usb.h "$ENV{ProgramFiles}/LibUSB-Win32/include" NO_SYSTEM_ENVIRONMENT_PATH)
30 IF(MSVC)
31 IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
32 # on x64 (win64)
33 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/msvc_x64")
34 ELSE(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
35 # on x86 (win32)
36 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/msvc")
37 ENDIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
38 ENDIF(MSVC)
39 IF(MINGW)
40 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/gcc")
41 ENDIF(MINGW)
42 ELSE(WIN32)
43 # If not under Windows we use PkgConfig
44 FIND_PACKAGE (PkgConfig)
45 IF(PKG_CONFIG_FOUND)
46 PKG_CHECK_MODULES(LIBUSB REQUIRED libusb)
47 ELSE(PKG_CONFIG_FOUND)
48 MESSAGE(FATAL_ERROR "Could not find PkgConfig")
49 ENDIF(PKG_CONFIG_FOUND)
50 ENDIF(WIN32)
51
52 IF(LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
53 SET(LIBUSB_FOUND TRUE)
54 ENDIF(LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
55 ENDIF(NOT LIBUSB_FOUND)
56
57 IF(LIBUSB_FOUND)
58 IF(NOT LIBUSB_FIND_QUIETLY)
59 MESSAGE(STATUS "Found LIBUSB: ${LIBUSB_LIBRARIES} ${LIBUSB_INCLUDE_DIRS}")
60 ENDIF (NOT LIBUSB_FIND_QUIETLY)
61 ELSE(LIBUSB_FOUND)
62 IF(LIBUSB_FIND_REQUIRED)
63 MESSAGE(FATAL_ERROR "Could not find LIBUSB")
64 ENDIF(LIBUSB_FIND_REQUIRED)
65 ENDIF(LIBUSB_FOUND)
0 # - Try to find the PC/SC smart card library
1 # Once done this will define
2 #
3 # PCSC_FOUND - system has the PC/SC library
4 # PCSC_INCLUDE_DIRS - the PC/SC include directory
5 # PCSC_LIBRARIES - The libraries needed to use PC/SC
6 #
7 # Author: F. Kooman <fkooman@tuxed.net>
8 # Version: 20101019
9 #
10
11 FIND_PACKAGE (PkgConfig)
12 IF(PKG_CONFIG_FOUND)
13 # Will find PC/SC library on Linux/BSDs using PkgConfig
14 PKG_CHECK_MODULES(PCSC libpcsclite)
15 # PKG_CHECK_MODULES(PCSC QUIET libpcsclite) # IF CMake >= 2.8.2?
16 ENDIF(PKG_CONFIG_FOUND)
17
18 IF(NOT PCSC_FOUND)
19 # Will find PC/SC headers both on Mac and Windows
20 FIND_PATH(PCSC_INCLUDE_DIRS WinSCard.h)
21 # PCSC library is for Mac, WinSCard library is for Windows
22 FIND_LIBRARY(PCSC_LIBRARIES NAMES PCSC libwinscard)
23 ENDIF(NOT PCSC_FOUND)
24
25 INCLUDE(FindPackageHandleStandardArgs)
26 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCSC DEFAULT_MSG
27 PCSC_LIBRARIES
28 PCSC_INCLUDE_DIRS
29 )
30 MARK_AS_ADVANCED(PCSC_INCLUDE_DIRS PCSC_LIBRARIES)
0 SET(LIBNFC_DRIVER_ACR122 ON CACHE BOOL "Enable ACR122 support (Depends on PC/SC)")
1 SET(LIBNFC_DRIVER_PN53X_USB ON CACHE BOOL "Enable PN531 and PN531 USB support (Depends on libusb)")
2 SET(LIBNFC_DRIVER_ARYGON ON CACHE BOOL "Enable ARYGON support (Use serial port)")
3 SET(LIBNFC_DRIVER_PN532_UART OFF CACHE BOOL "Enable PN532 UART support (Use serial port)")
4
5 IF(LIBNFC_DRIVER_ACR122)
6 FIND_PACKAGE(PCSC REQUIRED)
7 ADD_DEFINITIONS("-DDRIVER_ACR122_ENABLED")
8 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/acr122")
9 ENDIF(LIBNFC_DRIVER_ACR122)
10
11 IF(LIBNFC_DRIVER_PN53X_USB)
12 FIND_PACKAGE(LIBUSB REQUIRED)
13 ADD_DEFINITIONS("-DDRIVER_PN53X_USB_ENABLED")
14 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn53x_usb")
15 ENDIF(LIBNFC_DRIVER_PN53X_USB)
16
17 IF(LIBNFC_DRIVER_ARYGON)
18 ADD_DEFINITIONS("-DDRIVER_ARYGON_ENABLED")
19 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/arygon")
20 ENDIF(LIBNFC_DRIVER_ARYGON)
21
22 IF(LIBNFC_DRIVER_PN532_UART)
23 ADD_DEFINITIONS("-DDRIVER_PN532_UART_ENABLED")
24 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn532_uart")
25 ENDIF(LIBNFC_DRIVER_PN532_UART)
26
27 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/drivers)
28
0 EXTRA_DIST = \
1 COPYING-CMAKE-SCRIPTS \
2 FindLIBUSB.cmake \
3 FindPCSC.cmake \
4 UseDoxygen.cmake \
5 LibnfcDrivers.cmake
0 # - Run Doxygen
1 #
2 # Adds a doxygen target that runs doxygen to generate the html
3 # and optionally the LaTeX API documentation.
4 # The doxygen target is added to the doc target as dependency.
5 # i.e.: the API documentation is built with:
6 # make doc
7 #
8 # USAGE: GLOBAL INSTALL
9 #
10 # Install it with:
11 # cmake ./ && sudo make install
12 # Add the following to the CMakeLists.txt of your project:
13 # include(UseDoxygen OPTIONAL)
14 # Optionally copy Doxyfile.in in the directory of CMakeLists.txt and edit it.
15 #
16 # USAGE: INCLUDE IN PROJECT
17 #
18 # set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
19 # include(UseDoxygen)
20 # Add the Doxyfile.in and UseDoxygen.cmake files to the projects source directory.
21 #
22 #
23 # Variables you may define are:
24 # DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored. Defaults to "doc".
25 #
26 # DOXYFILE_LATEX_DIR - Directory where the Doxygen LaTeX output is stored. Defaults to "latex".
27 #
28 # DOXYFILE_HTML_DIR - Directory where the Doxygen html output is stored. Defaults to "html".
29 #
30
31 #
32 # Copyright (c) 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
33 #
34 # Redistribution and use is allowed according to the terms of the New
35 # BSD license.
36 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
37 #
38
39 macro(usedoxygen_set_default name value)
40 if(NOT DEFINED "${name}")
41 set("${name}" "${value}")
42 endif()
43 endmacro()
44
45 find_package(Doxygen)
46
47 if(DOXYGEN_FOUND)
48 find_file(DOXYFILE_IN "Doxyfile.in"
49 PATHS "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ROOT}/Modules/")
50
51 include(FindPackageHandleStandardArgs)
52 find_package_handle_standard_args(Doxyfile.in DEFAULT_MSG DOXYFILE_IN)
53 endif()
54
55 if(DOXYGEN_FOUND AND DOXYFILE_IN)
56 add_custom_target(doxygen ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
57
58 usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc")
59 usedoxygen_set_default(DOXYFILE_HTML_DIR "html")
60
61 set_property(DIRECTORY APPEND PROPERTY
62 ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}")
63
64 set(DOXYFILE_LATEX "NO")
65 set(DOXYFILE_PDFLATEX "NO")
66 set(DOXYFILE_DOT "NO")
67
68 find_package(LATEX)
69 if(LATEX_COMPILER AND MAKEINDEX_COMPILER)
70 set(DOXYFILE_LATEX "YES")
71 usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex")
72
73 set_property(DIRECTORY APPEND PROPERTY
74 ADDITIONAL_MAKE_CLEAN_FILES
75 "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
76
77 if(PDFLATEX_COMPILER)
78 set(DOXYFILE_PDFLATEX "YES")
79 endif()
80 if(DOXYGEN_DOT_EXECUTABLE)
81 set(DOXYFILE_DOT "YES")
82 endif()
83
84 add_custom_command(TARGET doxygen
85 POST_BUILD
86 COMMAND ${CMAKE_MAKE_PROGRAM}
87 WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
88 endif()
89
90
91 configure_file(${DOXYFILE_IN} Doxyfile ESCAPE_QUOTES IMMEDIATE @ONLY)
92
93 get_target_property(DOC_TARGET doc TYPE)
94 if(NOT DOC_TARGET)
95 add_custom_target(doc)
96 endif()
97
98 add_dependencies(doc doxygen)
99 endif()
+0
-22
cmake_modules/COPYING-CMAKE-SCRIPTS less more
0 Redistribution and use in source and binary forms, with or without
1 modification, are permitted provided that the following conditions
2 are met:
3
4 1. Redistributions of source code must retain the copyright
5 notice, this list of conditions and the following disclaimer.
6 2. Redistributions in binary form must reproduce the copyright
7 notice, this list of conditions and the following disclaimer in the
8 documentation and/or other materials provided with the distribution.
9 3. The name of the author may not be used to endorse or promote products
10 derived from this software without specific prior written permission.
11
12 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
13 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
14 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
15 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
16 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+0
-66
cmake_modules/FindLIBUSB.cmake less more
0 # This CMake script wants to use libusb functionality, therefore it looks
1 # for libusb include files and libraries.
2 #
3 # Operating Systems Supported:
4 # - Unix (requires pkg-config)
5 # Tested with Ubuntu 9.04 and Fedora 11
6 # - Windows (requires MSVC)
7 # Tested with Windows XP
8 #
9 # This should work for both 32 bit and 64 bit systems.
10 #
11 # Author: F. Kooman <fkooman@tuxed.net>
12 #
13
14 # FreeBSD has built-in libusb since 800069
15 IF(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
16 EXEC_PROGRAM(sysctl ARGS -n kern.osreldate OUTPUT_VARIABLE FREEBSD_VERSION)
17 SET(MIN_FREEBSD_VERSION 800068)
18 IF(FREEBSD_VERSION GREATER ${MIN_FREEBSD_VERSION})
19 SET(LIBUSB_FOUND TRUE)
20 SET(LIBUSB_INCLUDE_DIRS "/usr/include")
21 SET(LIBUSB_LIBRARIES "usb")
22 SET(LIBUSB_LIBRARY_DIRS "/usr/lib/")
23 ENDIF(FREEBSD_VERSION GREATER ${MIN_FREEBSD_VERSION})
24 ENDIF(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
25
26 IF(NOT LIBUSB_FOUND)
27 IF(WIN32)
28 # Windows with Microsoft Visual C++
29 FIND_PATH(LIBUSB_INCLUDE_DIRS usb.h "$ENV{ProgramFiles}/LibUSB-Win32/include" NO_SYSTEM_ENVIRONMENT_PATH)
30 IF(MSVC)
31 IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
32 # on x64 (win64)
33 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/msvc_x64")
34 ELSE(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
35 # on x86 (win32)
36 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/msvc")
37 ENDIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x64")
38 ENDIF(MSVC)
39 IF(MINGW)
40 FIND_LIBRARY(LIBUSB_LIBRARIES NAMES libusb PATHS "$ENV{ProgramFiles}/LibUSB-Win32/lib/gcc")
41 ENDIF(MINGW)
42 ELSE(WIN32)
43 # If not under Windows we use PkgConfig
44 FIND_PACKAGE (PkgConfig)
45 IF(PKG_CONFIG_FOUND)
46 PKG_CHECK_MODULES(LIBUSB REQUIRED libusb)
47 ELSE(PKG_CONFIG_FOUND)
48 MESSAGE(FATAL_ERROR "Could not find PkgConfig")
49 ENDIF(PKG_CONFIG_FOUND)
50 ENDIF(WIN32)
51
52 IF(LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
53 SET(LIBUSB_FOUND TRUE)
54 ENDIF(LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
55 ENDIF(NOT LIBUSB_FOUND)
56
57 IF(LIBUSB_FOUND)
58 IF(NOT LIBUSB_FIND_QUIETLY)
59 MESSAGE(STATUS "Found LIBUSB: ${LIBUSB_LIBRARIES} ${LIBUSB_INCLUDE_DIRS}")
60 ENDIF (NOT LIBUSB_FIND_QUIETLY)
61 ELSE(LIBUSB_FOUND)
62 IF(LIBUSB_FIND_REQUIRED)
63 MESSAGE(FATAL_ERROR "Could not find LIBUSB")
64 ENDIF(LIBUSB_FIND_REQUIRED)
65 ENDIF(LIBUSB_FOUND)
+0
-31
cmake_modules/FindPCSC.cmake less more
0 # - Try to find the PC/SC smart card library
1 # Once done this will define
2 #
3 # PCSC_FOUND - system has the PC/SC library
4 # PCSC_INCLUDE_DIRS - the PC/SC include directory
5 # PCSC_LIBRARIES - The libraries needed to use PC/SC
6 #
7 # Author: F. Kooman <fkooman@tuxed.net>
8 # Version: 20101019
9 #
10
11 FIND_PACKAGE (PkgConfig)
12 IF(PKG_CONFIG_FOUND)
13 # Will find PC/SC library on Linux/BSDs using PkgConfig
14 PKG_CHECK_MODULES(PCSC libpcsclite)
15 # PKG_CHECK_MODULES(PCSC QUIET libpcsclite) # IF CMake >= 2.8.2?
16 ENDIF(PKG_CONFIG_FOUND)
17
18 IF(NOT PCSC_FOUND)
19 # Will find PC/SC headers both on Mac and Windows
20 FIND_PATH(PCSC_INCLUDE_DIRS WinSCard.h)
21 # PCSC library is for Mac, WinSCard library is for Windows
22 FIND_LIBRARY(PCSC_LIBRARIES NAMES PCSC libwinscard)
23 ENDIF(NOT PCSC_FOUND)
24
25 INCLUDE(FindPackageHandleStandardArgs)
26 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCSC DEFAULT_MSG
27 PCSC_LIBRARIES
28 PCSC_INCLUDE_DIRS
29 )
30 MARK_AS_ADVANCED(PCSC_INCLUDE_DIRS PCSC_LIBRARIES)
+0
-29
cmake_modules/LibnfcDrivers.cmake less more
0 SET(LIBNFC_DRIVER_ACR122 ON CACHE BOOL "Enable ACR122 support (Depends on PC/SC)")
1 SET(LIBNFC_DRIVER_PN53X_USB ON CACHE BOOL "Enable PN531 and PN531 USB support (Depends on libusb)")
2 SET(LIBNFC_DRIVER_ARYGON ON CACHE BOOL "Enable ARYGON support (Use serial port)")
3 SET(LIBNFC_DRIVER_PN532_UART OFF CACHE BOOL "Enable PN532 UART support (Use serial port)")
4
5 IF(LIBNFC_DRIVER_ACR122)
6 FIND_PACKAGE(PCSC REQUIRED)
7 ADD_DEFINITIONS("-DDRIVER_ACR122_ENABLED")
8 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/acr122")
9 ENDIF(LIBNFC_DRIVER_ACR122)
10
11 IF(LIBNFC_DRIVER_PN53X_USB)
12 FIND_PACKAGE(LIBUSB REQUIRED)
13 ADD_DEFINITIONS("-DDRIVER_PN53X_USB_ENABLED")
14 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn53x_usb")
15 ENDIF(LIBNFC_DRIVER_PN53X_USB)
16
17 IF(LIBNFC_DRIVER_ARYGON)
18 ADD_DEFINITIONS("-DDRIVER_ARYGON_ENABLED")
19 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/arygon")
20 ENDIF(LIBNFC_DRIVER_ARYGON)
21
22 IF(LIBNFC_DRIVER_PN532_UART)
23 ADD_DEFINITIONS("-DDRIVER_PN532_UART_ENABLED")
24 SET(DRIVERS_SOURCES ${DRIVERS_SOURCES} "drivers/pn532_uart")
25 ENDIF(LIBNFC_DRIVER_PN532_UART)
26
27 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/drivers)
28
+0
-6
cmake_modules/Makefile.am less more
0 EXTRA_DIST = \
1 COPYING-CMAKE-SCRIPTS \
2 FindLIBUSB.cmake \
3 FindPCSC.cmake \
4 UseDoxygen.cmake \
5 LibnfcDrivers.cmake
+0
-100
cmake_modules/UseDoxygen.cmake less more
0 # - Run Doxygen
1 #
2 # Adds a doxygen target that runs doxygen to generate the html
3 # and optionally the LaTeX API documentation.
4 # The doxygen target is added to the doc target as dependency.
5 # i.e.: the API documentation is built with:
6 # make doc
7 #
8 # USAGE: GLOBAL INSTALL
9 #
10 # Install it with:
11 # cmake ./ && sudo make install
12 # Add the following to the CMakeLists.txt of your project:
13 # include(UseDoxygen OPTIONAL)
14 # Optionally copy Doxyfile.in in the directory of CMakeLists.txt and edit it.
15 #
16 # USAGE: INCLUDE IN PROJECT
17 #
18 # set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
19 # include(UseDoxygen)
20 # Add the Doxyfile.in and UseDoxygen.cmake files to the projects source directory.
21 #
22 #
23 # Variables you may define are:
24 # DOXYFILE_OUTPUT_DIR - Path where the Doxygen output is stored. Defaults to "doc".
25 #
26 # DOXYFILE_LATEX_DIR - Directory where the Doxygen LaTeX output is stored. Defaults to "latex".
27 #
28 # DOXYFILE_HTML_DIR - Directory where the Doxygen html output is stored. Defaults to "html".
29 #
30
31 #
32 # Copyright (c) 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
33 #
34 # Redistribution and use is allowed according to the terms of the New
35 # BSD license.
36 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
37 #
38
39 macro(usedoxygen_set_default name value)
40 if(NOT DEFINED "${name}")
41 set("${name}" "${value}")
42 endif()
43 endmacro()
44
45 find_package(Doxygen)
46
47 if(DOXYGEN_FOUND)
48 find_file(DOXYFILE_IN "Doxyfile.in"
49 PATHS "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ROOT}/Modules/")
50
51 include(FindPackageHandleStandardArgs)
52 find_package_handle_standard_args(Doxyfile.in DEFAULT_MSG DOXYFILE_IN)
53 endif()
54
55 if(DOXYGEN_FOUND AND DOXYFILE_IN)
56 add_custom_target(doxygen ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
57
58 usedoxygen_set_default(DOXYFILE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc")
59 usedoxygen_set_default(DOXYFILE_HTML_DIR "html")
60
61 set_property(DIRECTORY APPEND PROPERTY
62 ADDITIONAL_MAKE_CLEAN_FILES "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR}")
63
64 set(DOXYFILE_LATEX "NO")
65 set(DOXYFILE_PDFLATEX "NO")
66 set(DOXYFILE_DOT "NO")
67
68 find_package(LATEX)
69 if(LATEX_COMPILER AND MAKEINDEX_COMPILER)
70 set(DOXYFILE_LATEX "YES")
71 usedoxygen_set_default(DOXYFILE_LATEX_DIR "latex")
72
73 set_property(DIRECTORY APPEND PROPERTY
74 ADDITIONAL_MAKE_CLEAN_FILES
75 "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
76
77 if(PDFLATEX_COMPILER)
78 set(DOXYFILE_PDFLATEX "YES")
79 endif()
80 if(DOXYGEN_DOT_EXECUTABLE)
81 set(DOXYFILE_DOT "YES")
82 endif()
83
84 add_custom_command(TARGET doxygen
85 POST_BUILD
86 COMMAND ${CMAKE_MAKE_PROGRAM}
87 WORKING_DIRECTORY "${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_LATEX_DIR}")
88 endif()
89
90
91 configure_file(${DOXYFILE_IN} Doxyfile ESCAPE_QUOTES IMMEDIATE @ONLY)
92
93 get_target_property(DOC_TARGET doc TYPE)
94 if(NOT DOC_TARGET)
95 add_custom_target(doc)
96 endif()
97
98 add_dependencies(doc doxygen)
99 endif()
+0
-4
config.h.cmake less more
0 #cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
1 #cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
2 #cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
3 #cmakedefine _XOPEN_SOURCE @_XOPEN_SOURCE@
1313 exit (code); \
1414 } while (0)
1515
16 #define err(code, ...) errx(code, ...)
16 #define err errx
1717
1818 #endif /* !_ERR_H_ */
2626 #define __WINDOWS_H__
2727
2828 # include <windows.h>
29 # include <winerror.h>
30 # include "win32/err.h"
2931 # if defined (__MINGW32__)
3032 # define snprintf(S, n, F, ...) sprintf(S, F, __VA_ARGS__)
3133 # define MAX(a,b) max(a,b)
3234 # define MIN(a,b) min(a,b)
3335 # define pipe(fds) _pipe(fds, 5000, _O_BINARY)
36 # define ETIMEDOUT WSAETIMEDOUT
37 # define ENOTSUP 134
3438 # else
3539 # define snprintf sprintf_s
3640 # define strdup _strdup
0 SET(EXAMPLES-SOURCES nfc-anticol nfc-dep-initiator nfc-dep-target nfc-emulate-forum-tag4 nfc-emulate-tag nfc-emulate-uid nfc-list nfc-poll nfc-relay nfc-relay-picc)
1 #TODO nfc-mfclassic nfc-mfultralight pn53x-diagnose pn53x-sam pn53x-tamashell
0 SET(EXAMPLES-SOURCES nfc-anticol nfc-dep-initiator nfc-dep-target nfc-emulate-forum-tag4 nfc-emulate-tag nfc-emulate-uid nfc-list nfc-poll nfc-relay nfc-relay-picc nfc-mfclassic nfc-mfultralight)
1 #TODO pn53x-diagnose pn53x-sam pn53x-tamashell
22
33 # XXX: Examples should not use private API!
44 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../libnfc)
77 LINK_DIRECTORIES(${LIBUSB_LIBRARY_DIRS} ${PCSC_LIBRARY_DIRS})
88
99 ADD_LIBRARY(nfc-utils nfc-utils)
10 #ADD_LIBRARY(mifare mifare)
1110
1211 # Examples
1312 FOREACH(source ${EXAMPLES-SOURCES})
14 ADD_EXECUTABLE(${source} ${source}.c)
13 IF((${source} MATCHES "nfc-mfultralight") OR (${source} MATCHES "nfc-mfclassic"))
14 ADD_EXECUTABLE(${source} ${source}.c mifare)
15 ELSE()
16 ADD_EXECUTABLE(${source} ${source}.c)
17 ENDIF((${source} MATCHES "nfc-mfultralight") OR (${source} MATCHES "nfc-mfclassic"))
1518 TARGET_LINK_LIBRARIES(${source} nfc)
1619 TARGET_LINK_LIBRARIES(${source} nfc-utils)
1720 INSTALL(TARGETS ${source} RUNTIME DESTINATION bin COMPONENT examples)
1821 ENDFOREACH(source)
19
20 #TARGET_LINK_LIBRARIES(nfc-mfclassic mifare)
21 #TARGET_LINK_LIBRARIES(nfc-mfultralight mifare)
2222
2323 IF(NOT WIN32)
2424 # Manuals for the examples
5151
5252 #include "nfc-utils.h"
5353
54 // TODO Move this Windows conditional code in contrib/win32/ or contrib/windows.h
5455 #ifndef _WIN32
5556 // Needed by sleep() under Unix
5657 # include <unistd.h>
5859 # define SUSP_TIME 1 // secs.
5960 #else
6061 // Needed by Sleep() under Windows
61 # include "../contrib/windows.h"
6262 # include <winbase.h>
6363 # define sleep Sleep
6464 # define SUSP_TIME 1000 // msecs.
4646 # define SUSP_TIME 1 // secs.
4747 #else
4848 // Needed by Sleep() under Windows
49 # include "../contrib/windows.h"
5049 # include <winbase.h>
5150 # define sleep Sleep
5251 # define SUSP_TIME 1000 // msecs.
2020 #define __NFC_EMULATION_H__
2121
2222 #include <sys/types.h>
23 #include <nfc/nfc.h>
2324
2425 struct nfc_emulator;
2526 struct nfc_emulation_state_machine;
3637 void *data;
3738 };
3839
39 int nfc_emulate_target (nfc_device_t* pnd, struct nfc_emulator *emulator);
40 NFC_EXPORT int nfc_emulate_target (nfc_device_t* pnd, struct nfc_emulator *emulator);
4041
4142 #endif /* __NFC_EMULATION_H__ */
2121 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
2222 ADD_LIBRARY(nfc SHARED ${LIBRARY_SOURCES})
2323 TARGET_LINK_LIBRARIES(nfc ${LIBUSB_LIBRARIES} ${PCSC_LIBRARIES})
24 IF(WIN32)
25 TARGET_LINK_LIBRARIES(nfc wsock32)
26 ENDIF(WIN32)
2427 SET_TARGET_PROPERTIES(nfc PROPERTIES SOVERSION 0)
2528
2629 IF(WIN32)
148148 if (!ReadFile (((serial_port_windows *) sp)->hPort, pbtRx, dwRxLen, &dwRxLen, NULL)) {
149149 return DEIO;
150150 }
151 return (dwRwLen == (DWORD) szRx) ? 0 : DEIO;
151 return (dwRxLen == (DWORD) szRx) ? 0 : DEIO;
152152 }
153153
154154 int
4141
4242 #include "mirror-subr.h"
4343 #include "nfc-internal.h"
44
45 #ifdef _WIN32
46 # include "contrib/windows.h"
47 #endif
4844
4945 #include <sys/param.h>
5046
2424 /* vim:set et sw=2 ts=2: */
2525
2626 #include <stdlib.h>
27
28 #ifdef HAVE_CONFIG_H
29 # include "config.h"
30 #endif // HAVE_CONFIG_H
2731
2832 #include "nfc-internal.h"
2933
3838
3939 #include <nfc/nfc.h>
4040
41 #ifdef _WIN32
42 # include "contrib/windows.h"
43 #endif
44
4541 #include "drivers.h"
4642 #include "nfc-internal.h"
4743