-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
74 lines (58 loc) · 2.05 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
cmake_minimum_required (VERSION 3.0)
project (minitracer)
option (DEBUG_INFO_DWARF "Enable DWARF debugging info (GCC/clang)")
option (EXE_FORMAT_PE "Enable the PE executable format (Windows)")
option (EXE_FORMAT_ELF "Enable the ELF executable format (Unix)")
if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
add_definitions (-DX86)
elseif ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
add_definitions (-DAMD64)
else ()
message (FATAL_ERROR "unsupported architecture")
endif ()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_definitions (-DCLANG)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_definitions (-DGCC)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message (FATAL_ERROR "unsupported architecture")
else ()
message (FATAL_ERROR "unsupported architecture")
endif ()
set (sources src/minitracer.cpp src/debug/debuginfo.cpp src/debug/byteio.cpp)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set (DEBUG_INFO_DWARF ON)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set (DEBUG_INFO_DWARF ON)
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (EXE_FORMAT_PE OFF)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set (EXE_FORMAT_PE ON)
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (EXE_FORMAT_ELF ON)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set (EXE_FORMAT_ELF OFF)
endif ()
if (${EXE_FORMAT_ELF})
add_definitions (-DELF)
set (sources ${sources} src/debug/elf.cpp)
endif ()
if (${EXE_FORMAT_PE})
add_definitions (-DPE)
set (sources ${sources} src/debug/pe.cpp)
endif ()
if (${DEBUG_INFO_DWARF})
add_definitions (-DDWARF)
set (sources ${sources} src/debug/dwarf.cpp)
endif ()
set(CMAKE_CXX_STANDARD 14)
add_library(minitracer OBJECT ${sources})
set_target_properties(minitracer PROPERTIES VERSION 0.1)
add_library(minitracer-static STATIC $<TARGET_OBJECTS:minitracer>)
add_library(minitracer-shared SHARED $<TARGET_OBJECTS:minitracer>)
target_include_directories(minitracer PUBLIC src/)
set(CPACK_PACKAGE_NAME "minitracer")
set(CPACK_PACKAGE_VERSION "0.0.1")