# --------------------------------------------------------------------------- # Vendorter Fremdcode. # # Bewusst NICHT ueber FetchContent/CPM: die Dateien liegen als lesbarer Quellcode # im Repo, der Build braucht kein Netz, und auf dem Ubuntu-Server gibt es keine # Ueberraschung. Die Dateien werden von Hand aktualisiert, siehe VERSIONS. # # Zwei Dinge gelten hier anders als im restlichen Projekt: # * SYSTEM-Includes -- Warnungen aus fremden Headern interessieren uns nicht. # * KEIN playground_warnings -- -Wconversion auf unity.c ergibt nur Rauschen. # --------------------------------------------------------------------------- # ---- Unity (C) ------------------------------------------------------------ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/unity/unity.c") add_library(unity STATIC unity/unity.c) target_include_directories(unity SYSTEM PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/unity") # Unity gibt pro Test eine Zeile ":::PASS|FAIL:" aus. # Genau dieses Format parst der neotest-unity-Adapter, um einzelne Tests # rot/gruen zu faerben -- CTest selbst kennt nur die ganze Executable. # # UNITY_OUTPUT_COLOR wird hier NICHT definiert: Unity prueft nur, OB das # Makro definiert ist, nicht welchen Wert es hat. "UNITY_OUTPUT_COLOR=0" # schaltet die Farben also ein und schiebt ANSI-Sequenzen mitten in die # PASS/FAIL-Zeilen. target_compile_definitions(unity PUBLIC UNITY_INCLUDE_DOUBLE) endif() # ---- doctest (C++) -------------------------------------------------------- if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/doctest/doctest.h") add_library(doctest INTERFACE) target_include_directories(doctest SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") # doctest_discover_tests(). Ruft die Test-Executable beim Build mit # --list-test-cases auf und legt EINEN CTest-Eintrag pro TEST_CASE an. # Ohne das sieht neotest-ctest nur einen einzigen groben Eintrag und kann # keine Testnamen auf Quellzeilen abbilden. # # function() ist in CMake global sichtbar, sobald sie einmal definiert # wurde -- der Aufruf im uebergeordneten CMakeLists.txt funktioniert also. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/doctest/doctest.cmake") include("${CMAKE_CURRENT_SOURCE_DIR}/doctest/doctest.cmake") else() message(WARNING "doctest/doctest.cmake fehlt -- siehe third_party/README.md") endif() endif()