From 78af8c8339ec10784994fc0808b54a17e81d4af3 Mon Sep 17 00:00:00 2001
From: Mislav Bradac <mislav.bradac@memgraph.io>
Date: Thu, 27 Apr 2017 16:44:57 +0200
Subject: [PATCH] Add variable with all memgraph dependent libraries

Reviewers: teon.banek, buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D324
---
 CMakeLists.txt                   | 26 ++++++++------------------
 poc/CMakeLists.txt               |  9 +--------
 tests/benchmark/CMakeLists.txt   | 13 ++-----------
 tests/concurrent/CMakeLists.txt  |  9 +--------
 tests/integration/CMakeLists.txt | 16 +---------------
 tests/manual/CMakeLists.txt      | 21 +--------------------
 tests/unit/CMakeLists.txt        | 17 +----------------
 7 files changed, 15 insertions(+), 96 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 752ebd31f..92eb6cc0d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -368,6 +368,11 @@ set(memgraph_src_files
 add_library(memgraph_lib STATIC ${memgraph_src_files})
 add_dependencies(memgraph_lib generate_opencypher_parser
                               generate_plan_compiler_flags)
+# executables that require memgraph_lib should link MEMGRAPH_ALL_LIBS to link all dependant libraries
+set(MEMGRAPH_ALL_LIBS memgraph_lib stdc++fs Threads::Threads fmt yaml-cpp antlr_opencypher_parser_lib dl)
+if (READLINE_FOUND)
+    list(APPEND MEMGRAPH_ALL_LIBS ${READLINE_LIBRARY})
+endif()
 # -----------------------------------------------------------------------------
 
 # STATIC PIC library used by query engine
@@ -420,16 +425,7 @@ if (MEMGRAPH)
     add_executable(${MEMGRAPH_BUILD_NAME} ${src_dir}/memgraph_bolt.cpp)
     set_property(TARGET ${MEMGRAPH_BUILD_NAME}
                  PROPERTY CXX_STANDARD ${cxx_standard})
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} memgraph_lib)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} stdc++fs)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} Threads::Threads)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} fmt)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} yaml-cpp)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} antlr_opencypher_parser_lib)
-    target_link_libraries(${MEMGRAPH_BUILD_NAME} dl)
-    if (READLINE_FOUND)
-      target_link_libraries(${MEMGRAPH_BUILD_NAME} ${READLINE_LIBRARY})
-    endif()
+    target_link_libraries(${MEMGRAPH_BUILD_NAME} ${MEMGRAPH_ALL_LIBS})
 endif()
 
 # utility target to copy hardcoded queries
@@ -437,11 +433,7 @@ endif()
 add_executable(__copy_hardcoded_queries ${src_dir}/copy_hardcoded_queries.cpp)
 set_property(TARGET __copy_hardcoded_queries PROPERTY CXX_STANDARD
         ${cxx_standard})
-target_link_libraries(__copy_hardcoded_queries memgraph_lib)
-target_link_libraries(__copy_hardcoded_queries stdc++fs)
-target_link_libraries(__copy_hardcoded_queries fmt)
-target_link_libraries(__copy_hardcoded_queries Threads::Threads)
-target_link_libraries(__copy_hardcoded_queries antlr_opencypher_parser_lib)
+target_link_libraries(__copy_hardcoded_queries ${MEMGRAPH_ALL_LIBS})
 add_custom_target(copy_hardcoded_queries ./__copy_hardcoded_queries --src
         ${CMAKE_SOURCE_DIR}/tests/integration/hardcoded_query --dst
         ${CMAKE_BINARY_DIR}/compiled/hardcode
@@ -469,9 +461,7 @@ if(HARDCODED_TARGETS)
       set(target_name __${file_name}_hardcoded_target)
       add_executable(${target_name} ${CMAKE_SOURCE_DIR}/libs/__main.cpp
                                     ${file_path})
-      target_link_libraries(${target_name} memgraph_lib)
-      target_link_libraries(${target_name} fmt)
-      target_link_libraries(${target_name} Threads::Threads)
+      target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
       set_property(TARGET ${target_name} PROPERTY CXX_STANDARD ${cxx_standard})
       set_target_properties(${target_name}
                             PROPERTIES RUNTIME_OUTPUT_DIRECTORY
diff --git a/poc/CMakeLists.txt b/poc/CMakeLists.txt
index 9120d706e..075e5a370 100644
--- a/poc/CMakeLists.txt
+++ b/poc/CMakeLists.txt
@@ -25,13 +25,6 @@ foreach(poc_cpp ${poc_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
 
 endforeach()
diff --git a/tests/benchmark/CMakeLists.txt b/tests/benchmark/CMakeLists.txt
index 173b2878b..4b079ecd9 100644
--- a/tests/benchmark/CMakeLists.txt
+++ b/tests/benchmark/CMakeLists.txt
@@ -26,23 +26,14 @@ foreach(test_cpp ${test_type_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
     # google-benchmark
     target_link_libraries(${target_name} benchmark ${CMAKE_THREAD_LIBS_INIT})
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
-	# antlr
-	target_link_libraries(${target_name} antlr_opencypher_parser_lib)
 
     # register test
     set(output_path
         ${CMAKE_BINARY_DIR}/test_results/benchmark/${target_name}.json)
-    add_test(${target_name} ${exec_name} 
+    add_test(${target_name} ${exec_name}
              --benchmark_out_format=json --benchmark_out=${output_path})
 
 endforeach()
diff --git a/tests/concurrent/CMakeLists.txt b/tests/concurrent/CMakeLists.txt
index 22a9c315d..2118a9761 100644
--- a/tests/concurrent/CMakeLists.txt
+++ b/tests/concurrent/CMakeLists.txt
@@ -26,16 +26,9 @@ foreach(test_cpp ${test_type_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
     # gtest
     target_link_libraries(${target_name} gtest gtest_main)
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
 
     # register test
     add_test(${target_name} ${exec_name})
diff --git a/tests/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt
index 7a179955f..2667c080c 100644
--- a/tests/integration/CMakeLists.txt
+++ b/tests/integration/CMakeLists.txt
@@ -1,5 +1,3 @@
-find_package(Threads REQUIRED)
-
 # set current directory name as a test type
 get_filename_component(test_type ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
@@ -26,19 +24,7 @@ foreach(test_cpp ${test_type_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
-    target_link_libraries(${target_name} dl)
-    # filesystem
-    target_link_libraries(${target_name} stdc++fs)
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
-	# antlr
-	target_link_libraries(${target_name} antlr_opencypher_parser_lib)
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
 
     # register test
     add_test(${target_name} ${exec_name})
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index b1417422f..9e10b9ad9 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -1,5 +1,3 @@
-find_package(Threads REQUIRED)
-
 # optional readline
 find_package(Readline)
 if (READLINE_FOUND)
@@ -33,23 +31,6 @@ foreach(test_cpp ${test_type_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
-    # filesystem
-    target_link_libraries(${target_name} stdc++fs)
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
-    # antlr
-    target_link_libraries(${target_name} antlr_opencypher_parser_lib)
-    # dynamic lib
-    target_link_libraries(${target_name} dl)
-    # readline lib
-    if (READLINE_FOUND)
-      target_link_libraries(${target_name} ${READLINE_LIBRARY})
-    endif()
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
 
 endforeach()
diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt
index 52a0dd953..65eced1d3 100644
--- a/tests/unit/CMakeLists.txt
+++ b/tests/unit/CMakeLists.txt
@@ -1,5 +1,3 @@
-find_package(Threads REQUIRED)
-
 # set current directory name as a test type
 get_filename_component(test_type ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
@@ -30,22 +28,9 @@ foreach(test_cpp ${test_type_cpps})
     set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
 
     # link libraries
+    target_link_libraries(${target_name} ${MEMGRAPH_ALL_LIBS})
     # gtest
     target_link_libraries(${target_name} gtest gtest_main gmock)
-    # filesystem
-    target_link_libraries(${target_name} stdc++fs)
-    # threads (cross-platform)
-    target_link_libraries(${target_name} Threads::Threads)
-    # memgraph lib
-    target_link_libraries(${target_name} memgraph_lib)
-    # fmt format lib
-    target_link_libraries(${target_name} fmt)
-    # yaml parser lib
-    target_link_libraries(${target_name} yaml-cpp)
-    # antlr
-    target_link_libraries(${target_name} antlr_opencypher_parser_lib)
-    # dynamic lib
-    target_link_libraries(${target_name} dl)
     if(${TEST_COVERAGE})
         # for code coverage
         target_link_libraries(${target_name} gcov)