Skip to content

Commit

Permalink
Merge pull request #2280 from Holzhaus/cmake
Browse files Browse the repository at this point in the history
Add CMake support
  • Loading branch information
uklotzde committed Nov 13, 2019
2 parents 26f7c21 + 5eb3909 commit 883ead3
Show file tree
Hide file tree
Showing 37 changed files with 5,075 additions and 0 deletions.
2,151 changes: 2,151 additions & 0 deletions CMakeLists.txt

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions cmake/cpack_package_description.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Free Digital DJ software. Start making live DJ mixes today.
Mixxx is free DJ software that gives you everything you need to perform live DJ
mixes. Blend songs together with automatic BPM matching and remix on-the-fly
with looping and hot cues. Whether you're a pro DJ or just getting started,
Mixxx has you covered.

Mixxx works with ALSA, JACK, OSS and supports many popular DJ controllers.

Features include:
- Parallel or split scratchable waveform displays
- Waveform summaries
- Spinning vinyl widgets
- MP3, OGG, WAVE, FLAC, and optional unprotected aac (m4a) playback
- Extra playback formats through plugins
- Wave and Ogg recording with optional MP3 support
- Fast, database-powered library
- Crates and playlists for organizing your music
- Reads iTunes, Traktor, and Rhythmbox libraries
- History section keeps track of your setlists
- Internet Broadcasting with Shoutcast and Icecast
- Microphone Support
- Automatic crossfading with Auto DJ
- Pitch-independent time stretch (key lock)
- Adjustable pitch range
- Ramping pitchbend controls
- ReplayGain volume normalization
- Quantized loops, hotcues, and beatloops
- Synchronization and auto-beatmatching
- BPM detection and estimation
- Bulk BPM analysis
- Adjustable EQ shelves
- Crossfader curve control
- Sampler Decks
- Vinyl emulation with Serato, Traktor, and Mixvibes timecode support
- Multichannel soundcard support (playback and capture)
- Headphone cueing with multiple soundcard support
- Skinnable interface with several skins bundled
- Support for many DJ MIDI and HID controllers out-of-the-box
- Advanced MIDI/HID scripting engine
- Multiple simultaneous MIDI/HID controllers
- Multi-core CPU support
- 24-bit/96000 Hz playback and capture
63 changes: 63 additions & 0 deletions cmake/modules/FindCelt.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# This file is part of Mixxx, Digital DJ'ing software.
# Copyright (C) 2001-2019 Mixxx Development Team
# Distributed under the GNU General Public Licence (GPL) version 2 or any later
# later version. See the LICENSE file for details.

#[=======================================================================[.rst:
FindCelt
--------

Finds the Celt library.

Imported Targets
^^^^^^^^^^^^^^^^

This module provides the following imported targets, if found:

``Celt::Celt``
The Celt library

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``Celt_FOUND``
True if the system has the Celt library.
``Celt_LIBRARIES``
Libraries needed to link to Celt.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``Celt_LIBRARY``
The path to the Celt library.

#]=======================================================================]

find_library(Celt_LIBRARY
NAMES fftw fftw3 fftw-3.3
DOC "Celt library"
)
mark_as_advanced(Celt_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Celt
DEFAULT_MSG
Celt_LIBRARY
)

if(Celt_FOUND)
set(Celt_LIBRARIES "${Celt_LIBRARY}")

if(NOT TARGET Celt::Celt)
add_library(Celt::Celt UNKNOWN IMPORTED)
set_target_properties(Celt::Celt
PROPERTIES
IMPORTED_LOCATION "${Celt_LIBRARY}"
)
endif()
endif()
87 changes: 87 additions & 0 deletions cmake/modules/FindChromaprint.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# This file is part of Mixxx, Digital DJ'ing software.
# Copyright (C) 2001-2019 Mixxx Development Team
# Distributed under the GNU General Public Licence (GPL) version 2 or any later
# later version. See the LICENSE file for details.

#[=======================================================================[.rst:
FindChromaprint
---------------

Finds the Chromaprint library.

Imported Targets
^^^^^^^^^^^^^^^^

This module provides the following imported targets, if found:

``Chromaprint::Chromaprint``
The Chromaprint library

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``Chromaprint_FOUND``
True if the system has the Chromaprint library.
``Chromaprint_INCLUDE_DIRS``
Include directories needed to use Chromaprint.
``Chromaprint_LIBRARIES``
Libraries needed to link to Chromaprint.
``Chromaprint_DEFINITIONS``
Compile defitions needed to use Chromaprint.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``Chromaprint_INCLUDE_DIR``
The directory containing ``chromaprint.h``.
``Chromaprint_LIBRARY``
The path to the Chromaprint library.

#]=======================================================================]

find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(PC_Chromaprint QUIET libchromaprint)
endif()

find_path(Chromaprint_INCLUDE_DIR
NAMES chromaprint.h
PATHS ${PC_Chromaprint_INCLUDE_DIRS}
PATH_SUFFIXES chromaprint
DOC "Chromaprint include directory")
mark_as_advanced(Chromaprint_INCLUDE_DIR)

find_library(Chromaprint_LIBRARY
NAMES chromaprint chromaprint_p
PATHS ${PC_Chromaprint_LIBRARY_DIRS}
DOC "Chromaprint library"
)
mark_as_advanced(Chromaprint_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Chromaprint
DEFAULT_MSG
Chromaprint_LIBRARY
Chromaprint_INCLUDE_DIR
)

if(Chromaprint_FOUND)
set(Chromaprint_LIBRARIES "${Chromaprint_LIBRARY}")
set(Chromaprint_INCLUDE_DIRS "${Chromaprint_INCLUDE_DIR}")
set(Chromaprint_DEFINITIONS ${PC_Chromaprint_CFLAGS_OTHER})

if(NOT TARGET Chromaprint::Chromaprint)
add_library(Chromaprint::Chromaprint UNKNOWN IMPORTED)
set_target_properties(Chromaprint::Chromaprint
PROPERTIES
IMPORTED_LOCATION "${Chromaprint_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_Chromaprint_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${Chromaprint_INCLUDE_DIR}"
)
endif()
endif()
87 changes: 87 additions & 0 deletions cmake/modules/FindEbur128.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# This file is part of Mixxx, Digital DJ'ing software.
# Copyright (C) 2001-2019 Mixxx Development Team
# Distributed under the GNU General Public Licence (GPL) version 2 or any later
# later version. See the LICENSE file for details.

#[=======================================================================[.rst:
FindEbur128
-----------

Finds the Ebur128 library.

Imported Targets
^^^^^^^^^^^^^^^^

This module provides the following imported targets, if found:

``Ebur128::Ebur128``
The Ebur128 library

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``Ebur128_FOUND``
True if the system has the Ebur128 library.
``Ebur128_INCLUDE_DIRS``
Include directories needed to use Ebur128.
``Ebur128_LIBRARIES``
Libraries needed to link to Ebur128.
``Ebur128_DEFINITIONS``
Compile defitions needed to use Ebur128.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``Ebur128_INCLUDE_DIR``
The directory containing ``ebur128.h``.
``Ebur128_LIBRARY``
The path to the Ebur128 library.

#]=======================================================================]

find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(PC_Ebur128 QUIET libebur128)
endif()

find_path(Ebur128_INCLUDE_DIR
NAMES ebur128.h
PATHS ${PC_Ebur128_INCLUDE_DIRS}
PATH_SUFFIXES ebur128
DOC "Ebur128 include directory")
mark_as_advanced(Ebur128_INCLUDE_DIR)

find_library(Ebur128_LIBRARY
NAMES ebur128
PATHS ${PC_Ebur128_LIBRARY_DIRS}
DOC "Ebur128 library"
)
mark_as_advanced(Ebur128_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Ebur128
DEFAULT_MSG
Ebur128_LIBRARY
Ebur128_INCLUDE_DIR
)

if(Ebur128_FOUND)
set(Ebur128_LIBRARIES "${Ebur128_LIBRARY}")
set(Ebur128_INCLUDE_DIRS "${Ebur128_INCLUDE_DIR}")
set(Ebur128_DEFINITIONS ${PC_Ebur128_CFLAGS_OTHER})

if(NOT TARGET Ebur128::Ebur128)
add_library(Ebur128::Ebur128 UNKNOWN IMPORTED)
set_target_properties(Ebur128::Ebur128
PROPERTIES
IMPORTED_LOCATION "${Ebur128_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_Ebur128_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${Ebur128_INCLUDE_DIR}"
)
endif()
endif()
75 changes: 75 additions & 0 deletions cmake/modules/FindFFTW.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# This file is part of Mixxx, Digital DJ'ing software.
# Copyright (C) 2001-2019 Mixxx Development Team
# Distributed under the GNU General Public Licence (GPL) version 2 or any later
# later version. See the LICENSE file for details.

#[=======================================================================[.rst:
FindFFTW
--------

Finds the FFTW library.

Imported Targets
^^^^^^^^^^^^^^^^

This module provides the following imported targets, if found:

``FFTW::FFTW``
The FFTW library

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``FFTW_FOUND``
True if the system has the FFTW library.
``FFTW_INCLUDE_DIRS``
Include directories needed to use FFTW.
``FFTW_LIBRARIES``
Libraries needed to link to FFTW.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``FFTW_INCLUDE_DIR``
The directory containing ``fftw3.h``.
``FFTW_LIBRARY``
The path to the FFTW library.

#]=======================================================================]

find_path(FFTW_INCLUDE_DIR
NAMES fftw3.h
DOC "FFTW include directory")
mark_as_advanced(FFTW_INCLUDE_DIR)

find_library(FFTW_LIBRARY
NAMES fftw fftw3 fftw-3.3
DOC "FFTW library"
)
mark_as_advanced(FFTW_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
FFTW
DEFAULT_MSG
FFTW_LIBRARY
FFTW_INCLUDE_DIR
)

if(FFTW_FOUND)
set(FFTW_LIBRARIES "${FFTW_LIBRARY}")
set(FFTW_INCLUDE_DIRS "${FFTW_INCLUDE_DIR}")

if(NOT TARGET FFTW::FFTW)
add_library(FFTW::FFTW UNKNOWN IMPORTED)
set_target_properties(FFTW::FFTW
PROPERTIES
IMPORTED_LOCATION "${FFTW_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIR}"
)
endif()
endif()

0 comments on commit 883ead3

Please sign in to comment.