blob: 889961e9b39c07ea04bdd4f64776c79bab69d23b [file] [log] [blame]
# Check if cmake has the required version
cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
# Set the name and version of the project
project(kernel-shark)
set(KS_VERSION_MAJOR 0)
set(KS_VERSION_MINOR 9)
set(KS_VERSION_PATCH 0)
set(KS_VERSION_STRING ${KS_VERSION_MAJOR}.${KS_VERSION_MINOR}.${KS_VERSION_PATCH})
message("\n project: Kernel Shark: (version: ${KS_VERSION_STRING})\n")
set(KS_DIR ${CMAKE_SOURCE_DIR})
# Make a directory to hold configuration files. To change this do:
# cmake .. -DKS_CONF_DIR=/your/preferred/path
set(KS_CONF_DIR "${KS_DIR}/.ksconf" CACHE STRING "Directory for configuration files.")
file(MAKE_DIRECTORY ${KS_CONF_DIR})
include(${KS_DIR}/build/FindTraceCmd.cmake)
include(${KS_DIR}/build/FindJSONC.cmake)
find_package(Doxygen)
find_package(OpenGL)
find_package(GLUT)
find_package(Qt5Widgets 5.7.1)
find_package(Qt5Network)
if (Qt5Widgets_FOUND)
message(STATUS "Found Qt5Widgets: (version ${Qt5Widgets_VERSION})")
endif (Qt5Widgets_FOUND)
set(LIBRARY_OUTPUT_PATH "${KS_DIR}/lib")
set(EXECUTABLE_OUTPUT_PATH "${KS_DIR}/bin")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -std=c++11 -pthread")
if (NOT _DEBUG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
endif (NOT _DEBUG)
SET(CMAKE_INSTALL_RPATH "/usr/local/lib/kshark/")
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
include_directories(${KS_DIR}/src/
${KS_DIR}/build/src/
${JSONC_INCLUDE_DIR}
${TRACECMD_INCLUDE_DIR}
${TRACEEVENT_INCLUDE_DIR})
message("")
message(STATUS "C flags : " ${CMAKE_C_FLAGS})
message(STATUS "CXX flags : " ${CMAKE_CXX_FLAGS})
message(STATUS "Linker flags : " ${CMAKE_EXE_LINKER_FLAGS})
add_subdirectory(${KS_DIR}/src)
add_subdirectory(${KS_DIR}/examples)
if (_DOXYGEN_DOC AND DOXYGEN_FOUND)
message("\n doxygen documentation ...")
add_custom_target(doc ALL)
add_custom_command(TARGET doc
COMMAND doxygen dox_config > dox_build.log
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/doc)
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
"${KS_DIR}/doc/dox_build.log"
"${KS_DIR}/doc/html"
"${KS_DIR}/doc/latex")
endif ()
configure_file( ${KS_DIR}/build/ks.desktop.cmake
${KS_DIR}/kernelshark.desktop)
message("")