Fix up build on Mac OS X:
[libftdi] / CMakeLists.txt
CommitLineData
0b2d00fc
MV
1# Project
2project(libftdi)
3set(MAJOR_VERSION 0)
8e527547 4set(MINOR_VERSION 17)
4e79ea5f 5set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION})
89a3169e 6SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
0b2d00fc 7
5cc2b9c1
UB
8option(ASYNC-MODE "enable experimental async mode. Linux only")
9if(ASYNC-MODE)
10 add_definitions(-DLIBFTDI_LINUX_ASYNC_MODE)
11endif(ASYNC-MODE)
12
0b2d00fc
MV
13# CMake
14if("${CMAKE_BUILD_TYPE}" STREQUAL "")
15 set(CMAKE_BUILD_TYPE Debug)
16endif("${CMAKE_BUILD_TYPE}" STREQUAL "")
17set(CMAKE_COLOR_MAKEFILE ON)
18cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
19
20# Debug build
21message("-- Build type: ${CMAKE_BUILD_TYPE}")
22if(${CMAKE_BUILD_TYPE} STREQUAL Debug)
23 add_definitions(-DDEBUG)
24endif(${CMAKE_BUILD_TYPE} STREQUAL Debug)
25
5478cd59 26FIND_PACKAGE(USB1 REQUIRED)
89a3169e
MK
27INCLUDE_DIRECTORIES(${LIBUSB_INCLUDE_DIR})
28
998266bf
EB
29# Find Boost (optional package)
30find_package(Boost)
31
0b2d00fc
MV
32# Set components
33set(CPACK_COMPONENTS_ALL sharedlibs staticlibs headers)
34set(CPACK_COMPONENT_SHAREDLIBS_DISPLAY_NAME "Shared libraries")
35set(CPACK_COMPONENT_STATICLIBS_DISPLAY_NAME "Static libraries")
36set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ Headers")
37
38set(CPACK_COMPONENT_SHAREDLIBS_DESCRIPTION
39"Shared library for general use.")
40set(CPACK_COMPONENT_STATICLIBS_DESCRIPTION
2d30c7d4 41"Static library, good if you want to embed libftdi in your application.")
0b2d00fc
MV
42set(CPACK_COMPONENT_HEADERS_DESCRIPTION
43"C/C++ header files.")
44
45set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development")
46set(CPACK_COMPONENT_STATICLIBS_GROUP "Development")
e5c0c219 47set(CPACK_COMPONENT_HEADERS_GROUP "Development")
0b2d00fc 48
998266bf
EB
49if(NOT APPLE)
50 # Create suffix to eventually install in lib64
51 if(CMAKE_SIZEOF_VOID_P EQUAL 4)
52 SET(LIB_SUFFIX "")
53 SET(PACK_ARCH "")
54 else(CMAKE_SIZEOF_VOID_P EQUAL 8)
55 SET(LIB_SUFFIX 64)
56 SET(PACK_ARCH .x86_64)
57 endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
58else(NOT APPLE)
59 SET(LIB_SUFFIX "")
60 SET(PACK_ARCH "")
61endif(NOT APPLE)
20a28968 62
0b2d00fc
MV
63# Package information
64set(CPACK_PACKAGE_VERSION ${VERSION_STRING})
65set(CPACK_PACKAGE_CONTACT "Marek Vavrusa <marek@vavrusa.com>")
2d30c7d4 66set(CPACK_PACKAGE_DESCRIPTION "libftdi library.")
0b2d00fc
MV
67set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION}
68 )
69# Package settings
70if(${UNIX})
71 set(CPACK_GENERATOR "DEB;RPM")
72 set(CPACK_CMAKE_GENERATOR "Unix Makefiles")
73 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
20a28968 74 set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}${PACK_ARCH})
0b2d00fc
MV
75endif(${UNIX})
76
77if(${WIN32})
78 set(CPACK_GENERATOR "NSIS")
79 set(CPACK_CMAKE_GENERATOR "MinGW Makefiles")
80 set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
81 set(CPACK_PACKAGE_VENDOR "")
82 set(CPACK_PACKAGE_INSTALL_DIRECTORY "libftdi")
83 set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
84 set(CPACK_NSIS_DISPLAY_NAME "libftdi")
85 set(CPACK_NSIS_MODIFY_PATH "ON")
86endif(${WIN32})
87
3ab8f642 88set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
0b2d00fc 89
4e79ea5f
TJ
90set(CPACK_SOURCE_GENERATOR TGZ)
91set(CPACK_SOURCE_IGNORE_FILES "\\\\.git")
92set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
93
0b2d00fc
MV
94# Subdirectories
95if(${UNIX})
96 set(CPACK_SET_DESTDIR "ON")
97endif(${UNIX})
98
99add_subdirectory(src)
100add_subdirectory(ftdipp)
fdfee603 101add_subdirectory(bindings)
0b2d00fc
MV
102add_subdirectory(examples)
103add_subdirectory(packages)
104
a9345150
TJ
105
106
107# Documentation
a03fea79
GE
108
109option(DOCUMENTATION "Generate API documentation with Doxygen" ON)
110
a9345150 111find_package(Doxygen)
a03fea79 112if(DOCUMENTATION AND DOXYGEN_FOUND)
a9345150
TJ
113
114 # Set variables
115 set(PACKAGE libftdi)
116 set(VERSION ${VERSION_STRING})
117 set(top_srcdir ${CMAKE_SOURCE_DIR})
118
119 # Find doxy config
120 message(STATUS "Doxygen found.")
121 set(DOXY_DIR "${CMAKE_SOURCE_DIR}/doc")
122 set(DOXY_CONFIG "${DOXY_DIR}/Doxyfile.in")
123
124 # Copy doxy.config.in
125 configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config")
126
127 # Create doc directory
128 add_custom_command(
129 OUTPUT ${CMAKE_BINARY_DIR}/doc
130 COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc
131 COMMAND mkdir ${CMAKE_BINARY_DIR}/doc
132 DEPENDS ftdi ftdipp
133 )
134
135 # Run doxygen
136 add_custom_command(
137 OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html
138 COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config"
139 DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc"
140 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
141 )
142
143 add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html)
144
a03fea79
GE
145 message(STATUS "Generating API documentation with Doxygen")
146else(DOCUMENTATION AND DOXYGEN_FOUND)
147 message(STATUS "Not generating API documentation")
148endif(DOCUMENTATION AND DOXYGEN_FOUND)
a9345150 149
e5c0c219
MV
150# PkgConfig
151set(prefix ${CMAKE_INSTALL_PREFIX})
152set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
153set(includedir ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})
154
155if(${UNIX})
20a28968 156 set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
e5c0c219
MV
157endif(${UNIX})
158if(${WIN32})
159 set(libdir ${CMAKE_INSTALL_PREFIX}/bin)
160endif(${WIN32})
161
162configure_file(${CMAKE_SOURCE_DIR}/libftdi.pc.in ${CMAKE_BINARY_DIR}/libftdi.pc @ONLY)
163configure_file(${CMAKE_SOURCE_DIR}/libftdipp.pc.in ${CMAKE_BINARY_DIR}/libftdipp.pc @ONLY)
f60fbc47 164install(FILES ${CMAKE_BINARY_DIR}/libftdi.pc ${CMAKE_BINARY_DIR}/libftdipp.pc
20a28968 165 DESTINATION lib${LIB_SUFFIX}/pkgconfig)
e5c0c219 166
603b0de5
TJ
167if(${UNIX})
168 configure_file(${CMAKE_SOURCE_DIR}/libftdi-config.in ${CMAKE_BINARY_DIR}/libftdi-config @ONLY)
169 install(PROGRAMS ${CMAKE_BINARY_DIR}/libftdi-config DESTINATION bin)
170endif(${UNIX})
171
0b2d00fc 172include(CPack)