Older versions of linux do not have a recent enough tbb or boost to
build dyninst. The ExternalProject_Add support is nice for those; I
notice a couple of things. One is that dependencies are needed
otherwise what I see is something like 'make -j20' will cause dyninst
build errors because pieces are not available. I'm just using -j1 for
now; but oh my goodness that increases the build time. Another is the
tbb and boost builds are installed into the ultimate install location.
So what happens with our system builds is it wants to install to the
system library directory, e.g. /usr/lib64/dyninst. I patched that so
tbb and boost do an intermediate install to tbb/install and
boost/install, dyninst builds from that, and CMakeLists.txt installs
those. It works but it the CMakeLists.txt bit is really ugly:
+# Copy TBB and BOOST libraries from temp install dir to dyninst install dir
+# Note: make has not yet run so we need to explicitly set the list
+set(TBB_AND_BOOST_LIBS tbb/install/lib/libtbbmalloc_proxy.so
tbb/install/lib/libtbbmalloc_proxy.so.2 tbb/install/lib/libtbbmalloc.s
o tbb/install/lib/libtbbmalloc.so.2 tbb/install/lib/libtbb.so
tbb/install/lib/libtbb.so.2 boost/install/lib/libboost_atomic.a boost/
install/lib/libboost_atomic.so
boost/install/lib/libboost_atomic.so.1.61.0
boost/install/lib/libboost_chrono.a boost/install/lib/lib
boost_chrono.so boost/install/lib/libboost_chrono.so.1.61.0
boost/install/lib/libboost_date_time.a boost/install/lib/libboost_date_t
ime.so boost/install/lib/libboost_date_time.so.1.61.0
boost/install/lib/libboost_filesystem.a
boost/install/lib/libboost_filesystem.
so boost/install/lib/libboost_filesystem.so.1.61.0
boost/install/lib/libboost_system.a boost/install/lib/libboost_system.so
boost/in
stall/lib/libboost_system.so.1.61.0 boost/install/lib/libboost_thread.a
boost/install/lib/libboost_thread.so boost/install/lib/libbo
ost_thread.so.1.61.0 boost/install/lib/libboost_timer.a
boost/install/lib/libboost_timer.so boost/install/lib/libboost_timer.so.1.61
.0)
+foreach(F ${TBB_AND_BOOST_LIBS})
+ install(PROGRAMS "${Dyninst_BINARY_DIR}/${F}" DESTINATION
"${CMAKE_INSTALL_PREFIX}/lib")
+endforeach()
|