@@ -25,26 +25,44 @@ project("sbe" VERSION "${SBE_VERSION_NUMERIC}")
2525include (ExternalProject)
2626include (CheckLibraryExists)
2727
28- enable_testing ()
28+ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR} )
29+ set (STANDALONE_BUILD TRUE )
30+ endif ()
31+
32+ option (SBE_TESTS "Enable tests" ${STANDALONE_BUILD} )
33+ option (SBE_BUILD_SAMPLES "Enable building the sample projects" ${STANDALONE_BUILD} )
34+ option (SBE_BUILD_BENCHMARKS "Enable building the benchmarks" ${STANDALONE_BUILD} )
35+
36+ unset (STANDALONE_BUILD)
37+
38+ if (SBE_TESTS)
39+ enable_testing ()
40+ endif ()
2941
3042# default built type is Release
3143if (NOT CMAKE_BUILD_TYPE )
3244 set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build" FORCE)
3345endif (NOT CMAKE_BUILD_TYPE )
3446
35- ExternalProject_Add(
36- gtest
37- URL ${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test /lib/gtest-1.7.0.zip
38- URL_MD5 2d6ec8ccdf5c46b05ba54a9fd1d130d7
39- INSTALL_COMMAND ""
40- LOG_CONFIGURE ON
41- LOG_BUILD ON
42- )
43-
44- ExternalProject_Get_Property(gtest source_dir)
45- set (GTEST_SOURCE_DIR ${source_dir} )
46- ExternalProject_Get_Property(gtest binary_dir)
47- set (GTEST_BINARY_DIR ${binary_dir} )
47+ if (SBE_TESTS)
48+ set (SBE_THIRDPARTY_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /thirdparty" )
49+
50+ ExternalProject_Add(
51+ gtest
52+ URL ${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test /lib/gtest-1.7.0.zip
53+ URL_MD5 2d6ec8ccdf5c46b05ba54a9fd1d130d7
54+ PREFIX "${SBE_THIRDPARTY_BINARY_DIR} /gtest"
55+ BUILD_BYPRODUCTS "${SBE_THIRDPARTY_BINARY_DIR} /gtest/src/gtest-build/${CMAKE_CFG_INTDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} gtest${CMAKE_STATIC_LIBRARY_SUFFIX} ;${SBE_THIRDPARTY_BINARY_DIR} /gtest/src/gtest-build/${CMAKE_CFG_INTDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX} "
56+ INSTALL_COMMAND ""
57+ LOG_CONFIGURE ON
58+ LOG_BUILD ON
59+ )
60+
61+ ExternalProject_Get_Property(gtest source_dir)
62+ set (GTEST_SOURCE_DIR ${source_dir} )
63+ ExternalProject_Get_Property(gtest binary_dir)
64+ set (GTEST_BINARY_DIR ${binary_dir} )
65+ endif ()
4866
4967find_package (Threads)
5068
@@ -55,16 +73,16 @@ if(UNIX)
5573endif ()
5674
5775if (APPLE )
58- # -Wall doesn't enable everything we want to see
59- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare" )
60- add_definitions (-DDarwin)
76+ # -Wall doesn't enable everything we want to see
77+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare" )
78+ add_definitions (-DDarwin)
6179elseif (MSVC )
62- add_definitions (-DWIN32)
80+ add_definitions (-DWIN32)
6381
6482 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Od /Zi" )
6583 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
6684else ()
67- add_definitions (-D_GNU_SOURCE)
85+ add_definitions (-D_GNU_SOURCE)
6886endif ()
6987
7088set (LIBPREFIX "${CMAKE_STATIC_LIBRARY_PREFIX} " )
@@ -75,25 +93,51 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
7593
7694set (SBE_JAR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-all/build/libs/sbe-all-${SBE_VERSION_TXT} .jar" )
7795if (EXISTS "${SBE_JAR} " )
78- message ("latest SBE jar found: ${SBE_JAR} " )
96+ message ("latest SBE jar found: ${SBE_JAR} " )
7997else ()
80- message (FATAL_ERROR "could not find latest SBE jar in ${CMAKE_CURRENT_SOURCE_DIR} /sbe-all/build/libs" )
98+ message ("Generating SBE jar" )
99+ execute_process (
100+ COMMAND ./gradlew build -x check -x javadoc --info --stacktrace :sbe-all :build
101+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
102+ )
81103endif ()
82104
105+ file (GLOB_RECURSE SBE_SOURCES
106+ "${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/main/java/*.java"
107+ )
108+
109+ add_custom_command (OUTPUT ${SBE_JAR}
110+ COMMAND ./gradlew build -x check -x javadoc --info --stacktrace :sbe-all :build
111+ DEPENDS ${SBE_SOURCES}
112+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
113+ COMMENT "Generating SBE jar"
114+ )
115+
116+ add_custom_target (sbe-jar
117+ DEPENDS ${SBE_JAR}
118+ )
119+
83120set (CODEC_TARGET_DIR "${CMAKE_CURRENT_BINARY_DIR} /generated" )
84121set (CODEC_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test/resources" )
85122set (CODEC_PERF_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-benchmarks/src/main/resources" )
86123set (CODEC_EXAMPLES_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-samples/src/main/resources" )
87124
88125include_directories (
89- ${GTEST_SOURCE_DIR} /include
90- ${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/main/cpp
91- ${CODEC_TARGET_DIR}
126+ ${GTEST_SOURCE_DIR} /include
127+ ${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/main/cpp
128+ ${CODEC_TARGET_DIR}
92129)
93130
94131add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/main/cpp)
95- add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test /cpp)
96- add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-samples/src/main/cpp)
97- add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-benchmarks/src/main/cpp)
98132
99- add_dependencies (sbe ir_codecs)
133+ if (SBE_TESTS)
134+ add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test /cpp)
135+ endif ()
136+
137+ if (SBE_BUILD_SAMPLES)
138+ add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-samples/src/main/cpp)
139+ endif ()
140+
141+ if (SBE_BUILD_BENCHMARKS)
142+ add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /sbe-benchmarks/src/main/cpp)
143+ endif ()
0 commit comments