From ee02378588eedfd287138954d2d1b838c0e548d3 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Wed, 30 Jan 2019 22:16:42 +0900 Subject: [PATCH 1/5] [C++] Fix build byproducts for Google Test. 63ff0a0eef has the wrong paths set for the libraries. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e1e6b1f4e0..22f2d3d11d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ if(SBE_TESTS) URL ${CMAKE_CURRENT_SOURCE_DIR}/cppbuild/googletest-release-1.8.0.zip URL_MD5 adfafc8512ab65fd3cf7955ef0100ff5 PREFIX "${SBE_THIRDPARTY_BINARY_DIR}/gtest" - BUILD_BYPRODUCTS "${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX};${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}" + BUILD_BYPRODUCTS "${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX};${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}" INSTALL_COMMAND "" LOG_CONFIGURE ON LOG_BUILD ON From 435d9ff603900fe5fd741efb432efa2fae21fa5e Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Wed, 30 Jan 2019 22:20:11 +0900 Subject: [PATCH 2/5] [C++] Pass C and C++ compilers to subprojects. If a compiler set different from CC and CXX is used to build SBE and tests are enabled by using CMAKE_C_COMPILER and CMAKE_CXX_COMPILER, SBE source and the tests are built using different compilers. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22f2d3d11d..8e85af0833 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ if(SBE_TESTS) URL ${CMAKE_CURRENT_SOURCE_DIR}/cppbuild/googletest-release-1.8.0.zip URL_MD5 adfafc8512ab65fd3cf7955ef0100ff5 PREFIX "${SBE_THIRDPARTY_BINARY_DIR}/gtest" + CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER};-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} BUILD_BYPRODUCTS "${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX};${SBE_THIRDPARTY_BINARY_DIR}/gtest/src/gtest-build/googlemock/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}" INSTALL_COMMAND "" LOG_CONFIGURE ON From f5607f368043010d8f6e917d4c3e20cf3e3a1aad Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Wed, 16 Jan 2019 17:24:21 +0900 Subject: [PATCH 3/5] [C++] Use target_include_directories instead of global declaration. --- CMakeLists.txt | 3 --- sbe-benchmarks/src/main/cpp/CMakeLists.txt | 2 ++ sbe-samples/src/main/cpp/CMakeLists.txt | 2 ++ sbe-tool/src/test/cpp/CMakeLists.txt | 4 ++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e85af0833..93c588bc96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,10 +129,7 @@ set(CODEC_PERF_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-benchmarks/src/main/r set(CODEC_EXAMPLES_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-samples/src/main/resources") include_directories( - ${GTEST_SOURCE_DIR}/googletest/include - ${GTEST_SOURCE_DIR}/googlemock/include ${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/main/cpp - ${CODEC_TARGET_DIR} ) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/main/cpp) diff --git a/sbe-benchmarks/src/main/cpp/CMakeLists.txt b/sbe-benchmarks/src/main/cpp/CMakeLists.txt index 4a02883d6b..9bf8e8d0d2 100644 --- a/sbe-benchmarks/src/main/cpp/CMakeLists.txt +++ b/sbe-benchmarks/src/main/cpp/CMakeLists.txt @@ -44,7 +44,9 @@ add_custom_command( add_custom_target(perf_codecs DEPENDS ${GENERATED_CODECS}) add_executable(benchlet-sbe-car-runner ${SRCS_BENCHLET_MAIN} CarBench.cpp) +target_include_directories(benchlet-sbe-car-runner PRIVATE ${CODEC_TARGET_DIR}) add_executable(benchlet-sbe-md-runner ${SRCS_BENCHLET_MAIN} MarketDataBench.cpp) +target_include_directories(benchlet-sbe-md-runner PRIVATE ${CODEC_TARGET_DIR}) add_dependencies(benchlet-sbe-md-runner perf_codecs) add_dependencies(benchlet-sbe-car-runner perf_codecs) diff --git a/sbe-samples/src/main/cpp/CMakeLists.txt b/sbe-samples/src/main/cpp/CMakeLists.txt index 096b7befbc..c429487fe5 100644 --- a/sbe-samples/src/main/cpp/CMakeLists.txt +++ b/sbe-samples/src/main/cpp/CMakeLists.txt @@ -31,7 +31,9 @@ add_custom_command( add_custom_target(examples_codecs DEPENDS ${GENERATED_CODECS}) add_executable(GeneratedStubExample GeneratedStubExample.cpp) +target_include_directories(GeneratedStubExample PRIVATE ${CODEC_TARGET_DIR}) add_executable(OtfExample OtfExample.cpp) +target_include_directories(OtfExample PRIVATE ${CODEC_TARGET_DIR}) target_link_libraries(OtfExample sbe) add_dependencies(GeneratedStubExample examples_codecs) diff --git a/sbe-tool/src/test/cpp/CMakeLists.txt b/sbe-tool/src/test/cpp/CMakeLists.txt index 9221e401f4..4f7446c9db 100644 --- a/sbe-tool/src/test/cpp/CMakeLists.txt +++ b/sbe-tool/src/test/cpp/CMakeLists.txt @@ -16,6 +16,10 @@ function(sbe_test name) add_executable("${name}" "${name}.cpp") + target_include_directories("${name}" + PRIVATE ${GTEST_SOURCE_DIR}/googletest/include + PRIVATE ${CODEC_TARGET_DIR} + ) target_link_libraries("${name}" sbe ${GTEST_LIBS} ${CMAKE_THREAD_LIBS_INIT}) add_test(NAME ${name} COMMAND ${name} WORKING_DIRECTORY ${CODEC_TARGET_DIR}) add_dependencies(${name} gtest) From cd76a3ca5df15a09ba2ba3473db9ae190e682d3f Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Wed, 16 Jan 2019 17:30:33 +0900 Subject: [PATCH 4/5] [C++] Use target include directories for the sbe library. --- CMakeLists.txt | 4 ---- sbe-benchmarks/src/main/cpp/CMakeLists.txt | 2 ++ sbe-samples/src/main/cpp/CMakeLists.txt | 1 + sbe-tool/src/main/cpp/CMakeLists.txt | 1 + 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 93c588bc96..5d335387dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,10 +128,6 @@ set(CODEC_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/test/resources") set(CODEC_PERF_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-benchmarks/src/main/resources") set(CODEC_EXAMPLES_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-samples/src/main/resources") -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/main/cpp -) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/main/cpp) if(SBE_TESTS) diff --git a/sbe-benchmarks/src/main/cpp/CMakeLists.txt b/sbe-benchmarks/src/main/cpp/CMakeLists.txt index 9bf8e8d0d2..03e300c4c1 100644 --- a/sbe-benchmarks/src/main/cpp/CMakeLists.txt +++ b/sbe-benchmarks/src/main/cpp/CMakeLists.txt @@ -45,8 +45,10 @@ add_custom_target(perf_codecs DEPENDS ${GENERATED_CODECS}) add_executable(benchlet-sbe-car-runner ${SRCS_BENCHLET_MAIN} CarBench.cpp) target_include_directories(benchlet-sbe-car-runner PRIVATE ${CODEC_TARGET_DIR}) +target_link_libraries(benchlet-sbe-car-runner sbe) add_executable(benchlet-sbe-md-runner ${SRCS_BENCHLET_MAIN} MarketDataBench.cpp) target_include_directories(benchlet-sbe-md-runner PRIVATE ${CODEC_TARGET_DIR}) +target_link_libraries(benchlet-sbe-md-runner sbe) add_dependencies(benchlet-sbe-md-runner perf_codecs) add_dependencies(benchlet-sbe-car-runner perf_codecs) diff --git a/sbe-samples/src/main/cpp/CMakeLists.txt b/sbe-samples/src/main/cpp/CMakeLists.txt index c429487fe5..d639c9546b 100644 --- a/sbe-samples/src/main/cpp/CMakeLists.txt +++ b/sbe-samples/src/main/cpp/CMakeLists.txt @@ -32,6 +32,7 @@ add_custom_target(examples_codecs DEPENDS ${GENERATED_CODECS}) add_executable(GeneratedStubExample GeneratedStubExample.cpp) target_include_directories(GeneratedStubExample PRIVATE ${CODEC_TARGET_DIR}) +target_link_libraries(GeneratedStubExample sbe) add_executable(OtfExample OtfExample.cpp) target_include_directories(OtfExample PRIVATE ${CODEC_TARGET_DIR}) target_link_libraries(OtfExample sbe) diff --git a/sbe-tool/src/main/cpp/CMakeLists.txt b/sbe-tool/src/main/cpp/CMakeLists.txt index acdd19e9bb..d1b0eac69c 100644 --- a/sbe-tool/src/main/cpp/CMakeLists.txt +++ b/sbe-tool/src/main/cpp/CMakeLists.txt @@ -63,5 +63,6 @@ set(HEADERS ) add_library(sbe STATIC ${HEADERS} dummy.cpp) +target_include_directories(sbe PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) add_dependencies(sbe ir_codecs) From 28025368f8ebd5284e1e56aa5dbee381d6aac08e Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Wed, 16 Jan 2019 17:32:33 +0900 Subject: [PATCH 5/5] [C++] Make SBE an interface library. --- sbe-tool/src/main/cpp/CMakeLists.txt | 4 ++-- sbe-tool/src/main/cpp/dummy.cpp | 23 ----------------------- 2 files changed, 2 insertions(+), 25 deletions(-) delete mode 100644 sbe-tool/src/main/cpp/dummy.cpp diff --git a/sbe-tool/src/main/cpp/CMakeLists.txt b/sbe-tool/src/main/cpp/CMakeLists.txt index d1b0eac69c..c2bfbd68d4 100644 --- a/sbe-tool/src/main/cpp/CMakeLists.txt +++ b/sbe-tool/src/main/cpp/CMakeLists.txt @@ -62,7 +62,7 @@ set(HEADERS otf/OtfHeaderDecoder.h ) -add_library(sbe STATIC ${HEADERS} dummy.cpp) -target_include_directories(sbe PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +add_library(sbe INTERFACE) +target_include_directories(sbe INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) add_dependencies(sbe ir_codecs) diff --git a/sbe-tool/src/main/cpp/dummy.cpp b/sbe-tool/src/main/cpp/dummy.cpp deleted file mode 100644 index 99a68b2a5f..0000000000 --- a/sbe-tool/src/main/cpp/dummy.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2013-2019 Real Logic Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "otf/IrDecoder.h" -#include "otf/OtfHeaderDecoder.h" -#include "otf/OtfMessageDecoder.h" -#include "sbe/sbe.h" - -/* - * File to make CMake happier about the header only dependencies for the OTF and sbe header. - */ \ No newline at end of file