This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f9b74ff6 [cmake] clean up on targets when using NO_TESTS=1
7f9b74ff6 is described below

commit 7f9b74ff665d3593e005e31a50d0029f4f2e2619
Author: Alexey Serbin <[email protected]>
AuthorDate: Fri Jul 28 12:36:35 2023 -0700

    [cmake] clean up on targets when using NO_TESTS=1
    
    This patch updates makefiles to remove unnecessary targets when
    the build is configured using 'cmake -DNO_TESTS=1 ...'.  It reduces
    CPU and disk consumption when building with NO_TESTS=1.
    
    Also, the sanitizer_options static library is now built only in
    ASAN/TSAN configurations.
    
    This patch doesn't add any functional changes in the Kudu's code itself,
    except that the kudu CLI tool no longer offer the 'kudu test' action
    when built with NO_TESTS=1.  That also made the size of the kudu CLI
    binary a bit smaller.  If comparing the sizes of the stripped binaries,
    I got the following numbers when building on CentOS7.9 with NO_TESTS=1
    in RELEASE configuration using devtoolset-8:
    
      before: 67883424 bytes
      after:  66891680 bytes
    
    Change-Id: I6de4f9498bef9b2102ea6507a35ad78b08d4c27a
    Reviewed-on: http://gerrit.cloudera.org:8080/20281
    Tested-by: Kudu Jenkins
    Reviewed-by: Yifan Zhang <[email protected]>
    Reviewed-by: Yingchun Lai <[email protected]>
---
 CMakeLists.txt                       |  21 ++++--
 src/kudu/benchmarks/CMakeLists.txt   |   5 +-
 src/kudu/cfile/CMakeLists.txt        |  18 +++--
 src/kudu/client/CMakeLists.txt       |  27 ++++---
 src/kudu/clock/CMakeLists.txt        |   6 ++
 src/kudu/common/CMakeLists.txt       |   4 +
 src/kudu/consensus/CMakeLists.txt    |   4 +
 src/kudu/fs/CMakeLists.txt           |  23 +++---
 src/kudu/gutil/CMakeLists.txt        |  10 ++-
 src/kudu/hms/CMakeLists.txt          |  43 +++++------
 src/kudu/master/CMakeLists.txt       |  46 +++++++-----
 src/kudu/mini-cluster/CMakeLists.txt |  12 ++-
 src/kudu/postgres/CMakeLists.txt     |   8 +-
 src/kudu/ranger-kms/CMakeLists.txt   |  40 +++++-----
 src/kudu/ranger/CMakeLists.txt       |  41 ++++++-----
 src/kudu/rebalance/CMakeLists.txt    |   4 +-
 src/kudu/rpc/CMakeLists.txt          |  43 ++++++-----
 src/kudu/security/CMakeLists.txt     |  47 ++++++------
 src/kudu/server/CMakeLists.txt       |   8 +-
 src/kudu/subprocess/CMakeLists.txt   |  16 ++--
 src/kudu/tablet/CMakeLists.txt       |  24 +++---
 src/kudu/tools/CMakeLists.txt        |  35 ++++++---
 src/kudu/tools/tool_action.h         |   5 +-
 src/kudu/tools/tool_action_test.cc   |   2 +
 src/kudu/tools/tool_main.cc          |   2 +
 src/kudu/transactions/CMakeLists.txt |   4 +
 src/kudu/tserver/CMakeLists.txt      |   7 +-
 src/kudu/util/CMakeLists.txt         | 138 +++++++++++++++++++----------------
 28 files changed, 380 insertions(+), 263 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf476d6c6..949f830f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -234,6 +234,13 @@ add_definitions(-DKUDU_HEADERS_USE_RICH_SLICE=1)
 # exported client headers).
 add_definitions(-DKUDU_HEADERS_NO_STUBS=1)
 
+# If not building tests, add an extra macro to allow for omitting test-related
+# provisions and functionality from the kudu CLI tool: that's based on the
+# mini-cluster library, and the mini-cluster library is built only for testing.
+if(NO_TESTS)
+  add_definitions(-DKUDU_CLI_TOOL_NO_TESTS)
+endif()
+
 # compiler flags for different build types (run 'cmake 
-DCMAKE_BUILD_TYPE=<type> .')
 # For all builds:
 # For CMAKE_BUILD_TYPE=Debug
@@ -1209,14 +1216,18 @@ if (NOT NO_TESTS)
   find_package(KerberosPrograms)
 endif()
 
-# The tests as well as any binaries which are run as subprocesses by tests (eg 
tserver,
-# master, and the 'kudu' CLI tool) need to link these in. We have to set them
-# here so they are accessible by all targets.
+# The tests as well as any binaries which are run as subprocesses by tests
+# (e.g. tserver, master, and the 'kudu' CLI tool) need to link these in.
+# We have to set them here so they are accessible by all targets.
 if (NOT APPLE)
-  set(SANITIZER_OPTIONS_OVERRIDE -Wl,-u_sanitizer_options_link_helper 
sanitizer_options)
+  if ("${KUDU_USE_ASAN}" OR "${KUDU_USE_TSAN}" OR "${KUDU_USE_UBSAN}")
+    set(SANITIZER_OPTIONS_OVERRIDE -Wl,-u_sanitizer_options_link_helper 
sanitizer_options)
+  endif()
   set(KRB5_REALM_OVERRIDE -Wl,--undefined=krb5_realm_override_loaded 
krb5_realm_override)
 else()
-  set(SANITIZER_OPTIONS_OVERRIDE -Wl,-U,_sanitizer_options_link_helper 
sanitizer_options)
+  if ("${KUDU_USE_ASAN}" OR "${KUDU_USE_TSAN}" OR "${KUDU_USE_UBSAN}")
+    set(SANITIZER_OPTIONS_OVERRIDE -Wl,-U,_sanitizer_options_link_helper 
sanitizer_options)
+  endif()
   set(KRB5_REALM_OVERRIDE -Wl,-U,krb5_realm_override_loaded 
krb5_realm_override)
 endif()
 
diff --git a/src/kudu/benchmarks/CMakeLists.txt 
b/src/kudu/benchmarks/CMakeLists.txt
index 0295019e5..6a17d4727 100644
--- a/src/kudu/benchmarks/CMakeLists.txt
+++ b/src/kudu/benchmarks/CMakeLists.txt
@@ -55,6 +55,9 @@ if(NOT APPLE)
     kudu_util)
 endif()
 
-# Tests
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(tpch)
 ADD_KUDU_TEST(tpch/rpc_line_item_dao-test)
diff --git a/src/kudu/cfile/CMakeLists.txt b/src/kudu/cfile/CMakeLists.txt
index e0c1afb5a..4f53f1843 100644
--- a/src/kudu/cfile/CMakeLists.txt
+++ b/src/kudu/cfile/CMakeLists.txt
@@ -57,19 +57,25 @@ set(CFILE_LIBS
 
 target_link_libraries(cfile ${CFILE_LIBS})
 
-add_library(cfile_test_util
-  bloomfile-test-base.cc)
+if(NOT NO_TESTS)
+  add_library(cfile_test_util
+    bloomfile-test-base.cc)
 
-target_link_libraries(cfile_test_util
-  cfile
-  kudu_test_util)
+  target_link_libraries(cfile_test_util
+    cfile
+    kudu_test_util)
+endif()
+
+#######################################
+# Unit tests
+#######################################
 
-# Tests
 SET_KUDU_TEST_LINK_LIBS(cfile)
 ADD_KUDU_TEST(index-test)
 ADD_KUDU_TEST(cfile-test NUM_SHARDS 4)
 ADD_KUDU_TEST(encoding-test LABELS no_tsan)
 ADD_KUDU_TEST(block_cache-test)
+
 SET_KUDU_TEST_LINK_LIBS(cfile cfile_test_util)
 ADD_KUDU_TEST(bloomfile-test)
 ADD_KUDU_TEST(mt-bloomfile-test RUN_SERIAL true)
diff --git a/src/kudu/client/CMakeLists.txt b/src/kudu/client/CMakeLists.txt
index 3cc2ab18f..cecaf6546 100644
--- a/src/kudu/client/CMakeLists.txt
+++ b/src/kudu/client/CMakeLists.txt
@@ -244,19 +244,24 @@ install(FILES
 # script to forcefully change the kudu_client_exported target to kudu_client.
 install(SCRIPT MungeExportedInstallTargets.cmake)
 
+#######################################
 # Test utility library
+#######################################
+if(NOT NO_TESTS)
+  # This code is useful for other tests which use the client, but isn't
+  # part of the client itself (ie we don't want to ship it to customers,
+  # and therefore don't need to worry about export strictness)
+  add_library(kudu_client_test_util
+    client-test-util.cc)
+  target_link_libraries(kudu_client_test_util
+    gmock
+    gtest
+    kudu_client)
+endif()
 
-# This code is useful for other tests which use the client, but isn't
-# part of the client itself (ie we don't want to ship it to customers,
-# and therefore don't need to worry about export strictness)
-add_library(kudu_client_test_util
-  client-test-util.cc)
-target_link_libraries(kudu_client_test_util
-  gmock
-  gtest
-  kudu_client)
-
-# Tests
+#######################################
+# Unit tests
+#######################################
 
 # The OS X system compiler does not support source symbol maps, so the client
 # leaks internal symbols globally.
diff --git a/src/kudu/clock/CMakeLists.txt b/src/kudu/clock/CMakeLists.txt
index 0c20feaf5..710bdccf7 100644
--- a/src/kudu/clock/CMakeLists.txt
+++ b/src/kudu/clock/CMakeLists.txt
@@ -41,6 +41,12 @@ target_link_libraries(clock
 # mini_chronyd
 ##############################
 
+# The mini_chronyd is used only for tests, and corresponding tests for this
+# module below are skipped if NO_TEST=1.
+if(NO_TESTS)
+  return()
+endif()
+
 if (NOT NO_CHRONY)
   # Link the chrony binaries so that they can be found via
   # MiniChronyd::GetPath in MiniChronyd::Start.
diff --git a/src/kudu/common/CMakeLists.txt b/src/kudu/common/CMakeLists.txt
index 1cb6207e0..29b01da23 100644
--- a/src/kudu/common/CMakeLists.txt
+++ b/src/kudu/common/CMakeLists.txt
@@ -94,6 +94,10 @@ ADD_EXPORTABLE_LIBRARY(kudu_common
   SRCS ${COMMON_SRCS}
   DEPS ${COMMON_LIBS})
 
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(kudu_common)
 ADD_KUDU_TEST(columnar_serialization-test)
 ADD_KUDU_TEST(columnblock-test)
diff --git a/src/kudu/consensus/CMakeLists.txt 
b/src/kudu/consensus/CMakeLists.txt
index e559ce295..353c7468a 100644
--- a/src/kudu/consensus/CMakeLists.txt
+++ b/src/kudu/consensus/CMakeLists.txt
@@ -117,6 +117,10 @@ target_link_libraries(consensus
   log
   protobuf)
 
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(
   log
   consensus
diff --git a/src/kudu/fs/CMakeLists.txt b/src/kudu/fs/CMakeLists.txt
index 2a880cf9b..5482f3c42 100644
--- a/src/kudu/fs/CMakeLists.txt
+++ b/src/kudu/fs/CMakeLists.txt
@@ -45,16 +45,21 @@ target_link_libraries(kudu_fs
   gutil
   ranger_kms_client)
 
-add_library(kudu_fs_test_util
-  log_block_manager-test-util.cc)
+if(NOT NO_TESTS)
+  add_library(kudu_fs_test_util
+    log_block_manager-test-util.cc)
 
-target_link_libraries(kudu_fs_test_util
-  fs_proto
-  kudu_fs
-  kudu_util
-  gutil)
+  target_link_libraries(kudu_fs_test_util
+    fs_proto
+    kudu_fs
+    kudu_util
+    gutil)
+endif()
+
+#######################################
+# Unit tests
+#######################################
 
-# Tests
 SET_KUDU_TEST_LINK_LIBS(kudu_fs kudu_fs_test_util)
 ADD_KUDU_TEST(block_manager-test)
 ADD_KUDU_TEST(block_manager-stress-test RUN_SERIAL true)
@@ -64,6 +69,6 @@ ADD_KUDU_TEST(dir_util-test)
 ADD_KUDU_TEST(error_manager-test)
 ADD_KUDU_TEST(fs_manager-test)
 if (NOT APPLE)
-  # Will only pass on Linux.
+  # The log block manager is available only on Linux.
   ADD_KUDU_TEST(log_block_manager-test)
 endif()
diff --git a/src/kudu/gutil/CMakeLists.txt b/src/kudu/gutil/CMakeLists.txt
index cbf4605c3..137904791 100644
--- a/src/kudu/gutil/CMakeLists.txt
+++ b/src/kudu/gutil/CMakeLists.txt
@@ -72,10 +72,14 @@ ADD_EXPORTABLE_LIBRARY(gutil
   # Disable warnings which trigger a lot in the Google code:
   COMPILE_FLAGS "-funsigned-char -Wno-char-subscripts")
 
-add_kudu_test(strings/string_util-test)
-add_kudu_test(strings/numbers-test)
+#######################################
+# Unit tests
+#######################################
+
+ADD_KUDU_TEST(strings/string_util-test)
+ADD_KUDU_TEST(strings/numbers-test)
 if (NOT APPLE)
   # The sysinfo-test consists of scenarios for Linux-specific function
   # ParseMaxCpuIndex(): that doesn't exist on macOS.
-  add_kudu_test(sysinfo-test)
+  ADD_KUDU_TEST(sysinfo-test)
 endif()
diff --git a/src/kudu/hms/CMakeLists.txt b/src/kudu/hms/CMakeLists.txt
index e016d841c..a83b9b01f 100644
--- a/src/kudu/hms/CMakeLists.txt
+++ b/src/kudu/hms/CMakeLists.txt
@@ -74,28 +74,29 @@ add_custom_command(OUTPUT ${HMS_PLUGIN_JAR}
   DEPENDS proto_jar)
 add_custom_target(hms_plugin_jar DEPENDS ${HMS_PLUGIN_JAR})
 
-set(MINI_HMS_SRCS
-  mini_hms.cc)
+if (NOT NO_TESTS)
+  # The mini_hms library is used only for tests.
+  set(MINI_HMS_SRCS
+    mini_hms.cc)
 
-add_library(mini_hms ${MINI_HMS_SRCS})
-target_link_libraries(mini_hms
-  gutil
-  krpc
-  kudu_test_util
-  kudu_util)
-add_dependencies(mini_hms hms_plugin_jar)
+  add_library(mini_hms ${MINI_HMS_SRCS})
+  target_link_libraries(mini_hms
+    gutil
+    krpc
+    kudu_test_util
+    kudu_util)
+  add_dependencies(mini_hms hms_plugin_jar)
+endif()
 
-##############################
-# hms tests
-##############################
+#########################################
+# Unit tests
+#########################################
 
-if (NOT NO_TESTS)
-  SET_KUDU_TEST_LINK_LIBS(
-    kudu_hms
-    mini_hms
-    mini_kdc)
+SET_KUDU_TEST_LINK_LIBS(
+  kudu_hms
+  mini_hms
+  mini_kdc)
 
-  # These tests must run serially, otherwise starting the HMS can take a very 
long time.
-  ADD_KUDU_TEST(hms_catalog-test RUN_SERIAL true NUM_SHARDS 4)
-  ADD_KUDU_TEST(hms_client-test RUN_SERIAL true NUM_SHARDS 4)
-endif()
+# These tests must run serially, otherwise starting the HMS can take a very 
long time.
+ADD_KUDU_TEST(hms_catalog-test RUN_SERIAL true NUM_SHARDS 4)
+ADD_KUDU_TEST(hms_client-test RUN_SERIAL true NUM_SHARDS 4)
diff --git a/src/kudu/master/CMakeLists.txt b/src/kudu/master/CMakeLists.txt
index 7dfd6a0f2..249fd234a 100644
--- a/src/kudu/master/CMakeLists.txt
+++ b/src/kudu/master/CMakeLists.txt
@@ -61,7 +61,6 @@ set(MASTER_SRCS
   master_path_handlers.cc
   master_runner.cc
   master_service.cc
-  mini_master.cc
   placement_policy.cc
   ranger_authz_provider.cc
   sys_catalog.cc
@@ -73,6 +72,10 @@ set(MASTER_SRCS
   txn_manager.cc
   txn_manager_service.cc)
 
+if(NOT NO_TESTS)
+  set(MASTER_SRCS ${MASTER_SRCS} mini_master.cc)
+endif()
+
 add_library(master ${MASTER_SRCS})
 target_link_libraries(master
   clock
@@ -96,7 +99,28 @@ target_link_libraries(master
   transactions
   tserver)
 
-# Tests
+#########################################
+# kudu-master
+#########################################
+
+add_executable(kudu-master master_main.cc)
+target_link_libraries(kudu-master
+  ${SANITIZER_OPTIONS_OVERRIDE}
+  ${KRB5_REALM_OVERRIDE}
+  master
+  ${KUDU_BASE_LIBS})
+
+option(KUDU_MASTER_INSTALL "Whether to install the Kudu Master executable" ON)
+if(KUDU_MASTER_INSTALL)
+  install(TARGETS kudu-master RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
+else()
+  message(STATUS "Skipping install rule for the Kudu Master executable")
+endif()
+
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(
   kudu_client
   kudu_curl_util
@@ -122,21 +146,3 @@ ADD_KUDU_TEST(sys_catalog-test RESOURCE_LOCK 
"master-web-port")
 ADD_KUDU_TEST(ts_descriptor-test DATA_FILES ../scripts/first_argument.sh)
 ADD_KUDU_TEST(ts_state-test)
 ADD_KUDU_TEST(txn_manager-test RESOURCE_LOCK "master-web-port")
-
-#########################################
-# kudu-master
-#########################################
-
-add_executable(kudu-master master_main.cc)
-target_link_libraries(kudu-master
-  ${SANITIZER_OPTIONS_OVERRIDE}
-  ${KRB5_REALM_OVERRIDE}
-  master
-  ${KUDU_BASE_LIBS})
-
-option(KUDU_MASTER_INSTALL "Whether to install the Kudu Master executable" ON)
-if(KUDU_MASTER_INSTALL)
-  install(TARGETS kudu-master RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
-else()
-  message(STATUS "Skipping install rule for the Kudu Master executable")
-endif()
diff --git a/src/kudu/mini-cluster/CMakeLists.txt 
b/src/kudu/mini-cluster/CMakeLists.txt
index f10497a0d..bed157cfd 100644
--- a/src/kudu/mini-cluster/CMakeLists.txt
+++ b/src/kudu/mini-cluster/CMakeLists.txt
@@ -15,6 +15,11 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# The mini-cluster is used only for testing.
+if(NO_TESTS)
+  return()
+endif()
+
 set(MINI_CLUSTER_SRCS
   external_mini_cluster.cc
   internal_mini_cluster.cc
@@ -47,7 +52,7 @@ set(MINI_CLUSTER_LIBS
   tserver_service_proto
   wire_protocol_proto)
 
-if (NOT NO_CHRONY)
+if(NOT NO_CHRONY)
   set(MINI_CLUSTER_LIBS ${MINI_CLUSTER_LIBS} mini_chronyd)
 endif()
 
@@ -57,6 +62,9 @@ add_dependencies(mini_cluster
   kudu-tserver
   kudu-master)
 
-# Tests
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(mini_cluster kudu_hms)
 ADD_KUDU_TEST(external_mini_cluster-test PROCESSORS 3)
diff --git a/src/kudu/postgres/CMakeLists.txt b/src/kudu/postgres/CMakeLists.txt
index 6daa30fe7..c116894d7 100644
--- a/src/kudu/postgres/CMakeLists.txt
+++ b/src/kudu/postgres/CMakeLists.txt
@@ -15,6 +15,12 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# The mini_postgres is used only for tests, and its tests are disabled
+# if NO_TESTS=1 is set.
+if(NO_TESTS)
+  return()
+endif()
+
 #######################################
 # mini_postgres
 #######################################
@@ -41,7 +47,7 @@ target_link_libraries(mini_postgres
 )
 
 #######################################
-# unit tests
+# Unit tests
 #######################################
 
 SET_KUDU_TEST_LINK_LIBS(mini_postgres)
diff --git a/src/kudu/ranger-kms/CMakeLists.txt 
b/src/kudu/ranger-kms/CMakeLists.txt
index 1dae6591c..1bd967a79 100644
--- a/src/kudu/ranger-kms/CMakeLists.txt
+++ b/src/kudu/ranger-kms/CMakeLists.txt
@@ -15,24 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-#######################################
-# mini_ranger_kms
-#######################################
-execute_process(COMMAND ln -nsf
-        "${THIRDPARTY_DIR}/installed/common/opt/ranger-kms"
-        "${EXECUTABLE_OUTPUT_PATH}/ranger_kms-home")
-
-set(MINI_RANGER_KMS_SRCS
-        mini_ranger_kms.cc)
-set(MINI_RANGER_KMS_DEPS
-        kudu_test_util
-        kudu_util
-        mini_postgres
-        mini_ranger)
-
-add_library(mini_ranger_kms ${MINI_RANGER_KMS_SRCS})
-target_link_libraries(mini_ranger_kms ${MINI_RANGER_KMS_DEPS})
-
 #######################################
 # ranger_kms_client
 #######################################
@@ -46,10 +28,22 @@ add_library(ranger_kms_client ${RANGER_KMS_CLIENT_SRCS})
 target_link_libraries(ranger_kms_client ${RANGER_KMS_CLIENT_DEPS})
 
 #######################################
-# Unit tests
+# mini_ranger_kms
 #######################################
+if(NOT NO_TESTS)
+  # The mini_ranger_kms is used only in tests.
+  execute_process(COMMAND ln -nsf
+          "${THIRDPARTY_DIR}/installed/common/opt/ranger-kms"
+          "${EXECUTABLE_OUTPUT_PATH}/ranger_kms-home")
+
+  set(MINI_RANGER_KMS_SRCS
+          mini_ranger_kms.cc)
+  set(MINI_RANGER_KMS_DEPS
+          kudu_test_util
+          kudu_util
+          mini_postgres
+          mini_ranger)
 
-SET_KUDU_TEST_LINK_LIBS(
-        itest_util
-        mini_postgres
-        mini_ranger_kms)
+  add_library(mini_ranger_kms ${MINI_RANGER_KMS_SRCS})
+  target_link_libraries(mini_ranger_kms ${MINI_RANGER_KMS_DEPS})
+endif()
diff --git a/src/kudu/ranger/CMakeLists.txt b/src/kudu/ranger/CMakeLists.txt
index 0c6241fbe..aa5753584 100644
--- a/src/kudu/ranger/CMakeLists.txt
+++ b/src/kudu/ranger/CMakeLists.txt
@@ -51,26 +51,29 @@ target_link_libraries(kudu_ranger ${RANGER_DEPS})
 # mini_ranger
 #######################################
 
-execute_process(COMMAND ln -nsf
-  "${THIRDPARTY_DIR}/installed/common/opt/ranger"
-  "${EXECUTABLE_OUTPUT_PATH}/ranger-home")
-execute_process(COMMAND ln -nsf
-  "${THIRDPARTY_DIR}/installed/common/opt/hadoop"
-  "${EXECUTABLE_OUTPUT_PATH}/hadoop-home")
-execute_process(COMMAND ln -nsf
-  "${JAVA_HOME}"
-  "${EXECUTABLE_OUTPUT_PATH}/java-home")
+# The mini_ranger is used only in tests.
+if(NOT NO_TESTS)
+  execute_process(COMMAND ln -nsf
+    "${THIRDPARTY_DIR}/installed/common/opt/ranger"
+    "${EXECUTABLE_OUTPUT_PATH}/ranger-home")
+  execute_process(COMMAND ln -nsf
+    "${THIRDPARTY_DIR}/installed/common/opt/hadoop"
+    "${EXECUTABLE_OUTPUT_PATH}/hadoop-home")
+  execute_process(COMMAND ln -nsf
+    "${JAVA_HOME}"
+    "${EXECUTABLE_OUTPUT_PATH}/java-home")
 
-set(MINI_RANGER_SRCS
-  mini_ranger.cc)
-set(MINI_RANGER_DEPS
-  kudu_curl_util
-  kudu_test_util
-  kudu_ranger
-  kudu_util
-  mini_postgres)
-add_library(mini_ranger ${MINI_RANGER_SRCS})
-target_link_libraries(mini_ranger ${MINI_RANGER_DEPS})
+  set(MINI_RANGER_SRCS
+    mini_ranger.cc)
+  set(MINI_RANGER_DEPS
+    kudu_curl_util
+    kudu_test_util
+    kudu_ranger
+    kudu_util
+    mini_postgres)
+  add_library(mini_ranger ${MINI_RANGER_SRCS})
+  target_link_libraries(mini_ranger ${MINI_RANGER_DEPS})
+endif()
 
 #######################################
 # Unit tests
diff --git a/src/kudu/rebalance/CMakeLists.txt 
b/src/kudu/rebalance/CMakeLists.txt
index a7c65227c..8e4fdacc6 100644
--- a/src/kudu/rebalance/CMakeLists.txt
+++ b/src/kudu/rebalance/CMakeLists.txt
@@ -36,9 +36,7 @@ target_link_libraries(rebalance
 # Unit tests
 #######################################
 
-SET_KUDU_TEST_LINK_LIBS(
-  rebalance
-)
+SET_KUDU_TEST_LINK_LIBS(rebalance)
 
 ADD_KUDU_TEST(placement_policy_util-test)
 ADD_KUDU_TEST(rebalance-test)
diff --git a/src/kudu/rpc/CMakeLists.txt b/src/kudu/rpc/CMakeLists.txt
index 6fb27b4c3..7a967c22a 100644
--- a/src/kudu/rpc/CMakeLists.txt
+++ b/src/kudu/rpc/CMakeLists.txt
@@ -98,27 +98,32 @@ target_link_libraries(protoc-gen-krpc
     protobuf
     gutil)
 
-#### RPC test
-PROTOBUF_GENERATE_CPP(
-  RPC_TEST_DIFF_PACKAGE_SRCS RPC_TEST_DIFF_PACKAGE_HDRS 
RPC_TEST_DIFF_PACKAGE_TGTS
-  SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
-  BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
-  PROTO_FILES rtest_diff_package.proto)
-add_library(rtest_diff_package_proto ${RPC_TEST_DIFF_PACKAGE_SRCS} 
${RPC_TEST_DIFF_PACKAGE_HDRS})
-target_link_libraries(rtest_diff_package_proto rpc_header_proto)
+### RPC test
+if(NOT NO_TESTS)
+  PROTOBUF_GENERATE_CPP(
+    RPC_TEST_DIFF_PACKAGE_SRCS RPC_TEST_DIFF_PACKAGE_HDRS 
RPC_TEST_DIFF_PACKAGE_TGTS
+    SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
+    BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
+    PROTO_FILES rtest_diff_package.proto)
+  add_library(rtest_diff_package_proto ${RPC_TEST_DIFF_PACKAGE_SRCS} 
${RPC_TEST_DIFF_PACKAGE_HDRS})
+  target_link_libraries(rtest_diff_package_proto rpc_header_proto)
 
-KRPC_GENERATE(
-  RTEST_KRPC_SRCS RTEST_KRPC_HDRS RTEST_KRPC_TGTS
-  SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
-  BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
-  PROTO_FILES rtest.proto)
-add_library(rtest_krpc ${RTEST_KRPC_SRCS} ${RTEST_KRPC_HDRS})
-target_link_libraries(rtest_krpc
-  krpc
-  rpc_header_proto
-  rtest_diff_package_proto)
+  KRPC_GENERATE(
+    RTEST_KRPC_SRCS RTEST_KRPC_HDRS RTEST_KRPC_TGTS
+    SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
+    BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
+    PROTO_FILES rtest.proto)
+  add_library(rtest_krpc ${RTEST_KRPC_SRCS} ${RTEST_KRPC_HDRS})
+  target_link_libraries(rtest_krpc
+    krpc
+    rpc_header_proto
+    rtest_diff_package_proto)
+endif()
+
+#######################################
+# Unit tests
+#######################################
 
-# Tests
 SET_KUDU_TEST_LINK_LIBS(
   krpc
   mini_kdc
diff --git a/src/kudu/security/CMakeLists.txt b/src/kudu/security/CMakeLists.txt
index e4ddbaaf0..4ae9dee8c 100644
--- a/src/kudu/security/CMakeLists.txt
+++ b/src/kudu/security/CMakeLists.txt
@@ -95,18 +95,20 @@ ADD_EXPORTABLE_LIBRARY(security
   SRCS ${SECURITY_SRCS}
   DEPS ${SECURITY_LIBS})
 
-
 ##############################
 # mini_kdc
 ##############################
 
-set(MINI_KDC_SRCS test/mini_kdc.cc)
+if (NOT NO_TESTS)
+  # The mini_kdc is used only in tests.
+  set(MINI_KDC_SRCS test/mini_kdc.cc)
 
-add_library(mini_kdc ${MINI_KDC_SRCS})
-target_link_libraries(mini_kdc
-  gutil
-  kudu_test_util
-  kudu_util)
+  add_library(mini_kdc ${MINI_KDC_SRCS})
+  target_link_libraries(mini_kdc
+    gutil
+    kudu_test_util
+    kudu_util)
+endif()
 
 ##############################
 # security_test_util
@@ -124,18 +126,21 @@ if (NOT NO_TESTS)
     kudu_test_util
     kudu_util
     security)
-
-  # Tests
-  SET_KUDU_TEST_LINK_LIBS(
-    mini_kdc
-    security
-    security_test_util)
-
-  ADD_KUDU_TEST(ca/cert_management-test)
-  ADD_KUDU_TEST(cert-test)
-  ADD_KUDU_TEST(crypto-test)
-  ADD_KUDU_TEST(test/mini_kdc-test)
-  ADD_KUDU_TEST(tls_handshake-test)
-  ADD_KUDU_TEST(tls_socket-test PROCESSORS 2)
-  ADD_KUDU_TEST(token-test)
 endif()
+
+#########################################
+# Unit tests
+#########################################
+
+SET_KUDU_TEST_LINK_LIBS(
+  mini_kdc
+  security
+  security_test_util)
+
+ADD_KUDU_TEST(ca/cert_management-test)
+ADD_KUDU_TEST(cert-test)
+ADD_KUDU_TEST(crypto-test)
+ADD_KUDU_TEST(test/mini_kdc-test)
+ADD_KUDU_TEST(tls_handshake-test)
+ADD_KUDU_TEST(tls_socket-test PROCESSORS 2)
+ADD_KUDU_TEST(token-test)
diff --git a/src/kudu/server/CMakeLists.txt b/src/kudu/server/CMakeLists.txt
index 02987102a..4ea34145e 100644
--- a/src/kudu/server/CMakeLists.txt
+++ b/src/kudu/server/CMakeLists.txt
@@ -75,9 +75,9 @@ if(${KUDU_TCMALLOC_AVAILABLE})
   target_link_libraries(server_process tcmalloc profiler)
 endif()
 
-#########################################
-# server_process tests
-#########################################
+#######################################
+# Unit tests
+#######################################
 
 SET_KUDU_TEST_LINK_LIBS(
   kudu_curl_util
@@ -86,5 +86,3 @@ SET_KUDU_TEST_LINK_LIBS(
   security_test_util)
 ADD_KUDU_TEST(rpc_server-test)
 ADD_KUDU_TEST(webserver-test)
-
-SET_KUDU_TEST_LINK_LIBS(server_process)
diff --git a/src/kudu/subprocess/CMakeLists.txt 
b/src/kudu/subprocess/CMakeLists.txt
index 4d2ec6aea..49b6a3a2c 100644
--- a/src/kudu/subprocess/CMakeLists.txt
+++ b/src/kudu/subprocess/CMakeLists.txt
@@ -60,18 +60,20 @@ target_link_libraries(kudu_subprocess
 )
 add_dependencies(kudu_subprocess subprocess_jar)
 
-add_library(echo_subprocess
-  echo_subprocess.cc
-)
-target_link_libraries(echo_subprocess
-  kudu_subprocess
-)
-
 #######################################
 # Unit tests
 #######################################
 
 if (NOT NO_TESTS)
+  # The echo_subprocess library/module is used only for testing, so there is
+  # no need to build it if NO_TESTS is defined.
+  add_library(echo_subprocess
+    echo_subprocess.cc
+  )
+  target_link_libraries(echo_subprocess
+    kudu_subprocess
+  )
+
   SET_KUDU_TEST_LINK_LIBS(
     kudu_subprocess
     echo_subprocess
diff --git a/src/kudu/tablet/CMakeLists.txt b/src/kudu/tablet/CMakeLists.txt
index 8ae0dbf1b..c48089ed8 100644
--- a/src/kudu/tablet/CMakeLists.txt
+++ b/src/kudu/tablet/CMakeLists.txt
@@ -86,14 +86,20 @@ target_link_libraries(tablet
   kudu_util
   consensus)
 
-add_library(tablet_test_util
-  tablet-test-util.cc
-  tablet_replica-test-base.cc)
-target_link_libraries(tablet_test_util
-  kudu_common
-  kudu_test_util
-  log_proto
-  tablet)
+if(NOT NO_TESTS)
+  add_library(tablet_test_util
+    tablet-test-util.cc
+    tablet_replica-test-base.cc)
+  target_link_libraries(tablet_test_util
+    kudu_common
+    kudu_test_util
+    log_proto
+    tablet)
+endif()
+
+#######################################
+# Unit tests
+#######################################
 
 SET_KUDU_TEST_LINK_LIBS(tablet tablet_test_util)
 ADD_KUDU_TEST(all_types-scan-correctness-test NUM_SHARDS 8 PROCESSORS 2)
@@ -130,6 +136,6 @@ ADD_KUDU_TEST(tablet_replica-test)
 ADD_KUDU_TEST(tablet_throttle-test)
 ADD_KUDU_TEST(txn_participant-test)
 
-# Some tests don't have dependencies on other tablet stuff
+# The tests below don't have dependencies on other tablet stuff.
 SET_KUDU_TEST_LINK_LIBS(kudu_util gutil)
 ADD_KUDU_TEST(cbtree-test RUN_SERIAL true)
diff --git a/src/kudu/tools/CMakeLists.txt b/src/kudu/tools/CMakeLists.txt
index a652bbe60..f7bc8147a 100644
--- a/src/kudu/tools/CMakeLists.txt
+++ b/src/kudu/tools/CMakeLists.txt
@@ -101,7 +101,7 @@ target_link_libraries(kudu_tools_rebalance
 # kudu
 #######################################
 
-add_executable(kudu
+set(KUDU_CLI_TOOL_SRCS
   master_rebuilder.cc
   tool_action_cluster.cc
   tool_action_diagnose.cc
@@ -114,13 +114,19 @@ add_executable(kudu
   tool_action_remote_replica.cc
   tool_action_table.cc
   tool_action_tablet.cc
-  tool_action_test.cc
   tool_action_tserver.cc
   tool_action_txn.cc
   tool_action_wal.cc
   tool_main.cc
 )
-target_link_libraries(kudu
+
+if(NOT NO_TESTS)
+  set(KUDU_CLI_TOOL_SRCS ${KUDU_CLI_TOOL_SRCS} tool_action_test.cc)
+endif()
+
+add_executable(kudu ${KUDU_CLI_TOOL_SRCS})
+
+set(KUDU_CLI_TOOL_LINK_LIBS
   ${SANITIZER_OPTIONS_OVERRIDE}
   ${KRB5_REALM_OVERRIDE}
   clock
@@ -136,13 +142,17 @@ target_link_libraries(kudu
   kudu_util
   log
   master
-  mini_cluster
   tablet
   tool_proto
   transactions
   tserver
   ${KUDU_BASE_LIBS}
 )
+if(NOT NO_TESTS)
+  set(KUDU_CLI_TOOL_LINK_LIBS ${KUDU_CLI_TOOL_LINK_LIBS} mini_cluster)
+endif()
+target_link_libraries(kudu ${KUDU_CLI_TOOL_LINK_LIBS})
+
 option(KUDU_CLIENT_INSTALL "Whether to install the Kudu command line tool" ON)
 if(KUDU_CLIENT_INSTALL)
   install(TARGETS kudu RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
@@ -154,13 +164,16 @@ endif()
 # kudu_tools_test_util
 #######################################
 
-add_library(kudu_tools_test_util
-  tool_test_util.cc
-)
-target_link_libraries(kudu_tools_test_util
-  kudu_tools_util
-  kudu_util
-)
+if(NOT NO_TESTS)
+  # The kudu_tools_test_util library is used only by tests.
+  add_library(kudu_tools_test_util
+    tool_test_util.cc
+  )
+  target_link_libraries(kudu_tools_test_util
+    kudu_tools_util
+    kudu_util
+  )
+endif()
 
 #######################################
 # Unit tests
diff --git a/src/kudu/tools/tool_action.h b/src/kudu/tools/tool_action.h
index ff65f4ec1..3ddba0ca3 100644
--- a/src/kudu/tools/tool_action.h
+++ b/src/kudu/tools/tool_action.h
@@ -341,10 +341,13 @@ std::unique_ptr<Mode> BuildPerfMode();
 std::unique_ptr<Mode> BuildRemoteReplicaMode();
 std::unique_ptr<Mode> BuildTableMode();
 std::unique_ptr<Mode> BuildTabletMode();
-std::unique_ptr<Mode> BuildTestMode();
 std::unique_ptr<Mode> BuildTxnMode();
 std::unique_ptr<Mode> BuildTServerMode();
 std::unique_ptr<Mode> BuildWalMode();
 
+#if !defined(KUDU_CLI_TOOL_NO_TESTS)
+std::unique_ptr<Mode> BuildTestMode();
+#endif
+
 } // namespace tools
 } // namespace kudu
diff --git a/src/kudu/tools/tool_action_test.cc 
b/src/kudu/tools/tool_action_test.cc
index 7a06b3835..abd75bae4 100644
--- a/src/kudu/tools/tool_action_test.cc
+++ b/src/kudu/tools/tool_action_test.cc
@@ -457,6 +457,7 @@ string SerializeRequest(const ControlShellRequestPB& req) {
 
 } // anonymous namespace
 
+#if !defined(KUDU_CLI_TOOL_NO_TESTS)
 unique_ptr<Mode> BuildTestMode() {
 
   ControlShellRequestPB create;
@@ -487,6 +488,7 @@ unique_ptr<Mode> BuildTestMode() {
       .AddAction(std::move(control_shell))
       .Build();
 }
+#endif // #if !defined(KUDU_CLI_TOOL_NO_TESTS) ...
 
 } // namespace tools
 } // namespace kudu
diff --git a/src/kudu/tools/tool_main.cc b/src/kudu/tools/tool_main.cc
index 24e7f1efd..5a8faeeeb 100644
--- a/src/kudu/tools/tool_main.cc
+++ b/src/kudu/tools/tool_main.cc
@@ -70,7 +70,9 @@ unique_ptr<Mode> RootMode(const string& name) {
       .AddMode(BuildRemoteReplicaMode())
       .AddMode(BuildTableMode())
       .AddMode(BuildTabletMode())
+#if !defined(KUDU_CLI_TOOL_NO_TESTS)
       .AddMode(BuildTestMode())
+#endif
       .AddMode(BuildTxnMode())
       .AddMode(BuildTServerMode())
       .AddMode(BuildWalMode())
diff --git a/src/kudu/transactions/CMakeLists.txt 
b/src/kudu/transactions/CMakeLists.txt
index d7d26e88f..f68c809eb 100644
--- a/src/kudu/transactions/CMakeLists.txt
+++ b/src/kudu/transactions/CMakeLists.txt
@@ -47,6 +47,10 @@ target_link_libraries(transactions
   ${KUDU_BASE_LIBS}
 )
 
+#######################################
+# Unit tests
+#######################################
+
 SET_KUDU_TEST_LINK_LIBS(transactions tablet_test_util)
 ADD_KUDU_TEST(txn_status_manager-test)
 ADD_KUDU_TEST(txn_status_tablet-test)
diff --git a/src/kudu/tserver/CMakeLists.txt b/src/kudu/tserver/CMakeLists.txt
index 872c70aec..d522bd947 100644
--- a/src/kudu/tserver/CMakeLists.txt
+++ b/src/kudu/tserver/CMakeLists.txt
@@ -105,7 +105,6 @@ ADD_EXPORTABLE_LIBRARY(tserver_service_proto
 
 set(TSERVER_SRCS
   heartbeater.cc
-  mini_tablet_server.cc
   scanner_metrics.cc
   scanners.cc
   tablet_copy_client.cc
@@ -119,6 +118,10 @@ set(TSERVER_SRCS
   tserver_path_handlers.cc
 )
 
+if(NOT NO_TESTS)
+  set(TSERVER_SRCS ${TSERVER_SRCS} mini_tablet_server.cc)
+endif()
+
 add_library(tserver ${TSERVER_SRCS})
 target_link_libraries(tserver
   clock
@@ -174,7 +177,7 @@ if (NOT NO_TESTS)
 endif()
 
 #########################################
-# tserver tests
+# Unit tests
 #########################################
 
 SET_KUDU_TEST_LINK_LIBS(
diff --git a/src/kudu/util/CMakeLists.txt b/src/kudu/util/CMakeLists.txt
index b6975a6d9..127c884b1 100644
--- a/src/kudu/util/CMakeLists.txt
+++ b/src/kudu/util/CMakeLists.txt
@@ -235,7 +235,6 @@ set(UTIL_SRCS
   string_case.cc
   striped64.cc
   subprocess.cc
-  test_graph.cc
   test_util_prod.cc
   thread.cc
   threadlocal.cc
@@ -254,6 +253,10 @@ set(UTIL_SRCS
   zlib.cc
 )
 
+if(NOT NO_TESTS)
+  set(UTIL_SRCS ${UTIL_SRCS} test_graph.cc)
+endif()
+
 # overwrite.cc contains a single function which would be a hot spot in
 # debug builds. It's separated into a separate file so it can be
 # optimized regardless of the default optimization options.
@@ -354,15 +357,13 @@ target_link_libraries(kudu_curl_util
   gutil)
 
 #######################################
-# mini_oidc
+# kudu_cloud_util
 #######################################
-add_library(mini_oidc mini_oidc.cc)
-target_link_libraries(mini_oidc
-  server_process
-  gutil
-  kudu_test_util
-  kudu_util
-  jwt_test_certs)
+add_library(kudu_cloud_util
+  cloud/instance_detector.cc
+  cloud/instance_metadata.cc)
+target_link_libraries(kudu_cloud_util
+  kudu_curl_util)
 
 #######################################
 # kudu_jwt_util
@@ -375,20 +376,26 @@ target_link_libraries(kudu_jwt_util
   kudu_util)
 
 #######################################
-# jwt_test_certs
+# mini_oidc
 #######################################
-add_library(jwt_test_certs jwt_test_certs.cc)
-target_link_libraries(jwt_test_certs
-  kudu_jwt_util)
+if(NOT NO_TESTS)
+  add_library(mini_oidc mini_oidc.cc)
+  target_link_libraries(mini_oidc
+    server_process
+    gutil
+    kudu_test_util
+    kudu_util
+    jwt_test_certs)
+endif()
 
 #######################################
-# kudu_cloud_util
+# jwt_test_certs
 #######################################
-add_library(kudu_cloud_util
-  cloud/instance_detector.cc
-  cloud/instance_metadata.cc)
-target_link_libraries(kudu_cloud_util
-  kudu_curl_util)
+if(NOT NO_TESTS)
+  add_library(jwt_test_certs jwt_test_certs.cc)
+  target_link_libraries(jwt_test_certs
+    kudu_jwt_util)
+endif()
 
 # See the comment in sanitizer_options.cc for details on this library's usage.
 # The top-level CMakeLists sets a ${SANITIZER_OPTIONS_OVERRIDE} variable which
@@ -397,9 +404,9 @@ target_link_libraries(kudu_cloud_util
 #######################################
 # sanitizer_options
 #######################################
-add_library(sanitizer_options STATIC sanitizer_options.cc)
-target_link_libraries(sanitizer_options gutil)
 if ("${KUDU_USE_ASAN}" OR "${KUDU_USE_TSAN}" OR "${KUDU_USE_UBSAN}")
+  add_library(sanitizer_options STATIC sanitizer_options.cc)
+  target_link_libraries(sanitizer_options gutil)
   # By default the sanitizers use addr2line utility to symbolize reports.
   # llvm-symbolizer is faster, consumes less memory and produces much better 
reports.
   # We set KUDU_EXTERNAL_SYMBOLIZER_PATH which is used in sanitizer_options.cc
@@ -414,18 +421,26 @@ if ("${KUDU_USE_ASAN}" OR "${KUDU_USE_TSAN}" OR 
"${KUDU_USE_UBSAN}")
 endif()
 
 #######################################
-# kudu_test_util
+# protoc-gen-insertions
 #######################################
 
-# Used by mini-cluster, so must be built even when NO_TESTS=0.
-add_library(kudu_test_util
-  test_util.cc)
-target_link_libraries(kudu_test_util
-  gflags
-  glog
-  gmock
-  gtest
-  kudu_util)
+add_executable(protoc-gen-insertions protoc-gen-insertions.cc)
+target_link_libraries(protoc-gen-insertions gutil protobuf protoc 
${KUDU_BASE_LIBS})
+
+#######################################
+# kudu_test_util
+#######################################
+if(NOT NO_TESTS)
+  # The kudu_test_util is needed only for testing.
+  add_library(kudu_test_util
+    test_util.cc)
+  target_link_libraries(kudu_test_util
+    gflags
+    glog
+    gmock
+    gtest
+    kudu_util)
+endif()
 
 #######################################
 # kudu_test_main
@@ -449,13 +464,6 @@ if(NOT NO_TESTS)
   endif()
 endif()
 
-#######################################
-# protoc-gen-insertions
-#######################################
-
-add_executable(protoc-gen-insertions protoc-gen-insertions.cc)
-target_link_libraries(protoc-gen-insertions gutil protobuf protoc 
${KUDU_BASE_LIBS})
-
 #######################################
 # Unit tests
 #######################################
@@ -570,16 +578,17 @@ endif()
 #######################################
 # jsonwriter_test_proto
 #######################################
-
-PROTOBUF_GENERATE_CPP(
-  JSONWRITER_TEST_PROTO_SRCS JSONWRITER_TEST_PROTO_HDRS 
JSONWRITER_TEST_PROTO_TGTS
-  SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
-  BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
-  PROTO_FILES jsonwriter_test.proto)
-add_library(jsonwriter_test_proto ${JSONWRITER_TEST_PROTO_SRCS} 
${JSONWRITER_TEST_PROTO_HDRS})
-target_link_libraries(jsonwriter_test_proto
-  pb_util_proto
-  protobuf)
+if(NOT NO_TESTS)
+  PROTOBUF_GENERATE_CPP(
+    JSONWRITER_TEST_PROTO_SRCS JSONWRITER_TEST_PROTO_HDRS 
JSONWRITER_TEST_PROTO_TGTS
+    SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
+    BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
+    PROTO_FILES jsonwriter_test.proto)
+  add_library(jsonwriter_test_proto ${JSONWRITER_TEST_PROTO_SRCS} 
${JSONWRITER_TEST_PROTO_HDRS})
+  target_link_libraries(jsonwriter_test_proto
+    pb_util_proto
+    protobuf)
+endif()
 
 #######################################
 # jsonwriter-test
@@ -594,22 +603,23 @@ endif()
 #######################################
 # pb_util_test_proto
 #######################################
-
-PROTOBUF_GENERATE_CPP(
-  PROTO_CONTAINER_TEST_PROTO_SRCS PROTO_CONTAINER_TEST_PROTO_HDRS 
PROTO_CONTAINER_TEST_PROTO_TGTS
-  SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
-  BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
-  PROTO_FILES
-    proto_container_test.proto
-    proto_container_test2.proto
-    proto_container_test3.proto
-    pb_util_test.proto)
-add_library(pb_util_test_proto
-  ${PROTO_CONTAINER_TEST_PROTO_SRCS}
-  ${PROTO_CONTAINER_TEST_PROTO_HDRS})
-target_link_libraries(pb_util_test_proto
-  pb_util_proto
-  protobuf)
+if(NOT NO_TESTS)
+  PROTOBUF_GENERATE_CPP(
+    PROTO_CONTAINER_TEST_PROTO_SRCS PROTO_CONTAINER_TEST_PROTO_HDRS 
PROTO_CONTAINER_TEST_PROTO_TGTS
+    SOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..
+    BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/../..
+    PROTO_FILES
+      proto_container_test.proto
+      proto_container_test2.proto
+      proto_container_test3.proto
+      pb_util_test.proto)
+  add_library(pb_util_test_proto
+    ${PROTO_CONTAINER_TEST_PROTO_SRCS}
+    ${PROTO_CONTAINER_TEST_PROTO_HDRS})
+  target_link_libraries(pb_util_test_proto
+    pb_util_proto
+    protobuf)
+endif()
 
 #######################################
 # pb_util-test


Reply via email to