From a2cee615e4c444d5ce84fac618bfb2b18cd6985f Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Tue, 20 Jun 2017 02:52:02 -0700 Subject: [PATCH] [aubio] CMake buildsystem replacement --- ports/aubio/CMakeLists.txt | 54 ++++++++++++++++++++++ ports/aubio/portfile.cmake | 91 +++----------------------------------- 2 files changed, 61 insertions(+), 84 deletions(-) create mode 100644 ports/aubio/CMakeLists.txt diff --git a/ports/aubio/CMakeLists.txt b/ports/aubio/CMakeLists.txt new file mode 100644 index 000000000..df2c598f9 --- /dev/null +++ b/ports/aubio/CMakeLists.txt @@ -0,0 +1,54 @@ +cmake_minimum_required(VERSION 3.8) +project(aubio C) + +add_definitions( + -DHAVE_STDLIB_H=1 + -DHAVE_STDIO_H=1 + -DHAVE_MATH_H=1 + -DHAVE_STRING_H=1 + -DHAVE_LIMITS_H=1 + -DHAVE_STDARG_H=1 + -DHAVE_C99_VARARGS_MACROS=1 + + -DHAVE_SNDFILE=1 + -DHAVE_WAVWRITE=1 + -DHAVE_WAVREAD=1 + -DHAVE_LIBAV=1 + -DHAVE_SWRESAMPLE=1 +) + +find_path(LIBSNDFILE_H sndfile.h) +find_library(LIBSNDFILE_LIB libsndfile-1) +find_library(AVCODEC_LIB avcodec) +find_library(AVUTIL_LIB avutil) +find_library(AVDEVICE_LIB avdevice) +find_library(AVFILTER_LIB avfilter) +find_library(AVFORMAT_LIB avformat) +find_library(SWRESAMPLE_LIB swresample) + +include_directories(src ${LIBSNDFILE_H}) +link_libraries(${LIBSNDFILE_LIB} ${AVCODEC_LIB} ${AVUTIL_LIB} ${AVDEVICE_LIB} ${AVFILTER_LIB} ${AVFORMAT_LIB} ${SWRESAMPLE_LIB} ws2_32.lib) + +file(GLOB_RECURSE SOURCES src/*.c aubio-5.def) +set_source_files_properties(src/io/sink_wavwrite.c PROPERTIES COMPILE_FLAGS /FIWinsock2.h) +add_library(aubio ${SOURCES}) + +set(CMAKE_DEBUG_POSTFIX d) + +install( + TARGETS aubio + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +if(NOT DISABLE_INSTALL_HEADERS) + install( + DIRECTORY src/ + DESTINATION include/aubio + FILES_MATCHING + PATTERN "*.h" + PATTERN "*_priv.h" EXCLUDE + PATTERN "config.h" EXCLUDE + ) +endif() diff --git a/ports/aubio/portfile.cmake b/ports/aubio/portfile.cmake index 714ec3ae8..e8a7d4551 100644 --- a/ports/aubio/portfile.cmake +++ b/ports/aubio/portfile.cmake @@ -1,14 +1,3 @@ -# NOTES -# - if you get a codepage/unicode related error (non-critical) during configuration, -# ignore it or, try switching the console codepage to windows english (`chcp 1252`) -# - the build breaks with "missing pthreads" if --enable-fftw3(f) is added (if fftw3 -# is not added, the embedded ooura fft lib is used) -# - the port uses ffmpeg and libsndfile as dependencies and also depends on possibilty to acquire waf and pkg-config(-lite) in vcpkg. -# - crt-linkage is handled here, not in the generic waf-configure function because it is controlled via a patch to the aubio wscript -# Waf seems to have no generic way to switch crt-linkage. -# - The static build works, but: vcpkg's static ffmpegs build is fake ;), therefore it is still required to make the ffmpeg dlls -# available in order to run exectables with statically linked aubio. - include(vcpkg_common_functions) set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/aubio-3c230fae309e9ea3298783368dd71bae6172359a) vcpkg_download_distfile(ARCHIVE @@ -18,78 +7,14 @@ vcpkg_download_distfile(ARCHIVE ) vcpkg_extract_source_archive(${ARCHIVE}) -# Pkg-config is equired by aubio to detect ffmpeg and libsndfile -vcpkg_find_acquire_program(PKG-CONFIG) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/aubio-5.def ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) -# Waf depends on python, so this also installs python3 -vcpkg_acquire_waf() - -# Configure pkg-config dir -get_filename_component(PKG_CONFIG_DIR ${PKG-CONFIG} DIRECTORY) -# Add pkg-config and vcpkg-bin-dir to environment search path -set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;${CURRENT_INSTALLED_DIR}/debug/bin;${PKG_CONFIG_DIR};$ENV{PATH}") -# Set pkg-config search-path -set(ENV{PKG_CONFIG_PATH} "${CURRENT_INSTALLED_DIR}/lib/pkgconfig") - -# Add waf executable if missing -if(NOT EXISTS "${SOURCE_PATH}/waf") - file(COPY "${WAF_DIR}/waf" DESTINATION "${SOURCE_PATH}") -endif() - -# Add arguments for crt linkage and library linkage -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} - PATCHES "${CMAKE_CURRENT_LIST_DIR}/crt_lib_linkage.patch" +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=1 ) - -file(COPY ${CMAKE_CURRENT_LIST_DIR}/aubio-5.def DESTINATION ${SOURCE_PATH}) - -vcpkg_configure_waf( - SOURCE_PATH ${SOURCE_PATH} - OPTIONS - --library-linkage=${VCPKG_LIBRARY_LINKAGE} - --crt-linkage=${VCPKG_CRT_LINKAGE} - --enable-sndfile - --enable-avcodec - --disable-docs - --verbose - # OPTIONS_DEBUG - # OPTIONS_RELEASE - OPTIONS_BUILD - --library-linkage=${VCPKG_LIBRARY_LINKAGE} - --verbose - --notests - # OPTIONS_BUILD_RELEASE - # OPTIONS_BUILD_DEBUG - # TARGETS -) - -# Postinstall cleanup debug -message(STATUS "Cleaning up build") -# Remove unused files -# Debug executable and include folder -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(GLOB DEBUG_EXECS ${CURRENT_PACKAGES_DIR}/debug/bin/*) -file(REMOVE ${DEBUG_EXECS}) -# In release branch move execs to tools -file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/aubio) -file(GLOB RELEASE_EXECS ${CURRENT_PACKAGES_DIR}/bin/*.exe) -file(GLOB RELEASE_EXE_SYMBOLS ${CURRENT_PACKAGES_DIR}/bin/*.pdb) -FILE(COPY ${RELEASE_EXECS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/aubio) -FILE(REMOVE ${RELEASE_EXECS} ${RELEASE_EXE_SYMBOLS}) - -# Prepare (re-)moving dynamic libs -file(GLOB DEBUG_DLLS ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll ${CURRENT_PACKAGES_DIR}/debug/lib/*.pdb) -file(GLOB RELEASE_DLLS ${CURRENT_PACKAGES_DIR}/lib/*.dll ${CURRENT_PACKAGES_DIR}/lib/*.pdb) - -if(${VCPKG_LIBRARY_LINKAGE} MATCHES "dynamic") - # Move dlls - file(COPY ${DEBUG_DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) - file(COPY ${RELEASE_DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin) - file(REMOVE ${DEBUG_DLLS} ${RELEASE_DLLS}) -elseif(${VCPKG_LIBRARY_LINKAGE} MATCHES "static") - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) -endif() +vcpkg_install_cmake() # Handle copyright and credentials file(COPY @@ -100,7 +25,5 @@ file(COPY DESTINATION ${CURRENT_PACKAGES_DIR}/share/aubio) +vcpkg_copy_pdbs() file(RENAME ${CURRENT_PACKAGES_DIR}/share/aubio/COPYING ${CURRENT_PACKAGES_DIR}/share/aubio/copyright) - -# TODO -# Add python script for dynamic symbols export in dynamic linking