From 13ed9f41b546a69e44b0800bead94de3f7df6bec Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Wed, 13 Feb 2008 07:32:12 +0000 Subject: [PATCH] qprojectM made a library in it's own right on the cmake / pkgconfig side of things bug fixes and lots of error checking added to make installation easier for n00bs git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@825 6778bc44-b910-0410-a7a0-be141de4315d --- src/projectM-engine/libprojectM.pc.in | 2 +- src/projectM-jack/CMakeLists.txt | 23 ++++++++++-- src/projectM-libvisual/CMakeLists.txt | 23 ++++++++++-- src/projectM-test/CMakeLists.txt | 10 ++++-- src/qprojectM-jack/CMakeLists.txt | 35 ++++++++++++++---- src/qprojectM-pulseaudio/CMakeLists.txt | 48 ++++++++++++------------- src/qprojectM/CMakeLists.txt | 26 ++++++++++---- src/qprojectM/libqprojectM.pc.in | 13 +++++++ 8 files changed, 133 insertions(+), 47 deletions(-) create mode 100644 src/qprojectM/libqprojectM.pc.in diff --git a/src/projectM-engine/libprojectM.pc.in b/src/projectM-engine/libprojectM.pc.in index 40c427c2d..a833c3073 100644 --- a/src/projectM-engine/libprojectM.pc.in +++ b/src/projectM-engine/libprojectM.pc.in @@ -6,7 +6,7 @@ pkgdatadir=@CMAKE_INSTALL_PREFIX@/share/projectM sysconfdir=@CMAKE_INSTALL_PREFIX@/share/projectM Name: libprojectM -Version: 1.00 +Version: 1.10 Description: projectM - OpenGL Milkdrop Requires: +Libs: -L${libdir} -lprojectM diff --git a/src/projectM-jack/CMakeLists.txt b/src/projectM-jack/CMakeLists.txt index 7e2bab7ad..bed9fd153 100644 --- a/src/projectM-jack/CMakeLists.txt +++ b/src/projectM-jack/CMakeLists.txt @@ -7,17 +7,34 @@ INCLUDE(FindPkgConfig.cmake) FIND_PACKAGE(OpenGL) FIND_PACKAGE(SDL) -pkg_search_module(PROJECTM REQUIRED libprojectM) +if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) +else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + set(LIBPROJECTM true) +endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(JACK REQUIRED jack) +if (JACK_FOUND) +MESSAGE(STATUS "Jack detected") +else (JACK_FOUND) +MESSAGE(FATAL_ERROR "JACK is NOT found. Please install jack from http://www.jackaudio.org.") +endif(JACK_FOUND) + +if (LIBPROJECTM_FOUND) +MESSAGE (STATUS "projectM detected.") +else(LIBPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") +endif(LIBPROJECTM_FOUND) + ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"') if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) - set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM) + set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS}) endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${JACK_INCLUDEDIR} ${SDL_INCLUDE_DIR} ${GTK_INCLUDE_DIR}) diff --git a/src/projectM-libvisual/CMakeLists.txt b/src/projectM-libvisual/CMakeLists.txt index e41eab1d6..1a6de9151 100644 --- a/src/projectM-libvisual/CMakeLists.txt +++ b/src/projectM-libvisual/CMakeLists.txt @@ -6,17 +6,34 @@ INCLUDE(FindPkgConfig.cmake) FIND_PACKAGE(OpenGL) FIND_PACKAGE(SDL) -pkg_search_module(PROJECTM REQUIRED libprojectM) +if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) +else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + set(LIBPROJECTM true) +endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4) +if (LIBPROJECTM_FOUND) +MESSAGE (STATUS "projectM detected.") +else(LIBPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") +endif(LIBPROJECTM_FOUND) + +if(LIBVISUAL_FOUND) +MESSAGE(STATUS "libvisual detected") +else(LIBVISUAL_FOUND) +MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.") +endif(LIBVISUAL_FOUND) + ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"') if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) - set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM) + set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS}) endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${LIBVISUAL_INCLUDEDIR} ${SDL_INCLUDE_DIR}) diff --git a/src/projectM-test/CMakeLists.txt b/src/projectM-test/CMakeLists.txt index 7d66888b0..2092e8197 100644 --- a/src/projectM-test/CMakeLists.txt +++ b/src/projectM-test/CMakeLists.txt @@ -10,7 +10,11 @@ INCLUDE(FindPkgConfig.cmake) FIND_PACKAGE(OpenGL) FIND_PACKAGE(SDL) -pkg_search_module(PROJECTM REQUIRED libprojectM) +if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) +else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + set(LIBPROJECTM true) +endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"') @@ -18,8 +22,8 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) - set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM) + set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS}) endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${SDL_INCLUDE_DIR} ${GTK_INCLUDE_DIR}) diff --git a/src/qprojectM-jack/CMakeLists.txt b/src/qprojectM-jack/CMakeLists.txt index 4c2169b42..628e6be2e 100644 --- a/src/qprojectM-jack/CMakeLists.txt +++ b/src/qprojectM-jack/CMakeLists.txt @@ -4,15 +4,36 @@ set(QT_USE_OPENGL TRUE) include(${QT_USE_FILE} FindPkgConfig.cmake) +if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) + pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM) +else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + set(LIBPROJECTM_FOUND true) + set(LIBQPROJECTM_FOUND true) +endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + FIND_PACKAGE(OpenGL) FIND_PACKAGE(Qt4 REQUIRED) -# WRONG! How do I do this? using FIND_PACKAGE? -##pkg_search_module(PROJECTM REQUIRED projectM qprojectM) - pkg_search_module(JACK REQUIRED jack) -pkg_search_module(PROJECTM REQUIRED libprojectM) -pkg_search_module(PROJECTM REQUIRED libqprojectM) + +if (LIBPROJECTM_FOUND) +MESSAGE (STATUS "projectM detected.") +else(LIBPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") +endif(LIBPROJECTM_FOUND) + +if (LIBQPROJECTM_FOUND) +MESSAGE (STATUS "qprojectM detected.") +else(LIBQPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level projectM source directory.") +endif(LIBQPROJECTM_FOUND) + +if (JACK_FOUND) +MESSAGE(STATUS "Jack detected") +else (JACK_FOUND) +MESSAGE(FATAL_ERROR "JACK is NOT found. Please install jack from http://www.jackaudio.org.") +endif(JACK_FOUND) # the variable "qprojectM_SRCS" contains all .cpp files of this project set(qprojectM_jack_SRCS @@ -37,8 +58,8 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine ${PROJECTM_ROOT_SOURCE_DIR}/qprojectM) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine ${PROJECTM_ROOT_BINARY_DIR}/qprojectM) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) - set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libqprojectM ${LIBQPROJECTM_INCLUDEDIR}/libprojectM) + set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS} ${LIBQPROJECTM_LDFLAGS}) # qprojectM places itself in same location as (lib)projectM # whether it should is a whole other issue endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") diff --git a/src/qprojectM-pulseaudio/CMakeLists.txt b/src/qprojectM-pulseaudio/CMakeLists.txt index b76588f81..7487bd2c6 100644 --- a/src/qprojectM-pulseaudio/CMakeLists.txt +++ b/src/qprojectM-pulseaudio/CMakeLists.txt @@ -4,33 +4,33 @@ set(QT_USE_OPENGL TRUE) include(${QT_USE_FILE} FindPkgConfig.cmake) +# only search for these modules when not building monolithically + +if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) + pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM) +else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + set(LIBPROJECTM_FOUND true) + set(LIBQPROJECTM_FOUND true) +endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) + FIND_PACKAGE(OpenGL) FIND_PACKAGE(Qt4 REQUIRED) -# only search for these modules when not building monolithically - -#if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) -# set(LIBPROJECTM_FOUND true) -# pkg_search_module(LIBPROJECTM REQUIRED libprojectM) -# pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM) -#else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) -# set(LIBPROJECTM_FOUND true) -# set(LIBQPROJECTM_FOUND true) -#endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) pkg_search_module(LIBPULSE REQUIRED libpulse) -#if (LIBPROJECTM_FOUND) -#MESSAGE (STATUS "projectM detected.") -#else(LIBPROJECTM_FOUND) -#MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM #source directory.") -#endif(LIBPROJECTM_FOUND) -# -#if (LIBQPROJECTM_FOUND) -#MESSAGE (STATUS "qprojectM detected.") -#else(LIBQPROJECTM_FOUND) -#MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level #projectM source directory.") -#endif(LIBQPROJECTM_FOUND) +if (LIBPROJECTM_FOUND) +MESSAGE (STATUS "projectM detected.") +else(LIBPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") +endif(LIBPROJECTM_FOUND) + +if (LIBQPROJECTM_FOUND) +MESSAGE (STATUS "qprojectM detected.") +else(LIBQPROJECTM_FOUND) +MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level projectM source directory.") +endif(LIBQPROJECTM_FOUND) if (LIBPULSE_FOUND) MESSAGE(STATUS "Pulse audio detected") @@ -67,15 +67,15 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine ${PROJECTM_ROOT_SOURCE_DIR}/qprojectM) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine ${PROJECTM_ROOT_BINARY_DIR}/qprojectM) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) - set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM ${LIBQPROJECTM_INCLUDEDIR}/libqprojectM) + set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS} ${LIBQPROJECTM_LDFLAGS}) # qprojectM places itself in same location as (lib)projectM # whether it should is a whole other issue endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}) -LINK_DIRECTORIES(${PROJECTM_LINK} ${PULSEAUDIO_LDFLAGS}) +LINK_DIRECTORIES(${PROJECTM_LINK} ${PULSEAUDIO_LDFLAGS}) ADD_EXECUTABLE(qprojectM-pulseaudio ${qprojectM_pulseaudio_SRCS} ${qprojectM_pulseaudio_MOC_SRCS} ${qprojectM_pulseaudio_UIS_H}) diff --git a/src/qprojectM/CMakeLists.txt b/src/qprojectM/CMakeLists.txt index 9513f4c7c..a490ee6f0 100644 --- a/src/qprojectM/CMakeLists.txt +++ b/src/qprojectM/CMakeLists.txt @@ -1,11 +1,20 @@ # the next line sets up include and link directories and defines some variables that we will use. # you can modify the behavior by setting some variables, e.g. - project(qprojectM) # the name of your project cmake_minimum_required(VERSION 2.4.0) +include(FindPkgConfig.cmake) + +if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") + set(LIBPROJECTM_FOUND true) +else(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") + pkg_search_module(LIBPROJECTM REQUIRED libprojectM) +endif(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") + + find_package(Qt4 REQUIRED) # find and setup Qt4 for this project +include(${QT_USE_FILE}) if (QT4_FOUND) MESSAGE(STATUS "Qt4 Detected fine.") @@ -14,10 +23,15 @@ MESSAGE(FATAL_ERROR "Qt4 not detected. Please install Qt4 before continuing (vis endif(QT4_FOUND) set(QT_USE_OPENGL TRUE) -# -> this will cause cmake to include and link against the OpenGL module -include(${QT_USE_FILE} FindPkgConfig.cmake) +if (LIBPROJECTM_FOUND) + MESSAGE(STATUS "projectM detected.") +else (LIBPROJECTM_FOUND) + MESSAGE(FATAL_ERROR "projectM not detected! Please install the projectM module or build from top level projectM source directory.") +endif(LIBPROJECTM_FOUND) +CONFIGURE_FILE("libqprojectM.pc.in" "libqprojectM.pc" @ONLY) + ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"') ADD_DEFINITIONS(${QT_DEFINITIONS}) ADD_DEFINITIONS(-DQT_PLUGIN) @@ -69,12 +83,11 @@ ADD_LIBRARY(qprojectM SHARED ${qprojectM_SRCS} ${qprojectM_RC_SRCS} ${qprojectM_ SET_TARGET_PROPERTIES(qprojectM PROPERTIES VERSION 1.10 SOVERSION 1) - if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine) elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) - set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM) + set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM) set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") @@ -85,5 +98,6 @@ include_directories(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR # link the "qprojectM" target against the Qt libraries. which libraries exactly, is defined by the "include(${QT_USE_FILE})" line above, which sets up this variable. target_link_libraries(qprojectM projectM ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES}) -install(FILES QProjectM_MainWindow.hpp DESTINATION include/libprojectM) +install(FILES QProjectM_MainWindow.hpp DESTINATION include/libqprojectM) install(TARGETS qprojectM DESTINATION lib) +install(FILES "${CMAKE_BINARY_DIR}/libqprojectM.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig) \ No newline at end of file diff --git a/src/qprojectM/libqprojectM.pc.in b/src/qprojectM/libqprojectM.pc.in new file mode 100644 index 000000000..4adf1d5cf --- /dev/null +++ b/src/qprojectM/libqprojectM.pc.in @@ -0,0 +1,13 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@CMAKE_INSTALL_PREFIX@/lib +includedir=@CMAKE_INSTALL_PREFIX@/include +pkgdatadir=@CMAKE_INSTALL_PREFIX@/share/qprojectM +sysconfdir=@CMAKE_INSTALL_PREFIX@/share/qprojectM + +Name: libqprojectM +Version: 1.10 +Description: qprojectM - provides a full featured Qt4 graphical user interface to projectM +Requires: libprojectM QtCore QtGui QtXml QtOpenGL ++Libs: -L${libdir} -lqprojectM ++Cflags: -I${includedir}