Codebase list libfreefare / upstream/1.7.1 CMakeLists.txt
upstream/1.7.1

Tree @upstream/1.7.1 (Download .tar.gz)

CMakeLists.txt @upstream/1.7.1

f5c401f
 
39a1e1f
50401c5
2d45436
39a1e1f
 
 
 
 
 
f09c9a3
27ccf67
5db8be9
 
b5f8ce9
5db8be9
 
f09c9a3
b5f8ce9
5db8be9
 
f09c9a3
27ccf67
 
c7d77d7
f5c401f
831dbd3
5db8be9
831dbd3
27ccf67
d5b6a7c
cf9e028
 
 
 
f3f2ec1
 
 
 
 
cf9e028
 
d5b6a7c
54e0bdb
 
 
d5b6a7c
54e0bdb
cf9e028
27ccf67
0ee6dca
 
 
 
 
271fbc7
 
 
 
 
f5c401f
d686803
f5c401f
 
d686803
f5c401f
 
 
d686803
f5c401f
 
d686803
f5c401f
 
 
 
 
 
27ccf67
e38636c
b3b3f47
54e0bdb
e38636c
56219ce
2a33e28
 
 
58c5662
 
54e0bdb
7b917f9
 
 
54e0bdb
58c5662
 
58dcf63
0977dd1
 
 
 
5db8be9
0977dd1
5db8be9
778ac87
0977dd1
778ac87
0977dd1
 
f5c401f
 
58dcf63
f5c401f
eb90c5a
 
 
 
 
 
 
 
 
8485996
 
b2666de
 
 
 
 
 
 
 
3ac1d64
b2666de
 
54e0bdb
 
 
 
 
76a85ce
54e0bdb
 
 
 
 
 
 
 
 
4487fd7
54e0bdb
 
c7d77d7
 
8c7b61e
c7d77d7
f5c401f
 
58dcf63
8b8b8d4
58dcf63
a58ac69
58dcf63
 
f5c401f
 
 
975cd27
39a1e1f
 
 
 
f5c401f
 
 
58dcf63
f20a681
 
 
58dcf63
f5c401f
 
 
 
 
58dcf63
f5c401f
58dcf63
f5c401f
58dcf63
 
f5c401f
2651cdc
f5c401f
PROJECT(libnfc C)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET(VERSION_MAJOR "1")
SET(VERSION_MINOR "7")
SET(VERSION_PATCH "1")

SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

SET(PACKAGE_NAME "libnfc")
SET(PACKAGE_VERSION ${VERSION})
SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")

# config.h
IF(WIN32)
  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config_windows.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
  SET(LIBNFC_SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/config" CACHE PATH "libnfc configuration directory")
  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/contrib/win32)
ELSE(WIN32)
  SET(_XOPEN_SOURCE 600)
  SET(SYSCONFDIR "/etc" CACHE PATH "System configuration directory")
  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config_posix.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
ENDIF(WIN32)

ADD_DEFINITIONS("-DHAVE_CONFIG_H")

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include)

# make it easy to locate CMake modules for finding libraries
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")

# Options
SET(LIBNFC_LOG ON CACHE BOOL "Enable log facility (errors, warning, info and debug messages)")
IF(LIBNFC_LOG)
  ADD_DEFINITIONS(-DLOG)
ENDIF(LIBNFC_LOG)

SET(LIBNFC_ENVVARS ON CACHE BOOL "Enable envvars facility")
IF(LIBNFC_ENVVARS)
  ADD_DEFINITIONS(-DENVVARS)
ENDIF(LIBNFC_ENVVARS)

SET(LIBNFC_DEBUG_MODE OFF CACHE BOOL "Debug mode")
IF(LIBNFC_DEBUG_MODE)
  ADD_DEFINITIONS(-DDEBUG)
  SET(CMAKE_C_FLAGS "-g3 ${CMAKE_C_FLAGS}")
  SET(WIN32_MODE "debug")
  SET(CMAKE_RC_FLAGS "-D_DEBUG ${CMAKE_RC_FLAGS}")
ELSE(LIBNFC_DEBUG_MODE)
  SET(WIN32_MODE "release")
ENDIF(LIBNFC_DEBUG_MODE)

SET(LIBNFC_CONFFILES_MODE ON CACHE BOOL "Enable configuration files")
IF(LIBNFC_CONFFILES_MODE)
  ADD_DEFINITIONS(-DCONFFILES)
ENDIF(LIBNFC_CONFFILES_MODE)

# Doxygen
SET(builddir "${CMAKE_BINARY_DIR}")
SET(top_srcdir "${CMAKE_SOURCE_DIR}")
INCLUDE(UseDoxygen)

IF(DEFINED CMAKE_INSTALL_LIBDIR)
  SET(libdir ${CMAKE_INSTALL_LIBDIR})
ELSE(DEFINED CMAKE_INSTALL_LIBDIR)
  SET(CMAKE_INSTALL_LIBDIR lib)
  SET(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
ENDIF(DEFINED CMAKE_INSTALL_LIBDIR)

IF(DEFINED INCLUDE_INSTALL_DIR)
  SET(includedir ${INCLUDE_INSTALL_DIR})
ELSE(DEFINED INCLUDE_INSTALL_DIR)
  SET(INCLUDE_INSTALL_DIR include)
  SET(includedir ${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR})
ENDIF(DEFINED INCLUDE_INSTALL_DIR)

IF(NOT DEFINED SHARE_INSTALL_PREFIX)
  SET(SHARE_INSTALL_PREFIX share)
ENDIF(NOT DEFINED SHARE_INSTALL_PREFIX)

# Additonnal GCC flags
IF(CMAKE_COMPILER_IS_GNUCC)
  # Make sure we will not miss some warnings ;)
  SET(CMAKE_C_FLAGS "-Wall -pedantic -std=c99 ${CMAKE_C_FLAGS}")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

# Workarounds for libusb in C99
ADD_DEFINITIONS(-Du_int8_t=uint8_t -Du_int16_t=uint16_t)

IF(MINGW)
  # force MinGW-w64 in 32bit mode
  SET(CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}")
  SET(CMAKE_MODULE_LINKER_FLAGS "-m32 -Wl,--enable-stdcall-fixup ${CMAKE_SHARED_LINKER_FLAGS}")
  SET(CMAKE_SHARED_LINKER_FLAGS "-m32 -Wl,--enable-stdcall-fixup ${CMAKE_SHARED_LINKER_FLAGS}")
  SET(CMAKE_EXE_LINKER_FLAGS "-m32 -Wl,--enable-stdcall-fixup ${CMAKE_EXE_LINKER_FLAGS}")
  SET(CMAKE_RC_FLAGS "--target=pe-i386 --output-format=coff ${CMAKE_RC_FLAGS}")
ENDIF(MINGW)

IF(NOT WIN32)
  # Set some pkg-config variables
  SET(prefix ${CMAKE_INSTALL_PREFIX})
  SET(exec_prefix ${CMAKE_INSTALL_PREFIX})
  SET(PACKAGE "libnfc")
  IF(LIBNFC_DRIVER_PN53X_USB)
    SET(PKG_REQ ${PKG_REQ} "libusb")
  ENDIF(LIBNFC_DRIVER_PN53X_USB)
  IF(LIBNFC_DRIVER_ACR122)
    SET(PKG_REQ ${PKG_REQ} "libpcsclite")
  ENDIF(LIBNFC_DRIVER_ACR122)
  # CMake lists are separated by a semi colon, replace with colon
  STRING(REPLACE ";" "," PKG_CONFIG_REQUIRES "${PKG_REQ}")
  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libnfc.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libnfc.pc @ONLY) 
  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libnfc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
ENDIF(NOT WIN32)

# Require PCRE for Win32
IF (WIN32)
  FIND_PACKAGE(PCRE REQUIRED)
  IF(PCRE_INCLUDE_DIRS)
    INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIRS})
    LINK_DIRECTORIES(${PCRE_LIBRARY_DIRS})
  ENDIF(PCRE_INCLUDE_DIRS)
ENDIF(WIN32)

INCLUDE(LibnfcDrivers)

IF(PCSC_INCLUDE_DIRS)
  INCLUDE_DIRECTORIES(${PCSC_INCLUDE_DIRS})
  LINK_DIRECTORIES(${PCSC_LIBRARY_DIRS})
ENDIF(PCSC_INCLUDE_DIRS)

IF(LIBUSB_INCLUDE_DIRS)
  INCLUDE_DIRECTORIES(${LIBUSB_INCLUDE_DIRS})
  LINK_DIRECTORIES(${LIBUSB_LIBRARY_DIRS})
  SET(LIBUSB_FOUND TRUE)
ENDIF(LIBUSB_INCLUDE_DIRS)

# version.rc for Windows
IF(WIN32)
  # Date for filling in rc file information
  MACRO (GET_CURRENT_YEAR RESULT)
    EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE ${RESULT})
    STRING(REGEX REPLACE "\n" "" ${RESULT} ${${RESULT}})
    STRING(REGEX REPLACE ".*(..)/(..)/(....).*" "\\3" ${RESULT} ${${RESULT}})
  ENDMACRO (GET_CURRENT_YEAR)
  GET_CURRENT_YEAR(CURRENT_YEAR)
  MESSAGE("Year for copyright is " ${CURRENT_YEAR})

  SET(RC_COMMENT "${PACKAGE_NAME} library")
  SET(RC_INTERNAL_NAME "${PACKAGE_NAME} ${WIN32_MODE}")
  SET(RC_ORIGINAL_NAME ${PACKAGE_NAME}.dll)
  SET(RC_FILE_TYPE VFT_DLL)
  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/contrib/win32/version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/windows/libnfc.rc @ONLY)
ENDIF(WIN32)

ADD_SUBDIRECTORY(libnfc)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(utils)
ADD_SUBDIRECTORY(examples)

# Binary Package
IF(WIN32)
  SET(CPACK_GENERATOR "ZIP")
ELSE(WIN32)
  SET(CPACK_GENERATOR "TBZ2")
ENDIF(WIN32)

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Near Field Communication (NFC) library")
SET(CPACK_PACKAGE_VENDOR "Roel Verdult")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "libnfc")
SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "NFC Library")
SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Example Applications")
SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Development Headers")
IF(NOT WIN32)
  SET(CPACK_COMPONENT_MANUALS_DISPLAY_NAME "Example Applications Manuals")
  SET(CPACK_COMPONENT_MANUALS_DISABLED TRUE)
  SET(CPACK_COMPONENT_MANUALS_DEPENDS examples)
ENDIF(NOT WIN32)
SET(CPACK_COMPONENT_HEADERS_DISABLED TRUE)
SET(CPACK_COMPONENT_HEADERS_DEPENDS libraries)
SET(CPACK_COMPONENT_EXAMPLES_DEPENDS libraries)

# Source Package
IF(WIN32)
  SET(CPACK_SOURCE_GENERATOR "ZIP")
ELSE(WIN32)
  SET(CPACK_SOURCE_GENERATOR "ZIP;TBZ2")
ENDIF(WIN32)

SET(CPACK_SOURCE_PACKAGE_FILE_NAME "libnfc-${VERSION}")
SET(CPACK_SOURCE_IGNORE_FILES "~$" "/\\\\.git/" "bin/")
INCLUDE(CPack)