PROTON-2265: Ensure that clang builds work:
- Align proton CI build with dispatch CI build
- Install llvm linking bits for focal to make clang work with lto
diff --git a/.travis.yml b/.travis.yml
index f75c493..80555a8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -33,7 +33,7 @@
     - OPENSSL_ia32cap='0x00000000'
     # c-threaderciser test hangs on older clang
     - QPID_PROTON_CMAKE_ARGS='-DENABLE_LINKTIME_OPTIMIZATION=OFF'
-    - QPID_PROTON_CTEST_ARGS="--exclude-regex 'c-threaderciser'"
+    - QPID_PROTON_CTEST_ARGS='--exclude-regex c-threaderciser'
   - name: static libs
     os: linux
     dist: focal
@@ -68,12 +68,12 @@
     os: linux
     dist: focal
     before_install:
-    - sudo apt-get install -y clang-10
+    - sudo apt-get install -y clang-10 llvm-10-dev
     env:
     - CC=clang-10
     - CXX=clang++-10
     - PYTHON=python3
-    - QPID_PROTON_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DENABLE_LINKTIME_OPTIMIZATION=OFF -DENABLE_TOX_TEST=OFF'
+    - QPID_PROTON_CMAKE_ARGS='-DRUNTIME_CHECK=asan -DENABLE_TOX_TEST=OFF'
     # otherwise, on Travis ldd gives `libclang_rt.asan-x86_64.so => not found` and binaries don't work
     - LD_LIBRARY_PATH=/usr/lib/llvm-10/lib/clang/10.0.0/lib/linux/
   - name: gcc tsan
diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt
index b0c3937..17d9423 100644
--- a/c/CMakeLists.txt
+++ b/c/CMakeLists.txt
@@ -397,7 +397,8 @@
 add_dependencies (qpid-proton-core-objects generated_c_files)
 set_target_properties(qpid-proton-core-objects PROPERTIES
   POSITION_INDEPENDENT_CODE ON
-  COMPILE_FLAGS "${LTO}")
+  COMPILE_FLAGS "${LTO}"
+  LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
 target_compile_definitions(qpid-proton-core-objects PRIVATE qpid_proton_core_EXPORTS)
 
 # Can't use target_link_libraries() because cmake 2.8.12 doesn't allow object libraries as the first param
@@ -411,7 +412,8 @@
 set_target_properties(qpid-proton-platform-io-objects PROPERTIES
   POSITION_INDEPENDENT_CODE ON
   C_EXTENSIONS ON
-  COMPILE_FLAGS "${LTO}")
+  COMPILE_FLAGS "${LTO}"
+  LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
 target_compile_definitions(qpid-proton-platform-io-objects PRIVATE qpid_proton_EXPORTS)
 
 target_compile_definitions(qpid-proton-platform-io-objects PRIVATE $<TARGET_PROPERTY:qpid-proton,COMPILE_DEFINITIONS>)
@@ -425,8 +427,7 @@
   VERSION   "${PN_LIB_CORE_VERSION}"
   SOVERSION "${PN_LIB_CORE_MAJOR_VERSION}"
   COMPILE_FLAGS "${LTO}"
-  LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
-)
+  LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
 
 if (BUILD_STATIC_LIBS)
   add_library (qpid-proton-core-static STATIC ${qpid-proton-core-src})
@@ -443,7 +444,8 @@
   add_library (qpid-proton-proactor-objects OBJECT ${qpid-proton-proactor})
   set_target_properties(qpid-proton-proactor-objects PROPERTIES
     POSITION_INDEPENDENT_CODE ON
-  COMPILE_FLAGS "${LTO}")
+    COMPILE_FLAGS "${LTO}"
+    LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
   target_compile_definitions(qpid-proton-proactor-objects PRIVATE qpid_proton_proactor_EXPORTS)
 
   # Can't use target_link_libraries() because cmake 2.8.12 doesn't allow object libraries as the first param
diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt
index 812b0f4..70cc5dc 100644
--- a/c/tests/CMakeLists.txt
+++ b/c/tests/CMakeLists.txt
@@ -44,7 +44,8 @@
   macro(add_c_test exe)
     add_executable(${exe} $<TARGET_OBJECTS:test_main> pn_test.cpp ${ARGN})
     set_target_properties(${exe} PROPERTIES
-      COMPILE_FLAGS "${CXX_STANDARD} ${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS}")
+      COMPILE_FLAGS "${CXX_STANDARD} ${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS} ${LTO}"
+      LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
     pn_add_test(
       EXECUTABLE
       NAME ${exe}