Clean up library linkage
[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 i386 OR PLATFORM MATCHES x86_64)
44         set (SRC_LIST ${SRC_LIST}
45             src/dbginfo-stepper.C 
46             src/linux-x86-swk.C 
47             src/x86-wanderer.C 
48             src/linuxbsd-x86-swk.C 
49             src/x86-swk.C 
50         )
51     endif()
52 elseif (PLATFORM MATCHES bgq)
53     set (SRC_LIST ${SRC_LIST}
54         src/ppc-swk.C 
55         src/symtab-swk.C 
56         src/linuxbsd-swk.C
57         src/bluegeneq-swk.C
58     )
59 endif()
60 if (PLATFORM MATCHES nt OR PLATFORM MATCHES windows)
61     set (SRC_LIST ${SRC_LIST}
62         src/x86-wanderer.C 
63         src/x86-swk.C
64         src/win-x86-swk.C
65         src/symtab-swk.C
66     )
67 endif()
68
69 if (SW_ANALYSIS_STEPPER)
70     set (SRC_LIST ${SRC_LIST}
71         src/analysis_stepper.C
72         src/callchecker-IAPI.C
73     )
74 else ()
75     set (SRC_LIST ${SRC_LIST}
76         src/callchecker.C
77     )
78 endif()
79
80 SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX)
81
82 ADD_DEFINITIONS(-DSTACKWALKER_EXPORTS)
83
84 add_library (stackwalk ${SRC_LIST})
85 add_library (stackwalk_static STATIC ${SRC_LIST})
86
87 target_link_private_libraries (stackwalk common)
88 target_link_private_libraries (stackwalk instructionAPI)
89 target_link_private_libraries (stackwalk pcontrol)
90
91 if (UNIX)
92 target_link_private_libraries (stackwalk dynDwarf)
93 target_link_private_libraries (stackwalk dynElf)
94 endif()
95
96 if (LIGHTWEIGHT_SYMTAB)
97 target_link_private_libraries(stackwalk symLite)
98 else()
99 target_link_private_libraries(stackwalk symtabAPI)
100 endif()
101
102 if (SW_ANALYSIS_STEPPER)
103 target_link_private_libraries(stackwalk parseAPI)
104 endif()
105
106 FILE (GLOB headers "h/*.h")
107 set_target_properties (stackwalk stackwalk_static PROPERTIES PUBLIC_HEADER "${headers}")
108
109 INSTALL (TARGETS stackwalk stackwalk_static
110         EXPORT DyninstTargets
111         RUNTIME DESTINATION ${INSTALL_LIB_DIR}
112         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
113         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
114         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})