-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
54 changed files
with
7,432 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
|
||
macro(group_sources_in source_dir curdir) | ||
file(GLOB children RELATIVE ${source_dir}/${curdir} | ||
${source_dir}/${curdir}/*) | ||
foreach (child ${children}) | ||
if (IS_DIRECTORY ${source_dir}/${curdir}/${child}) | ||
group_sources_in(${source_dir} ${curdir}/${child}) | ||
else() | ||
string(REPLACE "/" "\\" groupname ${curdir}) | ||
source_group(${groupname} FILES | ||
${source_dir}/${curdir}/${child}) | ||
endif() | ||
endforeach() | ||
endmacro() | ||
|
||
macro(group_sources curdir) | ||
group_sources_in(${PROJECT_SOURCE_DIR} ${curdir}) | ||
endmacro() | ||
|
||
macro (exclude_from_default target_) | ||
set_target_properties (${target_} PROPERTIES EXCLUDE_FROM_ALL ON) | ||
set_target_properties (${target_} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD ON) | ||
endmacro () | ||
|
||
macro (exclude_if_included target_) | ||
get_directory_property(has_parent PARENT_DIRECTORY) | ||
if (has_parent) | ||
exclude_from_default (${target_}) | ||
endif () | ||
endmacro () | ||
|
||
function (print_ep_logs _target) | ||
ExternalProject_Get_Property (${_target} STAMP_DIR) | ||
add_custom_command(TARGET ${_target} POST_BUILD | ||
COMMENT "${_target} BUILD OUTPUT" | ||
COMMAND ${CMAKE_COMMAND} | ||
-DIN_FILE=${STAMP_DIR}/${_target}-build-out.log | ||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/echo_file.cmake | ||
COMMAND ${CMAKE_COMMAND} | ||
-DIN_FILE=${STAMP_DIR}/${_target}-build-err.log | ||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/echo_file.cmake) | ||
endfunction () | ||
|
||
#[=========================================================[ | ||
This is a function override for one function in the | ||
standard ExternalProject module. We want to change | ||
the generated build script slightly to include printing | ||
the build logs in the case of failure. Those modifications | ||
have been made here. This function override could break | ||
in the future if the ExternalProject module changes internal | ||
function names or changes the way it generates the build | ||
scripts. | ||
See: | ||
https://gitlab.kitware.com/cmake/cmake/blob/df1ddeec128d68cc636f2dde6c2acd87af5658b6/Modules/ExternalProject.cmake#L1855-1952 | ||
#]=========================================================] | ||
|
||
function(_ep_write_log_script name step cmd_var) | ||
ExternalProject_Get_Property(${name} stamp_dir) | ||
set(command "${${cmd_var}}") | ||
|
||
set(make "") | ||
set(code_cygpath_make "") | ||
if(command MATCHES "^\\$\\(MAKE\\)") | ||
# GNU make recognizes the string "$(MAKE)" as recursive make, so | ||
# ensure that it appears directly in the makefile. | ||
string(REGEX REPLACE "^\\$\\(MAKE\\)" "\${make}" command "${command}") | ||
set(make "-Dmake=$(MAKE)") | ||
|
||
if(WIN32 AND NOT CYGWIN) | ||
set(code_cygpath_make " | ||
if(\${make} MATCHES \"^/\") | ||
execute_process( | ||
COMMAND cygpath -w \${make} | ||
OUTPUT_VARIABLE cygpath_make | ||
ERROR_VARIABLE cygpath_make | ||
RESULT_VARIABLE cygpath_error | ||
OUTPUT_STRIP_TRAILING_WHITESPACE | ||
) | ||
if(NOT cygpath_error) | ||
set(make \${cygpath_make}) | ||
endif() | ||
endif() | ||
") | ||
endif() | ||
endif() | ||
|
||
set(config "") | ||
if("${CMAKE_CFG_INTDIR}" MATCHES "^\\$") | ||
string(REPLACE "${CMAKE_CFG_INTDIR}" "\${config}" command "${command}") | ||
set(config "-Dconfig=${CMAKE_CFG_INTDIR}") | ||
endif() | ||
|
||
# Wrap multiple 'COMMAND' lines up into a second-level wrapper | ||
# script so all output can be sent to one log file. | ||
if(command MATCHES "(^|;)COMMAND;") | ||
set(code_execute_process " | ||
${code_cygpath_make} | ||
execute_process(COMMAND \${command} RESULT_VARIABLE result) | ||
if(result) | ||
set(msg \"Command failed (\${result}):\\n\") | ||
foreach(arg IN LISTS command) | ||
set(msg \"\${msg} '\${arg}'\") | ||
endforeach() | ||
message(FATAL_ERROR \"\${msg}\") | ||
endif() | ||
") | ||
set(code "") | ||
set(cmd "") | ||
set(sep "") | ||
foreach(arg IN LISTS command) | ||
if("x${arg}" STREQUAL "xCOMMAND") | ||
if(NOT "x${cmd}" STREQUAL "x") | ||
string(APPEND code "set(command \"${cmd}\")${code_execute_process}") | ||
endif() | ||
set(cmd "") | ||
set(sep "") | ||
else() | ||
string(APPEND cmd "${sep}${arg}") | ||
set(sep ";") | ||
endif() | ||
endforeach() | ||
string(APPEND code "set(command \"${cmd}\")${code_execute_process}") | ||
file(GENERATE OUTPUT "${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake" CONTENT "${code}") | ||
set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake) | ||
endif() | ||
|
||
# Wrap the command in a script to log output to files. | ||
set(script ${stamp_dir}/${name}-${step}-$<CONFIG>.cmake) | ||
set(logbase ${stamp_dir}/${name}-${step}) | ||
set(code " | ||
${code_cygpath_make} | ||
function (_echo_file _fil) | ||
file (READ \${_fil} _cont) | ||
execute_process (COMMAND \${CMAKE_COMMAND} -E echo \"\${_cont}\") | ||
endfunction () | ||
set(command \"${command}\") | ||
execute_process( | ||
COMMAND \${command} | ||
RESULT_VARIABLE result | ||
OUTPUT_FILE \"${logbase}-out.log\" | ||
ERROR_FILE \"${logbase}-err.log\" | ||
) | ||
if(result) | ||
set(msg \"Command failed: \${result}\\n\") | ||
foreach(arg IN LISTS command) | ||
set(msg \"\${msg} '\${arg}'\") | ||
endforeach() | ||
execute_process (COMMAND \${CMAKE_COMMAND} -E echo \"Build output for ${logbase} : \") | ||
_echo_file (\"${logbase}-out.log\") | ||
_echo_file (\"${logbase}-err.log\") | ||
set(msg \"\${msg}\\nSee above\\n\") | ||
message(FATAL_ERROR \"\${msg}\") | ||
else() | ||
set(msg \"${name} ${step} command succeeded. See also ${logbase}-*.log\") | ||
message(STATUS \"\${msg}\") | ||
endif() | ||
") | ||
file(GENERATE OUTPUT "${script}" CONTENT "${code}") | ||
set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script}) | ||
set(${cmd_var} "${command}" PARENT_SCOPE) | ||
endfunction() | ||
|
||
find_package(Git) | ||
|
||
# function that calls git log to get current hash | ||
function (git_hash hash_val) | ||
# note: optional second extra string argument not in signature | ||
if (NOT GIT_FOUND) | ||
return () | ||
endif () | ||
set (_hash "") | ||
set (_format "%H") | ||
if (ARGC GREATER_EQUAL 2) | ||
string (TOLOWER ${ARGV1} _short) | ||
if (_short STREQUAL "short") | ||
set (_format "%h") | ||
endif () | ||
endif () | ||
execute_process (COMMAND ${GIT_EXECUTABLE} "log" "--pretty=${_format}" "-n1" | ||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||
RESULT_VARIABLE _git_exit_code | ||
OUTPUT_VARIABLE _temp_hash | ||
OUTPUT_STRIP_TRAILING_WHITESPACE | ||
ERROR_QUIET) | ||
if (_git_exit_code EQUAL 0) | ||
set (_hash ${_temp_hash}) | ||
endif () | ||
set (${hash_val} "${_hash}" PARENT_SCOPE) | ||
endfunction () | ||
|
||
function (git_branch branch_val) | ||
if (NOT GIT_FOUND) | ||
return () | ||
endif () | ||
set (_branch "") | ||
execute_process (COMMAND ${GIT_EXECUTABLE} "rev-parse" "--abbrev-ref" "HEAD" | ||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||
RESULT_VARIABLE _git_exit_code | ||
OUTPUT_VARIABLE _temp_branch | ||
OUTPUT_STRIP_TRAILING_WHITESPACE | ||
ERROR_QUIET) | ||
if (_git_exit_code EQUAL 0) | ||
set (_branch ${_temp_branch}) | ||
endif () | ||
set (${branch_val} "${_branch}" PARENT_SCOPE) | ||
endfunction () | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
|
||
#[=========================================================[ | ||
SQLITE doesn't provide build files in the | ||
standard source-only distribution. So we wrote | ||
a simple cmake file and we copy it to the | ||
external project folder so that we can use | ||
this file to build the lib with ExternalProject | ||
#]=========================================================] | ||
|
||
add_library (sqlite3 STATIC sqlite3.c) | ||
#[=========================================================[ | ||
When compiled with SQLITE_THREADSAFE=1, SQLite operates | ||
in serialized mode. In this mode, SQLite can be safely | ||
used by multiple threads with no restriction. | ||
|
||
NOTE: This implies a global mutex! | ||
|
||
When compiled with SQLITE_THREADSAFE=2, SQLite can be | ||
used in a multithreaded program so long as no two | ||
threads attempt to use the same database connection at | ||
the same time. | ||
|
||
NOTE: This is the preferred threading model, but not | ||
currently enabled because we need to investigate our | ||
use-model and concurrency requirements. | ||
|
||
TODO: consider whether any other options should be | ||
used: https://www.sqlite.org/compile.html | ||
#]=========================================================] | ||
|
||
target_compile_definitions (sqlite3 | ||
PRIVATE | ||
SQLITE_THREADSAFE=1 | ||
HAVE_USLEEP=1) | ||
target_compile_options (sqlite3 | ||
PRIVATE | ||
$<$<BOOL:${MSVC}>: | ||
-wd4100 | ||
-wd4127 | ||
-wd4232 | ||
-wd4244 | ||
-wd4701 | ||
-wd4706 | ||
-wd4996 | ||
> | ||
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-array-bounds>) | ||
install ( | ||
TARGETS | ||
sqlite3 | ||
LIBRARY DESTINATION lib | ||
ARCHIVE DESTINATION lib | ||
RUNTIME DESTINATION bin | ||
INCLUDES DESTINATION include) | ||
install ( | ||
FILES | ||
sqlite3.h | ||
sqlite3ext.h | ||
DESTINATION include) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
set (RocksDB_DIR "" CACHE PATH "Root directory of RocksDB distribution") | ||
|
||
find_path (RocksDB_INCLUDE_DIR | ||
rocksdb/db.h | ||
PATHS ${RocksDB_DIR}) | ||
|
||
set (RocksDB_VERSION "") | ||
find_file (RocksDB_VERSION_FILE | ||
rocksdb/version.h | ||
PATHS ${RocksDB_DIR}) | ||
if (RocksDB_VERSION_FILE) | ||
file (READ ${RocksDB_VERSION_FILE} _verfile) | ||
if ("${_verfile}" MATCHES "#define[ \\t]+ROCKSDB_MAJOR[ \\t]+([0-9]+)") | ||
string (APPEND RocksDB_VERSION "${CMAKE_MATCH_1}") | ||
else () | ||
string (APPEND RocksDB_VERSION "0") | ||
endif() | ||
if ("${_verfile}" MATCHES "#define[ \\t]+ROCKSDB_MINOR[ \\t]+([0-9]+)") | ||
string (APPEND RocksDB_VERSION ".${CMAKE_MATCH_1}") | ||
else () | ||
string (APPEND RocksDB_VERSION ".0") | ||
endif() | ||
if ("${_verfile}" MATCHES "#define[ \\t]+ROCKSDB_PATCH[ \\t]+([0-9]+)") | ||
string (APPEND RocksDB_VERSION ".${CMAKE_MATCH_1}") | ||
else () | ||
string (APPEND RocksDB_VERSION ".0") | ||
endif() | ||
endif () | ||
|
||
if (RocksDB_USE_STATIC) | ||
list (APPEND RocksDB_NAMES | ||
"${CMAKE_STATIC_LIBRARY_PREFIX}rocksdb${CMAKE_STATIC_LIBRARY_SUFFIX}" | ||
"${CMAKE_STATIC_LIBRARY_PREFIX}rocksdblib${CMAKE_STATIC_LIBRARY_SUFFIX}") | ||
endif () | ||
|
||
list (APPEND RocksDB_NAMES rocksdb) | ||
|
||
find_library (RocksDB_LIBRARY NAMES ${RocksDB_NAMES} | ||
PATHS | ||
${RocksDB_DIR} | ||
${RocksDB_DIR}/bin/Release | ||
${RocksDB_DIR}/bin64_vs2013/Release | ||
PATH_SUFFIXES lib lib64) | ||
|
||
foreach (_n RocksDB_NAMES) | ||
list (APPEND RocksDB_NAMES_DBG "${_n}_d" "${_n}d") | ||
endforeach () | ||
find_library (RocksDB_LIBRARY_DEBUG NAMES ${RocksDB_NAMES_DBG} | ||
PATHS | ||
${RocksDB_DIR} | ||
${RocksDB_DIR}/bin/Debug | ||
${RocksDB_DIR}/bin64_vs2013/Debug | ||
PATH_SUFFIXES lib lib64) | ||
|
||
include (FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args (RocksDB | ||
REQUIRED_VARS RocksDB_LIBRARY RocksDB_INCLUDE_DIR | ||
VERSION_VAR RocksDB_VERSION) | ||
|
||
mark_as_advanced (RocksDB_INCLUDE_DIR RocksDB_LIBRARY) | ||
set (RocksDB_INCLUDE_DIRS ${RocksDB_INCLUDE_DIR}) | ||
set (RocksDB_LIBRARIES ${RocksDB_LIBRARY}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
|
||
These are modules and sources that support our CMake build. | ||
|
||
== FindBoost.cmake == | ||
|
||
In order to facilitate updating to latest releases of boost, we've made a local | ||
copy of the FindBoost cmake module in our repo. The latest official version can | ||
generally be obtained | ||
[here](https://github.com/Kitware/CMake/blob/master/Modules/FindBoost.cmake). | ||
|
||
The latest version provided by Kitware can be tailored for use with the | ||
version of CMake that it ships with (typically the next upcoming CMake | ||
release). As such, the latest version from the repository might not work | ||
perfectly with older versions of CMake - for instance, the latest version | ||
might use features or properties only available in the version of CMake that | ||
it ships with. Given this, it's best to test any updates to this module with a few | ||
different versions of cmake. | ||
|
Oops, something went wrong.