0003-CMake-fix-object-library-usage.patch 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. From 7982ecebe1c1c41e82779a65fa2d93f19ffd755f Mon Sep 17 00:00:00 2001
  2. From: Yegor Yefremov <yegorslists@googlemail.com>
  3. Date: Wed, 5 Feb 2020 12:28:44 +0100
  4. Subject: [PATCH] CMake: fix object library usage
  5. Object libraries cannot be use in target_link_libraries() command
  6. as they are no normal binary files like *.a or *.so but a collection
  7. of object files.
  8. See add_library() definition for details.
  9. Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
  10. ---
  11. CMakeLists.txt | 9 ++++-----
  12. 1 file changed, 4 insertions(+), 5 deletions(-)
  13. diff --git a/CMakeLists.txt b/CMakeLists.txt
  14. index af8010f..028a7bb 100644
  15. --- a/CMakeLists.txt
  16. +++ b/CMakeLists.txt
  17. @@ -83,8 +83,7 @@ target_compile_definitions(libninja PRIVATE _WIN32_WINNT=0x0601 __USE_MINGW_ANSI
  18. endif()
  19. # Main executable is library plus main() function.
  20. -add_executable(ninja src/ninja.cc)
  21. -target_link_libraries(ninja PRIVATE libninja libninja-re2c)
  22. +add_executable(ninja src/ninja.cc $<TARGET_OBJECTS:libninja> $<TARGET_OBJECTS:libninja-re2c>)
  23. # Tests all build into ninja_test executable.
  24. add_executable(ninja_test
  25. @@ -106,11 +105,12 @@ add_executable(ninja_test
  26. src/subprocess_test.cc
  27. src/test.cc
  28. src/util_test.cc
  29. + $<TARGET_OBJECTS:libninja>
  30. + $<TARGET_OBJECTS:libninja-re2c>
  31. )
  32. if(WIN32)
  33. target_sources(ninja_test PRIVATE src/includes_normalize_test.cc src/msvc_helper_test.cc)
  34. endif()
  35. -target_link_libraries(ninja_test PRIVATE libninja libninja-re2c)
  36. foreach(perftest
  37. build_log_perftest
  38. @@ -120,8 +120,7 @@ foreach(perftest
  39. hash_collision_bench
  40. manifest_parser_perftest
  41. )
  42. - add_executable(${perftest} src/${perftest}.cc)
  43. - target_link_libraries(${perftest} PRIVATE libninja libninja-re2c)
  44. + add_executable(${perftest} src/${perftest}.cc $<TARGET_OBJECTS:libninja> $<TARGET_OBJECTS:libninja-re2c>)
  45. endforeach()
  46. enable_testing()
  47. --
  48. 2.17.0