From 7828006e4d0fd4fd72b77151045aaa61c053ffc3 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Wed, 30 Aug 2023 11:57:01 +0200 Subject: [PATCH 01/16] CMake: fix indentation and normalize braces --- CMakeLists.txt | 53 ++++++++++++++++----------------- examples/CMakeLists.txt | 21 +++++++------ examples/cmake_example/CMakeLists.txt | 4 +- ftdipp/CMakeLists.txt | 35 +++++++++++---------- packages/CMakeLists.txt | 22 +++++++------- python/CMakeLists.txt | 28 +++++++++--------- python/examples/CMakeLists.txt | 5 +-- src/CMakeLists.txt | 12 ++++---- 8 files changed, 90 insertions(+), 90 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48a028c..9d7f9b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # CMake if("${CMAKE_BUILD_TYPE}" STREQUAL "") - set(CMAKE_BUILD_TYPE RelWithDebInfo) + set(CMAKE_BUILD_TYPE RelWithDebInfo) endif("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_COLOR_MAKEFILE ON) @@ -22,7 +22,7 @@ include(CMakeOptions.txt) # Debug build message("-- Build type: ${CMAKE_BUILD_TYPE}") if(${CMAKE_BUILD_TYPE} STREQUAL Debug) - add_definitions(-DDEBUG) + add_definitions(-DDEBUG) endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) # find libusb @@ -59,7 +59,7 @@ set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development") set(CPACK_COMPONENT_STATICLIBS_GROUP "Development") set(CPACK_COMPONENT_HEADERS_GROUP "Development") -# guess LIB_SUFFIX, don't take debian multiarch into account +# guess LIB_SUFFIX, don't take debian multiarch into account if ( NOT DEFINED LIB_SUFFIX ) if( CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT CMAKE_CROSSCOMPILING @@ -73,9 +73,9 @@ endif () if(NOT APPLE) if(CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(PACK_ARCH "") - else(CMAKE_SIZEOF_VOID_P EQUAL 8) - SET(PACK_ARCH .x86_64) + SET(PACK_ARCH "") + else(CMAKE_SIZEOF_VOID_P EQUAL 8) + SET(PACK_ARCH .x86_64) endif(CMAKE_SIZEOF_VOID_P EQUAL 4) else(NOT APPLE) SET(PACK_ARCH "") @@ -85,8 +85,8 @@ endif(NOT APPLE) set(CPACK_PACKAGE_VERSION ${VERSION_STRING}) set(CPACK_PACKAGE_CONTACT "Intra2net AG ") set(CPACK_PACKAGE_DESCRIPTION "libftdi1 library.") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION} - ) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION}) + # Package settings if ( UNIX ) set(CPACK_GENERATOR "DEB;RPM") @@ -125,22 +125,22 @@ add_custom_target(dist WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) if ( DOCUMENTATION ) - find_package ( Doxygen REQUIRED) + find_package ( Doxygen REQUIRED) - # Copy doxy.config.in - set(top_srcdir ${CMAKE_SOURCE_DIR}) - configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ) - configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.xml.in ${CMAKE_BINARY_DIR}/Doxyfile.xml ) + # Copy doxy.config.in + set(top_srcdir ${CMAKE_SOURCE_DIR}) + configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ) + configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.xml.in ${CMAKE_BINARY_DIR}/Doxyfile.xml ) - # Run doxygen - add_custom_command( + # Run doxygen + add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} - ) + ) - add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) + add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) endif () add_subdirectory(src) @@ -169,10 +169,10 @@ set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin) set(includedir ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}) if(${UNIX}) - set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) + set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) endif(${UNIX}) if(${WIN32}) - set(libdir ${CMAKE_INSTALL_PREFIX}/bin) + set(libdir ${CMAKE_INSTALL_PREFIX}/bin) endif(${WIN32}) configure_file(${CMAKE_SOURCE_DIR}/libftdi1.pc.in ${CMAKE_BINARY_DIR}/libftdi1.pc @ONLY) @@ -232,14 +232,13 @@ write_basic_package_version_file ( COMPATIBILITY AnyNewerVersion ) - -install ( FILES - ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake - cmake/UseLibFTDI1.cmake - - DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR} - ) +install ( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake + cmake/UseLibFTDI1.cmake + DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR} +) include(CPack) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index dd8ffbe..382cb33 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,7 +1,7 @@ # Includes include_directories( ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ) + ${CMAKE_CURRENT_BINARY_DIR} +) # Targets add_executable(simple simple.c) @@ -16,7 +16,7 @@ add_executable(stream_test stream_test.c) add_executable(eeprom eeprom.c) add_executable(async async.c) if(NOT MINGW) - add_executable(purge_test purge_test.c) + add_executable(purge_test purge_test.c) endif(NOT MINGW) # Linkage @@ -32,19 +32,20 @@ target_link_libraries(stream_test ftdi1) target_link_libraries(eeprom ftdi1) target_link_libraries(async ftdi1) if(NOT MINGW) - target_link_libraries(purge_test ftdi1) + target_link_libraries(purge_test ftdi1) endif(NOT MINGW) # libftdi++ examples if( FTDIPP ) - include_directories(BEFORE ${CMAKE_SOURCE_DIR}/ftdipp - ${Boost_INCLUDE_DIRS}) + include_directories(BEFORE ${CMAKE_SOURCE_DIR}/ftdipp + ${Boost_INCLUDE_DIRS} + ) - # Target - add_executable(find_all_pp find_all_pp.cpp) + # Target + add_executable(find_all_pp find_all_pp.cpp) - # Linkage - target_link_libraries(find_all_pp ftdipp1) + # Linkage + target_link_libraries(find_all_pp ftdipp1) endif( FTDIPP ) # Source includes diff --git a/examples/cmake_example/CMakeLists.txt b/examples/cmake_example/CMakeLists.txt index fe203ed..5a1e1a7 100644 --- a/examples/cmake_example/CMakeLists.txt +++ b/examples/cmake_example/CMakeLists.txt @@ -9,5 +9,5 @@ add_executable ( example main.c ) target_link_libraries( example ${LIBFTDI_LIBRARIES} ) install ( TARGETS example - DESTINATION bin ) - + DESTINATION bin +) diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt index fac5bcc..38932ae 100644 --- a/ftdipp/CMakeLists.txt +++ b/ftdipp/CMakeLists.txt @@ -6,8 +6,9 @@ set(cpp_headers ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.hpp CACHE INTERNAL "List of cpp # Includes include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/src) + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src +) include_directories(${Boost_INCLUDE_DIRS}) @@ -24,24 +25,24 @@ set_target_properties(ftdipp1 PROPERTIES CLEAN_DIRECT_OUTPUT 1) target_link_libraries(ftdipp1 ftdi1 ${LIBUSB_LIBRARIES} ${BOOST_LIBRARIES}) install ( TARGETS ftdipp1 - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} - ) + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} +) # Static library if ( STATICLIBS ) - add_library(ftdipp1-static STATIC ${cpp_sources}) - set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1") - set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - - install ( TARGETS ftdipp1-static - ARCHIVE DESTINATION lib${LIB_SUFFIX} - COMPONENT staticlibs - ) + add_library(ftdipp1-static STATIC ${cpp_sources}) + set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1") + set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) + + install ( TARGETS ftdipp1-static + ARCHIVE DESTINATION lib${LIB_SUFFIX} + COMPONENT staticlibs + ) endif () install ( FILES ${cpp_headers} - DESTINATION include/${PROJECT_NAME} - COMPONENT headers - ) + DESTINATION include/${PROJECT_NAME} + COMPONENT headers +) diff --git a/packages/CMakeLists.txt b/packages/CMakeLists.txt index 4bf58d2..204bbe0 100644 --- a/packages/CMakeLists.txt +++ b/packages/CMakeLists.txt @@ -1,19 +1,19 @@ # Debian if("${PACKAGE}" STREQUAL "Debian") - # Settings - set(REVISION 0) - set(CPACK_GENERATOR "DEB" PARENT_SCOPE) - set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}-${REVISION} PARENT_SCOPE) + # Settings + set(REVISION 0) + set(CPACK_GENERATOR "DEB" PARENT_SCOPE) + set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}-${REVISION} PARENT_SCOPE) - # Dependencies - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libusb-1.0-0" PARENT_SCOPE) - set(DEBIAN_PACKAGE_BUILDS_DEPENDS "cmake, libusb2-dev" PARENT_SCOPE) + # Dependencies + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libusb-1.0-0" PARENT_SCOPE) + set(DEBIAN_PACKAGE_BUILDS_DEPENDS "cmake, libusb2-dev" PARENT_SCOPE) - # Bundles - message("-- Installing udev rules to /etc/udev/rules.d") - install(FILES 99-libftdi.rules - DESTINATION /etc/udev/rules.d) + # Bundles + message("-- Installing udev rules to /etc/udev/rules.d") + install(FILES 99-libftdi.rules + DESTINATION /etc/udev/rules.d) endif("${PACKAGE}" STREQUAL "Debian") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 1a8142b..f8ac423 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -55,23 +55,23 @@ install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/ftdi1.py DESTINATION ${PYTHON_MODULE install ( TARGETS ${SWIG_MODULE_ftdi1_REAL_NAME} LIBRARY DESTINATION ${PYTHON_MODULE_PATH} ) if ( DOCUMENTATION ) - # Run doxygen to only generate the xml - add_custom_command ( OUTPUT ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile.xml - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} - ) + # Run doxygen to only generate the xml + add_custom_command ( OUTPUT ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile.xml + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} + ) - # generate .i from doxygen .xml - add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n + # generate .i from doxygen .xml + add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i - DEPENDS ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml - ) - add_custom_target ( doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) - add_dependencies( ${SWIG_MODULE_ftdi1_REAL_NAME} doc_i ) + DEPENDS ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + ) + add_custom_target ( doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) + add_dependencies( ${SWIG_MODULE_ftdi1_REAL_NAME} doc_i ) endif () diff --git a/python/examples/CMakeLists.txt b/python/examples/CMakeLists.txt index b4ed93d..232595f 100644 --- a/python/examples/CMakeLists.txt +++ b/python/examples/CMakeLists.txt @@ -1,5 +1,4 @@ install ( FILES simple.py complete.py cbus.py DESTINATION share/libftdi/examples - PERMISSIONS OWNER_READ GROUP_READ WORLD_READ - ) - + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 17b3617..cf630ba 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ # Includes include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ) + ${CMAKE_CURRENT_SOURCE_DIR} +) # Version information set(SNAPSHOT_VERSION "unknown") @@ -9,7 +9,7 @@ execute_process(COMMAND git describe OUTPUT_VARIABLE GIT_DESCRIBE_OUTPUT RESULT_VARIABLE GIT_DESCRIBE_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE - ) +) if(${GIT_DESCRIBE_RESULT} STREQUAL 0) set(SNAPSHOT_VERSION ${GIT_DESCRIBE_OUTPUT}) endif () @@ -36,7 +36,7 @@ install ( TARGETS ftdi1 RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX} - ) +) if ( STATICLIBS ) add_library(ftdi1-static STATIC ${c_sources}) @@ -46,10 +46,10 @@ if ( STATICLIBS ) install ( TARGETS ftdi1-static ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT staticlibs - ) + ) endif () install ( FILES ${c_headers} DESTINATION include/${PROJECT_NAME} COMPONENT headers - ) +) -- 1.7.1 From d2c44d28fec89b22cb27e61d402087d229282a2a Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 31 Aug 2023 09:07:51 +0200 Subject: [PATCH 02/16] examples/eeprom.c: use AUTO_DETACH_REATACH_SIO_MODULE This way, the device's state remains unchanged after the eeprom invocation. Bonus: remove trailing white spaces. --- examples/eeprom.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/examples/eeprom.c b/examples/eeprom.c index 45f5dff..3d03ac3 100644 --- a/examples/eeprom.c +++ b/examples/eeprom.c @@ -90,6 +90,8 @@ int main(int argc, char **argv) return EXIT_FAILURE; } + ftdi->module_detach_mode = AUTO_DETACH_REATACH_SIO_MODULE; + while ((i = getopt(argc, argv, "d::ev:p:l:P:S:w")) != -1) { switch (i) @@ -200,7 +202,7 @@ int main(int argc, char **argv) fprintf(stderr, "\n"); fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(ftdi)); - + retval = -1; goto done; } -- 1.7.1 From 61a6bac98bbac623fb33b6153a063b6436f84721 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 31 Aug 2023 09:23:29 +0200 Subject: [PATCH 03/16] CMake: require 2.8.12 for cmake_example Make CMake minimal version requirement consistent for the entire project. --- examples/cmake_example/CMakeLists.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/examples/cmake_example/CMakeLists.txt b/examples/cmake_example/CMakeLists.txt index 5a1e1a7..36002df 100644 --- a/examples/cmake_example/CMakeLists.txt +++ b/examples/cmake_example/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required ( VERSION 2.8 ) +cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) project ( example C ) -- 1.7.1 From 18bae9b40640804d0a35e9dca6787d6c34c66703 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 31 Aug 2023 09:23:30 +0200 Subject: [PATCH 04/16] CMake: rework documentation creation section Add comments and also make the if ( DOCUMENTATION ) section more readable. --- CMakeLists.txt | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d7f9b6..1745dc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,11 +137,16 @@ if ( DOCUMENTATION ) OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile + COMMENT "Generating API documentation" DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} ) - add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) -endif () + add_custom_target( + docs ALL + COMMENT "Documentation target docs" + DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html + ) +endif ( DOCUMENTATION ) add_subdirectory(src) if ( FTDIPP ) -- 1.7.1 From 5a85740e9701abc4fd439bee10d31b039ea5ed3e Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 31 Aug 2023 09:34:10 +0200 Subject: [PATCH 05/16] Doxygen: resolve warnings Remove obsolete values like MSCGEN_PATH, TCL_SUBST, etc. from the configuration file. All these options used the default values, hence it is safe to remove them. Paper type a4wide doesn't exist, so use a4. --- doc/Doxyfile.in | 30 +----------------------------- 1 files changed, 1 insertions(+), 29 deletions(-) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index a4f59ee..d7ddff8 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -230,12 +230,6 @@ TAB_SIZE = 4 ALIASES = -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all @@ -1006,13 +1000,6 @@ VERBATIM_HEADERS = YES ALPHABETICAL_INDEX = NO -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored @@ -1615,7 +1602,7 @@ COMPACT_LATEX = NO # The default value is: a4. # This tag requires that the tag GENERATE_LATEX is set to YES. -PAPER_TYPE = a4wide +PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names # that should be included in the LaTeX output. The package can be specified just @@ -2072,12 +2059,6 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- @@ -2091,15 +2072,6 @@ PERL_PATH = /usr/bin/perl CLASS_DIAGRAMS = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. -- 1.7.1 From 91d2d1f1be6615a02f8d2ac0b90607fb7a3dd770 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Fri, 1 Sep 2023 11:33:02 +0200 Subject: [PATCH 06/16] CMake: disable deprecated behavior Set policies CMP0011, CMP0057, CMP0099 to the new behavior. Since version 3.27.4 if the policy is not set to the new behavior, CMake will generate a warning. --- CMakeLists.txt | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1745dc8..f36912d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,23 @@ set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(VERSION ${VERSION_STRING}) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +# Support new if() IN_LIST operator +if(POLICY CMP0057) + cmake_policy(SET CMP0057 NEW) +endif() + +# Included scripts do automatic cmake_policy() PUSH and POP +if(POLICY CMP0011) + cmake_policy(SET CMP0011 NEW) +endif() + +# Target link properties INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES +# and INTERFACE_LINK_DEPENDS are now transitive over private dependencies +# of static libraries +if(POLICY CMP0099) + cmake_policy(SET CMP0099 NEW) +endif() + # CMake if("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE RelWithDebInfo) -- 1.7.1 From e5136ce5407ceffd388f69c1582a6b0d6167f61d Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:03:59 +0200 Subject: [PATCH 07/16] CMake: use dedicated recipe for documentation generation Use PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR to refer to the top source directory. --- CMakeLists.txt | 22 +--------------------- doc/CMakeLists.txt | 26 ++++++++++++++++++++++++++ doc/Doxyfile.in | 8 ++++---- doc/Doxyfile.xml.in | 2 +- python/CMakeLists.txt | 22 +++++++++++++--------- 5 files changed, 45 insertions(+), 35 deletions(-) create mode 100644 doc/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f36912d..24da84d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,27 +142,7 @@ add_custom_target(dist WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) if ( DOCUMENTATION ) - find_package ( Doxygen REQUIRED) - - # Copy doxy.config.in - set(top_srcdir ${CMAKE_SOURCE_DIR}) - configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ) - configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.xml.in ${CMAKE_BINARY_DIR}/Doxyfile.xml ) - - # Run doxygen - add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile - COMMENT "Generating API documentation" - DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} - ) - - add_custom_target( - docs ALL - COMMENT "Documentation target docs" - DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html - ) + add_subdirectory(doc) endif ( DOCUMENTATION ) add_subdirectory(src) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..983301d --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,26 @@ +find_package ( Doxygen REQUIRED ) + +# Copy doxy.config.in +configure_file( + ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +) + +configure_file( + ${PROJECT_SOURCE_DIR}/doc/Doxyfile.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.xml +) + +# Run doxygen +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/index.html + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMENT "Generating API documentation" + DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} +) + +add_custom_target( + docs ALL + COMMENT "Documentation target docs" + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html +) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index d7ddff8..a05fe57 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = doc +OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -759,8 +759,8 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @top_srcdir@/src \ - @top_srcdir@/ftdipp +INPUT = @PROJECT_SOURCE_DIR@/src \ + @PROJECT_SOURCE_DIR@/ftdipp # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -833,7 +833,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = @top_srcdir@/examples +EXAMPLE_PATH = @PROJECT_SOURCE_DIR@/examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and diff --git a/doc/Doxyfile.xml.in b/doc/Doxyfile.xml.in index 8a32509..ab57478 100644 --- a/doc/Doxyfile.xml.in +++ b/doc/Doxyfile.xml.in @@ -2,7 +2,7 @@ # xml generation only # keep settings but shut off all other generation -@INCLUDE = Doxyfile +@INCLUDE = doc/Doxyfile GENERATE_TODOLIST = NO GENERATE_TESTLIST = NO diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index f8ac423..6ab14cd 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -56,24 +56,28 @@ install ( TARGETS ${SWIG_MODULE_ftdi1_REAL_NAME} LIBRARY DESTINATION ${PYTHON_MO if ( DOCUMENTATION ) # Run doxygen to only generate the xml - add_custom_command ( OUTPUT ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile.xml - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + add_custom_command ( OUTPUT ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml + COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/doc/Doxyfile.xml + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMENT "Generating ftdi_8c.xml" DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} ) # generate .i from doxygen .xml add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n - ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml - ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i - DEPENDS ${CMAKE_BINARY_DIR}/doc/xml/ftdi_8c.xml + ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml + ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i + COMMENT "Generating ftdi1_doc.i from ftdi_8c.xml" + DEPENDS ${PROJECT_BINARY_DIR}/doc/xml/ftdi_8c.xml + ) + add_custom_target ( doc_i + COMMENT "Python API bindings documentation" + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) - add_custom_target ( doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ftdi1_doc.i ) add_dependencies( ${SWIG_MODULE_ftdi1_REAL_NAME} doc_i ) -endif () +endif ( DOCUMENTATION ) set ( LIBFTDI_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX}/${PYTHON_MODULE_PATH} ) set ( LIBFTDI_PYTHON_MODULE_PATH ${LIBFTDI_PYTHON_MODULE_PATH} PARENT_SCOPE ) # for ftdiconfig.cmake -- 1.7.1 From 3dc444f99bbc780f06ee6115c086e30f2dda471a Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:04:00 +0200 Subject: [PATCH 08/16] CMake: report CMake version --- CMakeLists.txt | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 24da84d..39857a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) +message(STATUS "CMake version: ${CMAKE_VERSION}") + # Project project(libftdi1 C) set(MAJOR_VERSION 1) -- 1.7.1 From 161caf3db4e2ff1c18328c0f628614987e50ffcc Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:04:01 +0200 Subject: [PATCH 09/16] CMake: rework findlibusb module Rename the module to FindLibUSB.cmake and use it as the only way of finding libusb. Bonus: perform CMake linting of the module. --- CMakeLists.txt | 14 +++----------- cmake/FindLibUSB.cmake | 38 ++++++++++++++++++++++++++++++++++++++ cmake/FindUSB1.cmake | 37 ------------------------------------- 3 files changed, 41 insertions(+), 48 deletions(-) create mode 100644 cmake/FindLibUSB.cmake delete mode 100644 cmake/FindUSB1.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 39857a2..947fb34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,17 +44,9 @@ if(${CMAKE_BUILD_TYPE} STREQUAL Debug) add_definitions(-DDEBUG) endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) -# find libusb -find_package( PkgConfig ) -if (PkgConfig_FOUND) - pkg_check_modules( LIBUSB libusb-1.0 ) - if (LIBUSB_FOUND) - include_directories ( ${LIBUSB_INCLUDE_DIRS} ) - else() - find_package ( USB1 REQUIRED ) - include_directories ( ${LIBUSB_INCLUDE_DIR} ) - endif() -endif() +# Find libusb +find_package ( LibUSB REQUIRED ) +include_directories ( ${LIBUSB_INCLUDE_DIR} ) # Find Boost if (FTDIPP OR BUILD_TESTS) diff --git a/cmake/FindLibUSB.cmake b/cmake/FindLibUSB.cmake new file mode 100644 index 0000000..766fc82 --- /dev/null +++ b/cmake/FindLibUSB.cmake @@ -0,0 +1,38 @@ +# - Try to find the libusb library +# Once done this defines +# +# LIBUSB_FOUND - system has libusb +# LIBUSB_INCLUDE_DIR - the libusb include directory +# LIBUSB_LIBRARIES - Link these to use libusb + +# Copyright (c) 2006, 2008 Laurent Montel, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + + # in cache already + set(LIBUSB_FOUND TRUE) + +else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + find_package(PkgConfig) + pkg_check_modules(PC_LIBUSB libusb-1.0) + + find_path(LIBUSB_INCLUDE_DIR libusb.h + PATH_SUFFIXES libusb-1.0 + PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}) + + find_library(LIBUSB_LIBRARIES NAMES usb-1.0 + PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args( + LibUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR + ) + + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) + +endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) diff --git a/cmake/FindUSB1.cmake b/cmake/FindUSB1.cmake deleted file mode 100644 index b90e297..0000000 --- a/cmake/FindUSB1.cmake +++ /dev/null @@ -1,37 +0,0 @@ -# - Try to find the freetype library -# Once done this defines -# -# LIBUSB_FOUND - system has libusb -# LIBUSB_INCLUDE_DIR - the libusb include directory -# LIBUSB_LIBRARIES - Link these to use libusb - -# Copyright (c) 2006, 2008 Laurent Montel, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - - -if (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) - - # in cache already - set(LIBUSB_FOUND TRUE) - -else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) - # use pkg-config to get the directories and then use these values - # in the FIND_PATH() and FIND_LIBRARY() calls - find_package(PkgConfig) - pkg_check_modules(PC_LIBUSB libusb-1.0) - - FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h - PATH_SUFFIXES libusb-1.0 - PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}) - - FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0 - PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) - - include(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR) - - MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) - -endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) -- 1.7.1 From bc05652f65d4d5415d58e29ff525ddc7c8c1c8dd Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:04:02 +0200 Subject: [PATCH 10/16] CMake: rework subdirectory handling Move all mandatory subdirs to the top and also make if clauses more readable. --- CMakeLists.txt | 21 +++++++++++++-------- 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 947fb34..7f72e0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,29 +135,34 @@ add_custom_target(dist | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +add_subdirectory(src) +add_subdirectory(packages) + if ( DOCUMENTATION ) add_subdirectory(doc) endif ( DOCUMENTATION ) -add_subdirectory(src) if ( FTDIPP ) project(libftdi1 C CXX) add_subdirectory(ftdipp) -endif () +endif ( FTDIPP ) + if ( PYTHON_BINDINGS ) -add_subdirectory(python) -endif () + add_subdirectory(python) +endif ( PYTHON_BINDINGS ) + if ( FTDI_EEPROM ) add_subdirectory(ftdi_eeprom) -endif () +endif ( FTDI_EEPROM ) + if ( EXAMPLES ) add_subdirectory(examples) -endif () -add_subdirectory(packages) +endif ( EXAMPLES ) + if ( BUILD_TESTS ) project(libftdi1 C CXX) add_subdirectory(test) -endif () +endif ( BUILD_TESTS ) # PkgConfig set(prefix ${CMAKE_INSTALL_PREFIX}) -- 1.7.1 From 09203ccd2a8798ed246c6075be6ffe56c38be16a Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:04:03 +0200 Subject: [PATCH 11/16] ftdipp/CMakeLists.txt: remove VIM modline settings Indentation settings will be handled via the EditorConfig project. --- ftdipp/CMakeLists.txt | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt index 38932ae..fa2711f 100644 --- a/ftdipp/CMakeLists.txt +++ b/ftdipp/CMakeLists.txt @@ -1,5 +1,3 @@ -# vim: ts=2:sw=2:sts=2 - # Targets set(cpp_sources ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.cpp CACHE INTERNAL "List of cpp sources" ) set(cpp_headers ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.hpp CACHE INTERNAL "List of cpp headers" ) -- 1.7.1 From e7f734f82c69aea10f1f9bde57f228339fcb56f3 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Mon, 11 Sep 2023 10:04:04 +0200 Subject: [PATCH 12/16] CMake: make the project compatible with building as a subproject Use CMAKE_CURRENT_*_DIR in the main CMakeLists.txt and PROJECT_*_DIR in the subdirectories. --- CMakeLists.txt | 14 +++++++------- examples/CMakeLists.txt | 4 ++-- ftdi_eeprom/CMakeLists.txt | 2 +- ftdipp/CMakeLists.txt | 2 +- python/CMakeLists.txt | 2 +- test/CMakeLists.txt | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f72e0c..6284c8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ set(MINOR_VERSION 5) set(PACKAGE libftdi1) set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(VERSION ${VERSION_STRING}) -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # Support new if() IN_LIST operator if(POLICY CMP0057) @@ -117,7 +117,7 @@ if ( WIN32 ) set ( CPACK_NSIS_MODIFY_PATH ON ) endif () -set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE) +set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE) set(CPACK_SOURCE_GENERATOR TGZ) set(CPACK_SOURCE_IGNORE_FILES "\\\\.git;~$;build/") @@ -132,8 +132,8 @@ endif () set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${VERSION_STRING}) add_custom_target(dist COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD - | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + | bzip2 > ${PROJECT_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectory(src) add_subdirectory(packages) @@ -176,9 +176,9 @@ if(${WIN32}) set(libdir ${CMAKE_INSTALL_PREFIX}/bin) endif(${WIN32}) -configure_file(${CMAKE_SOURCE_DIR}/libftdi1.pc.in ${CMAKE_BINARY_DIR}/libftdi1.pc @ONLY) -configure_file(${CMAKE_SOURCE_DIR}/libftdipp1.pc.in ${CMAKE_BINARY_DIR}/libftdipp1.pc @ONLY) -install(FILES ${CMAKE_BINARY_DIR}/libftdi1.pc ${CMAKE_BINARY_DIR}/libftdipp1.pc +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libftdi1.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libftdi1.pc @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libftdipp1.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libftdipp1.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libftdi1.pc ${CMAKE_CURRENT_BINARY_DIR}/libftdipp1.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) if (UNIX OR MINGW) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 382cb33..9ec7bff 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -37,7 +37,7 @@ endif(NOT MINGW) # libftdi++ examples if( FTDIPP ) - include_directories(BEFORE ${CMAKE_SOURCE_DIR}/ftdipp + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/ftdipp ${Boost_INCLUDE_DIRS} ) @@ -49,4 +49,4 @@ if( FTDIPP ) endif( FTDIPP ) # Source includes -include_directories(BEFORE ${CMAKE_SOURCE_DIR}/src) +include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src) diff --git a/ftdi_eeprom/CMakeLists.txt b/ftdi_eeprom/CMakeLists.txt index 8737c4b..525421e 100644 --- a/ftdi_eeprom/CMakeLists.txt +++ b/ftdi_eeprom/CMakeLists.txt @@ -27,7 +27,7 @@ set ( EEPROM_MAJOR_VERSION 0 ) set ( EEPROM_MINOR_VERSION 17 ) set ( EEPROM_VERSION_STRING ${EEPROM_MAJOR_VERSION}.${EEPROM_MINOR_VERSION} ) -include_directories ( BEFORE ${CMAKE_SOURCE_DIR}/src ) +include_directories ( BEFORE ${PROJECT_SOURCE_DIR}/src ) include_directories ( BEFORE ${CMAKE_CURRENT_BINARY_DIR} ) configure_file( diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt index fa2711f..5e23a07 100644 --- a/ftdipp/CMakeLists.txt +++ b/ftdipp/CMakeLists.txt @@ -5,7 +5,7 @@ set(cpp_headers ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.hpp CACHE INTERNAL "List of cpp # Includes include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/src ) include_directories(${Boost_INCLUDE_DIRS}) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 6ab14cd..5e406ff 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -18,7 +18,7 @@ find_package ( PythonInterp REQUIRED ) find_package ( PythonLibs REQUIRED ) include ( UseSWIG ) -include_directories ( BEFORE ${CMAKE_SOURCE_DIR}/src ) +include_directories ( BEFORE ${PROJECT_SOURCE_DIR}/src ) include_directories ( ${PYTHON_INCLUDE_DIRS} ) link_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../src ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 392c910..c44c614 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,7 +2,7 @@ find_package(Boost COMPONENTS unit_test_framework REQUIRED) enable_testing() -INCLUDE_DIRECTORIES(BEFORE ${CMAKE_SOURCE_DIR}/src ${Boost_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR}/src ${Boost_INCLUDE_DIRS}) set(cpp_tests basic.cpp baudrate.cpp) -- 1.7.1 From 3c7141a77b6caa55375ad77239d8716c5f371f5d Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 12 Oct 2023 09:11:12 +0200 Subject: [PATCH 13/16] CMake: fix multiarch support Let CMake determine the exact library destination path. Patch taken from the Debian package: https://sources.debian.org/src/libftdi1/1.5-6/debian/patches/01-cmake-multiarch.diff/ --- CMakeLists.txt | 6 +++--- ftdipp/CMakeLists.txt | 6 +++--- src/CMakeLists.txt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6284c8d..985e658 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,7 +170,7 @@ set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin) set(includedir ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}) if(${UNIX}) - set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) + set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) endif(${UNIX}) if(${WIN32}) set(libdir ${CMAKE_INSTALL_PREFIX}/bin) @@ -179,7 +179,7 @@ endif(${WIN32}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libftdi1.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libftdi1.pc @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libftdipp1.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libftdipp1.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libftdi1.pc ${CMAKE_CURRENT_BINARY_DIR}/libftdipp1.pc - DESTINATION lib${LIB_SUFFIX}/pkgconfig) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) if (UNIX OR MINGW) configure_file ( libftdi1-config.in ${CMAKE_CURRENT_BINARY_DIR}/libftdi1-config @ONLY ) @@ -189,7 +189,7 @@ endif () # config script install path if ( NOT DEFINED LIBFTDI_CMAKE_CONFIG_DIR ) - set ( LIBFTDI_CMAKE_CONFIG_DIR lib${LIB_SUFFIX}/cmake/libftdi1 ) + set ( LIBFTDI_CMAKE_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/libftdi1 ) endif () set ( LIBFTDI_INCLUDE_DIR ${includedir} ) diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt index 5e23a07..360a831 100644 --- a/ftdipp/CMakeLists.txt +++ b/ftdipp/CMakeLists.txt @@ -24,8 +24,8 @@ target_link_libraries(ftdipp1 ftdi1 ${LIBUSB_LIBRARIES} ${BOOST_LIBRARIES}) install ( TARGETS ftdipp1 RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) # Static library @@ -35,7 +35,7 @@ if ( STATICLIBS ) set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) install ( TARGETS ftdipp1-static - ARCHIVE DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT staticlibs ) endif () diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cf630ba..e145af1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,8 +34,8 @@ target_link_libraries(ftdi1 ${LIBUSB_LIBRARIES}) install ( TARGETS ftdi1 RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) if ( STATICLIBS ) @@ -44,7 +44,7 @@ if ( STATICLIBS ) set_target_properties(ftdi1-static PROPERTIES OUTPUT_NAME "ftdi1") set_target_properties(ftdi1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) install ( TARGETS ftdi1-static - ARCHIVE DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT staticlibs ) endif () -- 1.7.1 From ed8aad3c13e0952476c4a70761246938cea9c81e Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Thu, 12 Oct 2023 09:11:13 +0200 Subject: [PATCH 14/16] CMake: use ${PC_LIBUSB_LIBRARIES} instead of a library name Patch taken from the Debian package: https://sources.debian.org/src/libftdi1/1.5-6/debian/patches/02-kfreebsd.diff/ --- cmake/FindLibUSB.cmake | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/cmake/FindLibUSB.cmake b/cmake/FindLibUSB.cmake index 766fc82..8bb3b11 100644 --- a/cmake/FindLibUSB.cmake +++ b/cmake/FindLibUSB.cmake @@ -25,7 +25,7 @@ else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) PATH_SUFFIXES libusb-1.0 PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}) - find_library(LIBUSB_LIBRARIES NAMES usb-1.0 + find_library(LIBUSB_LIBRARIES NAMES ${PC_LIBUSB_LIBRARIES} PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) include(FindPackageHandleStandardArgs) -- 1.7.1 From abd19b721f7e9b4d514ed319ece173ebc7b1ea72 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Dan=20Hor=C3=A1k?= Date: Mon, 19 Dec 2022 17:40:43 +0100 Subject: [PATCH 15/16] python: move from distutils to sysconfig The distutils module was deprecated in Python 3.10, and will be removed in 3.12 [1], thus switch to the sysconfig module instead. [1] https://peps.python.org/pep-0632/ --- python/CMakeLists.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 5e406ff..9358419 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -42,7 +42,7 @@ endif () set_target_properties ( ${SWIG_MODULE_ftdi1_REAL_NAME} PROPERTIES NO_SONAME ON ) -execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print( sysconfig.get_python_lib( plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}' ) )" +execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print( sysconfig.get_path( 'platlib', vars={'platbase': '${CMAKE_INSTALL_PREFIX}'} ) )" OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE ) -- 1.7.1 From de9f01ece34d2fe6e842e0250a38f4b16eda2429 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Tue, 12 Dec 2023 14:20:36 +0100 Subject: [PATCH 16/16] CMake: bump the minimal required version to 3.5 Older CMake versions are treated as deprecated. --- CMakeLists.txt | 2 +- examples/cmake_example/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 985e658..2ce1ad4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) message(STATUS "CMake version: ${CMAKE_VERSION}") diff --git a/examples/cmake_example/CMakeLists.txt b/examples/cmake_example/CMakeLists.txt index 36002df..7d60693 100644 --- a/examples/cmake_example/CMakeLists.txt +++ b/examples/cmake_example/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project ( example C ) -- 1.7.1