schoappied wrote:
schoappied wrote:
Tyler Roscoe wrote:
On Thu, Jul 23, 2009 at 10:05:35PM +0200, schoappied wrote:
The part in the source looks like:

# check for libsndfile
PKG_CHECK_MODULES(SNDFILE REQUIRED sndfile>=1.0.11)
IF(NOT SNDFILE_FOUND)
MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev
= 1.0.11 - please install, remove CMakeCache.txt and try again!")
ENDIF(NOT SNDFILE_FOUND)

I've never used pkg_check_modules. What exactly are you trying to do? If
you're just trying to use the sndfile library, find_library() is
probably easier to use:

http://www.cmake.org/cmake/help/cmake2.6docs.html#command:find_library

The docs go into detail about how to insure that CMake finds your
library.

Such a command, should it look something like this?

find_library(<VAR> libsndfile-1.dll [C:\Program Files\libsndfile])

What is <VAR> ? Should I give it a name, or leave it this way?

You put this in CMakeLists right?


When looking into the source (I'm not a developer) I find on this location:
lmms\cmake\modules

these files. It looks like the files are meant for finding stuff

BuildPlugin.cmake
ChecksForLibSamplerate.cmake
DetectMachine.cmake
FindAlsa.cmake
FindOggVorbis.cmake
FindPkgConfig.cmake
FindPortaudio.cmake
FindPulseAudio.cmake
FindSTK.cmake
InstallHelpers.cmake
Win32Toolchain.cmake
Win64Toolchain.cmake
cmakefiles
config-alsa.h.cmake


No, I meant your system PATH variable. CMake Find modules use your PATH
to help locate specific libraries.


I mostly work on Linux, so I'm not experienced on Windows, but this is how my PATH looks like now:

%GTK_BASEPATH%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\MinGW\bin;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\libsndfile


Thanks for your help.

Regards,

~D



Explored some more, to solve the issue:

First maybe this is interesting:

$ pkg-config --libs sndfile
Package sndfile was not found in the pkg-config search path.
Perhaps you should add the directory containing `sndfile.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sndfile' found


Besides that, I found a FindSndfile.cmake file on the internet (see attachment)

I put it in lmms\cmake\modules

And added these entries in the cmake gui:

SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include SNDFILE_LIBRARY C:/Program Files/Mega-Nerd/libsndfile

But same error:

Found Qt-Version 4.5.2
checking for module 'sndfile>=1.0.11'
 package 'sndfile>=1.0.11' not found
CMake Error at cmake/modules/FindPkgConfig.cmake:270 (message):
 A required package was not found
Call Stack (most recent call first):
 cmake/modules/FindPkgConfig.cmake:322 (_pkg_check_modules_internal)
 CMakeLists.txt:116 (PKG_CHECK_MODULES)


CMake Error at CMakeLists.txt:118 (MESSAGE):
 LMMS requires libsndfile1 and libsndfile1-dev >= 1.0.11 - please install,
 remove CMakeCache.txt and try again!


Configuring incomplete, errors occurred!


I don't know if I have to change something to CMakeLists



Regards,

~D

# - Find sndfile
# Find the native sndfile includes and libraries
#
#  SNDFILE_INCLUDE_DIR - where to find sndfile.h, etc.
#  SNDFILE_LIBRARIES   - List of libraries when using libsndfile.
#  SNDFILE_FOUND       - True if libsndfile found.

if(SNDFILE_INCLUDE_DIR)
    # Already in cache, be silent
    set(SNDFILE_FIND_QUIETLY TRUE)
endif(SNDFILE_INCLUDE_DIR)

find_path(SNDFILE_INCLUDE_DIR sndfile.h)

find_library(SNDFILE_LIBRARY NAMES sndfile)

# Handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if
# all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SNDFILE DEFAULT_MSG
    SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY)

if(SNDFILE_FOUND)
  set(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY})
else(SNDFILE_FOUND)
  set(SNDFILE_LIBRARIES)
endif(SNDFILE_FOUND)

mark_as_advanced(SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY)
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5)

PROJECT(lmms)

SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})

IF(COMMAND CMAKE_POLICY)
        CMAKE_POLICY(SET CMP0005 NEW)
        CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND CMAKE_POLICY)

INCLUDE(AddFileDependencies)
INCLUDE(CheckIncludeFiles)
INCLUDE(FindPkgConfig)

SET(VERSION_MAJOR "0")
SET(VERSION_MINOR "4")
SET(VERSION_PATCH "4")
#SET(VERSION_SUFFIX "")
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
IF(VERSION_SUFFIX)
        SET (VERSION "${VERSION}-${VERSION_SUFFIX}")
ENDIF(VERSION_SUFFIX)
ADD_DEFINITIONS(-D'LMMS_VERSION="${VERSION}"')


INCLUDE(DetectMachine)

IF(LMMS_HOST_X86_64)
        SET(STRIP /opt/mingw64/bin/x86_64-pc-mingw32-strip)
ELSE(LMMS_HOST_X86_64)
        SET(STRIP /opt/mingw32/bin/i586-pc-mingw32-strip)
ENDIF(LMMS_HOST_X86_64)

OPTION(WANT_ALSA        "Include ALSA (Advanced Linux Sound Architecture) 
support" ON)
OPTION(WANT_CAPS        "Include C* Audio Plugin Suite (LADSPA plugins)" ON)
OPTION(WANT_CMT         "Include Computer Music Toolkit LADSPA plugins" ON)
OPTION(WANT_FFTW3F      "Include SpectrumAnalyzer and ZynAddSubFX plugin" ON)
OPTION(WANT_JACK        "Include JACK (Jack Audio Connection Kit) support" ON)
OPTION(WANT_OGGVORBIS   "Include OGG/Vorbis support" ON)
OPTION(WANT_PULSEAUDIO  "Include PulseAudio support" ON)
#OPTION(WANT_PORTAUDIO  "Include PortAudio support" ON) # TODO: fix PortAudio 
support
OPTION(WANT_SDL         "Include SDL (Simple DirectMedia Layer) support" ON)
OPTION(WANT_SF2         "Include SoundFont2 player plugin" ON)
OPTION(WANT_STK         "Include Stk (Synthesis Toolkit) support" ON)
OPTION(WANT_SYSTEM_SR   "Use system's libsamplerate" ON)
OPTION(WANT_SWH         "Include Steve Harris's LADSPA plugins" ON)
OPTION(WANT_TAP         "Include Tom's Audio Processing LADSPA plugins" ON)
OPTION(WANT_VST         "Include VST support" ON)
OPTION(WANT_VST_NOWINE  "Include partial VST support (without wine)" OFF)
OPTION(WANT_WINMM       "Include WinMM MIDI support" OFF)

IF(LMMS_BUILD_WIN32)
        SET(WANT_ALSA OFF)
        SET(WANT_JACK OFF)
        SET(WANT_PULSEAUDIO OFF)
        SET(WANT_SYSTEM_SR OFF)
        SET(WANT_WINMM ON)
        SET(LMMS_HAVE_WINMM TRUE)
        SET(STATUS_ALSA "<not supported on this platform>")
        SET(STATUS_JACK "<not supported on this platform>")
        SET(STATUS_PULSEAUDIO "<not supported on this platform>")
        SET(STATUS_WINMM "OK")
ELSE(LMMS_BUILD_WIN32)
        SET(STATUS_WINMM "<not supported on this platform>")
ENDIF(LMMS_BUILD_WIN32)



CHECK_INCLUDE_FILES(stdint.h LMMS_HAVE_STDINT_H)
CHECK_INCLUDE_FILES(stdlib.h LMMS_HAVE_STDLIB_H)
CHECK_INCLUDE_FILES(pthread.h LMMS_HAVE_PTHREAD_H)
CHECK_INCLUDE_FILES(semaphore.h LMMS_HAVE_SEMAPHORE_H)
CHECK_INCLUDE_FILES(unistd.h LMMS_HAVE_UNISTD_H)
CHECK_INCLUDE_FILES(sys/types.h LMMS_HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILES(sys/ipc.h LMMS_HAVE_SYS_IPC_H)
CHECK_INCLUDE_FILES(sys/shm.h LMMS_HAVE_SYS_SHM_H)
CHECK_INCLUDE_FILES(sys/time.h LMMS_HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILES(sys/wait.h LMMS_HAVE_SYS_WAIT_H)
CHECK_INCLUDE_FILES(sys/select.h LMMS_HAVE_SYS_SELECT_H)
CHECK_INCLUDE_FILES(stdarg.h LMMS_HAVE_STDARG_H)
CHECK_INCLUDE_FILES(signal.h LMMS_HAVE_SIGNAL_H)
CHECK_INCLUDE_FILES(sched.h LMMS_HAVE_SCHED_H)
CHECK_INCLUDE_FILES(sys/soundcard.h LMMS_HAVE_SYS_SOUNDCARD_H)
CHECK_INCLUDE_FILES(soundcard.h LMMS_HAVE_SOUNDCARD_H)
CHECK_INCLUDE_FILES(fcntl.h LMMS_HAVE_FCNTL_H)
CHECK_INCLUDE_FILES(sys/ioctl.h LMMS_HAVE_SYS_IOCTL_H)
CHECK_INCLUDE_FILES(ctype.h LMMS_HAVE_CTYPE_H)
CHECK_INCLUDE_FILES(string.h LMMS_HAVE_STRING_H)
CHECK_INCLUDE_FILES(process.h LMMS_HAVE_PROCESS_H)
CHECK_INCLUDE_FILES(locale.h LMMS_HAVE_LOCALE_H)

# check for Qt4
SET(QT_MIN_VERSION "4.3.0")
FIND_PACKAGE(Qt4 REQUIRED)
SET(QT_USE_QTXML 1)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_TRANSLATIONS" 
OUTPUT_VARIABLE QT_TRANSLATIONS_DIR)
IF(LMMS_BUILD_WIN32)
        SET(QT_TRANSLATIONS_DIR "/opt/mingw32/share/qt4/translations/")
        # hack to allow making moc.exe a symlink to native moc-binary in 
compatible version
        SET(QT_MOC_EXECUTABLE ${QT_BINARY_DIR}/moc.exe)
ENDIF(LMMS_BUILD_WIN32)
IF(LMMS_BUILD_WIN64)
        SET(QT_TRANSLATIONS_DIR "/opt/mingw64/share/qt4/translations/")
ENDIF(LMMS_BUILD_WIN64)
IF(EXISTS "${QT_TRANSLATIONS_DIR}")
        MESSAGE("-- Found Qt translations in ${QT_TRANSLATIONS_DIR}")
        ADD_DEFINITIONS(-D'QT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}"')
ENDIF(EXISTS "${QT_TRANSLATIONS_DIR}")
IF(NOT WIN32)
        STRING(REPLACE "-DQT_DLL" "" QT_DEFINITIONS "${QT_DEFINITIONS}")
ENDIF(NOT WIN32)
INCLUDE(${QT_USE_FILE})

# check for libsndfile
PKG_CHECK_MODULES(SNDFILE REQUIRED sndfile>=1.0.11)
IF(NOT SNDFILE_FOUND)
        MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev >= 
1.0.11 - please install, remove CMakeCache.txt and try again!")
ENDIF(NOT SNDFILE_FOUND)

IF(WANT_CAPS)
SET(LMMS_HAVE_CAPS TRUE)
SET(STATUS_CAPS "OK")
ELSE(WANT_CAPS)
SET(STATUS_CAPS "not built as requested")
ENDIF(WANT_CAPS)

IF(WANT_CMT)
SET(LMMS_HAVE_CMT TRUE)
SET(STATUS_CMT "OK")
ELSE(WANT_CMT)
SET(STATUS_CMT "not built as requested")
ENDIF(WANT_CMT)

IF(WANT_SWH)
SET(LMMS_HAVE_SWH TRUE)
SET(STATUS_SWH "OK")
ELSE(WANT_SWH)
SET(STATUS_SWH "not built as requested")
ENDIF(WANT_SWH)

IF(WANT_TAP)
SET(LMMS_HAVE_TAP TRUE)
SET(STATUS_TAP "OK")
ELSE(WANT_TAP)
SET(STATUS_TAP "not built as requested")
ENDIF(WANT_TAP)


# check for SDL
IF(WANT_SDL)
        SET(SDL_BUILDING_LIBRARY TRUE)
        FIND_PACKAGE(SDL)
        IF(SDL_FOUND)
                SET(LMMS_HAVE_SDL TRUE)
                SET(STATUS_SDL "OK")
        ELSE(SDL_FOUND)
                SET(STATUS_SDL "not found, please install libsdl1.2-dev (or 
similiar) "
                        "if you require SDL support")
        ENDIF(SDL_FOUND)
ENDIF(WANT_SDL)
IF(NOT LMMS_HAVE_SDL)
        SET(SDL_INCLUDE_DIR "")
ELSE(NOT LMMS_HAVE_SDL)
        IF(NOT SDL_INCLUDE_DIR)
                SET(SDL_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/include)
        ENDIF(NOT SDL_INCLUDE_DIR)
ENDIF(NOT LMMS_HAVE_SDL)


# check for Stk
IF(WANT_STK)
        FIND_PACKAGE(STK)
        IF(STK_FOUND)
                SET(LMMS_HAVE_STK TRUE)
                SET(STATUS_STK "OK")
        ELSE(STK_FOUND)
                SET(STK_INCLUDE_DIR "")
                SET(STATUS_STK "not found, please install libstk0-dev (or 
similiar) "
                        "if you require the Vibed Instrument")
        ENDIF(STK_FOUND)
ENDIF(WANT_STK)


# check for PortAudio
#IF(WANT_PORTAUDIO)
#       FIND_PACKAGE(Portaudio)
#       IF(PORTAUDIO_FOUND)
#               SET(LMMS_HAVE_PORTAUDIO TRUE)
#               SET(STATUS_PORTAUDIO "OK")
#       ELSE(PORTAUDIO_FOUND)
#               SET(STATUS_PORTAUDIO "not found, please install 
libportaudio-dev (or similiar, version >= 1.8) "
#                       "if you require Portaudio support")
#       ENDIF(PORTAUDIO_FOUND)
#ENDIF(WANT_PORTAUDIO)
IF(NOT LMMS_HAVE_PORTAUDIO)
        SET(PORTAUDIO_INCLUDE_DIR "")
        SET(PORTAUDIO_LIBRARIES "")
ENDIF(NOT LMMS_HAVE_PORTAUDIO)


# check for PulseAudio
IF(WANT_PULSEAUDIO)
        FIND_PACKAGE(PulseAudio)
        IF(PULSEAUDIO_FOUND)
                SET(LMMS_HAVE_PULSEAUDIO TRUE)
                SET(STATUS_PULSEAUDIO "OK")
        ELSE(PULSEAUDIO_FOUND)
                SET(STATUS_PULSEAUDIO "not found, please install libpulse-dev 
(or similiar) "
                        "if you require PulseAudio support")
        ENDIF(PULSEAUDIO_FOUND)
ENDIF(WANT_PULSEAUDIO)
IF(NOT LMMS_HAVE_PULSEAUDIO)
        SET(PULSEAUDIO_INCLUDE_DIR "")
        SET(PULSEAUDIO_LIBRARIES "")
ENDIF(NOT LMMS_HAVE_PULSEAUDIO)


# check for OGG/Vorbis-libraries
IF(WANT_OGGVORBIS)
        FIND_PACKAGE(OggVorbis)
        IF(OGGVORBIS_FOUND)
                SET(LMMS_HAVE_OGGVORBIS TRUE)
                SET(STATUS_OGGVORBIS "OK")
        ELSE(OGGVORBIS_FOUND)
                SET(STATUS_OGGVORBIS "not found, libogg-dev and libvorbis-dev 
(or similiar) "
                        "is highly recommended")
        ENDIF(OGGVORBIS_FOUND)
ENDIF(WANT_OGGVORBIS)


# check whether to enable OSS-support
IF(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)
        SET(LMMS_HAVE_OSS TRUE)
        SET(STATUS_OSS "OK")
ELSE(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)
        SET(STATUS_OSS "<not found or not supported on this platform>")
ENDIF(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)


# check for ALSA
IF(WANT_ALSA)
        FIND_PACKAGE(Alsa)
        IF(ALSA_FOUND)
                SET(LMMS_HAVE_ALSA TRUE)
                SET(STATUS_ALSA "OK")
        ELSE(ALSA_FOUND)
                SET(STATUS_ALSA "not found, please install libasound2-dev (or 
similiar) "
                        "if you require ALSA support")
        ENDIF(ALSA_FOUND)
ENDIF(WANT_ALSA)
IF(NOT LMMS_HAVE_ALSA)
        SET(ASOUND_LIBRARY "")
ENDIF(NOT LMMS_HAVE_ALSA)


# check for JACK
IF(WANT_JACK)
        PKG_CHECK_MODULES(JACK jack>=0.77)
        IF(JACK_FOUND)
                SET(LMMS_HAVE_JACK TRUE)
                SET(STATUS_JACK "OK")
        ELSE(JACK_FOUND)
                SET(STATUS_JACK "not found, please install libjack0.100.0-dev 
(or similiar) "
                        "if you require JACK support")
        ENDIF(JACK_FOUND)
ENDIF(WANT_JACK)


# check for FFTW3F-library
IF(WANT_FFTW3F)
        PKG_CHECK_MODULES(FFTW3F fftw3f>=3.0.0)
        IF(FFTW3F_FOUND)
                SET(LMMS_HAVE_FFTW3F TRUE)
                SET(STATUS_FFTW3F "OK")
        ELSE(FFTW3F_FOUND)
                SET(STATUS_FFTW3F "not found, libfftw3-dev (or similiar) "
                        "is highly recommended")
        ENDIF(FFTW3F_FOUND)
ENDIF(WANT_FFTW3F)


# check for Fluidsynth
IF(WANT_SF2)
        PKG_CHECK_MODULES(FLUIDSYNTH fluidsynth>=1.0.7)
        IF(FLUIDSYNTH_FOUND)
                SET(LMMS_HAVE_FLUIDSYNTH TRUE)
                SET(STATUS_FLUIDSYNTH "OK")
        ELSE(FLUIDSYNTH_FOUND)
                SET(STATUS_FLUIDSYNTH "not found, libfluidsynth-dev (or 
similiar)"
                        "is highly recommended")
        ENDIF(FLUIDSYNTH_FOUND)
ENDIF(WANT_SF2)


# check for WINE
IF(WANT_VST)
        INCLUDE(CheckLibraryExists)
        INCLUDE(CheckIncludeFileCXX)
        SET(CMAKE_REQUIRED_FLAGS_ORIG ${CMAKE_REQUIRED_FLAGS})
        SET(CMAKE_REQUIRED_INCLUDES_ORIG ${CMAKE_REQUIRED_INCLUDES})
        SET(CMAKE_CXX_COMPILER_ORIG ${CMAKE_CXX_COMPILER})
        IF(LMMS_HOST_X86_64)
                SET(CMAKE_REQUIRED_FLAGS -m32 ${CMAKE_REQUIRED_FLAGS})
        ENDIF(LMMS_HOST_X86_64)
        CHECK_LIBRARY_EXISTS(wine wine_init "" HAVE_LIBWINE)
        SET(CMAKE_CXX_COMPILER /usr/bin/wineg++)
        SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} 
${CMAKE_INSTALL_PREFIX}/include/wine/windows /usr/include/wine/windows)
        CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H)
        SET(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER_ORIG})
        SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_ORIG})
        SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_ORIG})
        IF(HAVE_LIBWINE AND HAVE_WINDOWS_H)
                SET(LMMS_SUPPORT_VST TRUE)
                SET(STATUS_VST "OK")
        ELSE(HAVE_LIBWINE AND HAVE_WINDOWS_H)
                SET(STATUS_VST "not found, please install (lib)wine-dev (or 
similiar) - 64 bit systems additionally need gcc-multilib and g++-multilib")
        ENDIF(HAVE_LIBWINE AND HAVE_WINDOWS_H)
ENDIF(WANT_VST)
IF(LMMS_BUILD_WIN32)
        SET(LMMS_SUPPORT_VST TRUE)
        SET(STATUS_VST "OK")
ENDIF(LMMS_BUILD_WIN32)


# check for libsamplerate
IF(WANT_SYSTEM_SR)
        PKG_CHECK_MODULES(SAMPLERATE samplerate>=0.1.7)
        IF(SAMPLERATE_FOUND)
                SET(LMMS_HAVE_SAMPLERATE TRUE)
        ENDIF(SAMPLERATE_FOUND)
ENDIF(WANT_SYSTEM_SR)
IF(NOT LMMS_HAVE_SAMPLERATE)
        INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate)
        SET(CMAKE_CROSSCOMPILING_ORIG "${CMAKE_CROSSCOMPILING}")
        SET(CMAKE_CROSSCOMPILING "")
        INCLUDE(ChecksForLibSamplerate)
        SET(LIBSAMPLERATE_SOURCES 
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/samplerate.c
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/samplerate.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/src_sinc.c
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/high_qual_coeffs.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/mid_qual_coeffs.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/fastest_coeffs.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/common.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/config.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/float_cast.h
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/src_zoh.c
                ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/src_linear.c)
        SET(CMAKE_CROSSCOMPILING "${CMAKE_CROSSCOMPILING_ORIG}")
ENDIF(NOT LMMS_HAVE_SAMPLERATE)


CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/lmmsconfig.h.in 
${CMAKE_BINARY_DIR}/lmmsconfig.h)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/lmms.rc.in ${CMAKE_BINARY_DIR}/lmms.rc)

# set compiler flags
#SET(CMAKE_BUILD_TYPE relwithdebug)
SET(CMAKE_C_FLAGS "-O2 -g -Wall -ftree-vectorize ${CMAKE_C_FLAGS}")
SET(CMAKE_CXX_FLAGS "-O2 -g -fno-exceptions -Wall -ftree-vectorize 
${CMAKE_CXX_FLAGS}")
#SET(CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} "${CMAKE_C_FLAGS}")
#SET(CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE} "${CMAKE_CXX_FLAGS}")


# people simply updating SVN will still have this and mess up build with it
FILE(REMOVE include/lmmsconfig.h)

FILE(GLOB lmms_INCLUDES ${CMAKE_SOURCE_DIR}/include/*.h)
FILE(GLOB lmms_UI ${CMAKE_SOURCE_DIR}/src/gui/dialogs/*.ui)
FILE(GLOB_RECURSE lmms_SOURCES ${CMAKE_SOURCE_DIR}/src/*.cpp)

SET(lmms_MOC ${lmms_INCLUDES})

SET(lmms_EMBEDDED_RESOURCES ${CMAKE_SOURCE_DIR}/AUTHORS 
${CMAKE_SOURCE_DIR}/COPYING)

QT4_WRAP_CPP(lmms_MOC_out ${lmms_MOC})
QT4_WRAP_UI(lmms_UI_out ${lmms_UI})


# embedded resources stuff
IF(WIN32 OR WIN64)
        # compile buildtools native
        SET(BIN2RES_CPP ${CMAKE_SOURCE_DIR}/buildtools/bin2res.cpp)
        SET(BIN2RES ${CMAKE_BINARY_DIR}/bin2res)
        ADD_CUSTOM_COMMAND(OUTPUT ${BIN2RES} COMMAND g++ ARGS ${BIN2RES_CPP} -o 
${BIN2RES} DEPENDS ${BIN2RES_CPP})
ELSE(WIN32 OR WIN64)
        ADD_EXECUTABLE(bin2res buildtools/bin2res.cpp)
        GET_TARGET_PROPERTY(BIN2RES bin2res LOCATION)
ENDIF(WIN32 OR WIN64)

SET(LMMS_ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h)

# we somehow have to make LMMS-binary depend on MOC-files
ADD_FILE_DEPENDENCIES(${CMAKE_BINARY_DIR}/lmmsconfig.h ${lmms_MOC_out})

ADD_CUSTOM_COMMAND(OUTPUT ${LMMS_ER_H} COMMAND ${BIN2RES} ARGS 
${lmms_EMBEDDED_RESOURCES} > ${LMMS_ER_H} DEPENDS ${BIN2RES})

IF(WIN32)
        SET(WINRC "${CMAKE_BINARY_DIR}/lmmsrc.obj")
        IF(LMMS_HOST_X86_64)
                SET(WINDRES /opt/mingw64/bin/x86_64-pc-mingw32-windres)
        ELSE(LMMS_HOST_X86_64)
                SET(WINDRES /opt/mingw32/bin/i586-pc-mingw32-windres)
        ENDIF(LMMS_HOST_X86_64)
        ADD_CUSTOM_COMMAND(OUTPUT ${WINRC}
                                COMMAND ${WINDRES}
                                        -I${CMAKE_SOURCE_DIR}
                                        -o${CMAKE_BINARY_DIR}/lmmsrc.obj
                                        -i${CMAKE_BINARY_DIR}/lmms.rc
                                DEPENDS ${CMAKE_BINARY_DIR}/lmms.rc)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes")
ELSE(WIN32)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -DPIC")
ENDIF(WIN32)



# make sub-directories
ADD_SUBDIRECTORY(plugins)
ADD_SUBDIRECTORY(data)


#
# build LMMS-binary
#
ADD_DEFINITIONS(-D'LIB_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/"' 
-D'PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/lmms/"' 
${PULSEAUDIO_DEFINITIONS} ${PORTAUDIO_DEFINITIONS})

INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include 
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/include ${SDL_INCLUDE_DIR} 
${PORTAUDIO_INCLUDE_DIR} ${PULSEAUDIO_INCLUDE_DIR} ${JACK_INCLUDE_DIRS} 
${OGGVORBIS_INCLUDE_DIR} ${SAMPLERATE_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIRS})
LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib ${ASOUND_LIBRARY_DIR} 
${JACK_LIBRARY_DIRS} ${SAMPLERATE_LIBRARY_DIRS} ${SNDFILE_LIBRARY_DIRS})
LINK_LIBRARIES(${QT_LIBRARIES} ${ASOUND_LIBRARY} ${SDL_LIBRARY} 
${PORTAUDIO_LIBRARIES} ${PULSEAUDIO_LIBRARIES} ${JACK_LIBRARIES} 
${OGGVORBIS_LIBRARIES} ${SAMPLERATE_LIBRARIES} ${SNDFILE_LIBRARIES})

ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/lmms.1.gz COMMAND gzip -c 
${CMAKE_SOURCE_DIR}/lmms.1 > ${CMAKE_BINARY_DIR}/lmms.1.gz DEPENDS 
${CMAKE_SOURCE_DIR}/lmms.1 COMMENT "Generating lmms.1.gz")

ADD_EXECUTABLE(lmms ${lmms_SOURCES} ${lmms_INCLUDES} ${LIBSAMPLERATE_SOURCES} 
${LMMS_ER_H} ${lmms_UI_out} lmmsconfig.h ${WINRC} ${CMAKE_BINARY_DIR}/lmms.1.gz)

IF(LMMS_BUILD_WIN32)

        SET_TARGET_PROPERTIES(lmms PROPERTIES LINK_FLAGS "${LINK_FLAGS} 
-mwindows")
        ADD_CUSTOM_COMMAND(TARGET lmms POST_BUILD COMMAND ${STRIP} 
${CMAKE_BINARY_DIR}/lmms.exe)

        INSTALL(TARGETS lmms RUNTIME DESTINATION .)
        IF(LMMS_BUILD_WIN64)
                INSTALL(FILES /opt/mingw64/bin/QtCore4.dll 
/opt/mingw64/bin/QtGui4.dll /opt/mingw64/bin/QtXml4.dll 
/opt/mingw64/bin/libsndfile-1.dll /opt/mingw64/bin/libvorbis-0.dll 
/opt/mingw64/bin/libvorbisenc-2.dll /opt/mingw64/bin/libvorbisfile-3.dll 
/opt/mingw64/bin/libogg-0.dll /opt/mingw64/bin/libfluidsynth-1.dll 
/opt/mingw64/bin/libfftw3f-3.dll /opt/mingw64/bin/SDL.dll DESTINATION .)
        ELSE(LMMS_BUILD_WIN64)
                INSTALL(FILES /opt/mingw32/bin/QtCore4.dll 
/opt/mingw32/bin/QtGui4.dll /opt/mingw32/bin/QtXml4.dll 
/opt/mingw32/bin/libz.dll /opt/mingw32/bin/libsndfile-1.dll 
/opt/mingw32/bin/libvorbis-0.dll /opt/mingw32/bin/libvorbisenc-2.dll 
/opt/mingw32/bin/libvorbisfile-3.dll /opt/mingw32/bin/libogg-0.dll 
/opt/mingw32/bin/libfluidsynth-1.dll /opt/mingw32/bin/libfftw3f-3.dll 
/opt/mingw32/bin/SDL.dll /opt/mingw32/i586-pc-mingw32/bin/mingwm10.dll 
DESTINATION .)
        ENDIF(LMMS_BUILD_WIN64)

ELSE(LMMS_BUILD_WIN32)
        IF(NOT LMMS_BUILD_APPLE)
                SET_TARGET_PROPERTIES(lmms PROPERTIES LINK_FLAGS "${LINK_FLAGS} 
-Wl,-E")
        ENDIF(NOT LMMS_BUILD_APPLE)

        INSTALL(TARGETS lmms RUNTIME DESTINATION bin)
        INSTALL(FILES ${CMAKE_BINARY_DIR}/lmms.1.gz DESTINATION 
${CMAKE_INSTALL_PREFIX}/share/man/man1/ PERMISSIONS OWNER_READ GROUP_READ 
WORLD_READ)

ENDIF(LMMS_BUILD_WIN32)

#
# rules for building localizations
#
FILE(GLOB lmms_LOCALES data/locale/*.ts)
SET(ts_targets "")
SET(qm_targets "")
FOREACH(_ts_file ${lmms_LOCALES})
        STRING(REPLACE "${CMAKE_SOURCE_DIR}/data/locale/" "" _ts_target 
"${_ts_file}")
        STRING(REPLACE ".ts" ".qm" _qm_file "${_ts_file}")
        STRING(REPLACE ".ts" ".qm" _qm_target "${_ts_target}")
        ADD_CUSTOM_TARGET(${_ts_target} COMMAND ${QT_LUPDATE_EXECUTABLE} 
${lmms_SOURCES} `find ${CMAKE_SOURCE_DIR}/plugins/ -type f -name '*.cpp'` -ts 
${_ts_file})
        ADD_CUSTOM_TARGET(${_qm_target} COMMAND ${QT_LRELEASE_EXECUTABLE} 
${_ts_file} -qm ${_qm_file})
        LIST(APPEND ts_targets "${_ts_target}")
        LIST(APPEND qm_targets "${_qm_target}")
ENDFOREACH(_ts_file ${lmms_LOCALES})

ADD_CUSTOM_TARGET(update-locales)
FOREACH(_item ${ts_targets})
        ADD_DEPENDENCIES(update-locales ${_item})
ENDFOREACH(_item ${ts_targets})

ADD_CUSTOM_TARGET(finalize-locales)
FOREACH(_item ${qm_targets})
        ADD_DEPENDENCIES(finalize-locales ${_item})
ENDFOREACH(_item ${qm_targets})


# install headers

IF(LMMS_BUILD_LINUX)
INSTALL(FILES ${lmms_INCLUDES} ${CMAKE_BINARY_DIR}/lmmsconfig.h 
${CMAKE_SOURCE_DIR}/src/gui/embed.cpp DESTINATION 
${CMAKE_INSTALL_PREFIX}/include/lmms/)
IF(NOT LMMS_HAVE_SAMPLERATE)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/src/3rdparty/samplerate/samplerate.h 
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/lmms/)
ENDIF(NOT LMMS_HAVE_SAMPLERATE)
ENDIF(LMMS_BUILD_LINUX)

# package ZynAddSubFX into win32 build
IF(LMMS_BUILD_WIN32)
IF(EXISTS ${CMAKE_SOURCE_DIR}/extras)
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/extras/data/presets)
FILE(GLOB ZASF_BINARIES 
${CMAKE_SOURCE_DIR}/extras/plugins/zynaddsubfx/zynaddsubfx.dll 
${CMAKE_SOURCE_DIR}/extras/plugins/zynaddsubfx/remote_zynaddsubfx.exe)
INSTALL(FILES ${ZASF_BINARIES} DESTINATION ${PLUGIN_DIR})
ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/extras)
ENDIF(LMMS_BUILD_WIN32)

#
# add distclean-target
#
ADD_CUSTOM_TARGET(distclean
                        COMMAND make clean
                        COMMAND rm -rf `find -name cmake_install.cmake` `find 
-name Makefile` `find -type d -name CMakeFiles` CMakeCache.txt lmmsconfig.h 
lmms.1.gz)

#
# add tarball-target
#
SET(TMP "lmms-${VERSION}")
ADD_CUSTOM_TARGET(dist
                        COMMAND make clean
                        COMMAND rm -rf ${TMP}
                        COMMAND mkdir -p ${TMP}
                        COMMAND cp AUTHORS build_mingw32 ChangeLog 
CMakeLists.txt configure COPYING INSTALL lmms.1 lmms.rc.in lmms.spec.in 
lmmsconfig.h.in README TODO ${TMP}
                        COMMAND cp -r buildtools cmake data include plugins src 
${TMP}
                        COMMAND rm -rf `find ${TMP} -type d -name ".svn"`  
`find ${TMP} -name cmake_install.cmake` `find ${TMP} -name Makefile` `find 
${TMP} -type d -name CMakeFiles` ${TMP}/CMakeCache.txt
                        COMMAND tar cjf lmms-${VERSION}.tar.bz2 ${TMP}
                        COMMAND rm -rf ${TMP})

#
# add win32-pkg-target (deprecated - use "package" target instead)
#
ADD_CUSTOM_TARGET(win32-pkg
                        COMMAND mkdir -p tmp/lmms/data
                        COMMAND mkdir -p tmp/lmms/plugins/ladspa/
                        COMMAND cp lmms.exe tmp/lmms
                        COMMAND find plugins/ -maxdepth 2 -name '*.dll'  -exec 
cp '{}' tmp/lmms/plugins/ "';'"
                        COMMAND rm tmp/lmms/plugins/caps.dll
                        COMMAND rm tmp/lmms/plugins/tap*.dll
                        COMMAND cp plugins/ladspa_effect/caps/caps.dll 
tmp/lmms/plugins/ladspa/
                        COMMAND cp plugins/ladspa_effect/tap/tap*.dll 
tmp/lmms/plugins/ladspa/
                        COMMAND cd data && make 
DESTDIR=${CMAKE_BINARY_DIR}/tmp/lmms/ install
                        COMMAND mv tmp/lmms/opt/mingw32/share/lmms/* 
tmp/lmms/data/ && rm -rf tmp/lmms/opt
                        COMMAND cp /opt/mingw32/bin/QtCore4.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/QtGui4.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/QtXml4.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libz.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libsndfile-1.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libvorbis*.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libogg-0.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libfluidsynth-1.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/libfftw3f-3.dll tmp/lmms
                        COMMAND cp /opt/mingw32/bin/SDL.dll tmp/lmms
                        COMMAND cp /opt/mingw32/i586-mingw32/bin/mingwm10.dll 
tmp/lmms
                        COMMAND cp -L ${CMAKE_SOURCE_DIR}/COPYING 
tmp/lmms/LICENSE.TXT
                        COMMAND cp -L ${CMAKE_SOURCE_DIR}/README 
tmp/lmms/README.TXT
                        COMMAND /opt/mingw32/bin/i586-pc-mingw32-strip 
tmp/lmms/lmms.exe tmp/lmms/plugins/*.dll tmp/lmms/plugins/ladspa/*.dll
                        COMMAND mv tmp/lmms tmp/lmms-${VERSION}
                        COMMAND cd tmp && zip -r -9 
../lmms-${VERSION}-bin-win32.zip lmms-${VERSION}/*
                        COMMAND rm -rf tmp
)


SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LMMS_ER_H} 
${lmms_MOC_out} ${lmms_UI_out} lmmsconfig.h lmms.1.gz")


#
# display configuration information
#

MESSAGE("\n"
"Installation Summary\n"
"--------------------\n"
"* Install Directory           : ${CMAKE_INSTALL_PREFIX}\n"
#"* Build type                  : ${CMAKE_BUILD_TYPE}\n"
"* Use system's libsamplerate  : ${LMMS_HAVE_SAMPLERATE}\n"
)

MESSAGE(
"Supported audio interfaces\n"
"--------------------------\n"
"* ALSA                        : ${STATUS_ALSA}\n"
"* JACK                        : ${STATUS_JACK}\n"
"* OSS                         : ${STATUS_OSS}\n"
#"* PortAudio                   : ${STATUS_PORTAUDIO}\n"
"* PulseAudio                  : ${STATUS_PULSEAUDIO}\n"
"* SDL                         : ${STATUS_SDL}\n"
)

MESSAGE(
"Supported MIDI interfaces\n"
"-------------------------\n"
"* ALSA                        : ${STATUS_ALSA}\n"
"* OSS                         : ${STATUS_OSS}\n"
"* WinMM                       : ${STATUS_WINMM}\n"
)

MESSAGE(
"Supported file formats for project export\n"
"-----------------------------------------\n"
"* WAVE                        : OK\n"
"* OGG/VORBIS                  : ${STATUS_OGGVORBIS}\n"
)

MESSAGE(
"Optional plugins\n"
"----------------\n"
"* SoundFont2 player           : ${STATUS_FLUIDSYNTH}\n"
"* Stk Mallets                 : ${STATUS_STK}\n"
"* VST-instrument hoster       : ${STATUS_VST}\n"
"* VST-effect hoster           : ${STATUS_VST}\n"
"* SpectrumAnalyzer            : ${STATUS_FFTW3F}\n"
"* CAPS LADSPA plugins         : ${STATUS_CAPS}\n"
"* CMT LADSPA plugins          : ${STATUS_CMT}\n"
"* TAP LADSPA plugins          : ${STATUS_TAP}\n"
"* SWH LADSPA plugins          : ${STATUS_SWH}\n"
"* ZynAddSubFX                 : ${STATUS_FFTW3F}\n"
)

MESSAGE(
"\n"
"-----------------------------------------------------------------\n"
"IMPORTANT:\n"
"after installing missing packages, remove CMakeCache.txt before\n"
"running cmake again!\n"
"-----------------------------------------------------------------\n"
"\n\n")

INCLUDE(InstallRequiredSystemLibraries)
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Linux MultiMedia Studio - easy music 
production for everyone!")
SET(CPACK_PACKAGE_VENDOR "LMMS Developers")
IF(LMMS_BUILD_APPLE)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/README ${CMAKE_BINARY_DIR}/README.txt 
COPYONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/COPYING ${CMAKE_BINARY_DIR}/COPYING.txt 
COPYONLY)
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_BINARY_DIR}/README.txt")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_BINARY_DIR}/COPYING.txt")
ELSE(LMMS_BUILD_APPLE)
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
ENDIF(LMMS_BUILD_APPLE)

SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
IF(VERSION_SUFFIX)
        SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}-${VERSION_SUFFIX}")
ENDIF(VERSION_SUFFIX)
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "LMMS ${VERSION}")
IF(WIN32)
SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/data\\\\nsis_branding.bmp")
SET(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/data\\\\lmms.ico")
SET(CPACK_NSIS_INSTALLED_ICON_NAME "lmms.exe")
SET(CPACK_NSIS_DISPLAY_NAME "Linux MultiMedia Studio (LMMS)")
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lmms.sourceforge.net")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lmms.sourceforge.net")
SET(CPACK_NSIS_CONTACT "lmms-de...@lists.sourceforge.net")
SET(CPACK_PACKAGE_EXECUTABLES "lmms.exe;Linux MultiMedia Studio")
SET(CPACK_NSIS_MENU_LINKS "lmms.exe;Linux MultiMedia Studio")
ELSE(WIN32)
SET(CPACK_STRIP_FILES "bin/lmms;${PLUGIN_DIR}/*.so")
SET(CPACK_PACKAGE_EXECUTABLES "lmms" "LMMS binary")
ENDIF(WIN32)

SET(MACOSX_BUNDLE_ICON_FILE "${CMAKE_SOURCE_DIR}/data/themes/default/icon.png")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "LMMS")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_NAME "Linux MultiMedia Studio")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
SET(MACOSX_BUNDLE_COPYRIGHT "Tobias Doerffel, 2008")

SET(CPACK_SOURCE_GENERATOR "TBZ2")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "lmms-${VERSION}")
INCLUDE(CPack)

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to