modified: common/CMakeLists.txt
[dyninst.git] / stackwalk / CMakeLists.txt
1 # CMake configuration for proccontrol directory
2
3 include_directories (
4     ${PROJECT_SOURCE_DIR}/stackwalk/src
5   )
6
7 set (SRC_LIST
8     src/frame.C 
9     src/framestepper.C 
10     src/swk_errors.C 
11     src/symlookup.C 
12     src/walker.C 
13     src/procstate.C 
14     src/steppergroup.C 
15     src/libstate.C 
16     src/sw_c.C 
17     src/sw_pcontrol.C  
18 )
19
20 if (PLATFORM MATCHES freebsd)
21 set (SRC_LIST ${SRC_LIST}
22      src/freebsd-swk.C 
23      src/x86-swk.C
24      src/symtab-swk.C 
25      src/dbginfo-stepper.C 
26      src/x86-wanderer.C 
27      src/linuxbsd-swk.C
28      src/linuxbsd-x86-swk.C 
29      src/freebsd-x86-swk.C
30 )
31 elseif (PLATFORM MATCHES linux OR PLATFORM MATCHES freebsd)
32     set (SRC_LIST ${SRC_LIST}
33         src/symtab-swk.C 
34         src/linuxbsd-swk.C 
35         src/linux-swk.C
36     )
37     if (PLATFORM MATCHES ppc)
38         set (SRC_LIST ${SRC_LIST}
39             src/linux-ppc-swk.C 
40             src/ppc-swk.C
41         )
42
43     elseif (PLATFORM MATCHES aarch64)
44         set (SRC_LIST ${SRC_LIST}
45             src/linux-aarch64-swk.C 
46             src/aarch64-swk.C
47         )
48
49     elseif (PLATFORM MATCHES i386 OR PLATFORM MATCHES x86_64)
50         set (SRC_LIST ${SRC_LIST}
51             src/dbginfo-stepper.C 
52             src/linux-x86-swk.C 
53             src/x86-wanderer.C 
54             src/linuxbsd-x86-swk.C 
55             src/x86-swk.C 
56         )
57     endif()
58 elseif (PLATFORM MATCHES bgq)
59     set (SRC_LIST ${SRC_LIST}
60         src/ppc-swk.C 
61         src/symtab-swk.C 
62         src/linuxbsd-swk.C
63         src/bluegeneq-swk.C
64     )
65 endif()
66 if (PLATFORM MATCHES nt OR PLATFORM MATCHES windows)
67     set (SRC_LIST ${SRC_LIST}
68         src/x86-wanderer.C 
69         src/x86-swk.C
70         src/win-x86-swk.C
71         src/symtab-swk.C
72     )
73 endif()
74
75 if (SW_ANALYSIS_STEPPER)
76     set (SRC_LIST ${SRC_LIST}
77         src/analysis_stepper.C
78         src/callchecker-IAPI.C
79     )
80 else ()
81     set (SRC_LIST ${SRC_LIST}
82         src/callchecker.C
83     )
84 endif()
85
86 SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX)
87
88 ADD_DEFINITIONS(-DSTACKWALKER_EXPORTS)
89
90 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FORCE_FRAME_POINTER}")
91 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FORCE_FRAME_POINTER}")
92
93 add_library (stackwalk ${SRC_LIST})
94 add_library (stackwalk_static STATIC ${SRC_LIST})
95
96 target_link_private_libraries (stackwalk common)
97 target_link_private_libraries (stackwalk instructionAPI)
98 target_link_private_libraries (stackwalk pcontrol)
99
100 if (UNIX)
101 target_link_private_libraries (stackwalk dynDwarf)
102 target_link_private_libraries (stackwalk dynElf)
103 endif()
104
105 if (LIGHTWEIGHT_SYMTAB)
106 target_link_private_libraries(stackwalk symLite)
107 else()
108 target_link_private_libraries(stackwalk symtabAPI)
109 endif()
110
111 if (SW_ANALYSIS_STEPPER)
112 target_link_private_libraries(stackwalk parseAPI)
113 endif()
114
115 FILE (GLOB headers "h/*.h")
116 set_target_properties (stackwalk stackwalk_static PROPERTIES PUBLIC_HEADER "${headers}")
117
118 INSTALL (TARGETS stackwalk stackwalk_static
119         EXPORT DyninstTargets
120         RUNTIME DESTINATION ${INSTALL_LIB_DIR}
121         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
122         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
123         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})