2014-09-06 01:12:37 +00:00
|
|
|
SET(OSQUERY_LIBS
|
2014-09-23 02:27:19 +00:00
|
|
|
readline
|
|
|
|
pthread
|
|
|
|
dl
|
|
|
|
crypto
|
|
|
|
ssl
|
2014-09-06 01:12:37 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
if(APPLE)
|
2014-10-04 05:34:44 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "boost_thread-mt")
|
|
|
|
list(APPEND OSQUERY_LIBS "boost_system")
|
|
|
|
list(APPEND OSQUERY_LIBS "boost_filesystem")
|
|
|
|
list(APPEND OSQUERY_LIBS "boost_program_options")
|
|
|
|
list(APPEND OSQUERY_LIBS "boost_regex")
|
|
|
|
list(APPEND OSQUERY_LIBS "thrift")
|
|
|
|
list(APPEND OSQUERY_LIBS "rocksdb")
|
|
|
|
list(APPEND OSQUERY_LIBS "gflags")
|
|
|
|
list(APPEND OSQUERY_LIBS "glog")
|
2014-09-06 01:12:37 +00:00
|
|
|
else()
|
2014-10-02 18:55:18 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "rt")
|
2014-10-04 05:34:44 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libgflags.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libglog.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "librocksdb.a")
|
2014-10-08 03:44:58 +00:00
|
|
|
if(EXISTS "/etc/debian_version")
|
2014-10-23 23:27:43 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libz.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libbz2.a")
|
2014-10-08 03:44:58 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libsnappy.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libunwind.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "liblzma.a")
|
2014-10-23 23:27:43 +00:00
|
|
|
if(EXISTS "/usr/lib/libprocps.a" OR EXISTS "/usr/lib/x86_64-linux-gnu/libprocps.a")
|
2014-10-08 03:44:58 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libprocps.a")
|
|
|
|
else()
|
|
|
|
list(APPEND OSQUERY_LIBS "libproc.a")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if(EXISTS "/etc/redhat-release")
|
2014-10-23 23:27:43 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libz.so")
|
|
|
|
list(APPEND OSQUERY_LIBS "libbz2.so")
|
2014-10-08 03:44:58 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libsnappy.so")
|
|
|
|
list(APPEND OSQUERY_LIBS "libunwind.so")
|
|
|
|
list(APPEND OSQUERY_LIBS "liblzma.so")
|
|
|
|
list(APPEND OSQUERY_LIBS "libproc.so")
|
|
|
|
endif()
|
2014-10-04 05:34:44 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libthrift.a")
|
2014-09-23 02:27:19 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libboost_thread.a")
|
2014-10-04 05:34:44 +00:00
|
|
|
list(APPEND OSQUERY_LIBS "libboost_system.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libboost_filesystem.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libboost_program_options.a")
|
|
|
|
list(APPEND OSQUERY_LIBS "libboost_regex.a")
|
2014-09-06 01:12:37 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Fill this in with objects for libosquery
|
2014-09-23 03:40:28 +00:00
|
|
|
set(OSQUERY_SOURCES "")
|
2014-09-06 01:12:37 +00:00
|
|
|
set(OSQUERY_ADDITIONAL_LINKS "")
|
|
|
|
|
|
|
|
MACRO(ADD_OSQUERY_LINK LINK)
|
|
|
|
list(APPEND OSQUERY_ADDITIONAL_LINKS ${LINK})
|
2014-09-23 03:40:28 +00:00
|
|
|
set(OSQUERY_ADDITIONAL_LINKS ${OSQUERY_ADDITIONAL_LINKS} PARENT_SCOPE)
|
2014-09-06 01:12:37 +00:00
|
|
|
ENDMACRO(ADD_OSQUERY_LINK)
|
|
|
|
|
|
|
|
MACRO(SET_OSQUERY_COMPILE TARGET)
|
|
|
|
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${OS_COMPILE_FLAGS})
|
|
|
|
SET(OPTIONAL_FLAGS ${ARGN})
|
|
|
|
LIST(LENGTH OPTIONAL_FLAGS NUM_OPTIONAL_FLAGS)
|
|
|
|
if(${NUM_OPTIONAL_FLAGS} GREATER 0)
|
|
|
|
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${OPTIONAL_FLAGS})
|
|
|
|
ENDIF()
|
|
|
|
ENDMACRO(SET_OSQUERY_COMPILE)
|
|
|
|
|
2014-09-23 03:40:28 +00:00
|
|
|
MACRO(ADD_OSQUERY_LIBRARY TARGET)
|
|
|
|
ADD_LIBRARY(${TARGET} OBJECT ${ARGN})
|
|
|
|
SET_OSQUERY_COMPILE(${TARGET})
|
|
|
|
list(APPEND OSQUERY_SOURCES $<TARGET_OBJECTS:${TARGET}>)
|
|
|
|
set(OSQUERY_SOURCES ${OSQUERY_SOURCES} PARENT_SCOPE)
|
|
|
|
ENDMACRO(ADD_OSQUERY_LIBRARY TARGET)
|
|
|
|
|
|
|
|
MACRO(ADD_OSQUERY_OBJCXX_LIBRARY TARGET)
|
|
|
|
ADD_LIBRARY(${TARGET} OBJECT ${ARGN})
|
|
|
|
SET_OSQUERY_COMPILE(${TARGET} "-x objective-c++ -fobjc-arc")
|
|
|
|
list(APPEND OSQUERY_SOURCES $<TARGET_OBJECTS:${TARGET}>)
|
|
|
|
set(OSQUERY_SOURCES ${OSQUERY_SOURCES} PARENT_SCOPE)
|
|
|
|
ENDMACRO(ADD_OSQUERY_OBJCXX_LIBRARY TARGET)
|
|
|
|
|
2014-09-23 02:54:59 +00:00
|
|
|
MACRO(ADD_OSQUERY_TEST TEST_NAME SOURCE)
|
2014-09-06 01:12:37 +00:00
|
|
|
ADD_EXECUTABLE(${TEST_NAME} ${SOURCE})
|
|
|
|
TARGET_LINK_LIBRARIES(${TEST_NAME} ${OSQUERY_ADDITIONAL_LINKS})
|
2014-09-23 02:27:19 +00:00
|
|
|
TARGET_LINK_LIBRARIES(${TEST_NAME} osquery_shared)
|
2014-10-04 05:34:44 +00:00
|
|
|
TARGET_LINK_LIBRARIES(${TEST_NAME} gtest)
|
2014-09-06 01:12:37 +00:00
|
|
|
SET(OPTIONAL_FLAGS ${ARGN})
|
|
|
|
SET_OSQUERY_COMPILE(${TEST_NAME} ${OPTIONAL_FLAGS})
|
|
|
|
ADD_TEST(${TEST_NAME} ${TEST_NAME})
|
|
|
|
ENDMACRO(ADD_OSQUERY_TEST)
|
|
|
|
|
2014-09-10 04:37:08 +00:00
|
|
|
MACRO(ADD_OSQUERY_EXECUTABLE NAME SOURCE)
|
|
|
|
ADD_OSQUERY_TEST(${NAME} ${SOURCE})
|
|
|
|
TARGET_LINK_LIBRARIES(${NAME} osquery_shared)
|
|
|
|
ENDMACRO(ADD_OSQUERY_EXECUTABLE)
|
|
|
|
|
2014-09-06 01:12:37 +00:00
|
|
|
MACRO(TARGET_OSQUERY_LINK_WHOLE TARGET OSQUERY_LIB)
|
|
|
|
TARGET_LINK_LIBRARIES(${TARGET} "${OS_WHOLELINK_PRE}")
|
|
|
|
TARGET_LINK_LIBRARIES(${TARGET} ${OSQUERY_LIB})
|
2014-09-07 00:29:56 +00:00
|
|
|
TARGET_LINK_LIBRARIES(${TARGET} "${OS_WHOLELINK_POST}")
|
2014-09-06 01:12:37 +00:00
|
|
|
ENDMACRO(TARGET_OSQUERY_LINK_WHOLE)
|
|
|
|
|
2014-09-24 00:55:54 +00:00
|
|
|
# Table generation
|
|
|
|
|
|
|
|
file(GLOB TABLE_FILES "tables/specs/x/*.table")
|
|
|
|
if(APPLE)
|
|
|
|
file(GLOB TABLE_FILES_DARWIN "tables/specs/darwin/*.table")
|
|
|
|
list(APPEND TABLE_FILES ${TABLE_FILES_DARWIN})
|
|
|
|
else()
|
|
|
|
file(GLOB TABLE_FILES_LINUX "tables/specs/linux/*.table")
|
|
|
|
list(APPEND TABLE_FILES ${TABLE_FILES_LINUX})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
SET(GENERATED_TABLE "")
|
|
|
|
|
|
|
|
foreach(TABLE_FILE ${TABLE_FILES})
|
|
|
|
SET(TABLE_FILE_GEN ${TABLE_FILE})
|
2014-10-23 21:39:15 +00:00
|
|
|
STRING(REPLACE "linux/" "" TABLE_FILE_GEN ${TABLE_FILE_GEN})
|
|
|
|
STRING(REPLACE "darwin/" "" TABLE_FILE_GEN ${TABLE_FILE_GEN})
|
|
|
|
STRING(REPLACE "x/" "" TABLE_FILE_GEN ${TABLE_FILE_GEN})
|
2014-09-24 08:58:12 +00:00
|
|
|
STRING(
|
|
|
|
REPLACE
|
|
|
|
"${CMAKE_SOURCE_DIR}/osquery/tables/specs"
|
|
|
|
"${CMAKE_BINARY_DIR}/generated/tables"
|
|
|
|
TABLE_FILE_GEN
|
|
|
|
${TABLE_FILE_GEN}
|
|
|
|
)
|
2014-09-24 00:55:54 +00:00
|
|
|
STRING(REPLACE ".table" ".cpp" TABLE_FILE_GEN ${TABLE_FILE_GEN})
|
|
|
|
ADD_CUSTOM_COMMAND(
|
|
|
|
OUTPUT ${TABLE_FILE_GEN}
|
2014-09-24 08:58:12 +00:00
|
|
|
COMMAND python ${CMAKE_SOURCE_DIR}/tools/gentable.py ${TABLE_FILE} ${TABLE_FILE_GEN}
|
2014-09-24 00:55:54 +00:00
|
|
|
DEPENDS ${TABLE_FILE}
|
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
|
|
)
|
|
|
|
list(APPEND GENERATED_TABLES ${TABLE_FILE_GEN})
|
|
|
|
endforeach()
|
|
|
|
ADD_CUSTOM_TARGET(osquery_generated_tables_depends
|
|
|
|
DEPENDS ${GENERATED_TABLES}
|
|
|
|
)
|
|
|
|
ADD_LIBRARY(osquery_generated_tables OBJECT
|
|
|
|
${GENERATED_TABLES}
|
|
|
|
)
|
|
|
|
ADD_DEPENDENCIES(osquery_generated_tables osquery_generated_tables_depends)
|
|
|
|
SET_OSQUERY_COMPILE(osquery_generated_tables)
|
|
|
|
|
|
|
|
# Add subdirectories
|
|
|
|
|
2014-09-02 08:00:58 +00:00
|
|
|
ADD_SUBDIRECTORY(config)
|
|
|
|
ADD_SUBDIRECTORY(core)
|
|
|
|
ADD_SUBDIRECTORY(database)
|
|
|
|
ADD_SUBDIRECTORY(devtools)
|
2014-09-19 08:54:33 +00:00
|
|
|
ADD_SUBDIRECTORY(events)
|
2014-09-04 06:46:24 +00:00
|
|
|
ADD_SUBDIRECTORY(examples)
|
2014-09-02 08:00:58 +00:00
|
|
|
ADD_SUBDIRECTORY(filesystem)
|
|
|
|
ADD_SUBDIRECTORY(logger)
|
2014-09-12 04:44:10 +00:00
|
|
|
ADD_SUBDIRECTORY(dispatcher)
|
2014-09-06 01:12:37 +00:00
|
|
|
ADD_SUBDIRECTORY(registry)
|
2014-09-02 08:00:58 +00:00
|
|
|
ADD_SUBDIRECTORY(scheduler)
|
|
|
|
ADD_SUBDIRECTORY(tables)
|
|
|
|
|
2014-09-06 01:12:37 +00:00
|
|
|
SET(OSQUERY_LIB_OBJECTS
|
|
|
|
# Third-party objects
|
|
|
|
$<TARGET_OBJECTS:osquery_sqlite>
|
|
|
|
|
2014-09-24 00:55:54 +00:00
|
|
|
# Generated code
|
|
|
|
$<TARGET_OBJECTS:osquery_generated_tables>
|
|
|
|
|
2014-09-06 01:12:37 +00:00
|
|
|
# Build additional os-dependent libraries (may include tables)
|
2014-09-23 03:40:28 +00:00
|
|
|
${OSQUERY_SOURCES}
|
2014-09-02 08:00:58 +00:00
|
|
|
)
|
|
|
|
|
2014-09-23 00:27:57 +00:00
|
|
|
if(BUILD_SHARED)
|
|
|
|
ADD_LIBRARY(osquery_shared SHARED main/lib.cpp ${OSQUERY_LIB_OBJECTS})
|
|
|
|
else()
|
2014-09-06 01:12:37 +00:00
|
|
|
ADD_LIBRARY(osquery_static STATIC ${OSQUERY_LIB_OBJECTS})
|
|
|
|
SET_TARGET_PROPERTIES(osquery_static PROPERTIES OUTPUT_NAME osquery_static)
|
|
|
|
|
2014-09-12 16:39:43 +00:00
|
|
|
ADD_LIBRARY(osquery_shared STATIC main/lib.cpp)
|
2014-09-06 01:12:37 +00:00
|
|
|
TARGET_OSQUERY_LINK_WHOLE(osquery_shared osquery_static)
|
|
|
|
endif()
|
|
|
|
TARGET_LINK_LIBRARIES(osquery_shared ${OSQUERY_ADDITIONAL_LINKS})
|
|
|
|
TARGET_LINK_LIBRARIES(osquery_shared ${OSQUERY_LIBS})
|
|
|
|
SET_TARGET_PROPERTIES(osquery_shared PROPERTIES OUTPUT_NAME osquery)
|
2014-09-02 08:00:58 +00:00
|
|
|
|
|
|
|
ADD_EXECUTABLE(shell main/shell.cpp)
|
2014-09-06 01:12:37 +00:00
|
|
|
TARGET_LINK_LIBRARIES(shell osquery_shared)
|
2014-09-02 08:00:58 +00:00
|
|
|
SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME osqueryi)
|
2014-09-05 14:54:41 +00:00
|
|
|
SET_TARGET_PROPERTIES(shell PROPERTIES COMPILE_FLAGS ${OS_COMPILE_FLAGS})
|
2014-09-02 08:00:58 +00:00
|
|
|
INSTALL(TARGETS shell DESTINATION bin)
|
|
|
|
|
|
|
|
ADD_EXECUTABLE(daemon main/daemon.cpp)
|
2014-09-06 01:12:37 +00:00
|
|
|
TARGET_LINK_LIBRARIES(daemon osquery_shared)
|
2014-09-02 08:00:58 +00:00
|
|
|
SET_TARGET_PROPERTIES(daemon PROPERTIES OUTPUT_NAME osqueryd)
|
2014-09-05 14:54:41 +00:00
|
|
|
SET_TARGET_PROPERTIES(daemon PROPERTIES COMPILE_FLAGS ${OS_COMPILE_FLAGS})
|
2014-09-02 08:00:58 +00:00
|
|
|
INSTALL(TARGETS daemon DESTINATION bin)
|
2014-09-23 23:58:32 +00:00
|
|
|
|
2014-09-24 05:06:32 +00:00
|
|
|
# packages
|
|
|
|
|
2014-09-23 23:58:32 +00:00
|
|
|
if(NOT APPLE)
|
|
|
|
SET(CPACK_PACKAGE_NAME "osquery")
|
|
|
|
SET(CPACK_PACKAGE_VENDOR "facebook")
|
|
|
|
|
|
|
|
SET(CPACK_PACKAGE_VERSION "0.0.1")
|
|
|
|
SET(CPACK_PACKAGE_VERSION_MAJOR 0)
|
|
|
|
SET(CPACK_PACKAGE_VERSION_MINOR 0)
|
|
|
|
SET(CPACK_PACKAGE_VERSION_PATCH 1)
|
|
|
|
|
|
|
|
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
|
|
|
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "osquery is an operating system instrumentation toolchain.")
|
|
|
|
|
|
|
|
EXECUTE_PROCESS(COMMAND uname -m OUTPUT_VARIABLE OSQUERY_ARCH)
|
|
|
|
STRING(REPLACE "\n" "" OSQUERY_ARCH ${OSQUERY_ARCH})
|
|
|
|
|
|
|
|
if(EXISTS /etc/apt/sources.list)
|
|
|
|
SET(CPACK_GENERATOR "DEB")
|
|
|
|
|
|
|
|
EXECUTE_PROCESS(COMMAND grep DISTRIB_CODENAME /etc/lsb-release OUTPUT_VARIABLE DISTRO)
|
|
|
|
STRING(REPLACE "DISTRIB_CODENAME=" "" DISTRO ${DISTRO})
|
|
|
|
STRING(REPLACE "\n" "" DISTRO ${DISTRO})
|
|
|
|
|
|
|
|
EXECUTE_PROCESS(COMMAND dpkg --print-architecture OUTPUT_VARIABLE DPKG_ARCH)
|
|
|
|
STRING(REPLACE "\n" "" DPKG_ARCH ${DPKG_ARCH})
|
|
|
|
|
|
|
|
SET(CPACK_SYSTEM_NAME "${DISTRO}.${DPKG_ARCH}")
|
|
|
|
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DPKG_ARCH})
|
|
|
|
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "marpaia@fb.com")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
INCLUDE(CPack)
|
|
|
|
endif()
|