From ca622abf57f350c26ef513e87f641a575526d031 Mon Sep 17 00:00:00 2001 From: fduncanh Date: Mon, 22 Nov 2021 04:42:15 -0500 Subject: [PATCH] reworked (simplified) CmakeLists.txt, lib/CMakeLists.txt (thanks @swills ) --- CMakeLists.txt | 45 ++++++++++++++++++++++++++++----------------- lib/CMakeLists.txt | 45 ++++++--------------------------------------- 2 files changed, 34 insertions(+), 56 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78bff45..368eccb 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,16 @@ if( UNIX AND NOT APPLE ) add_definitions( -DSUPPRESS_AVAHI_COMPAT_WARNING ) endif() + +if( UNIX AND NOT APPLE ) + find_package(PkgConfig REQUIRED) + pkg_check_modules(DNSSD REQUIRED avahi-compat-libdns_sd) + pkg_check_modules(PLIST libplist>=2.0) + if(NOT PLIST_FOUND) + pkg_check_modules(PLIST REQUIRED libplist-2.0) + endif() +endif() + add_subdirectory( lib/llhttp ) add_subdirectory( lib/playfair ) add_subdirectory( lib ) @@ -30,30 +40,31 @@ if( UNIX AND NOT APPLE ) include_directories( uxplay ${GST_INCLUDE_DIRS} ) else() include_directories( uxplay - /Library/FrameWorks/GStreamer.framework/Headers/ - /usr/local/include - /usr/local/include/glib-2.0 - /usr/local/lib/glib-2.0/include - /opt/local/include - /opt/local/include/glib-2.0 - /opt/local/lib/glib-2.0/include - ) + /Library/FrameWorks/GStreamer.framework/Headers/ + /usr/local/include + /usr/local/include/glib-2.0 + /usr/local/lib/glib-2.0/include + /opt/local/include + /opt/local/include/glib-2.0 + /opt/local/lib/glib-2.0/include + ) endif() -if (BSD ) - target_link_directories( uxplay PUBLIC - ${GST_LIBRARY_DIRS} - ${PLIST_LIBRARY_DIRS} - ${DNSSD_LIBRARY_DIRS} - ) - target_link_libraries( uxplay ${PLIST_LIBRARIES} ) -endif() - target_link_libraries( uxplay renderers airplay ) +if ( UNIX AND NOT APPLE ) + target_link_directories( uxplay PUBLIC + ${GST_LIBRARY_DIRS} + ${DNSSD_LIBRARY_DIRS} + ${PLIST_LIBRARY_DIRS} + ) + target_link_libraries( uxplay ${PLIST_LIBRARIES} ) +endif() + + install( TARGETS uxplay RUNTIME DESTINATION bin ) install( FILES uxplay.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 ) install( FILES README.md README.txt README.html LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR} ) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 5bc2c2b..b6f97a0 100755 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -33,17 +33,10 @@ target_link_libraries( airplay llhttp ) # libplist - -if( BSD ) - pkg_check_modules( PLIST REQUIRED libplist-2.0 ) +if( UNIX AND NOT APPLE ) target_include_directories( airplay PUBLIC ${PLIST_INCLUDE_DIRS} ) link_directories( ${PLIST_LIBRARY_DIRS} ) - message( STATUS "LIBPLIST " ${PLIST_LIBRARIES} ) target_link_libraries ( airplay ${PLIST_LBRARIES} ) -elseif( UNIX AND NOT APPLE ) - find_library( LIBPLIST NAMES plist3 plist plist-2.0 libplist-2.0 ) - message( STATUS "LIBPLIST " ${LIBPLIST} ) - target_link_libraries ( airplay ${LIBPLIST} ) elseif( APPLE ) # use static linking pkg_check_modules( PLIST REQUIRED libplist-2.0 ) @@ -58,30 +51,14 @@ endif() #libcrypto if( UNIX AND NOT APPLE ) - if (STATIC_OPENSSL3 ) - set( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig/" ) - set( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib64/pkgconfig/" ) - pkg_check_modules( OPENSSL REQUIRED openssl>=3.0.0 ) - message( "OPENSSL_LIBRARY_DIRS " ${OPENSSL_LIBRARY_DIRS} ) - message( "OPENSSL_INCLUDE_DIRS " ${OPENSSL_INCLUDE_DIRS} ) - find_library( LIBCRYPTO libcrypto.a PATHS ${OPENSSL_LIBRARY_DIRS} REQUIRED ) - message( "LIBCRYPTO " ${LIBCRYPTO} ) - target_link_libraries( airplay ${LIBCRYPTO} ${CMAKE_DL_LIBS}) - target_include_directories( airplay PRIVATE - ${OPENSSL_INCLUDE_DIRS} - ) - else () - find_package(OpenSSL 1.1.1 REQUIRED) - message( "OpenSSL " ${OpenSSL} ) - target_compile_definitions( airplay PUBLIC OPENSSL_API_COMPAT=0x10101000L ) - target_link_libraries( airplay OpenSSL::Crypto ) - endif() - + find_package(OpenSSL 1.1.1 REQUIRED) + target_compile_definitions( airplay PUBLIC OPENSSL_API_COMPAT=0x10101000L ) + target_link_libraries( airplay OpenSSL::Crypto ) elseif( APPLE ) # use static linking # can either compile Openssl 1.1.1 from source (install_dev to /usr/local) or use Macports or Brew # MacPorts needs zlib with it, Brew has a strange "keg-only" installation in usr/local/opt/openssl@1.1 - pkg_check_modules( OPENSSL REQUIRED Openssl>=1.1.1) + pkg_check_modules( OPENSSL REQUIRED openssl>=1.1.1) message( "OPENSSL_LIBRARY_DIRS " ${OPENSSL_LIBRARY_DIRS} ) message( "OPENSSL_INCLUDE_DIRS " ${OPENSSL_INCLUDE_DIRS} ) find_library( LIBCRYPTO libcrypto.a PATHS ${OPENSSL_LIBRARY_DIRS} REQUIRED ) @@ -98,18 +75,8 @@ elseif( APPLE ) endif() #dns_sd -if( BSD ) - pkg_check_modules( DNSSD REQUIRED avahi-compat-libdns_sd ) +if ( UNIX AND NOT APPLE ) target_include_directories( airplay PUBLIC ${DNSSD_INCLUDE_DIRS} ) link_directories( ${DNSSD_LIBRARY_DIRS} ) target_link_libraries( airplay ${DNSSD_LIBRARIES}) -elseif( UNIX AND NOT APPLE ) - find_file( DNS_SD_H dns_sd.h PATHS /usr/include/* /usr/local/include/* ) - if( NOT DNS_SD_H ) - message( FATAL_ERROR "(avahi_compat) did not find dns_sd.h" ) - endif() - string( REPLACE "dns_sd.h" "" DNS_SD ${DNS_SD_H} ) - message( STATUS "found dns_sd.h in " ${DNS_SD} ) - target_include_directories( airplay PRIVATE ${DNS_SD} ) - target_link_libraries( airplay dns_sd ) endif()