@@ -25,26 +25,44 @@ project("sbe" VERSION "${SBE_VERSION_NUMERIC}")
25
25
include (ExternalProject)
26
26
include (CheckLibraryExists)
27
27
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 ()
29
41
30
42
# default built type is Release
31
43
if (NOT CMAKE_BUILD_TYPE )
32
44
set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build" FORCE)
33
45
endif (NOT CMAKE_BUILD_TYPE )
34
46
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 ()
48
66
49
67
find_package (Threads)
50
68
@@ -55,16 +73,16 @@ if(UNIX)
55
73
endif ()
56
74
57
75
if (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)
61
79
elseif (MSVC )
62
- add_definitions (-DWIN32)
80
+ add_definitions (-DWIN32)
63
81
64
82
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Od /Zi" )
65
83
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
66
84
else ()
67
- add_definitions (-D_GNU_SOURCE)
85
+ add_definitions (-D_GNU_SOURCE)
68
86
endif ()
69
87
70
88
set (LIBPREFIX "${CMAKE_STATIC_LIBRARY_PREFIX} " )
@@ -75,25 +93,51 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
75
93
76
94
set (SBE_JAR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-all/build/libs/sbe-all-${SBE_VERSION_TXT} .jar" )
77
95
if (EXISTS "${SBE_JAR} " )
78
- message ("latest SBE jar found: ${SBE_JAR} " )
96
+ message ("latest SBE jar found: ${SBE_JAR} " )
79
97
else ()
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
+ )
81
103
endif ()
82
104
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
+
83
120
set (CODEC_TARGET_DIR "${CMAKE_CURRENT_BINARY_DIR} /generated" )
84
121
set (CODEC_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-tool/src/test/resources" )
85
122
set (CODEC_PERF_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-benchmarks/src/main/resources" )
86
123
set (CODEC_EXAMPLES_SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-samples/src/main/resources" )
87
124
88
125
include_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}
92
129
)
93
130
94
131
add_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)
98
132
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