cmake_minimum_required(VERSION 2.8)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

project(NABRIDGESBAD)

set(NABRIDGESBAD_VERSION 0.2.0)

set(NABRIDGESBAD_LADSPA_SOURCES ladspa/descriptor.c ladspa/lrdf.c ladspa/lv2api.c ladspa/manifest.c ladspa/pluglib.c)
set(NABRIDGESBAD_DSSI_SOURCES dssi/descriptor.c dssi/lv2api.c dssi/manifest.c dssi/pluglib.c)

set(SO_FILE_EXT "${CMAKE_SHARED_MODULE_SUFFIX}")

include(FindPkgConfig)
pkg_check_modules(NACORE REQUIRED nacore>=0.2.0)

include(FindRedland)
if (NOT "${REDLAND_FOUND}")
	message(FATAL_ERROR "Redland not found")
endif ()

pkg_check_modules(LV2 REQUIRED lv2core)

pkg_search_module(ALSA REQUIRED alsa libdssialsacompat)

include(CheckIncludeFile)
check_include_file(ladspa.h HAVE_LADSPA_H)
if (NOT "${HAVE_LADSPA_H}")
	message(FATAL_ERROR "ladspa.h not found")
endif ()

pkg_check_modules(DSSI REQUIRED dssi)

include_directories(. ${NACORE_INCLUDE_DIRS} ${REDLAND_INCLUDE_DIR} ${LV2_INCLUDE_DIR} ${ALSA_INCLUDE_DIR} ${DSSI_INCLUDE_DIR})
link_directories(${NACORE_LIBRARY_DIRS} ${ALSA_LIBRARY_DIRS})

add_library(ladspa MODULE ${NABRIDGESBAD_LADSPA_SOURCES})
set_target_properties(ladspa PROPERTIES PREFIX "")
target_link_libraries(ladspa ${REDLAND_LIBRARIES} ${NACORE_LIBRARIES})
configure_file("${NABRIDGESBAD_SOURCE_DIR}/ladspa/manifest.ttl.in" "${NABRIDGESBAD_BINARY_DIR}/ladspa/manifest.ttl" @ONLY)

add_library(dssi MODULE ${NABRIDGESBAD_DSSI_SOURCES})
set_target_properties(dssi PROPERTIES PREFIX "")
target_link_libraries(dssi ${ALSA_LIBRARIES} ${NACORE_LIBRARIES})
configure_file("${NABRIDGESBAD_SOURCE_DIR}/dssi/manifest.ttl.in" "${NABRIDGESBAD_BINARY_DIR}/dssi/manifest.ttl" @ONLY)

if (NOT DEFINED LV2DIR_INSTALL)
	set(LV2DIR_INSTALL lib/lv2)
endif ()

install(TARGETS ladspa DESTINATION "${LV2DIR_INSTALL}/naspro-ladspa.lv2")
install(FILES ladspa/manifest.ttl DESTINATION "${LV2DIR_INSTALL}/naspro-ladspa.lv2")

install(TARGETS dssi DESTINATION "${LV2DIR_INSTALL}/naspro-dssi.lv2")
install(FILES dssi/manifest.ttl DESTINATION "${LV2DIR_INSTALL}/naspro-dssi.lv2")

set(CPACK_PACKAGE_VERSION_MAJOR 0)
set(CPACK_PACKAGE_VERSION_MINOR 2)
set(CPACK_PACKAGE_VERSION_PATCH 0)
set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
set(CPACK_SOURCE_GENERATOR TGZ)
set(CPACK_SOURCE_PACKAGE_FILE_NAME naspro-bridges-bad-${CPACK_PACKAGE_VERSION})
set(CPACK_SOURCE_IGNORE_FILES
	"^${NABRIDGESBAD_BINARY_DIR}/CMakeCache.*"
	"^${NABRIDGESBAD_BINARY_DIR}/CMakeFiles.*"
	"^${NABRIDGESBAD_BINARY_DIR}/cmake_.*"
	"^${NABRIDGESBAD_BINARY_DIR}/install.*"
	"^${NABRIDGESBAD_BINARY_DIR}/_CPack.*"
	"^${NABRIDGESBAD_BINARY_DIR}/CPack.*"
	"^${NABRIDGESBAD_BINARY_DIR}/Makefile$"
	"^${NABRIDGESBAD_BINARY_DIR}/naspro-.*"
	"^${NABRIDGESBAD_BINARY_DIR}/ladspa/manifest.ttl$"
	"^${NABRIDGESBAD_BINARY_DIR}/dssi/manifest.ttl$"
	"^${NABRIDGESBAD_BINARY_DIR}/.*\\\\.o$"
	"^${NABRIDGESBAD_BINARY_DIR}/ladspa.*${CMAKE_SHARED_LIBRARY_SUFFIX}$"
	"^${NABRIDGESBAD_BINARY_DIR}/dssi.*${CMAKE_SHARED_LIBRARY_SUFFIX}$"
)

include(CPack)
