Skip to content

Commit

Permalink
feat: Init commit
Browse files Browse the repository at this point in the history
init chromaprint

Log:
  • Loading branch information
Deepin Developer committed Sep 22, 2022
0 parents commit 96ea1c3
Show file tree
Hide file tree
Showing 184 changed files with 17,327 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{c,h,cpp,hpp}]
indent_style = space
indent_size = 4
6 changes: 6 additions & 0 deletions .editorconfig.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
" autocmd BufNewFile,BufRead /path/to/chromaprint/* source /path/to/chromaprint/.editorconfig.vim

setlocal tabstop=4
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.pc/
227 changes: 227 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
cmake_minimum_required(VERSION 3.3)

set(chromaprint_VERSION_MAJOR 1)
set(chromaprint_VERSION_MINOR 5)
set(chromaprint_VERSION_PATCH 0)
set(chromaprint_VERSION "${chromaprint_VERSION_MAJOR}.${chromaprint_VERSION_MINOR}.${chromaprint_VERSION_PATCH}")

project(chromaprint LANGUAGES C CXX VERSION "${chromaprint_VERSION}")

set(chromaprint_SOVERSION 1)

set(AUDIO_PROCESSOR_LIB CACHE STRING "Library to use for audio processing")
set_property(CACHE AUDIO_PROCESSOR_LIB PROPERTY STRINGS avresample swresample)

set(FFT_LIB CACHE STRING "Library to use for FFT calculations")
set_property(CACHE FFT_LIB PROPERTY STRINGS avfft fftw3 fftw3f kissfft vdsp)

include(CMakePushCheckState)
include(CheckFunctionExists)
include(CheckCXXCompilerFlag)

find_package(Threads)

option(BUILD_SHARED_LIBS "Build shared libraries" ON)

set(CMAKE_CXX_STANDARD 11)

if(BUILD_SHARED_LIBS)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
endif()

if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-D_GLIBCXX_DEBUG)
endif()

cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_LIBRARIES -lm)
check_function_exists(lrintf HAVE_LRINTF)
check_function_exists(round HAVE_ROUND)
cmake_pop_check_state()

add_definitions(
-DHAVE_CONFIG_H
-D_SCL_SECURE_NO_WARNINGS
-D_USE_MATH_DEFINES
-D__STDC_LIMIT_MACROS
-D__STDC_CONSTANT_MACROS
)

set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
set(EXEC_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "Installation prefix for executables and object code libraries" FORCE)
set(BIN_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/bin CACHE PATH "Installation prefix for user executables" FORCE)
set(LIB_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "Installation prefix for object code libraries" FORCE)
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Installation prefix for C header files" FORCE)

if(APPLE)
option(BUILD_FRAMEWORK "Build an OS X framework" OFF)
set(FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to")
endif()

option(BUILD_TOOLS "Build command line tools" OFF)
option(BUILD_TESTS "Build test suite" OFF)

if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
endif()

if(NOT BUILD_SHARED_LIBS)
add_definitions(-DCHROMAPRINT_NODLL)
endif()

set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests/)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)

find_package(FFmpeg)

if(FFMPEG_LIBRARIES)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_LIBRARIES ${FFMPEG_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} -lm)
check_function_exists(av_packet_unref HAVE_AV_PACKET_UNREF)
check_function_exists(av_frame_alloc HAVE_AV_FRAME_ALLOC)
check_function_exists(av_frame_free HAVE_AV_FRAME_FREE)
cmake_pop_check_state()
endif()

if(NOT FFT_LIB OR FFT_LIB STREQUAL "fftw3" OR FFT_LIB STREQUAL "fftw3f")
find_package(FFTW3)
endif()

if(APPLE)
if(NOT FFT_LIB OR FFT_LIB STREQUAL "vdsp")
find_library(ACCELERATE_LIBRARIES Accelerate)
endif()
endif()

if(NOT FFT_LIB OR FFT_LIB STREQUAL "kissfft")
find_package(KissFFT)
endif()

set(USE_VDSP OFF)
set(USE_AVFFT OFF)
set(USE_FFTW3 OFF)
set(USE_FFTW3F OFF)
set(USE_KISSFFT OFF)

if(NOT FFT_LIB)
if(APPLE AND ACCELERATE_LIBRARIES)
set(FFT_LIB "vdsp")
elseif(FFMPEG_LIBAVCODEC_FFT_FOUND)
set(FFT_LIB "avfft")
elseif(FFTW3_LIBRARIES)
set(FFT_LIB "fftw3")
elseif(FFTW3_FFTWF_LIBRARY)
set(FFT_LIB "fftw3f")
elseif(KISSFFT_FOUND)
set(FFT_LIB "kissfft")
endif()
endif()

if(FFT_LIB STREQUAL "vdsp")
if(ACCELERATE_LIBRARIES)
set(USE_VDSP ON)
else()
message(FATAL_ERROR "Selected ${FFT_LIB} for FFT calculations, but the library is not found")
endif()
elseif(FFT_LIB STREQUAL "avfft")
if(FFMPEG_LIBAVCODEC_FFT_FOUND)
set(USE_AVFFT ON)
else()
message(FATAL_ERROR "Selected ${FFT_LIB} for FFT calculations, but the library is not found")
endif()
elseif(FFT_LIB STREQUAL "fftw3")
if(FFTW3_LIBRARIES)
set(USE_FFTW3 ON)
else()
message(FATAL_ERROR "Selected ${FFT_LIB} for FFT calculations, but the library is not found")
endif()
elseif(FFT_LIB STREQUAL "fftw3f")
if(FFTW3_FFTWF_LIBRARY)
set(USE_FFTW3F ON)
else()
message(FATAL_ERROR "Selected ${FFT_LIB} for FFT calculations, but the library is not found")
endif()
elseif(FFT_LIB STREQUAL "kissfft")
if(KISSFFT_FOUND)
set(USE_KISSFFT ON)
else()
message(FATAL_ERROR "Selected ${FFT_LIB} for FFT calculations, but the library is not found")
endif()
else()
message(FATAL_ERROR "No FFT library found")
endif()

message(STATUS "Using ${FFT_LIB} for FFT calculations")

if(NOT AUDIO_PROCESSOR_LIB)
if(FFMPEG_LIBSWRESAMPLE_FOUND)
set(AUDIO_PROCESSOR_LIB "swresample")
elseif(FFMPEG_LIBAVRESAMPLE_FOUND)
set(AUDIO_PROCESSOR_LIB "avresample")
endif()
endif()

if(AUDIO_PROCESSOR_LIB STREQUAL "swresample")
if(FFMPEG_LIBSWRESAMPLE_FOUND)
set(USE_AVRESAMPLE OFF)
set(USE_SWRESAMPLE ON)
set(AUDIO_PROCESSOR_LIBRARIES ${FFMPEG_LIBSWRESAMPLE_LIBRARIES})
set(AUDIO_PROCESSOR_INCLUDE_DIRS ${FFMPEG_LIBSWRESAMPLE_INCLUDE_DIRS})
else()
message(FATAL_ERROR "Selected ${AUDIO_PROCESSOR_LIB} for audio processing, but the library is not found")
endif()
message(STATUS "Using ${AUDIO_PROCESSOR_LIB} for audio conversion")
elseif(AUDIO_PROCESSOR_LIB STREQUAL "avresample")
if(FFMPEG_LIBAVRESAMPLE_FOUND)
set(USE_AVRESAMPLE ON)
set(USE_SWRESAMPLE OFF)
set(AUDIO_PROCESSOR_LIBRARIES ${FFMPEG_LIBAVRESAMPLE_LIBRARIES})
set(AUDIO_PROCESSOR_INCLUDE_DIRS ${FFMPEG_LIBAVRESAMPLE_INCLUDE_DIRS})
else()
message(FATAL_ERROR "Selected ${AUDIO_PROCESSOR_LIB} for audio processing, but the library is not found")
endif()
message(STATUS "Using ${AUDIO_PROCESSOR_LIB} for audio conversion")
else()
message(STATUS "Building without audio conversion support, please install FFmpeg with libswresample")
endif()

if(NOT BUILD_FRAMEWORK)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libchromaprint.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libchromaprint.pc)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libchromaprint.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
endif()

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src)
add_definitions(
-DHAVE_CONFIG_H
-D_SCL_SECURE_NO_WARNINGS
-D_USE_MATH_DEFINES
-D__STDC_LIMIT_MACROS
-D__STDC_CONSTANT_MACROS
)

if(UNIX)
link_libraries(m)
endif()

add_subdirectory(src)

if(BUILD_TESTS)
add_subdirectory(tests)
endif(BUILD_TESTS)

configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)

add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)

configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake" "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
add_custom_target(docs doxygen)
Loading

0 comments on commit 96ea1c3

Please sign in to comment.