libftdi Archives

Subject: Unit test build failure under MSYS2 mingw

From: Xiaofan Chen <xiaofanc@xxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Thu, 26 Jan 2023 12:12:43 +0800
Somehow I can not build the unit test application under MSYS2 mingw64
due to linking errors.

MINGW64 /c/work/libusb/libftdi/libftdi
$ cmake -G"MSYS Makefiles" -D CMAKE_BUILD_TYPE=RelWithDebInfo -B
build_mingw64 -D FTDIPP=ON -D BUILD_TESTS=ON
-- The C compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/msys64/mingw64/bin/cc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMake Deprecation Warning at CMakeLists.txt:15 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Build type: RelWithDebInfo
-- Found PkgConfig: C:/msys64/mingw64/bin/pkg-config.exe (found version "1.8.0")
-- Checking for module 'libusb-1.0'
--   Found libusb-1.0, version 1.0.26
-- Found Boost:
C:/msys64/mingw64/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found
version "1.81.0")
-- Detected git snapshot version: v1.5-13-gb5b8fab
-- The CXX compiler identification is GNU 12.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/msys64/mingw64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Confuse: C:/msys64/mingw64/lib/libconfuse.dll.a
-- Looking for dgettext
-- Looking for dgettext - not found
-- Found Libintl: C:/msys64/mingw64/include
-- Building ftdi_eeprom
-- Found Boost:
C:/msys64/mingw64/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found
version "1.81.0") found components: unit_test_framework
-- Summary of build options:

  Build static libs: ON
  Build C++ bindings: ON
  Build Python bindings: OFF
  Build ftdi_eeprom: ON
  Build examples: ON
  Build tests: ON
  Build API documentation: OFF

-- Configuring done
-- Generating done
-- Build files have been written to:
C:/work/libusb/libftdi/libftdi/build_mingw64

$ cmake --build build_mingw64/
[  2%] Building C object src/CMakeFiles/ftdi1.dir/ftdi.c.obj
C:/work/libusb/libftdi/libftdi/src/ftdi.c: In function 'ftdi_init':
C:/work/libusb/libftdi/libftdi/src/ftdi.c:111:5: warning:
'libusb_init' is deprecated: Use libusb_init_context instead
[-Wdeprecated-declarations]
  111 |     if (libusb_init(&ftdi->usb_ctx) < 0)
      |     ^~
In file included from C:/work/libusb/libftdi/libftdi/src/ftdi.c:32:
C:/msys64/mingw64/include/libusb-1.0/libusb.h:1568:17: note: declared here
 1568 | int LIBUSB_CALL libusb_init(libusb_context **ctx);
      |                 ^~~~~~~~~~~
[  5%] Building C object src/CMakeFiles/ftdi1.dir/ftdi_stream.c.obj
[  7%] Linking C shared library libftdi1.dll
[  7%] Built target ftdi1
[ 10%] Building C object src/CMakeFiles/ftdi1-static.dir/ftdi.c.obj
C:/work/libusb/libftdi/libftdi/src/ftdi.c: In function 'ftdi_init':
C:/work/libusb/libftdi/libftdi/src/ftdi.c:111:5: warning:
'libusb_init' is deprecated: Use libusb_init_context instead
[-Wdeprecated-declarations]
  111 |     if (libusb_init(&ftdi->usb_ctx) < 0)
      |     ^~
In file included from C:/work/libusb/libftdi/libftdi/src/ftdi.c:32:
C:/msys64/mingw64/include/libusb-1.0/libusb.h:1568:17: note: declared here
 1568 | int LIBUSB_CALL libusb_init(libusb_context **ctx);
      |                 ^~~~~~~~~~~
[ 12%] Building C object src/CMakeFiles/ftdi1-static.dir/ftdi_stream.c.obj
[ 15%] Linking C static library libftdi1.a
[ 15%] Built target ftdi1-static
[ 17%] Building CXX object ftdipp/CMakeFiles/ftdipp1.dir/ftdi.cpp.obj
[ 20%] Linking CXX shared library libftdipp1.dll
[ 20%] Built target ftdipp1
[ 23%] Building CXX object ftdipp/CMakeFiles/ftdipp1-static.dir/ftdi.cpp.obj
[ 25%] Linking CXX static library libftdipp1.a
[ 25%] Built target ftdipp1-static
[ 28%] Building C object ftdi_eeprom/CMakeFiles/ftdi_eeprom.dir/main.c.obj
[ 30%] Linking C executable ftdi_eeprom.exe
[ 30%] Built target ftdi_eeprom
[ 33%] Building C object examples/CMakeFiles/simple.dir/simple.c.obj
[ 35%] Linking C executable simple.exe
[ 35%] Built target simple
[ 38%] Building C object examples/CMakeFiles/bitbang.dir/bitbang.c.obj
[ 41%] Linking C executable bitbang.exe
[ 41%] Built target bitbang
[ 43%] Building C object examples/CMakeFiles/bitbang2.dir/bitbang2.c.obj
[ 46%] Linking C executable bitbang2.exe
[ 46%] Built target bitbang2
[ 48%] Building C object examples/CMakeFiles/bitbang_cbus.dir/bitbang_cbus.c.obj
[ 51%] Linking C executable bitbang_cbus.exe
[ 51%] Built target bitbang_cbus
[ 53%] Building C object
examples/CMakeFiles/bitbang_ft2232.dir/bitbang_ft2232.c.obj
[ 56%] Linking C executable bitbang_ft2232.exe
[ 56%] Built target bitbang_ft2232
[ 58%] Building C object examples/CMakeFiles/find_all.dir/find_all.c.obj
[ 61%] Linking C executable find_all.exe
[ 61%] Built target find_all
[ 64%] Building C object examples/CMakeFiles/serial_test.dir/serial_test.c.obj
[ 66%] Linking C executable serial_test.exe
[ 66%] Built target serial_test
[ 69%] Building C object examples/CMakeFiles/baud_test.dir/baud_test.c.obj
[ 71%] Linking C executable baud_test.exe
[ 71%] Built target baud_test
[ 74%] Building C object examples/CMakeFiles/stream_test.dir/stream_test.c.obj
[ 76%] Linking C executable stream_test.exe
[ 76%] Built target stream_test
[ 79%] Building C object examples/CMakeFiles/eeprom.dir/eeprom.c.obj
[ 82%] Linking C executable eeprom.exe
[ 82%] Built target eeprom
[ 84%] Building C object examples/CMakeFiles/async.dir/async.c.obj
[ 87%] Linking C executable async.exe
[ 87%] Built target async
[ 89%] Building CXX object
examples/CMakeFiles/find_all_pp.dir/find_all_pp.cpp.obj
[ 92%] Linking CXX executable find_all_pp.exe
[ 92%] Built target find_all_pp
[ 94%] Building CXX object test/CMakeFiles/test_libftdi1.dir/basic.cpp.obj
[ 97%] Building CXX object test/CMakeFiles/test_libftdi1.dir/baudrate.cpp.obj
[100%] Linking CXX executable test_libftdi1.exe
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`Basic::SimpleInit::test_method()':
C:/work/libusb/libftdi/libftdi/test/basic.cpp:27: undefined reference
to `__imp__ZN5boost9unit_test12lazy_ostream4instE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/basic.cpp:28: undefined reference
to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`bool 
boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd,
int, int>(boost::test_tools::tt_detail::equal_impl_frwd,
boost::unit_test::lazy_ostream const&,
boost::unit_test::basic_cstring<char const>, unsigned long long,
boost::test_tools::tt_detail::tool_level,
boost::test_tools::tt_detail::check_type, int const&, char const*, int
const&, char const*)':
C:/msys64/mingw64/include/boost/test/tools/old/impl.hpp:92: undefined
reference to 
`__imp__ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEyNS1_10tool_levelENS1_10check_typeEyz'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`SimpleInit_invoker':
C:/work/libusb/libftdi/libftdi/test/basic.cpp:23: undefined reference
to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`main':
C:/msys64/mingw64/include/boost/test/unit_test.hpp:64: undefined
reference to `__imp__ZN5boost9unit_test14unit_test_mainEPFbvEiPPc'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`__static_initialization_and_destruction_0':
C:/msys64/mingw64/include/boost/test/unit_test_log.hpp:227: undefined
reference to `__imp__ZN5boost9unit_test15unit_test_log_t8instanceEv'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`__static_initialization_and_destruction_0':
C:/work/libusb/libftdi/libftdi/test/basic.cpp:21: undefined reference
to `__imp__ZN5boost9unit_test9decorator11collector_t8instanceEv'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/basic.cpp:21: undefined reference
to 
`__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1ENS0_13basic_cstringIKcEES5_yRNS0_9decorator11collector_tE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`boost::unit_test::make_test_case(boost::function<void ()> const&,
boost::unit_test::basic_cstring<char const>,
boost::unit_test::basic_cstring<char const>, unsigned long long)':
C:/msys64/mingw64/include/boost/test/tree/test_unit.hpp:265: undefined
reference to 
`__imp__ZN5boost9unit_test9ut_detail24normalize_test_case_nameB5cxx11ENS0_13basic_cstringIKcEE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/msys64/mingw64/include/boost/test/tree/test_unit.hpp:265: undefined
reference to 
`__imp__ZN5boost9unit_test9test_caseC1ENS0_13basic_cstringIKcEES4_yRKNS_8functionIFvvEEE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(basic.cpp.obj): in function
`__static_initialization_and_destruction_0':
C:/work/libusb/libftdi/libftdi/test/basic.cpp:23: undefined reference
to 
`__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1EPNS0_9test_caseERNS0_9decorator11collector_tEm'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/basic.cpp:33: undefined reference
to `__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1Ei'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`test_baudrates':
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:84: undefined
reference to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:84: undefined
reference to `__imp__ZN5boost9unit_test12lazy_ostream4instE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:84: undefined
reference to 
`__imp__ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEyNS1_10tool_levelENS1_10check_typeEyz'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`TypeAMFixedBaudrates_invoker':
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:123: undefined
reference to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`TypeBMFixedBaudrates_invoker':
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:156: undefined
reference to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`TypeHFixedBaudrates_invoker':
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:213: undefined
reference to 
`__imp__ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEyS4_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`boost::unit_test::make_test_case(boost::function<void ()> const&,
boost::unit_test::basic_cstring<char const>,
boost::unit_test::basic_cstring<char const>, unsigned long long)':
C:/msys64/mingw64/include/boost/test/tree/test_unit.hpp:265: undefined
reference to 
`__imp__ZN5boost9unit_test9ut_detail24normalize_test_case_nameB5cxx11ENS0_13basic_cstringIKcEE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/msys64/mingw64/include/boost/test/tree/test_unit.hpp:265: undefined
reference to 
`__imp__ZN5boost9unit_test9test_caseC1ENS0_13basic_cstringIKcEES4_yRKNS_8functionIFvvEEE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`__static_initialization_and_destruction_0':
C:/msys64/mingw64/include/boost/test/unit_test_log.hpp:227: undefined
reference to `__imp__ZN5boost9unit_test15unit_test_log_t8instanceEv'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
CMakeFiles/test_libftdi1.dir/objects.a(baudrate.cpp.obj): in function
`__static_initialization_and_destruction_0':
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:49: undefined
reference to `__imp__ZN5boost9unit_test9decorator11collector_t8instanceEv'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:49: undefined
reference to 
`__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1ENS0_13basic_cstringIKcEES5_yRNS0_9decorator11collector_tE'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:123: undefined
reference to 
`__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1EPNS0_9test_caseERNS0_9decorator11collector_tEm'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
C:/work/libusb/libftdi/libftdi/test/baudrate.cpp:269: undefined
reference to `__imp__ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1Ei'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [test/CMakeFiles/test_libftdi1.dir/build.make:116:
test/test_libftdi1.exe] Error 1
make[1]: *** [CMakeFiles/Makefile2:685:
test/CMakeFiles/test_libftdi1.dir/all] Error 2
make: *** [Makefile:156: all] Error 2


-- 
Xiaofan

--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread
  • Unit test build failure under MSYS2 mingw, Xiaofan Chen <=