Remove global_target from build.

This was added with the generated symbol-prefixing header. But it
seems to be sufficient for crypto to have a dependency on the
generated header, along with some of the stray bits of delocate.

It's a little unclear from CMake documentation how these are processed;
normally .o files can be built before libraries are built or linked,
only the link step depends on.

But, empirically, if A links B, and B has a dependency on C, then CMake
seems to run C before building any of A. I tested this by making a small
project where the generation step slept for three seconds and running
with enough parallelism that we'd have tripped.

Interestingly, in the Makefile output, the individual object file
targets didn't have that dependency, but the target itself did. But this
was true on both A and B, so I think that just might not work.

Also fix the dependency in the custom target. The old formulation broke
when using an absolute path to the symbols file.

Change-Id: I2053d44949f907d465da403a5ec69c191740268f
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/56928
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ced650d..31d2931 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,11 +42,6 @@
   endif()
 endfunction()
 
-# This is a dummy target which all other targets depend on (manually - see other
-# CMakeLists.txt files). This gives us a hook to add any targets which need to
-# run before all other targets.
-add_custom_target(global_target)
-
 if(ANDROID)
   # Android-NDK CMake files reconfigure the path and so Perl won't be found.
   # However, ninja will still find them in $PATH if we just name them.
@@ -112,7 +107,7 @@
     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/symbol_prefix_include
     COMMAND ${GO_EXECUTABLE} run ${CMAKE_CURRENT_SOURCE_DIR}/util/make_prefix_headers.go -out ${CMAKE_CURRENT_BINARY_DIR}/symbol_prefix_include ${BORINGSSL_PREFIX_SYMBOLS}
     DEPENDS util/make_prefix_headers.go
-            ${CMAKE_BINARY_DIR}/${BORINGSSL_PREFIX_SYMBOLS})
+            ${BORINGSSL_PREFIX_SYMBOLS})
 
   # add_dependencies needs a target, not a file, so we add an intermediate
   # target.
@@ -121,9 +116,10 @@
     DEPENDS symbol_prefix_include/boringssl_prefix_symbols.h
             symbol_prefix_include/boringssl_prefix_symbols_asm.h
             symbol_prefix_include/boringssl_prefix_symbols_nasm.inc)
-  add_dependencies(global_target boringssl_prefix_symbols)
 elseif(BORINGSSL_PREFIX OR BORINGSSL_PREFIX_SYMBOLS)
   message(FATAL_ERROR "Must specify both or neither of BORINGSSL_PREFIX and BORINGSSL_PREFIX_SYMBOLS")
+else()
+  add_custom_target(boringssl_prefix_symbols)
 endif()
 
 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index e4208ac..c6a0580 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -319,7 +319,7 @@
   )
 endif()
 
-add_dependencies(crypto global_target)
+add_dependencies(crypto boringssl_prefix_symbols)
 
 if(FIPS_DELOCATE OR FIPS_SHARED)
   add_dependencies(crypto bcm_o_target)
@@ -350,10 +350,7 @@
 
   fipsmodule/rand/urandom_test.cc
 )
-
 target_link_libraries(urandom_test test_support_lib boringssl_gtest crypto)
-
-add_dependencies(urandom_test global_target)
 add_dependencies(all_tests urandom_test)
 
 add_executable(
@@ -427,8 +424,5 @@
   $<TARGET_OBJECTS:crypto_test_data>
   $<TARGET_OBJECTS:boringssl_gtest_main>
 )
-
-add_dependencies(crypto_test global_target)
-
 target_link_libraries(crypto_test test_support_lib boringssl_gtest crypto)
 add_dependencies(all_tests crypto_test)
diff --git a/crypto/fipsmodule/CMakeLists.txt b/crypto/fipsmodule/CMakeLists.txt
index fc2d0dd..3858e8b 100644
--- a/crypto/fipsmodule/CMakeLists.txt
+++ b/crypto/fipsmodule/CMakeLists.txt
@@ -65,7 +65,7 @@
 
     bcm.c
   )
-  add_dependencies(bcm_c_generated_asm global_target)
+  add_dependencies(bcm_c_generated_asm boringssl_prefix_symbols)
   target_include_directories(bcm_c_generated_asm PRIVATE ../../include)
   set_target_properties(bcm_c_generated_asm PROPERTIES COMPILE_OPTIONS "-S")
   set_target_properties(bcm_c_generated_asm PROPERTIES POSITION_INDEPENDENT_CODE ON)
@@ -101,7 +101,6 @@
 
     bcm-delocated.S
   )
-  add_dependencies(bcm_hashunset global_target)
   set_target_properties(bcm_hashunset PROPERTIES POSITION_INDEPENDENT_CODE ON)
   set_target_properties(bcm_hashunset PROPERTIES LINKER_LANGUAGE C)
 
@@ -126,7 +125,7 @@
 
     fips_shared_support.c
   )
-  add_dependencies(fipsmodule global_target)
+  add_dependencies(fipsmodule boringssl_prefix_symbols)
   target_include_directories(fipsmodule PRIVATE ../../include)
   set_target_properties(fipsmodule PROPERTIES LINKER_LANGUAGE C)
 elseif(FIPS_SHARED)
@@ -141,7 +140,7 @@
 
     fips_shared_support.c
   )
-  add_dependencies(fipsmodule global_target)
+  add_dependencies(fipsmodule boringssl_prefix_symbols)
   target_include_directories(fipsmodule PRIVATE ../../include)
 
   add_library(
@@ -152,7 +151,7 @@
     bcm.c
     ${BCM_SOURCES_ASM_USED}
   )
-  add_dependencies(bcm_library global_target)
+  add_dependencies(bcm_library boringssl_prefix_symbols)
   target_include_directories(bcm_library PRIVATE ../../include)
 
   add_custom_command(
@@ -173,6 +172,6 @@
     fips_shared_support.c
     ${BCM_SOURCES_ASM_USED}
   )
-  add_dependencies(fipsmodule global_target)
+  add_dependencies(fipsmodule boringssl_prefix_symbols)
   target_include_directories(fipsmodule PRIVATE ../../include)
 endif()
diff --git a/crypto/test/CMakeLists.txt b/crypto/test/CMakeLists.txt
index 939cbb6..fee46ae 100644
--- a/crypto/test/CMakeLists.txt
+++ b/crypto/test/CMakeLists.txt
@@ -18,7 +18,6 @@
   target_link_libraries(test_support_lib dbghelp)
 endif()
 target_link_libraries(test_support_lib boringssl_gtest crypto)
-add_dependencies(test_support_lib global_target)
 
 add_library(
   boringssl_gtest_main
@@ -27,6 +26,4 @@
 
   gtest_main.cc
 )
-
-add_dependencies(boringssl_gtest_main global_target)
 target_link_libraries(boringssl_gtest_main boringssl_gtest crypto test_support_lib)
diff --git a/decrepit/CMakeLists.txt b/decrepit/CMakeLists.txt
index 38d6f5d..48b0cf1 100644
--- a/decrepit/CMakeLists.txt
+++ b/decrepit/CMakeLists.txt
@@ -19,7 +19,6 @@
   x509/x509_decrepit.c
   xts/xts.c
 )
-add_dependencies(decrepit global_target)
 target_link_libraries(decrepit crypto ssl)
 
 add_executable(
@@ -34,7 +33,6 @@
 
   $<TARGET_OBJECTS:boringssl_gtest_main>
 )
-add_dependencies(decrepit_test global_target)
 target_link_libraries(decrepit_test test_support_lib boringssl_gtest decrepit
                       crypto)
 add_dependencies(all_tests decrepit_test)
diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt
index c6835eb..7856f55 100644
--- a/fuzz/CMakeLists.txt
+++ b/fuzz/CMakeLists.txt
@@ -1,6 +1,5 @@
 macro(fuzzer name)
   add_executable(${name} ${name}.cc)
-  add_dependencies(${name} global_target)
   target_compile_options(${name} PRIVATE "-Wno-missing-prototypes")
   target_link_libraries(${name} crypto ${ARGN})
   if(LIBFUZZER_FROM_DEPS)
diff --git a/ssl/CMakeLists.txt b/ssl/CMakeLists.txt
index beaf61a..147ab58 100644
--- a/ssl/CMakeLists.txt
+++ b/ssl/CMakeLists.txt
@@ -44,7 +44,6 @@
 # here.
 install_if_enabled(TARGETS ssl EXPORT OpenSSLTargets ${INSTALL_DESTINATION_DEFAULT})
 set_property(TARGET ssl PROPERTY EXPORT_NAME SSL)
-add_dependencies(ssl global_target)
 target_link_libraries(ssl crypto)
 
 add_executable(
@@ -56,6 +55,5 @@
 
   $<TARGET_OBJECTS:boringssl_gtest_main>
 )
-add_dependencies(ssl_test global_target)
 target_link_libraries(ssl_test test_support_lib boringssl_gtest ssl crypto)
 add_dependencies(all_tests ssl_test)
diff --git a/ssl/test/CMakeLists.txt b/ssl/test/CMakeLists.txt
index fa326aa..110c683 100644
--- a/ssl/test/CMakeLists.txt
+++ b/ssl/test/CMakeLists.txt
@@ -10,9 +10,6 @@
   test_config.cc
   test_state.cc
 )
-
-add_dependencies(bssl_shim global_target)
-
 target_link_libraries(bssl_shim ssl crypto)
 
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
@@ -28,9 +25,6 @@
     test_config.cc
     test_state.cc
   )
-
-  add_dependencies(handshaker global_target)
-
   target_link_libraries(handshaker ssl crypto)
 else()
   # Declare a dummy target for run_tests to depend on.
diff --git a/tool/CMakeLists.txt b/tool/CMakeLists.txt
index df5d9a7..5047108 100644
--- a/tool/CMakeLists.txt
+++ b/tool/CMakeLists.txt
@@ -20,5 +20,4 @@
   transport_common.cc
 )
 install_if_enabled(TARGETS bssl DESTINATION ${INSTALL_DESTINATION_DEFAULT})
-add_dependencies(bssl global_target)
 target_link_libraries(bssl ssl crypto)
diff --git a/util/fipstools/CMakeLists.txt b/util/fipstools/CMakeLists.txt
index 87960b4..87abf0a 100644
--- a/util/fipstools/CMakeLists.txt
+++ b/util/fipstools/CMakeLists.txt
@@ -4,6 +4,5 @@
 
     test_fips.c
   )
-  add_dependencies(test_fips global_target)
   target_link_libraries(test_fips crypto)
 endif()
diff --git a/util/fipstools/acvp/modulewrapper/CMakeLists.txt b/util/fipstools/acvp/modulewrapper/CMakeLists.txt
index 45a941d..7938d39 100644
--- a/util/fipstools/acvp/modulewrapper/CMakeLists.txt
+++ b/util/fipstools/acvp/modulewrapper/CMakeLists.txt
@@ -5,6 +5,5 @@
     main.cc
     modulewrapper.cc
   )
-  add_dependencies(modulewrapper global_target)
   target_link_libraries(modulewrapper crypto)
 endif()