From 6624f6f2b78a5c16362d3ffa09743f1356e1cda0 Mon Sep 17 00:00:00 2001 From: Pedro Lopez-Cabanillas Date: Wed, 17 Mar 2010 20:14:13 +0000 Subject: [PATCH] CMake build system - initial implementation --- fluidsynth/CMakeLists.txt | 383 ++++++++++++++++++ fluidsynth/README.cmake | 85 ++++ .../cmake_admin/CheckDIRSymbolExists.cmake | 75 ++++ .../cmake_admin/CheckPrototypeExists.cmake | 41 ++ fluidsynth/cmake_admin/CheckSTDC.cmake | 37 ++ .../cmake_admin/CreateLibtoolFile.cmake | 48 +++ fluidsynth/cmake_admin/FindMidiShare.cmake | 18 + fluidsynth/cmake_admin/FindOSS.cmake | 46 +++ fluidsynth/cmake_admin/FindPthreads.cmake | 96 +++++ fluidsynth/cmake_admin/FindReadline.cmake | 22 + fluidsynth/cmake_admin/TestInline.cmake | 15 + .../cmake_admin/cmake_uninstall.cmake.in | 22 + fluidsynth/cmake_admin/report.cmake | 134 ++++++ fluidsynth/doc/CMakeLists.txt | 35 ++ fluidsynth/doc/Doxyfile.cmake | 258 ++++++++++++ fluidsynth/include/CMakeLists.txt | 24 ++ fluidsynth/include/fluidsynth/CMakeLists.txt | 50 +++ fluidsynth/src/CMakeLists.txt | 246 +++++++++++ fluidsynth/src/config.cmake | 203 ++++++++++ fluidsynth/src/config_win32.cmake | 24 ++ 20 files changed, 1862 insertions(+) create mode 100644 fluidsynth/CMakeLists.txt create mode 100644 fluidsynth/README.cmake create mode 100644 fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake create mode 100644 fluidsynth/cmake_admin/CheckPrototypeExists.cmake create mode 100644 fluidsynth/cmake_admin/CheckSTDC.cmake create mode 100644 fluidsynth/cmake_admin/CreateLibtoolFile.cmake create mode 100644 fluidsynth/cmake_admin/FindMidiShare.cmake create mode 100644 fluidsynth/cmake_admin/FindOSS.cmake create mode 100644 fluidsynth/cmake_admin/FindPthreads.cmake create mode 100644 fluidsynth/cmake_admin/FindReadline.cmake create mode 100644 fluidsynth/cmake_admin/TestInline.cmake create mode 100644 fluidsynth/cmake_admin/cmake_uninstall.cmake.in create mode 100644 fluidsynth/cmake_admin/report.cmake create mode 100644 fluidsynth/doc/CMakeLists.txt create mode 100644 fluidsynth/doc/Doxyfile.cmake create mode 100644 fluidsynth/include/CMakeLists.txt create mode 100644 fluidsynth/include/fluidsynth/CMakeLists.txt create mode 100644 fluidsynth/src/CMakeLists.txt create mode 100644 fluidsynth/src/config.cmake create mode 100644 fluidsynth/src/config_win32.cmake diff --git a/fluidsynth/CMakeLists.txt b/fluidsynth/CMakeLists.txt new file mode 100644 index 00000000..cc66cac0 --- /dev/null +++ b/fluidsynth/CMakeLists.txt @@ -0,0 +1,383 @@ +# FluidSynth - A Software Synthesize +# +# Copyright (C) 2003-2010 Peter Hanappe and others. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307, USA + +# CMake based build system. Pedro Lopez-Cabanillas + +project ( FluidSynth C ) +cmake_minimum_required ( VERSION 2.6 ) +set ( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_admin ) + +# FluidSynth package name +set ( PACKAGE "fluidsynth" ) + +# FluidSynth package version +set ( FLUIDSYNTH_VERSION_MAJOR 1 ) +set ( FLUIDSYNTH_VERSION_MINOR 1 ) +set ( FLUIDSYNTH_VERSION_MICRO 1 ) +set ( VERSION "${FLUIDSYNTH_VERSION_MAJOR}.${FLUIDSYNTH_VERSION_MINOR}.${FLUIDSYNTH_VERSION_MICRO}" ) +set ( FLUIDSYNTH_VERSION "\"${VERSION}\"" ) + +# libfluidsynth - Library version +set ( LT_VERSION_CURRENT 1 ) +set ( LT_VERSION_AGE 3 ) +set ( LT_VERSION_REVISION 0 ) +set ( LT_VERSION_INFO "${LT_VERSION_CURRENT}.${LT_VERSION_AGE}.${LT_VERSION_REVISION}" ) + +# Options disabled by default +option ( enable-floats "enable type float instead of double for DSP samples" off ) +option ( enable-profiling "profile the dsp code" off ) +option ( enable-ladspa "enable LADSPA effect units" off ) +option ( enable-trap-on-fpe "enable SIGFPE trap on Floating Point Exceptions" off ) +option ( enable-fpe-check "enable Floating Point Exception checks and debug messages" off ) +option ( enable-debug "enable debugging (default=no)" off ) +option ( enable-ladcca "compile LADCCA support if it is available (deprecated)" off ) + +# Options enabled by default +option ( enable-libsndfile "compile libsndfile support (if it is available)" on ) +option ( enable-aufile "compile support for sound file output" on ) +option ( enable-pulseaudio "compile PulseAudio support (if it is available)" on ) +option ( enable-alsa "compile ALSA support (if it is available)" on ) +option ( enable-portaudio "compile PortAudio support (if it is available)" on ) +option ( enable-jack "compile JACK support (if it is available)" on ) +option ( enable-coreaudio "compile CoreAudio support (if it is available)" on ) +option ( enable-coremidi "compile CoreMIDI support (if it is available)" on ) +option ( enable-midishare "compile MidiShare support (if it is available)" on ) +option ( enable-dart "compile DART support (if it is available)" on ) +option ( enable-readline "compile readline lib line editing (if it is available)" on ) +option ( enable-lash "compile LASH support (if it is available)" on ) + +# Initialize the library directory name suffix. +if ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) + set ( _init_lib_suffix "64" ) +else ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) + set ( _init_lib_suffix "" ) +endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) +set ( LIB_SUFFIX ${_init_lib_suffix} CACHE STRING + "library directory name suffix (32/64/nothing)" ) +mark_as_advanced ( LIB_SUFFIX ) + +# Basic C library checks +include ( CheckSTDC ) +include ( CheckIncludeFile ) +check_include_file ( string.h HAVE_STRING_H ) +check_include_file ( stdlib.h HAVE_STDLIB_H ) +check_include_file ( stdio.h HAVE_STDIO_H ) +check_include_file ( math.h HAVE_MATH_H ) +check_include_file ( errno.h HAVE_ERRNO_H ) +check_include_file ( stdarg.h HAVE_STDARG_H ) +check_include_file ( unistd.h HAVE_UNISTD_H ) +check_include_file ( memory.h HAVE_MEMORY_H ) +check_include_file ( sys/mman.h HAVE_SYS_MMAN_H ) +check_include_file ( sys/types.h HAVE_SYS_TYPES_H ) +check_include_file ( sys/time.h HAVE_SYS_TIME_H ) +check_include_file ( sys/stat.h HAVE_SYS_STAT_H ) +check_include_file ( sys/ioctl.h HAVE_SYS_IOCTL_H ) +check_include_file ( fcntl.h HAVE_FCNTL_H ) +check_include_file ( sys/socket.h HAVE_SYS_SOCKET_H ) +check_include_file ( netinet/in.h HAVE_NETINET_IN_H ) +check_include_file ( netinet/tcp.h HAVE_NETINET_TCP_H ) +check_include_file ( arpa/inet.h HAVE_ARPA_INET_H ) +check_include_file ( limits.h HAVE_LIMITS_H ) +check_include_file ( pthread.h HAVE_PTHREAD_H ) +check_include_file ( signal.h HAVE_SIGNAL_H ) +include ( TestInline ) +include ( TestBigEndian ) +test_big_endian ( WORDS_BIGENDIAN ) + +set ( LIBFLUID_CPPFLAGS ) +set ( LIBFLUID_LIBS ) +set ( FLUID_CPPFLAGS ) +set ( FLUID_LIBS ) + +# Options for the GNU C compiler only +if ( CMAKE_COMPILER_IS_GNUCC ) + if ( NOT APPLE ) + set ( CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed" ) + set ( CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) + endif ( NOT APPLE ) + set ( CMAKE_C_FLAGS_DEBUG "-g -Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-unused-parameter -Wno-cast-qual -DDEBUG" ) + set ( CMAKE_C_FLAGS_RELEASE "-O2 -fomit-frame-pointer -funroll-all-loops -finline-functions -Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Winline -Wno-unused-parameter -Wno-cast-qual -DNDEBUG" ) +endif ( CMAKE_COMPILER_IS_GNUCC ) + +# Windows +set ( WINDOWS_SUPPORT ) +set ( WINDOWS_LIBS ) +set ( MINGW32 ) +if ( WIN32 ) + check_include_file ( windows.h HAVE_WINDOWS_H ) + check_include_file ( io.h HAVE_IO_H ) + check_include_file ( dsound.h HAVE_DSOUND_H ) + check_include_file ( mmsystem.h HAVE_MMSYSTEM_H ) + set ( WINDOWS_SUPPORT ${HAVE_WINDOWS_H} ) + set ( WINDOWS_LIBS "dsound;winmm;ws2_32" ) + set ( LIBFLUID_CPPFLAGS "-DFLUIDSYNTH_DLL_EXPORTS" ) + set ( FLUID_CPPFLAGS "-DFLUIDSYNTH_NOT_A_DLL" ) + # MinGW compiler (a Windows GCC port) + if ( MINGW ) + set ( MINGW32 1 ) + add_definitions ( -mms-bitfields ) + endif ( MINGW ) +else ( WIN32 ) +# Check PThreads, but not in Windows + find_package ( Pthreads REQUIRED ) + set ( HAVE_LIBPTHREAD ${PTHREADS_FOUND} ) + set ( LIBFLUID_LIBS "m" ) +endif ( WIN32 ) + +# IBM OS/2 +set ( DART_SUPPORT ) +set ( DART_LIBS ) +if ( ${CMAKE_SYSTEM} MATCHES "os2" ) + set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Zbin-files" ) + set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Zbin-files -no-undefined" ) + if ( enable-dart ) + check_include_file ( os2me.h HAVE_DART_H ) + set ( DART_SUPPORT ${HAVE_DART_H} ) + set ( DART_INCLUDE_DIRS ) + endif ( enable-dart ) +endif ( ${CMAKE_SYSTEM} MATCHES "os2" ) + +# Solaris / SunOS +if ( ${CMAKE_SYSTEM} MATCHES "SunOS" ) + set ( FLUID_LIBS "${FLUID_LIBS};nsl;socket" ) + set ( LIBFLUID_LIBS "${LIBFLUID_LIBS};nsl;socket" ) +endif ( ${CMAKE_SYSTEM} MATCHES "SunOS" ) + +# Apple Mac OSX +set ( COREAUDIO_SUPPORT ) +set ( COREAUDIO_LIBS ) +set ( COREMIDI_SUPPORT ) +set ( COREMIDI_LIBS ) +set ( DARWIN ) +if ( ${CMAKE_SYSTEM} MATCHES "Darwin" ) + set ( DARWIN 1 ) + if ( enable-coreaudio ) + check_include_file ( CoreAudio/AudioHardware.h COREAUDIO_FOUND ) + if ( COREAUDIO_FOUND ) + set ( COREAUDIO_SUPPORT ${COREAUDIO_FOUND} ) + set ( COREAUDIO_LIBS "-Wl,-framework,CoreAudio" ) + endif ( COREAUDIO_FOUND ) + endif ( enable-coreaudio ) + if ( enable-coremidi ) + check_include_file ( CoreMIDI/MIDIServices.h COREMIDI_FOUND ) + if ( COREMIDI_FOUND ) + set ( COREMIDI_SUPPORT ${COREMIDI_FOUND} ) + set ( COREMIDI_LIBS "-Wl,-framework,CoreMIDI,-framework,CoreServices" ) + endif ( COREMIDI_FOUND ) + endif ( enable-coremidi ) +endif ( ${CMAKE_SYSTEM} MATCHES "Darwin" ) + +set ( WITH_FLOAT ) +if ( enable-floats ) + set ( WITH_FLOAT 1 ) +endif ( enable-floats ) + +set ( WITH_PROFILING ) +if ( enable-profiling ) + set ( WITH_PROFILING 1 ) +endif ( enable-profiling ) + +set ( HAVE_LIBDL ) +set ( LADSPA_SUPPORT ) +if ( enable-ladspa ) + check_include_file ( ladspa.h LADSPA_SUPPORT ) + if ( LADSPA_SUPPORT ) + if ( CMAKE_DL_LIBS ) + set ( HAVE_LIBDL 1 ) + set ( LIBFLUID_LIBS "${LIBFLUID_LIBS};${CMAKE_DL_LIBS}" ) + endif ( CMAKE_DL_LIBS ) + endif ( LADSPA_SUPPORT ) +endif ( enable-ladspa ) + +set ( ENABLE_TRAPONFPE ) +set ( TRAP_ON_FPE ) +if ( enable-trap-on-fpe AND NOT APPLE AND NOT WIN32 ) + set ( ENABLE_TRAPONFPE 1 ) + set ( TRAP_ON_FPE 1 ) +endif ( enable-trap-on-fpe AND NOT APPLE AND NOT WIN32 ) + +set ( ENABLE_FPECHECK ) +set ( FPE_CHECK ) +if ( enable-fpe-check ) + set ( ENABLE_FPECHECK 1 ) + set ( FPE_CHECK 1 ) +endif ( enable-fpe-check ) + +if ( enable-debug ) + set ( CMAKE_BUILD_TYPE "Debug" CACHE STRING + "Choose the build type, options: Debug Release RelWithDebInfo" FORCE ) +endif ( enable-debug ) + +set ( ENABLE_DEBUG ) +set ( DEBUG ) +if ( CMAKE_BUILD_TYPE MATCHES "Debug" ) + set ( ENABLE_DEBUG 1 ) + set ( DEBUG 1 ) +endif ( CMAKE_BUILD_TYPE MATCHES "Debug" ) + +# Mandatory tool: pkg-config +find_package ( PkgConfig REQUIRED ) + +# Mandatory libraries: glib and gthread +set ( GLIB_LIBRARIES ) +pkg_check_modules ( GLIB REQUIRED glib-2.0>=2.6.5 gthread-2.0>=2.6.5 ) + +# Optional features +set ( LIBSNDFILE_SUPPORT ) +set ( LIBSNDFILE_HASVORBIS ) +set ( LIBSNDFILE_LIBRARIES ) +if ( enable-libsndfile ) + pkg_check_modules ( LIBSNDFILE sndfile>=1.0.0 ) + set ( LIBSNDFILE_SUPPORT ${LIBSNDFILE_FOUND} ) + if ( LIBSNDFILE_SUPPORT ) + pkg_check_modules ( LIBSNDFILE_VORBIS sndfile>=1.0.18 ) + set ( LIBSNDFILE_HASVORBIS ${LIBSNDFILE_VORBIS_FOUND} ) + endif ( LIBSNDFILE_SUPPORT ) +endif ( enable-libsndfile ) + +set ( AUFILE_SUPPORT ) +if ( enable-aufile ) + set ( AUFILE_SUPPORT 1 ) +endif ( enable-aufile ) + +set ( PULSE_SUPPORT ) +set ( PULSE_LIBRARIES ) +if ( enable-pulseaudio ) + pkg_check_modules ( PULSE libpulse-simple>=0.9.8 ) + set ( PULSE_SUPPORT ${PULSE_FOUND} ) +endif ( enable-pulseaudio ) + +set ( ALSA_SUPPORT ) +set ( ALSA_LIBRARIES ) +if ( enable-alsa ) + pkg_check_modules ( ALSA alsa>=0.9.1 ) + set ( ALSA_SUPPORT ${ALSA_FOUND} ) +endif ( enable-alsa ) + +set ( PORTAUDIO_SUPPORT ) +set ( PORTAUDIO_LIBRARIES ) +if ( enable-portaudio ) + pkg_check_modules ( PORTAUDIO portaudio-2.0>=19 ) + set ( PORTAUDIO_SUPPORT ${PORTAUDIO_FOUND} ) +endif ( enable-portaudio ) + +find_package ( OSS QUIET ) +set ( OSS_SUPPORT ${OSS_FOUND} ) + +set ( MIDISHARE_SUPPORT ) +set ( MidiShare_LIBS ) +if ( enable_midishare ) + find_package ( MidiShare ) + set ( MIDISHARE_SUPPORT ${MidiShare_FOUND} ) +endif ( enable_midishare ) + +set ( JACK_SUPPORT ) +set ( JACK_LIBRARIES ) +if ( enable-jack ) + pkg_check_modules ( JACK jack ) + set ( JACK_SUPPORT ${JACK_FOUND} ) +endif ( enable-jack ) + +set ( WITH_READLINE ) +set ( READLINE_LIBS ) +if ( enable-readline ) + find_package ( Readline ) + set ( FOUND_READLINE ${HAVE_READLINE} ) + set ( WITH_READLINE ${HAVE_READLINE} ) + if ( HAVE_READLINE ) + set ( READLINE_LIBS ${READLINE_LIBRARIES} ) + endif ( HAVE_READLINE ) +endif ( enable-readline ) + +set ( LASH_SUPPORT ) +set ( LASH_LIBRARIES ) +if ( enable-lash ) + pkg_check_modules ( LASH lash-1.0>=0.3 ) + if ( LASH_FOUND ) + set ( LASH_SUPPORT ${LASH_FOUND} ) + add_definitions ( -DHAVE_LASH ) + endif ( LASH_FOUND ) +endif ( enable-lash ) + +set ( LADCCA_SUPPORT ) +set ( LADCCA_LIBRARIES ) +if ( enable-ladcca ) + pkg_check_modules ( LADCCA ladcca-1.0>=0.3 ) + set ( LADCCA_SUPPORT ${LADCCA_FOUND} ) +endif ( enable-ladcca ) + +# General configuration file +configure_file ( ${CMAKE_SOURCE_DIR}/src/config.cmake + ${CMAKE_BINARY_DIR}/config.h ) +add_definitions ( -DHAVE_CONFIG_H ) + +# Extra configuration file for MS VisualC compiler +if ( MSVC ) + configure_file ( ${CMAKE_SOURCE_DIR}/src/config_win32.cmake + ${CMAKE_BINARY_DIR}/config_win32.h ) +endif ( MSVC ) + +# Process subdirectories +add_subdirectory ( src ) +add_subdirectory ( include ) +add_subdirectory ( doc ) + +# Extra targets for Unix build environments +if ( UNIX ) + # RPM spec + configure_file ( fluidsynth.spec.in + ${CMAKE_BINARY_DIR}/fluidsynth.spec IMMEDIATE @ONLY ) + + # pkg-config support + set ( prefix "${CMAKE_INSTALL_PREFIX}" ) + set ( exec_prefix "\${prefix}" ) + set ( libdir "\${exec_prefix}/lib${LIB_SUFFIX}" ) + set ( includedir "\${prefix}/include" ) + configure_file ( fluidsynth.pc.in + ${CMAKE_BINARY_DIR}/fluidsynth.pc IMMEDIATE @ONLY ) + install ( FILES ${CMAKE_BINARY_DIR}/fluidsynth.pc + DESTINATION lib${LIB_SUFFIX}/pkgconfig ) + + # uninstall custom target + configure_file ( "${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + add_custom_target ( uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + + # tarball custom target + add_custom_target ( tarball + COMMAND mkdir -p ${PACKAGE}-${VERSION} + COMMAND cp -r bindings ${PACKAGE}-${VERSION} + COMMAND cp -r cmake_admin ${PACKAGE}-${VERSION} + COMMAND cp -r doc ${PACKAGE}-${VERSION} + COMMAND cp -r include ${PACKAGE}-${VERSION} + COMMAND cp -r src ${PACKAGE}-${VERSION} + COMMAND cp AUTHORS ChangeLog CMakeLists.txt COPYING ${PACKAGE}.* INSTALL NEWS README* THANKS TODO ${PACKAGE}-${VERSION} + COMMAND tar -cj --exclude .svn --exclude Makefile.am -f ${PACKAGE}-${VERSION}.tar.bz2 ${PACKAGE}-${VERSION} + COMMAND tar -cz --exclude .svn --exclude Makefile.am -f ${PACKAGE}-${VERSION}.tar.gz ${PACKAGE}-${VERSION} + COMMAND zip -qr ${PACKAGE}-${VERSION}.zip ${PACKAGE}-${VERSION} -x '*.svn*' -x '*Makefile.am' + COMMAND rm -rf ${PACKAGE}-${VERSION} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) +endif ( UNIX ) + +include ( report ) diff --git a/fluidsynth/README.cmake b/fluidsynth/README.cmake new file mode 100644 index 00000000..5a80460c --- /dev/null +++ b/fluidsynth/README.cmake @@ -0,0 +1,85 @@ +What is CMake? +============== + +CMake is a cross platform build system, that can be used to replace the old +auto-tools, providing a nice building environment and advanced features. + +Some of these features are: +* Out of sources build: CMake allows you to build your software into a directory + different to the source tree. You can safely delete the build directory and + all its contents once you are done. +* Multiple generators: classic makefiles can be generated for Unix and MinGW, + but also Visual Studio, XCode and Eclipse CDT projects among other types. +* Graphic front-ends for configuration and build options. + +More information and documentation is available at the CMake project site: + http://www.cmake.org + +CMake is free software. You can get the sources and pre-compiled packages for +Linux and other systems at: + http://www.cmake.org/cmake/resources/software.html + +How to use it? +============== + +1. You need CMake 2.6 or later to build FluidSynth + +2. Unpack the FluidSynth sources somewhere, or checkout the repository, + and create a build directory. For instance, using a command line shell: + +$ tar -xvzf Downloads/fluidsynth-x.y.z.tar.gz +$ cd fluidsynth-x.y.z +$ mkdir build + +2. Execute CMake from the build directory, providing the source directory + location and optionally, the build options. There are several ways. + +* From a command line shell: + +$ pwd +fluidsynth-x.y.z +$ cd build +$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -Denable-ladspa=1 + +Valid values for boolean (enable-xxxx) options: 1, 0, yes, no, on, off. + +* There are also several alternative CMake front-ends, if you don't want to use + the command line interface: + * ncurses based program, for Linux and Unix: ccmake + * GUI, Qt4 based program, multiplatform: cmake-gui + * GUI, Windows native program: CMakeSetup.exe + +3. Execute the build command. If you used the Makefiles generator (the default + in Linux and other Unix systems) then execute make, gmake or mingw32-make. + If you generated a project file, use your IDE to build it. + +Compiling with make +=================== + +There are many targets available. To see a complete list of them, type: + +$ make help + +The build process usually hides the compiler command lines, to show them: + +$ make VERBOSE=1 + +There is a "clean" target, but not a "distclean" one. You should use a build +directory different to the source tree. In this case, the "distclean" target +would be equivalent to simply removing the build directory. + +If something fails +================== + +If there is an error message while executing CMake, this probably means that a +required package is missing in your system. You should install the missing +component and run CMake again. + +If there is an error executing the build process, after running a flawless CMake +configuration process, this means that there may be an error in the source code, +or in the build system, or something incompatible in 3rd party libraries. + +The CMake build system for FluidSynth is experimental. It will take a while +until it becomes stable and fully tested. You can help providing feedback, +please send a report containing your problems to the FluidSynth development +mailing list: http://lists.nongnu.org/mailman/listinfo/fluid-dev diff --git a/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake b/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake new file mode 100644 index 00000000..4e259c09 --- /dev/null +++ b/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake @@ -0,0 +1,75 @@ +# - Check if the DIR symbol exists like in AC_HEADER_DIRENT. +# CHECK_DIRSYMBOL_EXISTS(FILES VARIABLE) +# +# FILES - include files to check +# VARIABLE - variable to return result +# +# This module is a small but important variation on CheckSymbolExists.cmake. +# The symbol always searched for is DIR, and the test programme follows +# the AC_HEADER_DIRENT test programme rather than the CheckSymbolExists.cmake +# test programme which always fails since DIR tends to be typedef'd +# rather than #define'd. +# +# The following variables may be set before calling this macro to +# modify the way the check is run: +# +# CMAKE_REQUIRED_FLAGS = string of compile command line flags +# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) +# CMAKE_REQUIRED_INCLUDES = list of include directories +# CMAKE_REQUIRED_LIBRARIES = list of libraries to link + +MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) + IF(NOT DEFINED ${VARIABLE}) + SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") + SET(MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) + IF(CMAKE_REQUIRED_LIBRARIES) + SET(CHECK_DIRSYMBOL_EXISTS_LIBS + "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") + ELSE(CMAKE_REQUIRED_LIBRARIES) + SET(CHECK_DIRSYMBOL_EXISTS_LIBS) + ENDIF(CMAKE_REQUIRED_LIBRARIES) + IF(CMAKE_REQUIRED_INCLUDES) + SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES + "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") + ELSE(CMAKE_REQUIRED_INCLUDES) + SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES) + ENDIF(CMAKE_REQUIRED_INCLUDES) + FOREACH(FILE ${FILES}) + SET(CMAKE_CONFIGURABLE_FILE_CONTENT + "${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n") + ENDFOREACH(FILE) + SET(CMAKE_CONFIGURABLE_FILE_CONTENT + "${CMAKE_CONFIGURABLE_FILE_CONTENT}\nint main()\n{if ((DIR *) 0) return 0;}\n") + + CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in" + "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c" @ONLY) + + MESSAGE(STATUS "Looking for DIR in ${FILES}") + TRY_COMPILE(${VARIABLE} + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} + CMAKE_FLAGS + -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS} + "${CHECK_DIRSYMBOL_EXISTS_LIBS}" + "${CMAKE_DIRSYMBOL_EXISTS_INCLUDES}" + OUTPUT_VARIABLE OUTPUT) + IF(${VARIABLE}) + MESSAGE(STATUS "Looking for DIR in ${FILES} - found") + SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol DIR") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log + "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " + "passed with the following output:\n" + "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" + "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") + ELSE(${VARIABLE}) + MESSAGE(STATUS "Looking for DIR in ${FILES} - not found.") + SET(${VARIABLE} "" CACHE INTERNAL "Have symbol DIR") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log + "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " + "failed with the following output:\n" + "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" + "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") + ENDIF(${VARIABLE}) + ENDIF(NOT DEFINED ${VARIABLE}) +ENDMACRO(CHECK_DIRSYMBOL_EXISTS) diff --git a/fluidsynth/cmake_admin/CheckPrototypeExists.cmake b/fluidsynth/cmake_admin/CheckPrototypeExists.cmake new file mode 100644 index 00000000..0fa6bccb --- /dev/null +++ b/fluidsynth/cmake_admin/CheckPrototypeExists.cmake @@ -0,0 +1,41 @@ +# - Check if the prototype for a function exists. +# CHECK_PROTOTYPE_EXISTS (FUNCTION HEADER VARIABLE) +# +# FUNCTION - the name of the function you are looking for +# HEADER - the header(s) where the prototype should be declared +# VARIABLE - variable to store the result +# +# The following variables may be set before calling this macro to +# modify the way the check is run: +# +# CMAKE_REQUIRED_FLAGS = string of compile command line flags +# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) +# CMAKE_REQUIRED_INCLUDES = list of include directories + +# Copyright (c) 2006, Alexander Neundorf, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +INCLUDE(CheckCSourceCompiles) + +MACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) + SET(_INCLUDE_FILES) + FOREACH (it ${_HEADER}) + SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") + ENDFOREACH (it) + + SET(_CHECK_PROTO_EXISTS_SOURCE_CODE " +${_INCLUDE_FILES} +int main() +{ +#ifndef ${_SYMBOL} + int i = sizeof(&${_SYMBOL}); +#endif + return 0; +} +") + + CHECK_C_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT}) +ENDMACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) diff --git a/fluidsynth/cmake_admin/CheckSTDC.cmake b/fluidsynth/cmake_admin/CheckSTDC.cmake new file mode 100644 index 00000000..5074bd5b --- /dev/null +++ b/fluidsynth/cmake_admin/CheckSTDC.cmake @@ -0,0 +1,37 @@ +message(STATUS "Checking whether system has ANSI C header files") +include(CheckPrototypeExists) +include(CheckIncludeFiles) + +check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist) +if(StandardHeadersExist) + check_prototype_exists(memchr string.h memchrExists) + if(memchrExists) + check_prototype_exists(free stdlib.h freeExists) + if(freeExists) + message(STATUS "ANSI C header files - found") + set(STDC_HEADERS 1 CACHE INTERNAL "System has ANSI C header files") + set(HAVE_STRINGS_H 1) + set(HAVE_STRING_H 1) + set(HAVE_FLOAT_H 1) + set(HAVE_STDLIB_H 1) + set(HAVE_STDDEF_H 1) + set(HAVE_STDINT_H 1) + set(HAVE_INTTYPES_H 1) + set(HAVE_DLFCN_H 1) + endif(freeExists) + endif(memchrExists) +endif(StandardHeadersExist) + +if(NOT STDC_HEADERS) + message(STATUS "ANSI C header files - not found") + set(STDC_HEADERS 0 CACHE INTERNAL "System has ANSI C header files") +endif(NOT STDC_HEADERS) + +check_include_files(unistd.h HAVE_UNISTD_H) + +include(CheckDIRSymbolExists) +check_dirsymbol_exists("sys/stat.h;sys/types.h;dirent.h" HAVE_DIRENT_H) +if (HAVE_DIRENT_H) + set(HAVE_SYS_STAT_H 1) + set(HAVE_SYS_TYPES_H 1) +endif (HAVE_DIRENT_H) diff --git a/fluidsynth/cmake_admin/CreateLibtoolFile.cmake b/fluidsynth/cmake_admin/CreateLibtoolFile.cmake new file mode 100644 index 00000000..c6e965c5 --- /dev/null +++ b/fluidsynth/cmake_admin/CreateLibtoolFile.cmake @@ -0,0 +1,48 @@ +# origin: http://www.cmake.org/Wiki/CMakeMacroLibtoolFile + +MACRO(GET_TARGET_PROPERTY_WITH_DEFAULT _variable _target _property _default_value) + GET_TARGET_PROPERTY (${_variable} ${_target} ${_property}) + IF (${_variable} MATCHES ".*NOTFOUND$") + SET (${_variable} ${_default_value}) + ENDIF (${_variable} MATCHES ".*NOTFOUND$") +ENDMACRO (GET_TARGET_PROPERTY_WITH_DEFAULT) + +MACRO(CREATE_LIBTOOL_FILE _target _install_DIR) + GET_TARGET_PROPERTY(_target_location ${_target} LOCATION) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_static_lib ${_target} STATIC_LIB "") + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dependency_libs ${_target} LT_DEPENDENCY_LIBS "") + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_current ${_target} LT_VERSION_CURRENT 0) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_age ${_target} LT_VERSION_AGE 0) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_revision ${_target} LT_VERSION_REVISION 0) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_installed ${_target} LT_INSTALLED yes) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_shouldnotlink ${_target} LT_SHOULDNOTLINK yes) + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlopen ${_target} LT_DLOPEN "") + GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlpreopen ${_target} LT_DLPREOPEN "") + GET_FILENAME_COMPONENT(_laname ${_target_location} NAME_WE) + GET_FILENAME_COMPONENT(_soname ${_target_location} NAME) + SET(_laname ${_laname}.la) + SET(_laname_file "${CMAKE_CURRENT_BINARY_DIR}/${_laname}") + FILE(WRITE ${_laname_file} "# ${_laname} - a libtool library file, generated by cmake \n") + FILE(APPEND ${_laname_file} "# The name that we can dlopen(3).\n") + FILE(APPEND ${_laname_file} "dlname='${_soname}'\n") + FILE(APPEND ${_laname_file} "# Names of this library\n") + FILE(APPEND ${_laname_file} "library_names='${_soname}.${_target_current}.${_target_age}.${_target_revision} ${_soname}.${_target_current} ${_soname}'\n") + FILE(APPEND ${_laname_file} "# The name of the static archive\n") + FILE(APPEND ${_laname_file} "old_library='${_target_static_lib}'\n") + FILE(APPEND ${_laname_file} "# Libraries that this one depends upon.\n") + FILE(APPEND ${_laname_file} "dependency_libs='${_target_dependency_libs}'\n") + FILE(APPEND ${_laname_file} "# Version information.\n") + FILE(APPEND ${_laname_file} "current=${_target_current}\n") + FILE(APPEND ${_laname_file} "age=${_target_age}\n") + FILE(APPEND ${_laname_file} "revision=${_target_revision}\n") + FILE(APPEND ${_laname_file} "# Is this an already installed library?\n") + FILE(APPEND ${_laname_file} "installed=${_target_installed}\n") + FILE(APPEND ${_laname_file} "# Should we warn about portability when linking against -modules?\n") + FILE(APPEND ${_laname_file} "shouldnotlink=${_target_shouldnotlink}\n") + FILE(APPEND ${_laname_file} "# Files to dlopen/dlpreopen\n") + FILE(APPEND ${_laname_file} "dlopen='${_target_dlopen}'\n") + FILE(APPEND ${_laname_file} "dlpreopen='${_target_dlpreopen}'\n") + FILE(APPEND ${_laname_file} "# Directory that this library needs to be installed in:\n") + FILE(APPEND ${_laname_file} "libdir='${CMAKE_INSTALL_PREFIX}/${_install_DIR}'\n") + INSTALL(FILES ${_laname_file} DESTINATION ${_install_DIR}) +ENDMACRO(CREATE_LIBTOOL_FILE) diff --git a/fluidsynth/cmake_admin/FindMidiShare.cmake b/fluidsynth/cmake_admin/FindMidiShare.cmake new file mode 100644 index 00000000..06f56e6f --- /dev/null +++ b/fluidsynth/cmake_admin/FindMidiShare.cmake @@ -0,0 +1,18 @@ +# Try to find the READLINE library +# MidiShare_FOUND - system has MidiShare +# MidiShare_INCLUDE_DIR - MidiShare include directory +# MidiShare_LIBS - Libraries needed to use MidiShare + +if ( MidiShare_INCLUDE_DIR AND MidiShare_LIBS ) + set ( MidiShare_FIND_QUIETLY TRUE ) +endif ( MidiShare_INCLUDE_DIR AND MidiShare_LIBS ) + +find_path ( MidiShare_INCLUDE_DIR NAMES MidiShare.h ) +find_library ( MidiShare_LIBS NAMES MidiShare ) + +include ( FindPackageHandleStandardArgs ) +find_package_handle_standard_args( MidiShare DEFAULT_MSG + MidiShare_INCLUDE_DIR + MidiShare_LIBS ) + +mark_as_advanced( MidiShare_INCLUDE_DIR MidiShare_LIBS ) diff --git a/fluidsynth/cmake_admin/FindOSS.cmake b/fluidsynth/cmake_admin/FindOSS.cmake new file mode 100644 index 00000000..105b3ec9 --- /dev/null +++ b/fluidsynth/cmake_admin/FindOSS.cmake @@ -0,0 +1,46 @@ +# - Find Oss +# Find Oss headers and libraries. +# +# OSS_INCLUDE_DIR - where to find soundcard.h, etc. +# OSS_FOUND - True if Oss found. + + +FIND_PATH(LINUX_OSS_INCLUDE_DIR "linux/soundcard.h" + "/usr/include" "/usr/local/include" +) + +FIND_PATH(SYS_OSS_INCLUDE_DIR "sys/soundcard.h" + "/usr/include" "/usr/local/include" +) + +FIND_PATH(MACHINE_OSS_INCLUDE_DIR "machine/soundcard.h" + "/usr/include" "/usr/local/include" +) + +SET(OSS_FOUND FALSE) + +IF(LINUX_OSS_INCLUDE_DIR) + SET(OSS_FOUND TRUE) + SET(OSS_INCLUDE_DIR ${LINUX_OSS_INCLUDE_DIR}) + SET(HAVE_LINUX_SOUNDCARD_H 1) +ENDIF() + +IF(SYS_OSS_INCLUDE_DIR) + SET(OSS_FOUND TRUE) + SET(OSS_INCLUDE_DIR ${SYS_OSS_INCLUDE_DIR}) + SET(HAVE_SYS_SOUNDCARD_H 1) +ENDIF() + +IF(MACHINE_OSS_INCLUDE_DIR) + SET(OSS_FOUND TRUE) + SET(OSS_INCLUDE_DIR ${MACHINE_OSS_INCLUDE_DIR}) + SET(HAVE_MACHINE_SOUNDCARD_H 1) +ENDIF() + +MARK_AS_ADVANCED ( + OSS_FOUND + OSS_INCLUDE_DIR + LINUX_OSS_INCLUDE_DIR + SYS_OSS_INCLUDE_DIR + MACHINE_OSS_INCLUDE_DIR +) diff --git a/fluidsynth/cmake_admin/FindPthreads.cmake b/fluidsynth/cmake_admin/FindPthreads.cmake new file mode 100644 index 00000000..e44e0835 --- /dev/null +++ b/fluidsynth/cmake_admin/FindPthreads.cmake @@ -0,0 +1,96 @@ +# - Find the Pthreads library +# This module searches for the Pthreads library (including the +# pthreads-win32 port). +# +# This module defines these variables: +# +# PTHREADS_FOUND +# True if the Pthreads library was found +# PTHREADS_LIBRARY +# The location of the Pthreads library +# PTHREADS_INCLUDE_DIR +# The include directory of the Pthreads library +# PTHREADS_DEFINITIONS +# Preprocessor definitions to define (HAVE_PTHREAD_H is a fairly common +# one) +# +# This module responds to the PTHREADS_EXCEPTION_SCHEME +# variable on Win32 to allow the user to control the +# library linked against. The Pthreads-win32 port +# provides the ability to link against a version of the +# library with exception handling. IT IS NOT RECOMMENDED +# THAT YOU CHANGE PTHREADS_EXCEPTION_SCHEME TO ANYTHING OTHER THAN +# "C" because most POSIX thread implementations do not support stack +# unwinding. +# +# PTHREADS_EXCEPTION_SCHEME +# C = no exceptions (default) +# (NOTE: This is the default scheme on most POSIX thread +# implementations and what you should probably be using) +# CE = C++ Exception Handling +# SE = Structure Exception Handling (MSVC only) +# + +# +# Define a default exception scheme to link against +# and validate user choice. +# +IF(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) + # Assign default if needed + SET(PTHREADS_EXCEPTION_SCHEME "C") +ELSE(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) + # Validate + IF(NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "C" AND + NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "CE" AND + NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") + + MESSAGE(FATAL_ERROR "See documentation for FindPthreads.cmake, only C, CE, and SE modes are allowed") + + ENDIF(NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "C" AND + NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "CE" AND + NOT PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") + + IF(NOT MSVC AND PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") + MESSAGE(FATAL_ERROR "Structured Exception Handling is only allowed for MSVC") + ENDIF(NOT MSVC AND PTHREADS_EXCEPTION_SCHEME STREQUAL "SE") + +ENDIF(NOT DEFINED PTHREADS_EXCEPTION_SCHEME) + +# +# Find the header file +# +FIND_PATH(PTHREADS_INCLUDE_DIR pthread.h) + +# +# Find the library +# +SET(names) +IF(MSVC) + SET(names + pthreadV${PTHREADS_EXCEPTION_SCHEME}2 + pthread + ) +ELSEIF(MINGW) + SET(names + pthreadG${PTHREADS_EXCEPTION_SCHEME}2 + pthread + ) +ELSE(MSVC) # Unix / Cygwin / Apple / Etc. + SET(names pthread) +ENDIF(MSVC) + +FIND_LIBRARY(PTHREADS_LIBRARY ${names} + DOC "The Portable Threads Library") + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Pthreads DEFAULT_MSG + PTHREADS_LIBRARY PTHREADS_INCLUDE_DIR) + +IF(PTHREADS_INCLUDE_DIR AND PTHREADS_LIBRARY) + SET(PTHREADS_DEFINITIONS -DHAVE_PTHREAD_H) + SET(PTHREADS_INCLUDE_DIRS ${PTHREADS_INCLUDE_DIR}) + SET(PTHREADS_LIBRARIES ${PTHREADS_LIBRARY}) +ENDIF(PTHREADS_INCLUDE_DIR AND PTHREADS_LIBRARY) + +MARK_AS_ADVANCED(PTHREADS_INCLUDE_DIR) +MARK_AS_ADVANCED(PTHREADS_LIBRARY) diff --git a/fluidsynth/cmake_admin/FindReadline.cmake b/fluidsynth/cmake_admin/FindReadline.cmake new file mode 100644 index 00000000..5f7f701f --- /dev/null +++ b/fluidsynth/cmake_admin/FindReadline.cmake @@ -0,0 +1,22 @@ +# Try to find the READLINE library +# HAVE_READLINE - system has READLINE +# READLINE_INCLUDE_DIR - READLINE include directory +# READLINE_LIBRARIES - Libraries needed to use READLINE + +if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + set ( READLINE_FIND_QUIETLY TRUE ) +endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) + +find_path ( READLINE_INCLUDE_DIR NAMES history.h readline/history.h ) +find_library ( READLINE_LIBRARIES NAMES readline ) + +if ( READLINE_INCLUDE_DIR ) + set ( HAVE_READLINE YES CACHE TYPE BOOL ) +endif ( READLINE_INCLUDE_DIR ) + +include ( FindPackageHandleStandardArgs ) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( READLINE DEFAULT_MSG + READLINE_INCLUDE_DIR + READLINE_LIBRARIES ) + +mark_as_advanced( READLINE_INCLUDE_DIR READLINE_LIBRARIES HAVE_READLINE ) diff --git a/fluidsynth/cmake_admin/TestInline.cmake b/fluidsynth/cmake_admin/TestInline.cmake new file mode 100644 index 00000000..20befd9c --- /dev/null +++ b/fluidsynth/cmake_admin/TestInline.cmake @@ -0,0 +1,15 @@ +include ( CheckCSourceCompiles ) +foreach ( _keyword "inline" "__inline__" "__inline" ) + if ( NOT INLINE_KEYWORD ) + set ( CMAKE_REQUIRED_DEFINITIONS "-DTESTKEYWORD=${_keyword}" ) + check_c_source_compiles ( + "typedef int foo_t; + static TESTKEYWORD foo_t static_foo(){return 0;} + foo_t foo(){return 0;} + int main(int argc, char *argv[]){return 0;}" + _have_${_keyword} ) + if ( _have_${_keyword} ) + set ( INLINE_KEYWORD ${_keyword} ) + endif ( _have_${_keyword} ) + endif ( NOT INLINE_KEYWORD ) +endforeach ( _keyword ) diff --git a/fluidsynth/cmake_admin/cmake_uninstall.cmake.in b/fluidsynth/cmake_admin/cmake_uninstall.cmake.in new file mode 100644 index 00000000..c8ff0b7e --- /dev/null +++ b/fluidsynth/cmake_admin/cmake_uninstall.cmake.in @@ -0,0 +1,22 @@ +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"${file}\"") + IF(EXISTS "${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF("${rm_retval}" STREQUAL 0) + ELSE("${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") + ENDIF("${rm_retval}" STREQUAL 0) + ELSE(EXISTS "${file}") + MESSAGE(STATUS "File \"${file}\" does not exist.") + ENDIF(EXISTS "${file}") +ENDFOREACH(file) diff --git a/fluidsynth/cmake_admin/report.cmake b/fluidsynth/cmake_admin/report.cmake new file mode 100644 index 00000000..51993dd7 --- /dev/null +++ b/fluidsynth/cmake_admin/report.cmake @@ -0,0 +1,134 @@ +message( "\n**************************************************************\n" + "Summary:" ) + +if ( LIBSNDFILE_SUPPORT ) + if ( LIBSNDFILE_HASVORBIS ) + message ( "libsndfile: yes (with ogg vorbis support)" ) + else ( LIBSNDFILE_HASVORBIS ) + message ( "libsndfile: yes" ) + endif ( LIBSNDFILE_HASVORBIS ) +else ( LIBSNDFILE_SUPPORT ) + message ( "libsndfile: no (raw audio file rendering only)" ) +endif ( LIBSNDFILE_SUPPORT ) + +if ( PULSE_SUPPORT ) + message ( "PulseAudio: yes" ) +else ( PULSE_SUPPORT ) + message ( "PulseAudio: no" ) +endif ( PULSE_SUPPORT ) + +if ( JACK_SUPPORT ) + message ( "JACK: yes" ) +else ( JACK_SUPPORT ) + message ( "JACK: no" ) +endif ( JACK_SUPPORT ) + +if ( ALSA_SUPPORT ) + message ( "ALSA: yes" ) +else ( ALSA_SUPPORT ) + message ( "ALSA: no" ) +endif ( ALSA_SUPPORT ) + +if ( PORTAUDIO_SUPPORT ) + message ( "PortAudio: yes" ) +else ( PORTAUDIO_SUPPORT ) + message ( "PortAudio: no" ) +endif ( PORTAUDIO_SUPPORT ) + +if ( OSS_SUPPORT ) + message ( "OSS: yes" ) +else ( OSS_SUPPORT ) + message ( "OSS: no" ) +endif ( OSS_SUPPORT ) + +if ( MIDISHARE_SUPPORT ) + message ( "MidiShare: yes" ) +else ( MIDISHARE_SUPPORT ) + message ( "MidiShare: no" ) +endif ( MIDISHARE_SUPPORT ) + +if ( COREAUDIO_SUPPORT ) + message ( "CoreAudio: yes" ) +else ( COREAUDIO_SUPPORT ) + message ( "CoreAudio: no" ) +endif ( COREAUDIO_SUPPORT ) + +if ( COREMIDI_SUPPORT ) + message ( "CoreMIDI: yes" ) +else ( COREMIDI_SUPPORT ) + message ( "CoreMIDI: no" ) +endif ( COREMIDI_SUPPORT ) + +if ( WINDOWS_SUPPORT ) + message ( "Windows: yes" ) +else ( WINDOWS_SUPPORT ) + message ( "Windows: no" ) +endif ( WINDOWS_SUPPORT ) + +if ( LADSPA_SUPPORT ) + message ( "LADSPA support: yes" ) +else ( LADSPA_SUPPORT ) + message ( "LADSPA support: no" ) +endif ( LADSPA_SUPPORT ) + +if ( LASH_SUPPORT ) + message ( "LASH support: yes (NOTE: GPL library)" ) +else ( LASH_SUPPORT ) + message ( "LASH support: no" ) +endif ( LASH_SUPPORT ) + +if ( LADCCA_SUPPORT ) + message ( "LADCCA support: yes (NOTE: GPL library)" ) +else ( LADCCA_SUPPORT ) + message ( "LADCCA support: no" ) +endif ( LADCCA_SUPPORT ) + +if ( DART_SUPPORT ) + message ( "OS/2 DART support: yes" ) +else ( DART_SUPPORT ) + message ( "OS/2 DART support: no" ) +endif ( DART_SUPPORT ) + +if ( AUFILE_SUPPORT ) + message ( "Audio to file driver: yes" ) +else ( AUFILE_SUPPORT ) + message ( "Audio to file driver: no" ) +endif ( AUFILE_SUPPORT ) + +if ( WITH_READLINE ) + message ( "Readline: yes (NOTE: GPL library)" ) +else ( WITH_READLINE ) + message ( "Readline: no" ) +endif ( WITH_READLINE ) + +if ( WITH_FLOAT ) + message ( "Samples type=float: yes" ) +else ( WITH_FLOAT ) + message ( "Samples type=float: no (using double)" ) +endif ( WITH_FLOAT ) + +if ( WITH_PROFILING ) + message ( "Profiling: yes" ) +else ( WITH_PROFILING ) + message ( "Profiling: no" ) +endif ( WITH_PROFILING ) + +if ( ENABLE_DEBUG ) + message ( "Debug: yes" ) +else ( ENABLE_DEBUG ) + message ( "Debug: no" ) +endif ( ENABLE_DEBUG ) + +if ( ENABLE_TRAPONFPE ) + message ( "Trap on FPE (debug): yes" ) +else ( ENABLE_TRAPONFPE ) + message ( "Trap on FPE (debug): no" ) +endif ( ENABLE_TRAPONFPE ) + +if ( ENABLE_FPECHECK ) + message ( "Check FPE (debug): yes" ) +else ( ENABLE_FPECHECK ) + message ( "Check FPE (debug): no" ) +endif ( ENABLE_FPECHECK ) + +message ( "**************************************************************\n\n" ) diff --git a/fluidsynth/doc/CMakeLists.txt b/fluidsynth/doc/CMakeLists.txt new file mode 100644 index 00000000..1cc8c1c6 --- /dev/null +++ b/fluidsynth/doc/CMakeLists.txt @@ -0,0 +1,35 @@ +# FluidSynth - A Software Synthesize +# +# Copyright (C) 2003-2010 Peter Hanappe and others. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307, USA + +# CMake based build system. Pedro Lopez-Cabanillas + +find_package ( Doxygen ) +if ( DOXYGEN_FOUND ) + configure_file ( Doxyfile.cmake + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) + add_custom_target ( doxygen + ${DOXYGEN} Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) +endif ( DOXYGEN_FOUND ) + +if ( UNIX ) + install ( FILES fluidsynth.1 + DESTINATION share/man/man1 ) +endif ( UNIX ) diff --git a/fluidsynth/doc/Doxyfile.cmake b/fluidsynth/doc/Doxyfile.cmake new file mode 100644 index 00000000..b7b369e3 --- /dev/null +++ b/fluidsynth/doc/Doxyfile.cmake @@ -0,0 +1,258 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = libfluidsynth +PROJECT_NUMBER = @VERSION@ +OUTPUT_DIRECTORY = api +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/ +STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include/ +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = NO +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = @CMAKE_SOURCE_DIR@/doc/fluidsynth-v11-devdoc.txt \ + @CMAKE_SOURCE_DIR@/include \ + @CMAKE_SOURCE_DIR@/include/fluidsynth \ + @CMAKE_SOURCE_DIR@/src +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.c *.h +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/doc +EXAMPLE_PATTERNS = *.c +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/fluidsynth/include/CMakeLists.txt b/fluidsynth/include/CMakeLists.txt new file mode 100644 index 00000000..8d758ba4 --- /dev/null +++ b/fluidsynth/include/CMakeLists.txt @@ -0,0 +1,24 @@ +# FluidSynth - A Software Synthesize +# +# Copyright (C) 2003-2010 Peter Hanappe and others. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307, USA + +# CMake based build system. Pedro Lopez-Cabanillas + +add_subdirectory ( fluidsynth ) + +install ( FILES fluidsynth.h DESTINATION include ) diff --git a/fluidsynth/include/fluidsynth/CMakeLists.txt b/fluidsynth/include/fluidsynth/CMakeLists.txt new file mode 100644 index 00000000..eb68849a --- /dev/null +++ b/fluidsynth/include/fluidsynth/CMakeLists.txt @@ -0,0 +1,50 @@ +# FluidSynth - A Software Synthesize +# +# Copyright (C) 2003-2010 Peter Hanappe and others. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307, USA + +# CMake based build system. Pedro Lopez-Cabanillas + +configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in + ${CMAKE_CURRENT_BINARY_DIR}/version.h ) + +set ( include_HEADERS + audio.h + event.h + gen.h + log.h + midi.h + misc.h + mod.h + ramsfont.h + seq.h + seqbind.h + settings.h + sfont.h + shell.h + synth.h + types.h + voice.h +) + +install ( + FILES + ${include_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/version.h + DESTINATION + include/fluidsynth +) diff --git a/fluidsynth/src/CMakeLists.txt b/fluidsynth/src/CMakeLists.txt new file mode 100644 index 00000000..ce5a0168 --- /dev/null +++ b/fluidsynth/src/CMakeLists.txt @@ -0,0 +1,246 @@ +# FluidSynth - A Software Synthesize +# +# Copyright (C) 2003-2010 Peter Hanappe and others. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307, USA + +# CMake based build system. Pedro Lopez-Cabanillas + +include_directories ( + ${CMAKE_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_BINARY_DIR}/include + ${PTHREADS_INCLUDE_DIR} + ${GLIB_INCLUDEDIR} + ${GLIB_INCLUDE_DIRS} +) + +# ************ library ************ + +if ( READLINE_SUPPORT ) + include_directories ( ${READLINE_INCLUDE_DIR} ) +endif ( READLINE_SUPPORT ) + +if ( PULSE_SUPPORT ) + set ( fluid_pulse_SOURCES fluid_pulse.c ) + include_directories ( ${PULSE_INCLUDEDIR} ${PULSE_INCLUDE_DIRS} ) +endif ( PULSE_SUPPORT ) + +if ( ALSA_SUPPORT ) + set ( fluid_alsa_SOURCES fluid_alsa.c ) + include_directories ( ${ALSA_INCLUDEDIR} ${ALSA_INCLUDE_DIRS} ) +endif ( ALSA_SUPPORT ) + +if ( COREAUDIO_SUPPORT ) + set ( fluid_coreaudio_SOURCES fluid_coreaudio.c ) +endif ( COREAUDIO_SUPPORT ) + +if ( COREMIDI_SUPPORT ) + set ( fluid_coremidi_SOURCES fluid_coremidi.c ) +endif ( COREMIDI_SUPPORT ) + +if ( JACK_SUPPORT ) + set ( fluid_jack_SOURCES fluid_jack.c ) + include_directories ( ${JACK_INCLUDEDIR} ${JACK_INCLUDE_DIRS} ) +endif ( JACK_SUPPORT ) + +if ( PORTAUDIO_SUPPORT ) + set ( fluid_portaudio_SOURCES fluid_portaudio.c ) + include_directories ( ${PORTAUDIO_INCLUDEDIR} ${PORTAUDIO_INCLUDE_DIRS} ) +endif ( PORTAUDIO_SUPPORT ) + +if ( WINDOWS_SUPPORT ) + set ( fluid_windows_SOURCES fluid_dll.c fluid_dsound.c fluid_winmidi.c ) +endif ( WINDOWS_SUPPORT ) + +if ( OSS_SUPPORT ) + set ( fluid_oss_SOURCES fluid_oss.c ) +endif ( OSS_SUPPORT ) + +if ( LASH_SUPPORT OR LADCCA_SUPPORT ) + set ( fluid_lash_SOURCES fluid_lash.c fluid_lash.h ) + include_directories ( ${LASH_INCLUDEDIR} ${LADCCA_INCLUDEDIR} + ${LASH_INCLUDE_DIRS} ${LADCCA_INCLUDE_DIRS} ) +endif ( LASH_SUPPORT OR LADCCA_SUPPORT ) + +if ( DART_SUPPORT ) + set ( fluid_dart_SOURCES fluid_dart.c ) + include_directories ( ${DART_INCLUDE_DIRS} ) +endif ( DART_SUPPORT ) + +if ( LIBSNDFILE_SUPPORT ) + include_directories ( ${LIBSNDFILE_INCLUDEDIR} ${LIBSNDFILE_INCLUDE_DIRS} ) +endif ( LIBSNDFILE_SUPPORT ) + +if ( LADSPA_SUPPORT ) + set ( fluid_ladspa_SOURCES fluid_ladspa.c fluid_ladspa.h ) +endif ( LADSPA_SUPPORT ) + +if ( MIDISHARE_SUPPORT ) + set ( fluid_midishare_SOURCES fluid_midishare.c ) + include_directories ( ${MidiShare_INCLUDE_DIRS} ) +endif ( MIDISHARE_SUPPORT ) + +set ( libfluidsynth_SOURCES + fluid_adriver.c + fluid_adriver.h + fluid_chan.c + fluid_chan.h + fluid_chorus.c + fluid_chorus.h + fluid_cmd.c + fluid_cmd.h + fluid_conv.c + fluid_conv.h + fluid_defsfont.c + fluid_defsfont.h + fluid_dsp_float.c + fluid_event.c + fluid_event_priv.h + fluid_event_queue.c + fluid_event_queue.h + fluid_gen.c + fluid_gen.h + fluid_hash.c + fluid_hash.h + fluid_list.c + fluid_list.h + fluid_mdriver.c + fluid_mdriver.h + fluid_midi.c + fluid_midi.h + fluid_midi_router.c + fluid_midi_router.h + fluid_mod.c + fluid_mod.h + fluid_phase.h + fluid_ramsfont.c + fluid_ramsfont.h + fluid_rev.c + fluid_rev.h + fluid_seqbind.c + fluid_seq.c + fluid_settings.c + fluid_settings.h + fluid_sfont.h + fluid_synth.c + fluid_synth.h + fluidsynth_priv.h + fluid_sys.c + fluid_sys.h + fluid_tuning.c + fluid_tuning.h + fluid_voice.c + fluid_voice.h + fluid_filerenderer.c + fluid_aufile.c +) + +link_directories ( + ${GLIB_LIBDIR} + ${GLIB_LIBRARY_DIRS} + ${LASH_LIBDIR} + ${LASH_LIBRARY_DIRS} + ${LADCCA_LIBDIR} + ${LADCCA_LIBRARY_DIRS} + ${JACK_LIBDIR} + ${JACK_LIBRARY_DIRS} + ${ALSA_LIBDIR} + ${ALSA_LIBRARY_DIRS} + ${PULSE_LIBDIR} + ${PULSE_LIBRARY_DIRS} + ${PORTAUDIO_LIBDIR} + ${PORTAUDIO_LIBRARY_DIRS} + ${LIBSNDFILE_LIBDIR} + ${LIBSNDFILE_LIBRARY_DIRS} +) + +add_library ( libfluidsynth SHARED + ${fluid_alsa_SOURCES} + ${fluid_coreaudio_SOURCES} + ${fluid_coremidi_SOURCES} + ${fluid_dart_SOURCES} + ${fluid_jack_SOURCES} + ${fluid_lash_SOURCES} + ${fluid_ladspa_SOURCES} + ${fluid_midishare_SOURCES} + ${fluid_oss_SOURCES} + ${fluid_portaudio_SOURCES} + ${fluid_pulse_SOURCES} + ${fluid_windows_SOURCES} + ${libfluidsynth_SOURCES} +) + +set_target_properties ( libfluidsynth + PROPERTIES + OUTPUT_NAME "fluidsynth" + VERSION ${LT_VERSION_INFO} + SOVERSION ${LT_VERSION_CURRENT} + LT_VERSION_CURRENT ${LT_VERSION_CURRENT} + LT_VERSION_AGE ${LT_VERSION_AGE} + LT_VERSION_REVISION ${LT_VERSION_REVISION} +) + +if ( LIBFLUID_CPPFLAGS ) + set_target_properties ( libfluidsynth + PROPERTIES COMPILE_FLAGS ${LIBFLUID_CPPFLAGS} ) +endif ( LIBFLUID_CPPFLAGS ) + +include ( CreateLibtoolFile ) + +create_libtool_file ( libfluidsynth "lib${LIB_SUFFIX}" ) + +target_link_libraries ( libfluidsynth + ${GLIB_LIBRARIES} + ${LASH_LIBRARIES} + ${LADCCA_LIBRARIES} + ${JACK_LIBRARIES} + ${ALSA_LIBRARIES} + ${PULSE_LIBRARIES} + ${PORTAUDIO_LIBRARIES} + ${LIBSNDFILE_LIBRARIES} + ${READLINE_LIBS} + ${DART_LIBS} + ${COREAUDIO_LIBS} + ${COREMIDI_LIBS} + ${WINDOWS_LIBS} + ${MidiShare_LIBS} + ${LIBFLUID_LIBS} +) + +# ************ CLI program ************ + +set ( fluidsynth_SOURCES fluidsynth.c ) + +add_executable ( fluidsynth + ${fluidsynth_SOURCES} +) + +if ( FLUID_CPPFLAGS ) + set_target_properties ( fluidsynth + PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} ) +endif ( FLUID_CPPFLAGS ) + +target_link_libraries ( fluidsynth + libfluidsynth + ${FLUID_LIBS} +) + +install ( TARGETS fluidsynth libfluidsynth + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} +) diff --git a/fluidsynth/src/config.cmake b/fluidsynth/src/config.cmake new file mode 100644 index 00000000..31f0a8d5 --- /dev/null +++ b/fluidsynth/src/config.cmake @@ -0,0 +1,203 @@ +#ifndef CONFIG_H +#define CONFIG_H + +/* Define to enable ALSA driver */ +#cmakedefine ALSA_SUPPORT @ALSA_SUPPORT@ + +/* Define to activate sound output to files */ +#cmakedefine AUFILE_SUPPORT @AUFILE_SUPPORT@ + +/* whether or not we are supporting CoreAudio */ +#cmakedefine COREAUDIO_SUPPORT @COREAUDIO_SUPPORT@ + +/* whether or not we are supporting CoreMIDI */ +#cmakedefine COREMIDI_SUPPORT @COREMIDI_SUPPORT@ + +/* whether or not we are supporting DART */ +#cmakedefine DART_SUPPORT @DART_SUPPORT@ + +/* Define if building for Mac OS X Darwin */ +#cmakedefine DARWIN @DARWIN@ + +/* Define to enable FPE checks */ +#cmakedefine FPE_CHECK @FPE_CHECK@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ARPA_INET_H @HAVE_ARPA_INET_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H @HAVE_DLFCN_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ERRNO_H @HAVE_ERRNO_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H @HAVE_FCNTL_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H @HAVE_INTTYPES_H@ + +/* whether or not we are supporting ladcca */ +#cmakedefine HAVE_LADCCA @HAVE_LADCCA@ + +/* whether or not we are supporting lash */ +#cmakedefine HAVE_LASH @HAVE_LASH@ + +/* Define to 1 if you have the `dl' library (-ldl). */ +#cmakedefine HAVE_LIBDL @HAVE_LIBDL@ + +/* Define to 1 if you have the `MidiShare' library (-lMidiShare). */ +#cmakedefine HAVE_LIBMIDISHARE @HAVE_LIBMIDISHARE@ + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#cmakedefine HAVE_LIBPTHREAD @HAVE_LIBPTHREAD@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIMITS_H @HAVE_LIMITS_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MACHINE_SOUNDCARD_H @HAVE_MACHINE_SOUNDCARD_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MATH_H @HAVE_MATH_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H @HAVE_MEMORY_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MIDISHARE_H @HAVE_MIDISHARE_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_IN_H @HAVE_NETINET_IN_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_TCP_H @HAVE_NETINET_TCP_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_PTHREAD_H @HAVE_PTHREAD_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SIGNAL_H @HAVE_SIGNAL_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDARG_H @HAVE_STDARG_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H @HAVE_STDINT_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDIO_H @HAVE_STDIO_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H @HAVE_STDLIB_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H @HAVE_STRINGS_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H @HAVE_STRING_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_IOCTL_H @HAVE_SYS_IOCTL_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_MMAN_H @HAVE_SYS_MMAN_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOCKET_H @HAVE_SYS_SOCKET_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SOUNDCARD_H @HAVE_SYS_SOUNDCARD_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H @HAVE_SYS_STAT_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIME_H @HAVE_SYS_TIME_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H @HAVE_SYS_TYPES_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H @HAVE_UNISTD_H@ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_WINDOWS_H @HAVE_WINDOWS_H@ + +/* Define to enable JACK driver */ +#cmakedefine JACK_SUPPORT @JACK_SUPPORT@ + +/* Include the LADSPA Fx unit */ +#cmakedefine LADSPA @LADSPA_SUPPORT@ + +/* libsndfile has ogg vorbis support */ +#cmakedefine LIBSNDFILE_HASVORBIS @LIBSNDFILE_HASVORBIS@ + +/* Define to enable libsndfile support */ +#cmakedefine LIBSNDFILE_SUPPORT @LIBSNDFILE_SUPPORT@ + +/* Define to enable MidiShare driver */ +#cmakedefine MIDISHARE_SUPPORT @MIDISHARE_SUPPORT@ + +/* Define if using the MinGW32 environment */ +#cmakedefine MINGW32 @MINGW32@ + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#cmakedefine NO_MINUS_C_MINUS_O @NO_MINUS_C_MINUS_O@ + +/* Define to enable OSS driver */ +#cmakedefine OSS_SUPPORT @OSS_SUPPORT@ + +/* Name of package */ +#cmakedefine PACKAGE "@PACKAGE@" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT @PACKAGE_BUGREPORT@ + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME @PACKAGE_NAME@ + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING @PACKAGE_STRING@ + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME @PACKAGE_TARNAME@ + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION @PACKAGE_VERSION@ + +/* Define to enable PortAudio driver */ +#cmakedefine PORTAUDIO_SUPPORT @PORTAUDIO_SUPPORT@ + +/* Define to enable PulseAudio driver */ +#cmakedefine PULSE_SUPPORT @PULSE_SUPPORT@ + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS @STDC_HEADERS@ + +/* Define to enable SIGFPE assertions */ +#cmakedefine TRAP_ON_FPE @TRAP_ON_FPE@ + +/* Version number of package */ +#cmakedefine VERSION @FLUIDSYNTH_VERSION@ + +/* Define to do all DSP in single floating point precision */ +#cmakedefine WITH_FLOAT @WITH_FLOAT@ + +/* Define to profile the DSP code */ +#cmakedefine WITH_PROFILING @WITH_PROFILING@ + +/* Define to use the readline library for line editing */ +#cmakedefine WITH_READLINE @WITH_READLINE@ + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#cmakedefine WORDS_BIGENDIAN @WORDS_BIGENDIAN@ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#cmakedefine inline @INLINE_KEYWORD@ +#endif + +#endif /* CONFIG_H */ diff --git a/fluidsynth/src/config_win32.cmake b/fluidsynth/src/config_win32.cmake new file mode 100644 index 00000000..6b8708d9 --- /dev/null +++ b/fluidsynth/src/config_win32.cmake @@ -0,0 +1,24 @@ +#pragma once + +#cmakedefine HAVE_IO_H @HAVE_IO_H@ + +#define DSOUND_SUPPORT 1 +#define WINMIDI_SUPPORT 1 + +#define snprintf _snprintf +#define strcasecmp _stricmp + +#if _MSC_VER < 1500 +#define vsnprintf _vsnprintf +#endif + +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +#pragma warning(disable : 4244) +#pragma warning(disable : 4101) +#pragma warning(disable : 4305) +#pragma warning(disable : 4996) + +typedef int socklen_t;