11cmake_minimum_required (VERSION 2.6)
22
3- if (NOT DEFINED CMAKE_BUILD_TYPE )
4- set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type" )
5- endif ()
6-
73project (libnfc C)
84
95SET (VERSION_MAJOR "1" )
@@ -15,6 +11,9 @@ SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
1511SET (PACKAGE_NAME "libnfc" )
1612SET (PACKAGE_VERSION ${VERSION} )
1713SET (PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION} " )
14+ SET (PACKAGE_DESCRIPTION "Near Field Communication (NFC) library" )
15+
16+ INCLUDE (GNUInstallDirs)
1817
1918# config.h
2019IF (WIN32 )
@@ -67,31 +66,23 @@ ENDIF(LIBNFC_CONFFILES_MODE)
6766option (BUILD_EXAMPLES "build examples ON/OFF" ON )
6867option (BUILD_UTILS "build utils ON/OFF" ON )
6968
70- option (BUILD_DEBPKG "build debian package ON/OFF" OFF )
69+ if (MSVC )
70+ option (BUILD_MANUAL "build man-pages ON/OFF" OFF )
71+ else (MSVC )
72+ option (BUILD_MANUAL "build man-pages ON/OFF" ON )
73+ endif (MSVC )
7174
75+ option (INSTALL_BUNDLE "Assemble a standalone bundle application" OFF )
7276
7377# Doxygen
7478SET (builddir "${CMAKE_BINARY_DIR} " )
7579SET (top_srcdir "${CMAKE_SOURCE_DIR} " )
7680INCLUDE (UseDoxygen)
7781
78- IF (DEFINED CMAKE_INSTALL_LIBDIR)
79- SET (libdir ${CMAKE_INSTALL_LIBDIR} )
80- ELSE (DEFINED CMAKE_INSTALL_LIBDIR)
81- SET (CMAKE_INSTALL_LIBDIR lib)
82- SET (libdir ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_LIBDIR} )
83- ENDIF (DEFINED CMAKE_INSTALL_LIBDIR)
84-
85- IF (DEFINED INCLUDE_INSTALL_DIR)
86- SET (includedir ${INCLUDE_INSTALL_DIR} )
87- ELSE (DEFINED INCLUDE_INSTALL_DIR)
88- SET (INCLUDE_INSTALL_DIR include )
89- SET (includedir ${CMAKE_INSTALL_PREFIX} /${INCLUDE_INSTALL_DIR} )
90- ENDIF (DEFINED INCLUDE_INSTALL_DIR)
91-
92- IF (NOT DEFINED SHARE_INSTALL_PREFIX)
93- SET (SHARE_INSTALL_PREFIX share)
94- ENDIF (NOT DEFINED SHARE_INSTALL_PREFIX)
82+ SET (prefix ${CMAKE_INSTALL_PREFIX} )
83+ SET (exec_prefix ${CMAKE_INSTALL_PREFIX} )
84+ SET (libdir ${CMAKE_INSTALL_FULL_LIBDIR} )
85+ SET (includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR} )
9586
9687# Additonnal GCC flags
9788IF (CMAKE_COMPILER_IS_GNUCC)
@@ -126,28 +117,36 @@ IF(MINGW)
126117 ENDIF (NOT DLLTOOL)
127118ENDIF (MINGW)
128119
120+ # pkg-config
129121IF (NOT WIN32 )
130- # Set some pkg-config variables
131- SET (prefix ${CMAKE_INSTALL_PREFIX} )
132- SET (exec_prefix ${CMAKE_INSTALL_PREFIX} )
133- SET (PACKAGE "libnfc" )
134- IF (LIBNFC_DRIVER_PN53X_USB)
135- SET (PKG_REQ ${PKG_REQ} "libusb" )
136- ENDIF (LIBNFC_DRIVER_PN53X_USB)
137- IF (LIBNFC_DRIVER_ACR122_USB)
138- SET (PKG_REQ ${PKG_REQ} "libusb" )
139- ENDIF (LIBNFC_DRIVER_ACR122_USB)
122+ IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
123+ IF (LIBNFC_DRIVER_PN53X_USB)
124+ SET (PKG_REQ ${PKG_REQ} "libusb-0.1" )
125+ ENDIF (LIBNFC_DRIVER_PN53X_USB)
126+ IF (LIBNFC_DRIVER_ACR122_USB)
127+ SET (PKG_REQ ${PKG_REQ} "libusb-0.1" )
128+ ENDIF (LIBNFC_DRIVER_ACR122_USB)
129+ ELSE (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
130+ IF (LIBNFC_DRIVER_PN53X_USB)
131+ SET (PKG_REQ ${PKG_REQ} "libusb" )
132+ ENDIF (LIBNFC_DRIVER_PN53X_USB)
133+ IF (LIBNFC_DRIVER_ACR122_USB)
134+ SET (PKG_REQ ${PKG_REQ} "libusb" )
135+ ENDIF (LIBNFC_DRIVER_ACR122_USB)
136+ ENDIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
140137 IF (LIBNFC_DRIVER_PCSC)
141138 SET (PKG_REQ ${PKG_REQ} "libpcsclite" )
142139 ENDIF (LIBNFC_DRIVER_PCSC)
143140 IF (LIBNFC_DRIVER_ACR122_PCSC)
144141 SET (PKG_REQ ${PKG_REQ} "libpcsclite" )
145142 ENDIF (LIBNFC_DRIVER_ACR122_PCSC)
146- # CMake lists are separated by a semi colon, replace with colon
147- STRING (REPLACE ";" "," PKG_CONFIG_REQUIRES "${PKG_REQ} " )
148- CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR} /libnfc.pc.in ${CMAKE_CURRENT_BINARY_DIR} /libnfc.pc @ONLY)
149- INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /libnfc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
150143ENDIF (NOT WIN32 )
144+ LIST (SORT PKG_REQ)
145+ LIST (REMOVE_DUPLICATES PKG_REQ)
146+ # CMake lists are separated by a semi colon, replace with colon
147+ STRING (REPLACE ";" "," PKG_CONFIG_REQUIRES "${PKG_REQ} " )
148+ CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR} /libnfc.pc.in ${CMAKE_CURRENT_BINARY_DIR} /libnfc.pc @ONLY)
149+ INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /libnfc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
151150
152151INCLUDE (LibnfcDrivers)
153152
@@ -167,16 +166,15 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
167166 ENDIF (I2C_REQUIRED)
168167 ENDIF (${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
169168
170- IF (PCSC_INCLUDE_DIRS )
169+ IF (PCSC_FOUND )
171170 INCLUDE_DIRECTORIES (${PCSC_INCLUDE_DIRS} )
172171 LINK_DIRECTORIES (${PCSC_LIBRARY_DIRS} )
173- ENDIF (PCSC_INCLUDE_DIRS )
172+ ENDIF (PCSC_FOUND )
174173
175- IF (LIBUSB_INCLUDE_DIRS )
174+ IF (LIBUSB_FOUND )
176175 INCLUDE_DIRECTORIES (${LIBUSB_INCLUDE_DIRS} )
177176 LINK_DIRECTORIES (${LIBUSB_LIBRARY_DIRS} )
178- SET (LIBUSB_FOUND TRUE )
179- ENDIF (LIBUSB_INCLUDE_DIRS)
177+ ENDIF (LIBUSB_FOUND)
180178
181179# version.rc for Windows
182180IF (WIN32 )
@@ -202,72 +200,40 @@ if (BUILD_EXAMPLES)
202200 add_subdirectory (examples)
203201endif ()
204202
205- if (NOT MSVC )
206- # config script install path
207- if ( NOT DEFINED LIBNFC_CMAKE_CONFIG_DIR )
208- set ( LIBNFC_CMAKE_CONFIG_DIR lib${LIB_SUFFIX} /cmake/libnfc )
209- endif ()
210-
211- set ( LIBNFC_INCLUDE_DIR ${includedir} )
212- set ( LIBNFC_INCLUDE_DIRS ${LIBNFC_INCLUDE_DIR} )
213- list ( APPEND LIBNFC_INCLUDE_DIRS ${LIBUSB_INCLUDE_DIRS} )
214- set ( LIBNFC_LIBRARY nfc )
215- set ( LIBNFC_LIBRARIES ${LIBNFC_LIBRARY} )
216- list ( APPEND LIBNFC_LIBRARIES ${LIBUSB_LIBRARIES} )
217- set ( LIBNFC_LIBRARY_DIRS ${libdir} )
218- set ( LIBNFC_ROOT_DIR ${prefix} )
219- set ( LIBNFC_VERSION_STRING ${VERSION} )
220- set ( LIBNFC_VERSION_MAJOR ${VERSION_MAJOR} )
221- set ( LIBNFC_VERSION_MINOR ${VERSION_MINOR} )
222- set ( LIBNFC_VERSION_PATCH ${VERSION_PATCH} )
223-
224- set ( LIBNFC_USE_FILE ${CMAKE_INSTALL_PREFIX} /${LIBNFC_CMAKE_CONFIG_DIR} /UseLibNFC.cmake )
225-
226-
227-
228- if (CMAKE_VERSION VERSION_LESS 2.8.8)
229- configure_file ( cmake/LibNFCConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfig.cmake @ONLY )
230- configure_file ( cmake/LibNFCConfigVersion.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfigVersion.cmake @ONLY )
231- else ()
232- include (CMakePackageConfigHelpers)
233- configure_package_config_file (
234- cmake/LibNFCConfig.cmake.in
235- ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfig.cmake
236- INSTALL_DESTINATION ${LIBNFC_CMAKE_CONFIG_DIR}
237- PATH_VARS
238- LIBNFC_USE_FILE
239- LIBNFC_ROOT_DIR
240- LIBNFC_INCLUDE_DIR
241- LIBNFC_INCLUDE_DIRS
242- LIBNFC_LIBRARY_DIRS
243- NO_CHECK_REQUIRED_COMPONENTS_MACRO
244- )
245- write_basic_package_version_file (
246- LibNFCConfigVersion.cmake
247- VERSION ${LIBNFC_VERSION_STRING}
248- COMPATIBILITY AnyNewerVersion
249- )
250- endif ()
251-
252- install ( FILES ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfig.cmake
253- ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfigVersion.cmake
254- cmake/UseLibNFC.cmake
255- DESTINATION ${LIBNFC_CMAKE_CONFIG_DIR}
256- )
257-
258- endif ()
259-
260- # Binary Package
261- IF (WIN32 )
262- SET (CPACK_GENERATOR "ZIP" )
263- ELSE (WIN32 )
264- SET (CPACK_GENERATOR "TBZ2" )
265- IF (BUILD_DEBPKG)
266- SET (CPACK_GENERATOR "DEB" )
267- ENDIF (BUILD_DEBPKG)
268- ENDIF (WIN32 )
269-
270- SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Near Field Communication (NFC) library" )
203+ set (INCLUDE_INSTALL_DIRS ${includedir} )
204+ set (LIBNFC_CMAKE_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR} /cmake/${PACKAGE_NAME} )
205+ set (LIBNFC_DEFINITIONS "" )
206+ set (LIBNFC_LIBRARIES ${LIBNFC_LIBRARY} )
207+ list (APPEND LIBNFC_LIBRARIES ${PKG_REQ} )
208+ set (LIBNFC_LIBRARY nfc)
209+ set (LIBNFC_USE_FILE UseLibNFC.cmake)
210+ set (LIBRARY_INSTALL_DIRS ${libdir} )
211+
212+ include (CMakePackageConfigHelpers)
213+ configure_package_config_file(
214+ cmake/LibNFCConfig.cmake.in
215+ ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfig.cmake
216+ INSTALL_DESTINATION ${LIBNFC_CMAKE_CONFIG_DIR}
217+ PATH_VARS INCLUDE_INSTALL_DIRS LIBRARY_INSTALL_DIRS
218+ )
219+ write_basic_package_version_file(
220+ LibNFCConfigVersion.cmake
221+ VERSION ${VERSION}
222+ COMPATIBILITY AnyNewerVersion
223+ )
224+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfig.cmake
225+ ${CMAKE_CURRENT_BINARY_DIR} /LibNFCConfigVersion.cmake
226+ ${CMAKE_CURRENT_SOURCE_DIR} /cmake/UseLibNFC.cmake
227+ DESTINATION ${LIBNFC_CMAKE_CONFIG_DIR}
228+ )
229+
230+ #install required libraries
231+ IF (INSTALL_BUNDLE)
232+ CONFIGURE_FILE (${CMAKE_SOURCE_DIR} /cmake/FixBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /FixBundle.cmake @ONLY)
233+ INSTALL (SCRIPT ${CMAKE_CURRENT_BINARY_DIR} /FixBundle.cmake)
234+ ENDIF (INSTALL_BUNDLE)
235+
236+ SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PACKAGE_DESCRIPTION} )
271237SET (CPACK_PACKAGE_VENDOR "Roel Verdult" )
272238SET (CPACK_PACKAGE_CONTACT
"Roel Verdult <[email protected] >" )
273239
@@ -295,13 +261,12 @@ SET(CPACK_COMPONENT_HEADERS_DISABLED TRUE)
295261SET (CPACK_COMPONENT_HEADERS_DEPENDS libraries)
296262SET (CPACK_COMPONENT_EXAMPLES_DEPENDS libraries)
297263
264+ # Binary Package
265+ SET (CPACK_GENERATOR "ZIP" CACHE STRING "Default binary package generator" )
298266# Source Package
299- IF (WIN32 )
300- SET (CPACK_SOURCE_GENERATOR "ZIP" )
301- ELSE (WIN32 )
302- SET (CPACK_SOURCE_GENERATOR "ZIP;TBZ2" )
303- ENDIF (WIN32 )
304-
267+ SET (CPACK_SOURCE_GENERATOR "SOURCE_ZIP" CACHE STRING "Default source package generator" )
305268SET (CPACK_SOURCE_PACKAGE_FILE_NAME "libnfc-${VERSION} " )
306269SET (CPACK_SOURCE_IGNORE_FILES "~$" "/\\\\ .git/" "bin/" )
270+
271+ INCLUDE (InstallRequiredSystemLibraries)
307272INCLUDE (CPack)
0 commit comments