From 91ad0c1bc74ea8a643fb28e9465a721c8bd69f5a Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:36:53 +0900 Subject: [PATCH 1/9] [C++] Increment minimum required CMake version to 3.1.3. This is the minimum version that supports setting C and C++ standards. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d335387dc..f459c39914 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,8 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) -cmake_policy(VERSION 3.0.2) +cmake_minimum_required(VERSION 3.1.3 FATAL_ERROR) +cmake_policy(VERSION 3.1.3) file(STRINGS version.txt SBE_VERSION_TXT LIMIT_COUNT 1 REGEX "^[0-9]+(\\.[0-9]+)+") string(REGEX REPLACE "^([0-9]+(\\.[0-9]+)+).*$" "\\1" SBE_VERSION_NUMERIC "${SBE_VERSION_TXT}") From 9cd79d4e3bba3b276bf610a52a0baf0ca8294624 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:47:26 +0900 Subject: [PATCH 2/9] [C++] Set C++ standard using idiomatic approach. --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f459c39914..abba1a40ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,14 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build" FORCE) endif(NOT CMAKE_BUILD_TYPE) +if(NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 11) +endif() + +if(NOT DEFINED CMAKE_CXX_EXTENSIONS) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() + if(SBE_TESTS) set(SBE_THIRDPARTY_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty") @@ -73,7 +81,7 @@ endif() find_package(Threads) if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fexceptions -g -Wall -Wpedantic -Wextra -Wno-unused-parameter") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -g -Wall -Wpedantic -Wextra -Wno-unused-parameter") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() From 9ff7cf98048e66edd754a2db96b288ed7c9429e6 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:49:29 +0900 Subject: [PATCH 3/9] [C++] Exceptions are enabled by default in C++ compilers. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index abba1a40ee..1f4a75177d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endif() find_package(Threads) if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -g -Wall -Wpedantic -Wextra -Wno-unused-parameter") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wpedantic -Wextra -Wno-unused-parameter") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() From 6f4c423a7e6c66c468bf37d0ba7d55dadb6afdf9 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:51:26 +0900 Subject: [PATCH 4/9] [C++] Use idiomatic methods to set compile options. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f4a75177d..381519d72b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,14 +81,14 @@ endif() find_package(Threads) if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wpedantic -Wextra -Wno-unused-parameter") + add_compile_options(-g -Wall -Wpedantic -Wextra -Wno-unused-parameter) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() if(APPLE) # -Wall doesn't enable everything we want to see - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare") + add_compile_options(-Wsign-compare) add_definitions(-DDarwin) elseif(MSVC) add_definitions(-DWIN32) From 1fdcd5ab2b0d510d97798c348c7d9aea72a261e3 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:52:24 +0900 Subject: [PATCH 5/9] [C++] Do not include debug symbols in Release builds. -g and O0 are automatically set by CMake in Debug builds. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 381519d72b..9f77ab77ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endif() find_package(Threads) if(UNIX) - add_compile_options(-g -Wall -Wpedantic -Wextra -Wno-unused-parameter) + add_compile_options(-Wall -Wpedantic -Wextra -Wno-unused-parameter) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() From 810ab5e94d16aadef2b47056bdda66f0d972da9a Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:53:52 +0900 Subject: [PATCH 6/9] [C++] Do not explicitly set O0 for Debug builds. --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f77ab77ee..096320b1b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,7 +82,6 @@ find_package(Threads) if(UNIX) add_compile_options(-Wall -Wpedantic -Wextra -Wno-unused-parameter) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() From 98d435a9346aa61e28afbe64a8d036b5d695bde6 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:54:43 +0900 Subject: [PATCH 7/9] [C++] Do not set non standard optimizations in Release builds. By default CMake sets O3 for Release builds. --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 096320b1b8..484652d99b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,7 +82,6 @@ find_package(Threads) if(UNIX) add_compile_options(-Wall -Wpedantic -Wextra -Wno-unused-parameter) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") endif() if(APPLE) From a3e53ebe0f178a98efaa6fde3763ef0d3d80e613 Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 18:02:25 +0900 Subject: [PATCH 8/9] [C++] Explicitly list the IR codecs that should be generated. --- sbe-tool/src/main/cpp/CMakeLists.txt | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/sbe-tool/src/main/cpp/CMakeLists.txt b/sbe-tool/src/main/cpp/CMakeLists.txt index c2bfbd68d4..8c56e5c1f9 100644 --- a/sbe-tool/src/main/cpp/CMakeLists.txt +++ b/sbe-tool/src/main/cpp/CMakeLists.txt @@ -14,28 +14,19 @@ # limitations under the License. # -file(GLOB_RECURSE CODECS - "uk_co_real_logic_sbe_ir_generated/*.h" +set(CODECS + uk_co_real_logic_sbe_ir_generated/ByteOrderCodec.h + uk_co_real_logic_sbe_ir_generated/FrameCodec.h + uk_co_real_logic_sbe_ir_generated/MessageHeader.h + uk_co_real_logic_sbe_ir_generated/PresenceCodec.h + uk_co_real_logic_sbe_ir_generated/PrimitiveTypeCodec.h + uk_co_real_logic_sbe_ir_generated/SignalCodec.h + uk_co_real_logic_sbe_ir_generated/TokenCodec.h + uk_co_real_logic_sbe_ir_generated/VarDataEncoding.h ) find_package(Java REQUIRED) -if(NOT(CODECS)) - execute_process( - COMMAND - ${Java_JAVA_EXECUTABLE} - "-Dsbe.output.dir=${CMAKE_CURRENT_SOURCE_DIR}" - "-Dsbe.target.language=CPP" - "-jar" "${SBE_JAR}" - "../resources/sbe-ir.xml" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - ) - - file(GLOB_RECURSE CODECS - "uk_co_real_logic_sbe_ir_generated/*.h" - ) -endif() - add_custom_command(OUTPUT ${CODECS} COMMAND ${Java_JAVA_EXECUTABLE} From b43742fda8c053dc8f22b360d1138a998a57296b Mon Sep 17 00:00:00 2001 From: Deniz Evrenci Date: Fri, 1 Feb 2019 16:03:33 +0900 Subject: [PATCH 9/9] [C++] Remove redundant call to execute_process. We do not need to build sbe-jar at configure time. --- CMakeLists.txt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 484652d99b..52e19d3aba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,15 +104,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/binaries") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib") set(SBE_JAR "${CMAKE_CURRENT_SOURCE_DIR}/sbe-all/build/libs/sbe-all-${SBE_VERSION_TXT}.jar") -if(EXISTS "${SBE_JAR}") - message("latest SBE jar found: ${SBE_JAR}") -else() - message("Generating SBE jar") - execute_process( - COMMAND ./gradlew build -x test -x check -x javadoc :sbe-all:build - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) -endif() file(GLOB_RECURSE SBE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/sbe-tool/src/main/java/*.java"