CMake patches: only install libdwarf/libelf if we built, and use local mirror for...
[dyninst.git] / cmake / packages.cmake
1 if (UNIX)
2
3 include(ExternalProject)
4
5 find_package (LibElf)
6 if(NOT LIBELF_FOUND)
7 message(STATUS "No libelf found, attempting to build as external project")
8 ExternalProject_Add(LibElf
9         PREFIX ${CMAKE_SOURCE_DIR}/libelf
10         URL http://www.mr511.de/software/libelf-0.8.13.tar.gz
11         CONFIGURE_COMMAND <SOURCE_DIR>/configure --enable-shared --prefix=${CMAKE_SOURCE_DIR}/libelf
12         BUILD_COMMAND make
13         INSTALL_COMMAND make install
14 )
15 set(LIBELF_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libelf/include)
16 set(LIBELF_LIBRARIES ${CMAKE_SOURCE_DIR}/libelf/lib/libelf.so)
17 set(SHOULD_INSTALL_LIBELF 1)
18 else()
19 set(SHOULD_INSTALL_LIBELF 0)
20 endif()
21
22 add_library(libelf_imp SHARED IMPORTED)
23 set_property(TARGET libelf_imp
24                     PROPERTY IMPORTED_LOCATION ${LIBELF_LIBRARIES}) 
25
26 find_package (LibDwarf)
27
28 if(NOT LIBDWARF_FOUND)
29 message(STATUS "No libdwarf found, attempting to build as external project")
30 ExternalProject_Add(LibDwarf
31         PREFIX ${CMAKE_SOURCE_DIR}/libdwarf
32         DEPENDS libelf_imp
33 #       URL http://reality.sgiweb.org/davea/libdwarf-20130126.tar.gz
34 #       URL http://sourceforge.net/code-snapshots/git/l/li/libdwarf/code.git/libdwarf-code-cc781ea02fda2885760910dc4fc81cce257e10f9.zip
35 #       URL http://sourceforge.net/p/libdwarf/code/ci/20130126/tarball
36         URL http://www.paradyn.org/libdwarf/libdwarf-20130126.tar.gz
37 #       GIT_REPOSITORY git://git.code.sf.net/p/libdwarf/code libdwarf-code
38 #       GIT_TAG 20130126
39         CONFIGURE_COMMAND CFLAGS=-I${LIBELF_INCLUDE_DIR} LDFLAGS=-L${CMAKE_SOURCE_DIR}/libelf/lib <SOURCE_DIR>/libdwarf/configure --enable-shared
40         BUILD_COMMAND make
41         INSTALL_DIR ${CMAKE_SOURCE_DIR}/libdwarf
42         INSTALL_COMMAND mkdir -p <INSTALL_DIR>/include && mkdir -p <INSTALL_DIR>/lib && install <SOURCE_DIR>/libdwarf/libdwarf.h <INSTALL_DIR>/include && install <SOURCE_DIR>/libdwarf/dwarf.h <INSTALL_DIR>/include && install <BINARY_DIR>/libdwarf.so <INSTALL_DIR>/lib
43 )
44 add_dependencies(LibDwarf libelf_imp)
45 target_link_libraries(LibDwarf libelf_imp)
46 #ExternalProject_Get_Property(LibDwarf 
47 set(LIBDWARF_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libdwarf/include)
48 set(LIBDWARF_LIBRARIES ${CMAKE_SOURCE_DIR}/libdwarf/lib/libdwarf.so)
49 endif()
50
51 add_library(libdwarf_imp SHARED IMPORTED)
52 set_property(TARGET libdwarf_imp 
53                     PROPERTY IMPORTED_LOCATION ${LIBDWARF_LIBRARIES})
54 find_package (LibIberty)
55
56 if(NOT IBERTY_FOUND)
57 ExternalProject_Add(LibIberty
58         PREFIX ${CMAKE_SOURCE_DIR}/binutils
59         URL http://ftp.gnu.org/gnu/binutils/binutils-2.23.tar.gz
60         CONFIGURE_COMMAND CFLAGS=-fPIC CPPFLAGS=-fPIC PICFLAG=-fPIC <SOURCE_DIR>/libiberty/configure --prefix=${CMAKE_SOURCE_DIR}/libiberty --enable-shared
61         BUILD_COMMAND make all
62         INSTALL_DIR ${CMAKE_SOURCE_DIR}/libiberty
63         INSTALL_COMMAND install <BINARY_DIR>/libiberty.a <INSTALL_DIR>
64 )
65 set(IBERTY_LIBRARY ${CMAKE_SOURCE_DIR}/libiberty/libiberty.a)
66 endif()
67
68 message(STATUS "Using libiberty ${IBERTY_LIBRARY}")
69 add_library(libiberty_imp STATIC IMPORTED)
70 set_property(TARGET libiberty_imp
71                     PROPERTY IMPORTED_LOCATION ${IBERTY_LIBRARY})
72
73 find_package (ThreadDB)
74 include_directories (
75                     ${LIBELF_INCLUDE_DIR}
76                     ${LIBDWARF_INCLUDE_DIR}
77 )
78 elseif(WIN32)
79 find_package (DIASDK REQUIRED)
80 include_directories(${DIASDK_INCLUDE_DIR})
81 endif()
82
83 if (PLATFORM MATCHES "bgq")
84 # Not a find per se, just a magic include line
85 set (PATH_BGQ "/bgsys/drivers/ppcfloor" CACHE STRING "Path to BG/Q include files")
86 if (NOT (PATH_BGQ STREQUAL ""))
87 include_directories (${PATH_BGQ})
88 endif()
89 endif()
90
91
92 # UPDATE this for newer versions of Boost if you're using
93 # an older CMake and it complains that it can't find Boost
94 set(Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48" "1.48.0" "1.49" "1.49.0"
95                               "1.50" "1.50.0" "1.51" "1.51.0" "1.52" "1.52.0"
96                               "1.53" "1.53.0" "1.54" "1.54.0")
97
98 set (PATH_BOOST "/usr" CACHE STRING "Path to boost")
99 if (NOT (PATH_BOOST STREQUAL ""))
100   set (CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${PATH_BOOST}/lib ${PATH_BOOST}/lib64)
101   set (CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${PATH_BOOST}/include)
102 endif()
103
104 find_package (Boost REQUIRED)
105
106 include_directories (
107                     ${Boost_INCLUDE_DIRS}
108 )