# Copyright (C) 2015, ADIT GmbH
#
# This file is part of GENIVI Project AudioManager.
#
# Contributions are licensed to the GENIVI Alliance under one or more
# Contribution License Agreements.
#
# copyright
# This Source Code Form is subject to the terms of the
# Mozilla Public License, v. 2.0. if a  copy of the MPL was not distributed with
# this file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# author Jens Lorenz, jens.lorenz@de.adit-jv.com ADIT,2015
#
# For further information see http://www.genivi.org/.
#

CMAKE_MINIMUM_REQUIRED(VERSION 3.0)

PROJECT(AudioManagerUtilities LANGUAGES CXX VERSION ${DAEMONVERSION})

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

SET(AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE "")

SET(AUDIO_MANAGER_UTILITIES_LIBS
	${CMAKE_DL_LIBS}
	CACHE INTERNAL "AUDIO_MANAGER_UTILITIES_LIBS libs" FORCE)

IF (WITH_SHARED_UTILITIES)
    SET(LIBRARY_TYPE SHARED)
ELSE (WITH_SHARED_UTILITIES)
    SET(LIBRARY_TYPE STATIC)
ENDIF (WITH_SHARED_UTILITIES)

SET(AUDIO_MANAGER_UTILITIES_SRCS_CXX
	src/CAmCommandLineSingleton.cpp
	src/CAmDltWrapper.cpp
	src/CAmSocketHandler.cpp)
	
if(WITH_SYSTEMD_WATCHDOG)
	pkg_check_modules(SYSTEMD REQUIRED "libsystemd >= 44")

	message(STATUS "Found libsystemd-daemon, version: ${SYSTEMD_VERSION}")
	set (AUDIO_MANAGER_UTILITIES_LIBS
		${AUDIO_MANAGER_UTILITIES_LIBS}
		${SYSTEMD_LIBRARIES}
		CACHE INTERNAL "AUDIO_MANAGER_UTILITIES_LIBS libs" FORCE)
    set(AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE
		${AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE}
		${SYSTEMD_INCLUDEDIR})
	set (AUDIO_MANAGER_UTILITIES_SRCS_CXX
		${AUDIO_MANAGER_UTILITIES_SRCS_CXX}
		src/CAmWatchdog.cpp)

endif(WITH_SYSTEMD_WATCHDOG)	

IF (WITH_DBUS_WRAPPER)
	pkg_check_modules (DBUS REQUIRED "dbus-1 >= 1.4")
	
	set(AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE
		${AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE}
		${DBUS_INCLUDE_DIRS})
	
	set (AUDIO_MANAGER_UTILITIES_LIBS
		${AUDIO_MANAGER_UTILITIES_LIBS}
		${DBUS_LIBRARIES}
		CACHE INTERNAL "AUDIO_MANAGER_UTILITIES_LIBS libs" FORCE)
   
   	set(AUDIO_MANAGER_UTILITIES_SRCS_CXX
		${AUDIO_MANAGER_UTILITIES_SRCS_CXX}
		src/CAmDbusWrapper.cpp)
ENDIF (WITH_DBUS_WRAPPER)

IF (WITH_CAPI_WRAPPER)
        pkg_check_modules(COMMONAPI REQUIRED "CommonAPI >= 3.1.5")

    	set(AUDIO_MANAGER_UTILITIES_LIBS
        	${AUDIO_MANAGER_UTILITIES_LIBS}
       		${COMMONAPI_LIBRARIES}
        	${COMMONAPI_DBUS_LIBRARIES}
		CACHE INTERNAL "AUDIO_MANAGER_UTILITIES_LIBS libs" FORCE)

	set(AUDIO_MANAGER_UTILITIES_SRCS_CXX
		${AUDIO_MANAGER_UTILITIES_SRCS_CXX}
		src/CAmCommonAPIWrapper.cpp)

    	set(AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE
		    ${AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE}
	        ${COMMONAPI_INCLUDE_DIRS})
ENDIF (WITH_CAPI_WRAPPER)

if(WITH_DLT)    
    pkg_check_modules(DLT REQUIRED "automotive-dlt >= 2.2.0")
    	
	add_definitions(${DLT_CFLAGS_OTHER})
    	
	set(AUDIO_MANAGER_UTILITIES_LIBS
        	${AUDIO_MANAGER_UTILITIES_LIBS}
       		${DLT_LIBRARIES}
		CACHE INTERNAL "AUDIO_MANAGER_UTILITIES_LIBS libs" FORCE)

    	SET(AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE
			${AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE}
	        ${DLT_LIBRARY_DIRS})
endif(WITH_DLT)

SET(AUDIOMANAGER_UTILITIES_INCLUDE
	${AUDIOMANAGER_UTILITIES}/include
	${AUDIO_INCLUDE_FOLDER}
	${TCLAP_INCLUDE_DIR}
	${AUDIOMANAGER_INCLUDE_FOLDER}
	${AUDIOMANAGER_UTILITIES_EXTERNAL_INCLUDE}
	CACHE INTERNAL "AUDIOMANAGER_INCLUDE directories" FORCE)


INCLUDE_DIRECTORIES(${AUDIOMANAGER_UTILITIES_INCLUDE})

ADD_LIBRARY(AudioManagerUtilities ${LIBRARY_TYPE} ${AUDIO_MANAGER_UTILITIES_SRCS_CXX})

TARGET_LINK_LIBRARIES(AudioManagerUtilities ${AUDIO_MANAGER_UTILITIES_LIBS})

set_target_properties(AudioManagerUtilities PROPERTIES VERSION ${AudioManagerUtilities_VERSION} SOVERSION ${AudioManagerUtilities_VERSION_MAJOR})

IF (WITH_SHARED_UTILITIES)
	INSTALL(TARGETS AudioManagerUtilities
	        LIBRARY DESTINATION lib
	        PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
	        COMPONENT bin)
ELSE (WITH_SHARED_UTILITIES)
	INSTALL(TARGETS AudioManagerUtilities
	        ARCHIVE DESTINATION lib
	        COMPONENT dev)
ENDIF (WITH_SHARED_UTILITIES)

configure_file( ${CMAKE_SOURCE_DIR}/cmake/audiomanagerutilities.pc.in ${CMAKE_BINARY_DIR}/audiomanagerutilities.pc @ONLY )       
install(FILES ${CMAKE_BINARY_DIR}/audiomanagerutilities.pc DESTINATION lib/pkgconfig COMPONENT devel) 

configure_package_config_file ( 
	${CMAKE_SOURCE_DIR}/cmake/AudioManagerUtilitiesConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerUtilitiesConfig.cmake
	INSTALL_DESTINATION lib/${LIB_INSTALL_SUFFIX}/cmake
	PATH_VARS AUDIO_INCLUDE_FOLDER )
							  
write_basic_package_version_file(
	${CMAKE_CURRENT_BINARY_DIR}/AudioManagerUtilitiesConfigVersion.cmake
	VERSION ${DAEMONVERSION}
	COMPATIBILITY SameMajorVersion )	
	
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerUtilitiesConfig.cmake
	  ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerUtilitiesConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/AudioManagerUtilities-${DAEMONVERSION})

INSTALL(DIRECTORY "include/"
        DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${LIB_INSTALL_SUFFIX}/AudioManagerUtilities
        COMPONENT dev)

if(WITH_TESTS)
	add_subdirectory (test)
endif(WITH_TESTS)
