osquery-1/osquery/CMakeLists.txt

362 lines
13 KiB
CMake
Raw Normal View History

# The 'core' source files define the osquery SDK (libosquery).
# There are macros throughout CMake to append sources to this list.
set(OSQUERY_SOURCES "")
# A separate list of library links (and linking options) is maintained for
# the 'core' set of sources.
set(OSQUERY_LINKS "")
# Finally a set of 'core' tests and kernel-tests, and benchmark tests, is kept.
2015-04-27 09:12:58 +00:00
set(OSQUERY_TESTS "")
2015-06-30 21:20:04 +00:00
set(OSQUERY_KERNEL_TESTS "")
2015-07-23 23:42:46 +00:00
set(OSQUERY_BENCHMARKS "")
set(OSQUERY_KERNEL_BENCHMARKS "")
# The 'additional' source files are NOT included with SDK (libosquery_additional).
set(OSQUERY_ADDITIONAL_SOURCES "")
set(OSQUERY_ADDITIONAL_LINKS "")
2015-04-27 09:12:58 +00:00
set(OSQUERY_ADDITIONAL_TESTS "")
set(OSQUERY_TABLES_TESTS "")
2014-11-09 00:55:19 +00:00
# Add all and extra for osquery code.
if(WINDOWS)
add_compile_options(/W3 /WX)
Initial support for building on Windows (#2015) * Committing changes related to our experimentation with a "pure" Win64 build * Placates CMake such that a Visual Studio 14 x64 solution is generated! * Updated changes to fix the issue of GFlags not being found. * Added cases to handle Win64 specific CMake options such as include/link directories and compiler options * Comment change in CMakeList.txt * Changed wording of get_platform error message. Adding Powershell provisioning script. * Finalized provision powershell script * Added a deployment XML file for insuring C++ support exists for VS2015 * Added admin check and resolved some potential PATH issues. * Fixed some potential bugs in VS2015 automated install * Adding a wrapper for provision.ps1 so people don't need to know obscure powershell syntax * Fixing a bug with third-party archive extraction * Ignoring the updating of pip for now... * Fix invocation of choco.exe * Resolved pip install issues * Removed some debugging residue * Changing get_platform.py from tabs to spaces * Added distro detection for ubuntu and darwin * Using 4 spaces * Added a newline after powershell invocation * Added OS detection for freebsd and fedora * Fixed bug with freebsd * Adding arguments parsing to prepare for modularizing platform detection * Removing bash platform detection logic and forwarding the task to get_platform.py * Removing get_platform support in provision.sh since it doesn't appear to be used anywhere now * Fixed some comment/spacing issues. Made a few efficiency changes * A few bug fixes, revereted back to WIN32 variable for now * Added Facebook copyright information. * Fixed boost and rocksdb library paths * Added support for installing our custom chocolatey packages * Fixed path to ignore the symlink * Force environment variable propagation * Forgot to add new line after make-win64-dev-env.bat * Added error handling for choco install failures * Handles download and python/pip errors * When chocolatey is not detected, refreshenv.bat is not found in the PATH. Hardcode the PATH as per chocolatey install instructions * Takes care of updating git submodules in third-party\ * Fixes a bug in which Linux provisioning fails because of unset FAMILY env var.
2016-04-15 21:01:16 +00:00
else()
add_compile_options(-Wall -Wextra -Wno-unused-parameter)
Initial support for building on Windows (#2015) * Committing changes related to our experimentation with a "pure" Win64 build * Placates CMake such that a Visual Studio 14 x64 solution is generated! * Updated changes to fix the issue of GFlags not being found. * Added cases to handle Win64 specific CMake options such as include/link directories and compiler options * Comment change in CMakeList.txt * Changed wording of get_platform error message. Adding Powershell provisioning script. * Finalized provision powershell script * Added a deployment XML file for insuring C++ support exists for VS2015 * Added admin check and resolved some potential PATH issues. * Fixed some potential bugs in VS2015 automated install * Adding a wrapper for provision.ps1 so people don't need to know obscure powershell syntax * Fixing a bug with third-party archive extraction * Ignoring the updating of pip for now... * Fix invocation of choco.exe * Resolved pip install issues * Removed some debugging residue * Changing get_platform.py from tabs to spaces * Added distro detection for ubuntu and darwin * Using 4 spaces * Added a newline after powershell invocation * Added OS detection for freebsd and fedora * Fixed bug with freebsd * Adding arguments parsing to prepare for modularizing platform detection * Removing bash platform detection logic and forwarding the task to get_platform.py * Removing get_platform support in provision.sh since it doesn't appear to be used anywhere now * Fixed some comment/spacing issues. Made a few efficiency changes * A few bug fixes, revereted back to WIN32 variable for now * Added Facebook copyright information. * Fixed boost and rocksdb library paths * Added support for installing our custom chocolatey packages * Fixed path to ignore the symlink * Force environment variable propagation * Forgot to add new line after make-win64-dev-env.bat * Added error handling for choco install failures * Handles download and python/pip errors * When chocolatey is not detected, refreshenv.bat is not found in the PATH. Hardcode the PATH as per chocolatey install instructions * Takes care of updating git submodules in third-party\ * Fixes a bug in which Linux provisioning fails because of unset FAMILY env var.
2016-04-15 21:01:16 +00:00
endif()
if(WINDOWS)
2016-07-31 18:32:31 +00:00
ADD_OSQUERY_LINK_CORE("netapi32.lib")
ADD_OSQUERY_LINK_CORE("rpcrt4.lib")
ADD_OSQUERY_LINK_CORE("shlwapi.lib")
ADD_OSQUERY_LINK_CORE("wbemuuid.lib")
ADD_OSQUERY_LINK_CORE("linenoise.lib")
ADD_OSQUERY_LINK_CORE("libboost_system-vc140-mt-s-1_59")
ADD_OSQUERY_LINK_CORE("libboost_regex-vc140-mt-s-1_59")
ADD_OSQUERY_LINK_CORE("libboost_filesystem-vc140-mt-s-1_59")
ADD_OSQUERY_LINK_CORE("rocksdblib")
ADD_OSQUERY_LINK_CORE("snappy64")
ADD_OSQUERY_LINK_CORE("gflags_static")
ADD_OSQUERY_LINK_CORE("thriftmd")
ADD_OSQUERY_LINK_CORE("glog_static")
2016-08-31 23:45:06 +00:00
ADD_OSQUERY_LINK_CORE("ssleay32")
ADD_OSQUERY_LINK_CORE("eay32")
ADD_OSQUERY_LINK_CORE("zlibstatic")
else()
2016-07-31 18:32:31 +00:00
ADD_OSQUERY_LINK_CORE("libpthread")
ADD_OSQUERY_LINK_CORE("libz")
ADD_OSQUERY_LINK_CORE("boost_system-mt")
ADD_OSQUERY_LINK_CORE("boost_filesystem-mt")
ADD_OSQUERY_LINK_CORE("boost_regex-mt")
ADD_OSQUERY_LINK_CORE("rocksdb_lite")
ADD_OSQUERY_LINK_CORE("snappy")
ADD_OSQUERY_LINK_CORE("gflags")
ADD_OSQUERY_LINK_CORE("thrift")
ADD_OSQUERY_LINK_CORE("lz4")
ADD_OSQUERY_LINK_CORE("glog")
endif()
if(APPLE OR LINUX)
2016-07-31 18:32:31 +00:00
ADD_OSQUERY_LINK_CORE("libdl")
elseif(FREEBSD)
ADD_OSQUERY_LINK_CORE("icuuc")
2015-05-05 20:55:49 +00:00
endif()
2016-07-31 18:32:31 +00:00
if(LINUX OR FREEBSD)
ADD_OSQUERY_LINK_CORE("librt")
ADD_OSQUERY_LINK_CORE("libc")
2016-03-15 02:51:03 +00:00
endif()
# Remaining additional development libraries.
ADD_OSQUERY_LINK_ADDITIONAL("cppnetlib-uri")
ADD_OSQUERY_LINK_ADDITIONAL("cppnetlib-client-connections")
Initial support for building on Windows (#2015) * Committing changes related to our experimentation with a "pure" Win64 build * Placates CMake such that a Visual Studio 14 x64 solution is generated! * Updated changes to fix the issue of GFlags not being found. * Added cases to handle Win64 specific CMake options such as include/link directories and compiler options * Comment change in CMakeList.txt * Changed wording of get_platform error message. Adding Powershell provisioning script. * Finalized provision powershell script * Added a deployment XML file for insuring C++ support exists for VS2015 * Added admin check and resolved some potential PATH issues. * Fixed some potential bugs in VS2015 automated install * Adding a wrapper for provision.ps1 so people don't need to know obscure powershell syntax * Fixing a bug with third-party archive extraction * Ignoring the updating of pip for now... * Fix invocation of choco.exe * Resolved pip install issues * Removed some debugging residue * Changing get_platform.py from tabs to spaces * Added distro detection for ubuntu and darwin * Using 4 spaces * Added a newline after powershell invocation * Added OS detection for freebsd and fedora * Fixed bug with freebsd * Adding arguments parsing to prepare for modularizing platform detection * Removing bash platform detection logic and forwarding the task to get_platform.py * Removing get_platform support in provision.sh since it doesn't appear to be used anywhere now * Fixed some comment/spacing issues. Made a few efficiency changes * A few bug fixes, revereted back to WIN32 variable for now * Added Facebook copyright information. * Fixed boost and rocksdb library paths * Added support for installing our custom chocolatey packages * Fixed path to ignore the symlink * Force environment variable propagation * Forgot to add new line after make-win64-dev-env.bat * Added error handling for choco install failures * Handles download and python/pip errors * When chocolatey is not detected, refreshenv.bat is not found in the PATH. Hardcode the PATH as per chocolatey install instructions * Takes care of updating git submodules in third-party\ * Fixes a bug in which Linux provisioning fails because of unset FAMILY env var.
2016-04-15 21:01:16 +00:00
2016-08-31 23:45:06 +00:00
if(NOT WINDOWS)
ADD_OSQUERY_LINK_ADDITIONAL("ssl")
2016-07-31 18:32:31 +00:00
ADD_OSQUERY_LINK_ADDITIONAL("yara")
ADD_OSQUERY_LINK_ADDITIONAL("linenoise")
ADD_OSQUERY_LINK_ADDITIONAL("crypto")
ADD_OSQUERY_LINK_CORE("crypto")
Initial support for building on Windows (#2015) * Committing changes related to our experimentation with a "pure" Win64 build * Placates CMake such that a Visual Studio 14 x64 solution is generated! * Updated changes to fix the issue of GFlags not being found. * Added cases to handle Win64 specific CMake options such as include/link directories and compiler options * Comment change in CMakeList.txt * Changed wording of get_platform error message. Adding Powershell provisioning script. * Finalized provision powershell script * Added a deployment XML file for insuring C++ support exists for VS2015 * Added admin check and resolved some potential PATH issues. * Fixed some potential bugs in VS2015 automated install * Adding a wrapper for provision.ps1 so people don't need to know obscure powershell syntax * Fixing a bug with third-party archive extraction * Ignoring the updating of pip for now... * Fix invocation of choco.exe * Resolved pip install issues * Removed some debugging residue * Changing get_platform.py from tabs to spaces * Added distro detection for ubuntu and darwin * Using 4 spaces * Added a newline after powershell invocation * Added OS detection for freebsd and fedora * Fixed bug with freebsd * Adding arguments parsing to prepare for modularizing platform detection * Removing bash platform detection logic and forwarding the task to get_platform.py * Removing get_platform support in provision.sh since it doesn't appear to be used anywhere now * Fixed some comment/spacing issues. Made a few efficiency changes * A few bug fixes, revereted back to WIN32 variable for now * Added Facebook copyright information. * Fixed boost and rocksdb library paths * Added support for installing our custom chocolatey packages * Fixed path to ignore the symlink * Force environment variable propagation * Forgot to add new line after make-win64-dev-env.bat * Added error handling for choco install failures * Handles download and python/pip errors * When chocolatey is not detected, refreshenv.bat is not found in the PATH. Hardcode the PATH as per chocolatey install instructions * Takes care of updating git submodules in third-party\ * Fixes a bug in which Linux provisioning fails because of unset FAMILY env var.
2016-04-15 21:01:16 +00:00
endif()
2014-11-09 00:55:19 +00:00
2016-07-31 18:32:31 +00:00
if(APPLE)
ADD_OSQUERY_LINK_CORE("liblzma libbz2")
else()
if(NOT WINDOWS)
ADD_OSQUERY_LINK_CORE("lzma")
endif()
ADD_OSQUERY_LINK_CORE("bz2")
2016-07-31 18:32:31 +00:00
ADD_OSQUERY_LINK_ADDITIONAL("bz2")
endif()
# The platform-specific SDK + core linker flags.
if(NOT WINDOWS)
ADD_OSQUERY_LINK_CORE("-rdynamic")
endif()
2016-07-31 18:32:31 +00:00
if(APPLE)
ADD_OSQUERY_LINK_CORE("-Wl,-dead_strip")
ADD_OSQUERY_LINK_CORE("-mmacosx-version-min=${OSX_VERSION_MIN}")
elseif(LINUX OR FREEBSD)
ADD_OSQUERY_LINK_CORE("-Wl,-zrelro -Wl,-znow")
2016-07-31 18:32:31 +00:00
if(NOT ${REDHAT_BASED})
ADD_OSQUERY_LINK_CORE("-Wl,--gc-sections")
endif()
if(NOT DEFINED ENV{SANITIZE} AND NOT DEFINED ENV{DEBUG})
ADD_OSQUERY_LINK_CORE("-pie")
endif()
2016-07-31 18:32:31 +00:00
endif()
if(LINUX)
ADD_OSQUERY_LINK_CORE("libgcc_s")
2016-07-31 18:32:31 +00:00
if(DEFINED ENV{OSQUERY_BUILD_SHARED})
ADD_OSQUERY_LINK_ADDITIONAL("-L${BUILD_DEPS}/legacy/lib")
2016-07-31 18:32:31 +00:00
endif()
if(NOT DEFINED ENV{OSQUERY_BUILD_LINK_SHARED})
ADD_OSQUERY_LINK_CORE("-static-libstdc++")
ADD_OSQUERY_LINK_ADDITIONAL("-static-libstdc++")
endif()
# For Ubuntu/CentOS packages add the build SHA1.
ADD_OSQUERY_LINK_CORE("-Wl,--build-id")
endif()
2015-05-04 03:02:01 +00:00
if(DEFINED ENV{SANITIZE})
if(DEFINED ENV{SANITIZE_THREAD})
ADD_OSQUERY_LINK_CORE(-fsanitize=thread)
2015-05-04 03:02:01 +00:00
else()
ADD_OSQUERY_LINK_CORE(-fsanitize=address -fsanitize=leak)
2015-05-04 03:02:01 +00:00
endif()
ADD_OSQUERY_LINK_CORE(-fsanitize-blacklist=${SANITIZE_BLACKLIST})
2015-05-04 03:02:01 +00:00
endif()
# Construct a set of all object files, starting with third-party and all
# of the osquery core objects (sources from ADD_CORE_LIBRARY macros).
2014-12-28 06:42:59 +00:00
set(OSQUERY_OBJECTS $<TARGET_OBJECTS:osquery_sqlite>)
# Add subdirectories
2014-12-28 06:42:59 +00:00
add_subdirectory(config)
add_subdirectory(core)
add_subdirectory(database)
add_subdirectory(devtools)
add_subdirectory(dispatcher)
add_subdirectory(distributed)
2014-12-28 06:42:59 +00:00
add_subdirectory(events)
2015-02-04 03:55:16 +00:00
add_subdirectory(extensions)
2014-12-28 06:42:59 +00:00
add_subdirectory(filesystem)
add_subdirectory(logger)
2015-01-30 18:44:25 +00:00
add_subdirectory(registry)
2015-02-03 05:21:36 +00:00
add_subdirectory(sql)
add_subdirectory(remote)
2016-07-31 18:32:31 +00:00
if(NOT DEFINED ENV{SKIP_TABLES})
2015-05-24 01:52:42 +00:00
add_subdirectory(tables)
2016-07-31 18:32:31 +00:00
# Amalgamate the utility tables needed to compile.
GENERATE_UTILITIES("${CMAKE_SOURCE_DIR}")
AMALGAMATE("${CMAKE_SOURCE_DIR}" "utils" AMALGAMATION_UTILS)
ADD_OSQUERY_LIBRARY_CORE(osquery_amalgamation ${AMALGAMATION_UTILS})
endif()
2015-04-27 09:12:58 +00:00
# Bubble the subdirectory (component) sources and links for this build.
list(APPEND OSQUERY_OBJECTS ${OSQUERY_SOURCES})
list(APPEND OSQUERY_LIBS ${OSQUERY_LINKS})
2014-11-09 00:55:19 +00:00
set(CMAKE_MACOSX_RPATH 0)
2015-05-04 03:02:01 +00:00
set(CMAKE_SKIP_RPATH TRUE)
# A final map from CMake build platform to a enum using for runtime detection.
# The goal is to provide a minimum set of compile code paths.
# See ./include/core.h for the enum class.
# POSIX = 0x01
# WINDOWS = 0x02
# BSD = 0x04
# LINUX = 0x08 && POSIX
# OS X = 0x10 && BSD && POSIX
# FREEBSD = 0x20 && BSD && POSIX
if(WINDOWS)
math(EXPR PLATFORM_MASK "2")
elseif(LINUX)
math(EXPR PLATFORM_MASK "1 + 8")
elseif(APPLE)
math(EXPR PLATFORM_MASK "1 + 4 + 16")
elseif(FREEBSD)
math(EXPR PLATFORM_MASK "1 + 4 + 32")
endif()
# Create the static libosquery (everything but non-utility tables).
set(OSQUERY_LIBRARY_FLAGS
-DOSQUERY_BUILD_VERSION=${OSQUERY_BUILD_VERSION}
-DOSQUERY_PLATFORM_MASK=${PLATFORM_MASK}
${CXX_COMPILE_FLAGS}
)
join("${OSQUERY_LIBRARY_FLAGS}" " " OSQUERY_LIBRARY_FLAGS)
2015-02-03 05:21:36 +00:00
add_library(libosquery STATIC main/lib.cpp ${OSQUERY_OBJECTS})
target_link_libraries(libosquery ${OSQUERY_LIBS})
set_target_properties(libosquery PROPERTIES OUTPUT_NAME osquery)
set_target_properties(libosquery PROPERTIES COMPILE_FLAGS "${OSQUERY_LIBRARY_FLAGS}")
2014-09-06 01:12:37 +00:00
2016-07-31 18:32:31 +00:00
# Create the dynamic libosquery.
if(DEFINED ENV{OSQUERY_BUILD_SHARED})
add_library(libosquery_shared SHARED main/lib.cpp ${OSQUERY_OBJECTS})
target_link_libraries(libosquery_shared ${OSQUERY_LIBS})
set_target_properties(libosquery_shared PROPERTIES COMPILE_FLAGS "${OSQUERY_LIBRARY_FLAGS}")
2016-07-31 18:32:31 +00:00
set_target_properties(libosquery_shared PROPERTIES OUTPUT_NAME osquery)
endif()
2015-04-27 09:12:58 +00:00
# A friendly echo printed after the library is built.
add_custom_target(osquery_library ALL
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan --bold
"-- Built libosquery: $<TARGET_FILE:libosquery>"
DEPENDS libosquery
2015-02-26 22:10:39 +00:00
)
2015-02-03 05:21:36 +00:00
# make devel (implies install)
2015-01-08 23:53:51 +00:00
add_custom_target(devel
COMMAND ${CMAKE_COMMAND} -D COMPONENT=devel -P cmake_install.cmake
DEPENDS libosquery_basic
2015-01-08 23:53:51 +00:00
)
2015-02-03 05:21:36 +00:00
add_dependencies(devel libosquery)
2015-01-08 23:53:51 +00:00
if(NOT ${OSQUERY_BUILD_SDK_ONLY})
2016-07-31 18:32:31 +00:00
if(NOT DEFINED ENV{SKIP_TABLES})
# Generate the osquery additional tables (the non-util).
GENERATE_TABLES("${CMAKE_SOURCE_DIR}")
AMALGAMATE("${CMAKE_SOURCE_DIR}" "additional" AMALGAMATION)
ADD_OSQUERY_LIBRARY_ADDITIONAL(osquery_additional_amalgamation ${AMALGAMATION})
endif()
AMALGAMATE("${CMAKE_SOURCE_DIR}" "foreign" AMALGAMATION_FOREIGN)
ADD_OSQUERY_LIBRARY_ADDITIONAL(osquery_foreign_amalgamation ${AMALGAMATION_FOREIGN})
2015-02-03 05:21:36 +00:00
# Create the static libosquery_additional.
add_library(libosquery_additional STATIC ${OSQUERY_ADDITIONAL_SOURCES})
target_link_libraries(libosquery_additional ${OSQUERY_ADDITIONAL_LINKS})
set_target_properties(libosquery_additional PROPERTIES OUTPUT_NAME osquery_additional)
2016-07-31 18:32:31 +00:00
# Create the dynamic libosquery_additional.
if(DEFINED ENV{OSQUERY_BUILD_SHARED})
add_library(libosquery_additional_shared SHARED ${OSQUERY_ADDITIONAL_SOURCES})
target_link_libraries(libosquery_additional_shared ${OSQUERY_ADDITIONAL_LINKS})
set_target_properties(libosquery_additional_shared PROPERTIES OUTPUT_NAME osquery_additional)
endif()
2015-03-05 07:10:38 +00:00
add_executable(shell devtools/shell.cpp main/shell.cpp)
ADD_DEFAULT_LINKS(shell TRUE)
2015-04-27 09:12:58 +00:00
SET_OSQUERY_COMPILE(shell "${CXX_COMPILE_FLAGS}")
2015-02-03 05:21:36 +00:00
set_target_properties(shell PROPERTIES OUTPUT_NAME osqueryi)
add_executable(daemon main/${PROCESS_FAMILY}/daemon.cpp)
ADD_DEFAULT_LINKS(daemon TRUE)
2015-04-27 09:12:58 +00:00
SET_OSQUERY_COMPILE(daemon "${CXX_COMPILE_FLAGS}")
2015-02-03 05:21:36 +00:00
set_target_properties(daemon PROPERTIES OUTPUT_NAME osqueryd)
# Include the public API includes if make devel.
install(TARGETS libosquery ARCHIVE DESTINATION lib COMPONENT devel OPTIONAL)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/include/osquery"
2015-05-08 21:00:09 +00:00
DESTINATION include
COMPONENT devel OPTIONAL
PATTERN ".*" EXCLUDE
)
2015-02-03 05:21:36 +00:00
# A friendly echo printed before building the shell
add_custom_command(TARGET shell PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan --bold
"-- Building osqueryi: $<TARGET_FILE:shell>"
)
# A friendly echo printed before building the daemon
add_custom_command(TARGET daemon PRE_BUILD
2016-03-18 02:11:18 +00:00
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan --bold
"-- Building osqueryd: $<TARGET_FILE:daemon>"
2016-03-18 02:11:18 +00:00
)
2015-02-03 05:21:36 +00:00
# make install (executables)
install(TARGETS shell RUNTIME DESTINATION bin COMPONENT main)
install(TARGETS daemon RUNTIME DESTINATION bin COMPONENT main)
install(FILES "${CMAKE_SOURCE_DIR}/tools/deployment/osqueryctl"
DESTINATION bin COMPONENT main)
2015-02-03 05:21:36 +00:00
# make install (config files)
install(FILES "${CMAKE_SOURCE_DIR}/tools/deployment/osquery.example.conf"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/osquery/" COMPONENT main)
install(DIRECTORY DESTINATION "${CMAKE_INSTALL_PREFIX}/var/osquery")
install(DIRECTORY "${CMAKE_SOURCE_DIR}/packs/"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/osquery/packs" COMPONENT main)
2015-02-03 05:21:36 +00:00
if(APPLE)
install(FILES "${CMAKE_SOURCE_DIR}/tools/deployment/com.facebook.osqueryd.plist"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/osquery/" COMPONENT main)
else()
install(PROGRAMS "${CMAKE_SOURCE_DIR}/tools/deployment/osqueryd.initd"
DESTINATION "/etc/init.d/" RENAME "osqueryd" COMPONENT main)
endif()
2015-01-08 23:53:51 +00:00
endif()
2015-01-08 02:55:14 +00:00
2015-04-27 09:12:58 +00:00
if(NOT DEFINED ENV{SKIP_TESTS})
# osquery testing library (testing helper methods/libs).
add_library(libosquery_testing STATIC tests/test_util.cpp)
2015-04-27 09:12:58 +00:00
add_dependencies(libosquery_testing libosquery)
SET_OSQUERY_COMPILE(libosquery_testing "${CXX_COMPILE_FLAGS}")
set_target_properties(libosquery_testing PROPERTIES OUTPUT_NAME osquery_testing)
# osquery core set of unit tests build with SDK.
add_executable(osquery_tests main/tests.cpp ${OSQUERY_TESTS})
ADD_DEFAULT_LINKS(osquery_tests FALSE)
target_link_libraries(osquery_tests gtest gmock libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_tests "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS}")
2015-04-27 09:12:58 +00:00
add_test(osquery_tests osquery_tests)
2015-06-30 21:20:04 +00:00
# osquery kernel tests.
if(NOT ${OSQUERY_BUILD_SDK_ONLY} AND NOT WINDOWS)
add_executable(osquery_kernel_tests main/tests.cpp ${OSQUERY_KERNEL_TESTS})
ADD_DEFAULT_LINKS(osquery_kernel_tests TRUE)
target_link_libraries(osquery_kernel_tests gtest gmock libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_kernel_tests "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS} -DKERNEL_TEST=1")
endif()
2015-06-30 21:20:04 +00:00
2015-07-23 23:42:46 +00:00
# osquery benchmarks.
if(NOT DEFINED ENV{SKIP_BENCHMARKS} AND NOT ${OSQUERY_BUILD_SDK_ONLY})
add_executable(osquery_benchmarks main/benchmarks.cpp ${OSQUERY_BENCHMARKS})
ADD_DEFAULT_LINKS(osquery_benchmarks TRUE)
target_link_libraries(osquery_benchmarks benchmark libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_benchmarks "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS}")
set(BENCHMARK_TARGET "$<TARGET_FILE:osquery_benchmarks>")
# osquery kernel benchmarks.
add_executable(osquery_kernel_benchmarks main/benchmarks.cpp ${OSQUERY_KERNEL_BENCHMARKS})
ADD_DEFAULT_LINKS(osquery_kernel_benchmarks TRUE)
target_link_libraries(osquery_kernel_benchmarks benchmark libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_kernel_benchmarks "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS} -DKERNEL_TEST=1")
# make benchmark
add_custom_target(
run-benchmark
COMMAND bash -c "${BENCHMARK_TARGET} $ENV{BENCHMARK_TO_FILE}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
DEPENDS osquery_benchmarks
)
endif()
if(NOT ${OSQUERY_BUILD_SDK_ONLY})
2015-04-27 09:12:58 +00:00
# osquery core (additional) set of unit tests built outside of SDK.
add_executable(osquery_additional_tests main/tests.cpp ${OSQUERY_ADDITIONAL_TESTS})
ADD_DEFAULT_LINKS(osquery_additional_tests TRUE)
2016-04-01 21:59:24 +00:00
target_link_libraries(osquery_additional_tests gtest gmock libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_additional_tests "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS}")
2015-04-27 09:12:58 +00:00
add_test(osquery_additional_tests osquery_additional_tests)
# osquery tables set of unit tests (extracted for organization).
add_executable(osquery_tables_tests main/tests.cpp ${OSQUERY_TABLES_TESTS})
ADD_DEFAULT_LINKS(osquery_tables_tests TRUE)
target_link_libraries(osquery_tables_tests gtest gmock libosquery_testing)
2016-07-31 18:32:31 +00:00
SET_OSQUERY_COMPILE(osquery_tables_tests "${GTEST_FLAGS} ${CXX_COMPILE_FLAGS}")
2015-04-27 09:12:58 +00:00
add_test(osquery_tables_tests osquery_tables_tests)
endif()
# Build the example extension with the SDK.
2015-04-21 22:40:02 +00:00
ADD_OSQUERY_EXTENSION(example_extension examples/example_extension.cpp)
2015-04-27 09:12:58 +00:00
# Build the example extension module with the SDK.
2015-04-21 22:40:02 +00:00
ADD_OSQUERY_MODULE(modexample examples/example_module.cpp)
endif()