1
# Copyright (c) 2014-present, The osquery authors
3
# This source code is licensed as defined by the LICENSE file found in the
4
# root directory of this source tree.
6
# SPDX-License-Identifier: (Apache-2.0 OR GPL-2.0-only)
9
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
10
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build type (default RelWithDebInfo)" FORCE)
13
# Always generate the compile_commands.json file
14
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
16
# Show verbose compilation messages when building Debug binaries
17
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
18
set(CMAKE_VERBOSE_MAKEFILE true)
21
# Destination of custom python modules/scripts used for tests and table generation.
22
# Used as the PYTHONPATH folder.
23
set(OSQUERY_PYTHON_PATH "${CMAKE_BINARY_DIR}/python_path")
25
# We need to figure out the processor architecture and set the normalized variable
26
# before any targets are created
27
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
29
set(TARGET_PROCESSOR "x86_64")
30
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
32
set(TARGET_PROCESSOR "x86_64")
33
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
35
set(TARGET_PROCESSOR "aarch64")
36
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
38
set(TARGET_PROCESSOR "aarch64")
39
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
41
set(TARGET_PROCESSOR "aarch64")
43
message(FATAL_ERROR "Unsupported architecture ${CMAKE_SYSTEM_PROCESSOR}")
46
if("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)
47
set(TARGET_PROCESSOR "aarch64")
48
elseif("x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
49
set(TARGET_PROCESSOR "x86_64")
52
# TODO(alessandro): Add missing defines: PLATFORM_FREEBSD
53
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
57
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
60
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
61
set(PLATFORM_WINDOWS 1)
63
message(FATAL_ERROR "Unrecognized platform")
66
# Detect MSVC toolset version
67
if(DEFINED PLATFORM_WINDOWS)
68
detectMSVCToolsetVersion()
70
if(NOT detectMSVCToolsetVersion_OUTPUT STREQUAL "")
71
message(STATUS "MSVC toolset version: ${detectMSVCToolsetVersion_OUTPUT}")
72
set(OSQUERY_MSVC_TOOLSET_VERSION ${detectMSVCToolsetVersion_OUTPUT})
76
set(TEST_CONFIGS_DIR "${CMAKE_BINARY_DIR}/test_configs")
79
set(PACKAGING_SYSTEM "" CACHE STRING "Packaging system to generate when building packages")
81
if(DEFINED PLATFORM_WINDOWS)
82
set(WIX_ROOT_FOLDER_PATH "" CACHE STRING "Root folder of the WIX installation")
85
if(DEFINED PLATFORM_WINDOWS)
86
enable_language(ASM_MASM)
89
if(DEFINED PLATFORM_POSIX)
93
if(DEFINED PLATFORM_MACOS)
94
enable_language(OBJCXX)