From 2299e20cfceae140aa587579cf511d0cd38ce6bb Mon Sep 17 00:00:00 2001 From: badaix Date: Sat, 10 Feb 2018 17:34:07 +0100 Subject: [PATCH] CMake works on MacOS --- .travis.yml | 59 +++++++++++++++++++++++++++++++++++-------- CMakeLists.txt | 39 +++++++++++++++++++--------- client/CMakeLists.txt | 38 ++++++++++++++++++++-------- externals/aixlog | 2 +- server/CMakeLists.txt | 14 +++++++--- 5 files changed, 115 insertions(+), 37 deletions(-) diff --git a/.travis.yml b/.travis.yml index 31be45b3..922fc3d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,33 +3,70 @@ dist: trusty sudo: required group: deprecated-2017Q4 -compiler: - - gcc matrix: include: # build on ubuntu - os: linux - sudo: required - compiler: gcc - env: - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.9 libasound2-dev libvorbisidec-dev libvorbis-dev libflac-dev alsa-utils libavahi-client-dev avahi-daemon + env: + - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" + + - os: linux + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-5 libasound2-dev libvorbisidec-dev libvorbis-dev libflac-dev alsa-utils libavahi-client-dev avahi-daemon + env: + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + + - os: linux + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 libasound2-dev libvorbisidec-dev libvorbis-dev libflac-dev alsa-utils libavahi-client-dev avahi-daemon + env: + - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" + + - os: linux + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-7 libasound2-dev libvorbisidec-dev libvorbis-dev libflac-dev alsa-utils libavahi-client-dev avahi-daemon + env: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + # build on osx - os: osx osx_image: xcode9.1 env: - MATRIX_EVAL="brew update && brew install flac libvorbis" - allow_failures: + - os: osx + osx_image: xcode8 + env: + - MATRIX_EVAL="brew update && brew install flac libvorbis" + before_install: - eval "${MATRIX_EVAL}" + script: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then BUILD_PARAMS="TARGET=MACOS" ; fi - - make $BUILD_PARAMS - - sudo make installclient $BUILD_PARAMS - - sudo make installserver $BUILD_PARAMS + - mkdir build + - cd build + - cmake ../externals/aixlog && make && sudo make install + - rm -rf * + - cmake ../externals/jsonrpcpp && make && sudo make install + - rm -rf * + - cmake ../externals/popl && make && sudo make install + - rm -rf * + - cmake .. && make && sudo make install diff --git a/CMakeLists.txt b/CMakeLists.txt index 3714c859..3e633aef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,10 @@ if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) "must be set to ON to build") endif() +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(MACOSX TRUE) +endif() + # Configure paths if(NOT DEFINED CMAKE_INSTALL_BINDIR) SET(CMAKE_INSTALL_BINDIR bin CACHE @@ -28,7 +32,7 @@ if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) PATH "Output directory for header files") endif() -include_directories(${CMAKE_SOURCE_DIR}) +include_directories("${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/externals/asio/asio/include") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") add_definitions(-DVERSION="${PROJECT_VERSION}") @@ -53,8 +57,8 @@ include(CMakePushCheckState) include(CheckIncludeFileCXX) cmake_push_check_state() -set(CMAKE_REQUIRED_DEFINITIONS "-DASIO_STANDALONE") -check_include_file_cxx(asio.hpp HAS_ASIO_HPP -pthread) +set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES} ${CMAKE_SOURCE_DIR}/externals/asio/asio/include") +check_include_file_cxx(asio.hpp HAS_ASIO_HPP "-pthread -DASIO_STANDALONE -std=c++11") cmake_pop_check_state() if(HAS_ASIO_HPP) add_definitions("-DHAS_ASIO_HPP -DASIO_STANDALONE") @@ -62,22 +66,32 @@ else() message(FATAL_ERROR "Need to have asio installed") endif() -check_include_file_cxx(popl.hpp HAS_POPL_HPP) +check_include_file_cxx(popl.hpp HAS_POPL_HPP -std=c++11) if(HAS_POPL_HPP) add_definitions("-DHAS_POPL_HPP") else() message(FATAL_ERROR "Need to have popl installed") endif() -pkg_search_module(ALSA REQUIRED alsa) -if (ALSA_FOUND) - add_definitions(-DHAS_ALSA) -endif (ALSA_FOUND) +if(MACOSX) + set(BONJOUR_FOUND true) +# pkg_search_module(BONJOUR REQUIRED bonjour) + if (BONJOUR_FOUND) + add_definitions(-DHAS_BONJOUR) + endif (BONJOUR_FOUND) -pkg_search_module(AVAHI REQUIRED avahi-client) -if (AVAHI_FOUND) - add_definitions(-DHAS_AVAHI) -endif (AVAHI_FOUND) + add_definitions(-DFREEBSD -DHAS_DAEMON) +else() + pkg_search_module(ALSA REQUIRED alsa) + if (ALSA_FOUND) + add_definitions(-DHAS_ALSA) + endif (ALSA_FOUND) + + pkg_search_module(AVAHI REQUIRED avahi-client) + if (AVAHI_FOUND) + add_definitions(-DHAS_AVAHI) + endif (AVAHI_FOUND) +endif() pkg_search_module(FLAC flac) if (FLAC_FOUND) @@ -109,6 +123,7 @@ if (JSONRPCPP_FOUND) add_definitions("-DHAS_JSONRPCPP") endif() + add_subdirectory(common) add_subdirectory(message) add_subdirectory(server) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 75718654..a7405535 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -14,15 +14,35 @@ set(CLIENT_INCLUDE ${ASIO_INCLUDE_DIRS} ${POPL_INCLUDE_DIRS}) -# ALSA -list(APPEND CLIENT_SOURCES player/alsaPlayer.cpp) -list(APPEND CLIENT_LIBRARIES ${ALSA_LIBRARIES}) -list(APPEND CLIENT_INCLUDE ${ALSA_INCLUDE_DIRS}) -# Avahi -list(APPEND CLIENT_SOURCES browseZeroConf/browseAvahi.cpp) -list(APPEND CLIENT_LIBRARIES ${AVAHI_LIBRARIES}) -list(APPEND CLIENT_INCLUDE ${AVAHI_INCLUDE_DIRS}) +if(MACOSX) + # Bonjour + if (BONJOUR_FOUND) + list(APPEND CLIENT_SOURCES browseZeroConf/browseBonjour.cpp) + endif (BONJOUR_FOUND) + + # CoreAudio + add_definitions(-DHAS_COREAUDIO) + list(APPEND CLIENT_SOURCES player/coreAudioPlayer.cpp) + find_library(COREAUDIO_LIB CoreAudio) + find_library(COREFOUNDATION_LIB CoreFoundation) + find_library(AUDIOTOOLBOX_LIB AudioToolbox) + list(APPEND CLIENT_LIBRARIES ${COREAUDIO_LIB} ${COREFOUNDATION_LIB} ${AUDIOTOOLBOX_LIB}) +else() + # Avahi + if (AVAHI_FOUND) + list(APPEND CLIENT_SOURCES browseZeroConf/browseAvahi.cpp) + list(APPEND CLIENT_LIBRARIES ${AVAHI_LIBRARIES}) + list(APPEND CLIENT_INCLUDE ${AVAHI_INCLUDE_DIRS}) + endif (AVAHI_FOUND) + + # ALSA + if (ALSA_FOUND) + list(APPEND CLIENT_SOURCES player/alsaPlayer.cpp) + list(APPEND CLIENT_LIBRARIES ${ALSA_LIBRARIES}) + list(APPEND CLIENT_INCLUDE ${ALSA_INCLUDE_DIRS}) + endif (ALSA_FOUND) +endif (MACOSX) # if OGG then tremor or vorbis if (OGG_FOUND) @@ -46,8 +66,6 @@ if (FLAC_FOUND) list(APPEND CLIENT_INCLUDE ${FLAC_INCLUDE_DIRS}) endif (FLAC_FOUND) -add_definitions(-DHAS_DAEMON) - include_directories(${CLIENT_INCLUDE}) add_executable(snapclient ${CLIENT_SOURCES}) target_link_libraries(snapclient ${CLIENT_LIBRARIES}) diff --git a/externals/aixlog b/externals/aixlog index d4e8ab4f..96b8b80e 160000 --- a/externals/aixlog +++ b/externals/aixlog @@ -1 +1 @@ -Subproject commit d4e8ab4f1fe0e44d8246b37c349f566b356636f6 +Subproject commit 96b8b80ed48a45fb8785739b8433b7835cdf7c01 diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index d4851500..79b10061 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -29,9 +29,17 @@ set(SERVER_INCLUDE ${FLAC_INCLUDE_DIRS}) # Avahi -list(APPEND SERVER_SOURCES publishZeroConf/publishAvahi.cpp) -list(APPEND SERVER_LIBRARIES ${AVAHI_LIBRARIES}) -list(APPEND SERVER_INCLUDE ${AVAHI_INCLUDE_DIRS}) +if (AVAHI_FOUND) + list(APPEND SERVER_SOURCES publishZeroConf/publishAvahi.cpp) + list(APPEND SERVER_LIBRARIES ${AVAHI_LIBRARIES}) + list(APPEND SERVER_INCLUDE ${AVAHI_INCLUDE_DIRS}) +endif (AVAHI_FOUND) + +if (BONJOUR_FOUND) + list(APPEND SERVER_SOURCES publishZeroConf/publishBonjour.cpp) +# list(APPEND SERVER_LIBRARIES ${BONJOUR_LIBRARIES}) +# list(APPEND SERVER_INCLUDE ${BONJOUR_INCLUDE_DIRS}) +endif (BONJOUR_FOUND) if (OGG_FOUND AND VORBIS_FOUND AND VORBISENC_FOUND) list(APPEND SERVER_SOURCES encoder/oggEncoder.cpp)