From 2744092b277b41ebc15d24b3293ecccbfa5d1237 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Tue, 1 Nov 2011 08:27:12 +0000 Subject: [PATCH] Expose build/install dirs as a define. Also, pick a wrapper install dir that varies with architecture, to allow tracing of multiple binaries on multiarch. --- CMakeLists.txt | 54 ++++++++++++++++++++++++++++++++------------ gui/CMakeLists.txt | 2 -- gui/retracer.cpp | 2 +- gui/traceprocess.cpp | 16 ++++++------- 4 files changed, 49 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ea59d5..19eb813 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,6 +180,37 @@ endif () include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty) +############################################################################## +# Installation directories + +if (WIN32 OR APPLE) + # On Windows/MacOSX, applications are usually installed on a directory of + # their own + set (DOC_INSTALL_DIR doc) +else () + set (DOC_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME}) +endif () + +if (APPLE) + # MacOSX uses fat binaries, so no need to have per-architecture wrapper + # directories + set (WRAPPER_INSTALL_DIR lib/apitrace) +else () + set (WRAPPER_INSTALL_DIR lib/apitrace/${CMAKE_SYSTEM_PROCESSOR}) +endif () + +# Expose the binary/install directories to source +# +# TODO: Use the same directory layout, for both build and install directories, +# so that binaries can find each other using just relative paths. +# +add_definitions( + -DAPITRACE_BINARY_DIR="${CMAKE_BINARY_DIR}" + -DAPITRACE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" + -DAPITRACE_WRAPPER_INSTALL_DIR="${CMAKE_INSTALL_PREFIX}/${WRAPPER_INSTALL_DIR}" +) + + ############################################################################## # Common libraries / utilities @@ -230,6 +261,7 @@ set_target_properties (common PROPERTIES link_libraries (common) + ############################################################################## # API tracers @@ -253,7 +285,7 @@ if (WIN32) RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers ) - install (TARGETS ddraw LIBRARY DESTINATION wrappers) + install (TARGETS ddraw LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) endif (DirectX_D3D_INCLUDE_DIR) # d3d8.dll @@ -270,7 +302,7 @@ if (WIN32) RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers ) - install (TARGETS d3d8 LIBRARY DESTINATION wrappers) + install (TARGETS d3d8 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR) # d3d9.dll @@ -287,7 +319,7 @@ if (WIN32) RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers ) - install (TARGETS d3d9 LIBRARY DESTINATION wrappers) + install (TARGETS d3d9 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) endif (DirectX_D3DX9_INCLUDE_DIR) # d3d10.dll @@ -304,7 +336,7 @@ if (WIN32) RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers ) - install (TARGETS d3d10 LIBRARY DESTINATION wrappers) + install (TARGETS d3d10 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) endif (DirectX_D3D10_INCLUDE_DIR) # opengl32.dll @@ -324,7 +356,7 @@ if (WIN32) RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers ) - install (TARGETS wgltrace LIBRARY DESTINATION wrappers) + install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) elseif (APPLE) # OpenGL framework @@ -351,7 +383,7 @@ elseif (APPLE) target_link_libraries (cgltrace dl) - install (TARGETS cgltrace LIBRARY DESTINATION wrappers) + install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) else () # libGL.so add_custom_command ( @@ -380,7 +412,7 @@ else () target_link_libraries (glxtrace dl ${X11_X11_LIB}) - install (TARGETS glxtrace LIBRARY DESTINATION lib/apitrace) + install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR}) endif () @@ -459,12 +491,6 @@ endif () ############################################################################## # Packaging -if (WIN32 OR APPLE) - set (INSTALL_DOC_DESTINATION doc) -else () - set (INSTALL_DOC_DESTINATION share/doc/${CMAKE_PROJECT_NAME}) -endif () - install ( FILES BUGS.markdown @@ -472,7 +498,7 @@ install ( NEWS.markdown README.markdown TODO.markdown - DESTINATION ${INSTALL_DOC_DESTINATION} + DESTINATION ${DOC_INSTALL_DIR} ) set (CPACK_PACKAGE_VERSION_MAJOR "2") diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 777bc92..f464cb0 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -47,8 +47,6 @@ QT4_WRAP_UI(qapitrace_UIS_H ${qapitrace_UIS}) link_directories(${LINK_DIRECTORIES} ${QJSON_LIBRARY_DIRS}) include_directories(${QT_INCLUDES} ${QJSON_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) -add_definitions(-DBUILD_DIR="${CMAKE_BINARY_DIR}") - add_executable(qapitrace ${qapitrace_SRCS} ${qapitrace_UIS_H}) target_link_libraries(qapitrace common ${QJSON_LIBRARIES} ${QT_LIBRARIES} ) diff --git a/gui/retracer.cpp b/gui/retracer.cpp index 251028c..eaa86e3 100644 --- a/gui/retracer.cpp +++ b/gui/retracer.cpp @@ -19,7 +19,7 @@ Retracer::Retracer(QObject *parent) #else QString format = QLatin1String("%1:"); #endif - QString buildPath = format.arg(BUILD_DIR); + QString buildPath = format.arg(APITRACE_BINARY_DIR); m_processEnvironment = QProcessEnvironment::systemEnvironment(); m_processEnvironment.insert("PATH", buildPath + m_processEnvironment.value("PATH")); diff --git a/gui/traceprocess.cpp b/gui/traceprocess.cpp index dcf00a7..6bdd1c4 100644 --- a/gui/traceprocess.cpp +++ b/gui/traceprocess.cpp @@ -8,22 +8,22 @@ static QString findPreloader() { - QString libPath = QString::fromLatin1("%1/glxtrace.so") - .arg(BUILD_DIR); + QString libPath; + QFileInfo fi; - QFileInfo fi(libPath); - if (fi.exists()) - return libPath; - - libPath = QString::fromLatin1("/usr/local/lib/apitrace/glxtrace.so"); +#ifdef APITRACE_BINARY_DIR + libPath = QString::fromLatin1(APITRACE_BINARY_DIR "/glxtrace.so"); fi = QFileInfo(libPath); if (fi.exists()) return libPath; +#endif - libPath = QString::fromLatin1("/usr/lib/apitrace/glxtrace.so"); +#ifdef APITRACE_WRAPPER_INSTALL_DIR + libPath = QString::fromLatin1(APITRACE_WRAPPER_INSTALL_DIR "/glxtrace.so"); fi = QFileInfo(libPath); if (fi.exists()) return libPath; +#endif return QString(); } -- 2.43.0