Warning, /sdk/elf-dissector/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # CMake setup
0002 cmake_minimum_required(VERSION 3.1)
0003 project(elf-dissector VERSION 0.0.1)
0004
0005 find_package(ECM 5.38 REQUIRED NO_MODULE)
0006 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
0007
0008 include(KDECompilerSettings NO_POLICY_SCOPE)
0009 include(ECMSetupVersion)
0010 include(ECMPoQmTools)
0011 include(ECMInstallIcons)
0012 include(FeatureSummary)
0013 include(KDEInstallDirs)
0014 include(KDECMakeSettings)
0015
0016 set(CMAKE_AUTOUIC on)
0017 set(CMAKE_AUTORCC on)
0018 set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
0019 set(CMAKE_VISIBILITY_INLINES_HIDDEN on)
0020 set(CMAKE_C_STANDARD 11)
0021 set(CMAKE_CXX_STANDARD 14)
0022 enable_testing()
0023
0024 # version setup
0025 set(PROJECT_VERSION_STRING "${PROJECT_VERSION}")
0026 if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
0027 find_package(Git)
0028 set_package_properties(Git PROPERTIES TYPE OPTIONAL PURPOSE "Determine exact build version.")
0029 if(GIT_FOUND)
0030 execute_process(
0031 COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
0032 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0033 OUTPUT_VARIABLE _git_revision
0034 )
0035 string(REGEX REPLACE "\n" "" _git_revision "${_git_revision}")
0036 set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING} (revision: ${_git_revision})")
0037 endif()
0038 endif()
0039
0040 # compiler setup
0041 if(CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)
0042 if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
0043 set(EXTRA_LINKER_FLAGS "-Wl,--hash-style=both")
0044 set(CMAKE_EXE_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
0045 set(CMAKE_SHARED_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}")
0046 set(CMAKE_MODULE_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}")
0047 endif()
0048 endif()
0049
0050 # dependencies
0051 find_package(Qt5 5.11 COMPONENTS Widgets Test NO_MODULE REQUIRED)
0052
0053 find_package(Iberty REQUIRED)
0054 find_package(Dwarf)
0055 if (TARGET Dwarf::Dwarf)
0056 set(HAVE_DWARF TRUE)
0057 endif()
0058 if (NOT OPCODES_FOUND)
0059 message(FATAL_ERROR "Binutils::Opcodes library not found")
0060 endif()
0061 find_package(Capstone)
0062 if (Capstone_FOUND)
0063 set(HAVE_CAPSTONE TRUE)
0064 endif()
0065 find_package(Gnuplot QUIET)
0066 set_package_properties(Gnuplot PROPERTIES
0067 DESCRIPTION "a command-line driven graphing utility"
0068 URL "https://www.gnuplot.info/"
0069 PURPOSE "Required for the Performance benchmark tool"
0070 TYPE RUNTIME
0071 )
0072
0073 # config files
0074 configure_file(${CMAKE_SOURCE_DIR}/config-elf-dissector.h.cmake ${CMAKE_BINARY_DIR}/config-elf-dissector.h)
0075 configure_file(${CMAKE_SOURCE_DIR}/config-elf-dissector-version.h.cmake ${CMAKE_BINARY_DIR}/config-elf-dissector-version.h)
0076
0077 # build things
0078 include_directories(
0079 ${CMAKE_SOURCE_DIR}/src
0080 ${CMAKE_SOURCE_DIR}/src/3rdparty
0081 ${CMAKE_SOURCE_DIR}/src/lib
0082 ${CMAKE_BINARY_DIR}
0083 )
0084
0085 add_subdirectory(src)
0086 add_subdirectory(tests)
0087
0088 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)