-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use new packaging system for BioSignalML API plugin (closes #1313).
- Loading branch information
Showing
2 changed files
with
185 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,77 +1,215 @@ | ||
PROJECT(BioSignalMLAPIPlugin) | ||
|
||
# Retrieve the plugin's binary file(s) | ||
# Name and version of our package | ||
|
||
STRING(REPLACE "${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/" "" | ||
RELATIVE_PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/${REMOTE_EXTERNAL_BINARIES_DIR}") | ||
SET(PACKAGE_NAME BioSignalMLAPI) | ||
SET(PACKAGE_VERSION 1.0) | ||
|
||
SET(BIOSIGNALML_MAJOR_VERSION "0") | ||
SET(TYPEDOBJECT_MAJOR_VERSION "1") | ||
# Version of our package's libraries | ||
|
||
SET(MAJOR_BIOSIGNALML_LIBRARY_VERSION 0) | ||
SET(BIOSIGNALML_LIBRARY_VERSION ${MAJOR_BIOSIGNALML_LIBRARY_VERSION}.8) | ||
|
||
SET(MAJOR_TYPEDOBJECT_LIBRARY_VERSION 1) | ||
SET(TYPEDOBJECT_LIBRARY_VERSION ${MAJOR_TYPEDOBJECT_LIBRARY_VERSION}.1) | ||
|
||
# Git tags for our libraries | ||
|
||
SET(GIT_TAG_BIOSIGNALML v0.8.4) | ||
SET(GIT_TAG_TYPEDOBJECT v1.1.2) | ||
|
||
# Package repository and release tag | ||
|
||
SET(PACKAGE_REPOSITORY libbiosignalml) | ||
SET(RELEASE_TAG v0.8.4) | ||
|
||
# Specify where our local package will be installed | ||
|
||
SET(FULL_LOCAL_EXTERNAL_PACKAGE_DIR ${PROJECT_SOURCE_DIR}/${LOCAL_EXTERNAL_PACKAGE_DIR}) | ||
|
||
# Name of our package's shared libraries (and of their import libraries, if any) | ||
|
||
IF(WIN32) | ||
IF(RELEASE_MODE) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} biosignalml.dll 94bc0c933d41d1e317e3568576dec96077239271) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} biosignalml.lib 49b708bb230a8be7ae0a2eaa17eb0bd44c6f6158) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} typedobject.dll 037b31ac63d2e4a809b29bbb35056de37b8fb3fd) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} typedobject.lib 37db06977e3f26317afcf4400b0fefc99994a432) | ||
ELSE() | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} biosignalml.dll 779f4064b06ad4d8ec2998ed8553dec16f815c93) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} biosignalml.lib 8ab6470168ad40a1717e64d46c0e8eaab53ebb85) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} typedobject.dll 2fef49bbfc259656e698bc0b3749a928c254999c) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} typedobject.lib 34f28e57932941cd06f5acef49a46cb38b5185b1) | ||
ENDIF() | ||
ELSEIF(APPLE) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} libbiosignalml.${BIOSIGNALML_MAJOR_VERSION}.dylib c12d1455b71dd2c19107edf02bb59c6ed78d917a) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} libtypedobject.${TYPEDOBJECT_MAJOR_VERSION}.dylib c45259f4e0d64c44c343201f497a67c5489f9e54) | ||
SET(BIOSIGNALML_SHARED_LIBRARY biosignalml${CMAKE_SHARED_LIBRARY_SUFFIX}) | ||
SET(BIOSIGNALML_IMPORT_LIBRARY biosignalml${CMAKE_IMPORT_LIBRARY_SUFFIX}) | ||
|
||
SET(TYPEDOBJECT_SHARED_LIBRARY typedobject${CMAKE_SHARED_LIBRARY_SUFFIX}) | ||
SET(TYPEDOBJECT_IMPORT_LIBRARY typedobject${CMAKE_IMPORT_LIBRARY_SUFFIX}) | ||
ELSE() | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} libbiosignalml.so.${BIOSIGNALML_MAJOR_VERSION} 0c2f927841fa7e474745e38db1d803e570bf9e5e) | ||
RETRIEVE_BINARY_FILE_FROM("http://biosignalml.org/binaries" ${RELATIVE_PROJECT_SOURCE_DIR} libtypedobject.so.${TYPEDOBJECT_MAJOR_VERSION} d0e619e47c28e029fa51db15e534fd201154a1bd) | ||
SET(BIOSIGNALML_SHARED_LIBRARY ${CMAKE_SHARED_LIBRARY_PREFIX}biosignalml${CMAKE_SHARED_LIBRARY_SUFFIX_PRE}.${MAJOR_BIOSIGNALML_LIBRARY_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX_POST}) | ||
SET(BIOSIGNALML_IMPORT_LIBRARY ${BIOSIGNALML_SHARED_LIBRARY}) | ||
|
||
SET(TYPEDOBJECT_SHARED_LIBRARY ${CMAKE_SHARED_LIBRARY_PREFIX}typedobject${CMAKE_SHARED_LIBRARY_SUFFIX_PRE}.${MAJOR_TYPEDOBJECT_LIBRARY_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX_POST}) | ||
SET(TYPEDOBJECT_IMPORT_LIBRARY ${TYPEDOBJECT_SHARED_LIBRARY}) | ||
ENDIF() | ||
|
||
# Retrieve the BioSignalML API external binaries | ||
# Retrieve our package's binaries | ||
|
||
SET(EXTERNAL_BINARIES_DIR ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/lib) | ||
|
||
SET(EXTERNAL_BINARIES | ||
${BIOSIGNALML_SHARED_LIBRARY} | ||
${TYPEDOBJECT_SHARED_LIBRARY} | ||
) | ||
|
||
# Specify the files that need to have their SHA-1 value checked | ||
|
||
SET(EXTERNAL_BINARIES_DIR ${PROJECT_SOURCE_DIR}/${LOCAL_EXTERNAL_BINARIES_DIR}) | ||
SET(SHA1_FILES | ||
lib/${BIOSIGNALML_SHARED_LIBRARY} | ||
lib/${TYPEDOBJECT_SHARED_LIBRARY} | ||
) | ||
|
||
IF(WIN32) | ||
SET(EXTERNAL_BINARIES | ||
biosignalml${CMAKE_SHARED_LIBRARY_SUFFIX} | ||
typedobject${CMAKE_SHARED_LIBRARY_SUFFIX} | ||
) | ||
ELSEIF(APPLE) | ||
SET(EXTERNAL_BINARIES | ||
libbiosignalml.${BIOSIGNALML_MAJOR_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} | ||
libtypedobject.${TYPEDOBJECT_MAJOR_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} | ||
) | ||
ELSE() | ||
SET(EXTERNAL_BINARIES | ||
libbiosignalml${CMAKE_SHARED_LIBRARY_SUFFIX}.${BIOSIGNALML_MAJOR_VERSION} | ||
libtypedobject${CMAKE_SHARED_LIBRARY_SUFFIX}.${TYPEDOBJECT_MAJOR_VERSION} | ||
LIST(APPEND SHA1_FILES | ||
lib/${BIOSIGNALML_IMPORT_LIBRARY} | ||
lib/${TYPEDOBJECT_IMPORT_LIBRARY} | ||
) | ||
ENDIF() | ||
|
||
IF(APPLE) | ||
SET(EXTERNAL_BINARIES_DEPENDENCIES ${EXTERNAL_BINARIES}) | ||
# Use the pre-built version of our package unless instructed otherwise | ||
|
||
IF(USE_PREBUILT_BIOSIGNALMLAPI_PACKAGE) | ||
# Retrieve the plugin's package | ||
|
||
STRING(REPLACE "${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/" "" | ||
RELATIVE_PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/${REMOTE_EXTERNAL_PACKAGE_DIR}") | ||
|
||
IF(WIN32) | ||
IF(RELEASE_MODE) | ||
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION} | ||
${RELATIVE_PROJECT_SOURCE_DIR} e2ca2a020750760c611b72b35edfa956bc55c593 | ||
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY} | ||
RELEASE_TAG ${RELEASE_TAG} | ||
SHA1_FILES ${SHA1_FILES} | ||
SHA1_VALUES 379e38afc9eb015b54cd327aac0d725f25fb95fc | ||
c18a129f49429083c40c3621f61256ddcbe83c05 | ||
c4bf89a74703d73220e7b8be29944c409fca1a06 | ||
a10d81c681fae3efc41d7855c4250f7333821256) | ||
ELSE() | ||
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION} | ||
${RELATIVE_PROJECT_SOURCE_DIR} f01b5c1219ab792476ae6eaadf3be0329784c948 | ||
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY} | ||
RELEASE_TAG ${RELEASE_TAG} | ||
SHA1_FILES ${SHA1_FILES} | ||
SHA1_VALUES 6ffeea24b14d9769e5b50aed663ce5091cd43101 | ||
136f63617ad96a272d56b0e13f3d0b090f096d75 | ||
0dcde52f7037472d6d642e71f9e616f0fac18095 | ||
556aa50cf56cd0e934a5cd7c392cef4be1d01d1c) | ||
ENDIF() | ||
ELSEIF(APPLE) | ||
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION} | ||
${RELATIVE_PROJECT_SOURCE_DIR} a9842f187002c5b9bae273bc2cd3224592f87ef2 | ||
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY} | ||
RELEASE_TAG ${RELEASE_TAG} | ||
SHA1_FILES ${SHA1_FILES} | ||
SHA1_VALUES 7141316b23d7cace02e72466808f6710ad40a4b8 | ||
8e6ca96135ae670a53422a44827579740108d559) | ||
ELSE() | ||
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION} | ||
${RELATIVE_PROJECT_SOURCE_DIR} 02a4ba32fce20cd13f9f5fbf966000ce0abb2b9b | ||
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY} | ||
RELEASE_TAG ${RELEASE_TAG} | ||
SHA1_FILES ${SHA1_FILES} | ||
SHA1_VALUES ecb1f7171e724140b57114c5de6af8b0f36871de | ||
6d80493dc3187a71ac3755ef689191d50325dce4) | ||
ENDIF() | ||
ELSE() | ||
SET(EXTERNAL_BINARIES_DEPENDENCIES) | ||
# Build typedobject as an external project | ||
|
||
ExternalProject_Add(TypedObjectBuild | ||
SOURCE_DIR | ||
${CMAKE_SOURCE_DIR}/ext/typedobject | ||
INSTALL_DIR | ||
${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} | ||
GIT_REPOSITORY | ||
https://github.com/opencor/typedobject | ||
GIT_TAG | ||
${GIT_TAG_TYPEDOBJECT} | ||
CMAKE_GENERATOR | ||
${CMAKE_GENERATOR} | ||
CMAKE_ARGS | ||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} | ||
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> | ||
BUILD_BYPRODUCTS | ||
<INSTALL_DIR>/lib/${TYPEDOBJECT_IMPORT_LIBRARY} | ||
) | ||
|
||
SET(PACKAGE_BUILD ${PACKAGE_NAME}Build) | ||
|
||
ExternalProject_Add(${PACKAGE_BUILD} | ||
SOURCE_DIR | ||
${CMAKE_SOURCE_DIR}/ext/${PACKAGE_NAME} | ||
INSTALL_DIR | ||
${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} | ||
GIT_REPOSITORY | ||
https://github.com/opencor/libbiosignalml | ||
GIT_TAG | ||
${GIT_TAG_BIOSIGNALML} | ||
CMAKE_GENERATOR | ||
${CMAKE_GENERATOR} | ||
CMAKE_ARGS | ||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} | ||
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> | ||
-Dtypedobject_DIR=<INSTALL_DIR>/lib/cmake/typedobject | ||
-Dtypedobject_INCLUDE_DIR=<INSTALL_DIR>/include | ||
-Dtypedobject_LIBRARY=<INSTALL_DIR>/lib/${TYPEDOBJECT_IMPORT_LIBRARY} | ||
BUILD_BYPRODUCTS | ||
<INSTALL_DIR>/lib/${BIOSIGNALML_IMPORT_LIBRARY} | ||
DEPENDS | ||
TypedObjectBuild | ||
) | ||
|
||
IF(WIN32) | ||
# We want both our shared and import libraries to be in the same place | ||
|
||
ExternalProject_Add_Step(${PACKAGE_BUILD} CopyDLLs | ||
COMMAND ${CMAKE_COMMAND} -E copy bin/${BIOSIGNALML_SHARED_LIBRARY} lib | ||
COMMAND ${CMAKE_COMMAND} -E copy bin/${TYPEDOBJECT_SHARED_LIBRARY} lib | ||
WORKING_DIRECTORY ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} | ||
DEPENDEES install) | ||
ELSE() | ||
# Dereference the symbolic link to the libraries since CMake's tar can't | ||
# do this | ||
|
||
ExternalProject_Add_Step(${PACKAGE_BUILD} CopyLibraries | ||
COMMAND ${CMAKE_COMMAND} -E remove -f ${BIOSIGNALML_SHARED_LIBRARY} | ||
${TYPEDOBJECT_SHARED_LIBRARY} | ||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SHARED_LIBRARY_PREFIX}biosignalml${CMAKE_SHARED_LIBRARY_SUFFIX_PRE}.${BIOSIGNALML_LIBRARY_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX_POST} | ||
${BIOSIGNALML_SHARED_LIBRARY} | ||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SHARED_LIBRARY_PREFIX}typedobject${CMAKE_SHARED_LIBRARY_SUFFIX_PRE}.${TYPEDOBJECT_LIBRARY_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX_POST} | ||
${TYPEDOBJECT_SHARED_LIBRARY} | ||
WORKING_DIRECTORY ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/lib | ||
DEPENDEES install) | ||
ENDIF() | ||
|
||
# Package our external project | ||
|
||
CREATE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION} | ||
${LOCAL_EXTERNAL_PACKAGE_DIR} | ||
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY} | ||
RELEASE_TAG ${RELEASE_TAG} | ||
PACKAGED_FILES include ${SHA1_FILES} | ||
SHA1_FILES ${SHA1_FILES} | ||
TARGET ${PACKAGE_BUILD}) | ||
|
||
SET(DEPENDS_ON ${PACKAGE_BUILD}) | ||
ENDIF() | ||
|
||
# Add the plugin | ||
|
||
ADD_PLUGIN(BioSignalMLAPI | ||
ADD_PLUGIN(${PACKAGE_NAME} | ||
SOURCES | ||
../../plugininfo.cpp | ||
|
||
src/biosignalmlapiplugin.cpp | ||
HEADERS_MOC | ||
src/biosignalmlapiplugin.h | ||
INCLUDE_DIRS | ||
include | ||
QT_MODULES | ||
Core | ||
EXTERNAL_BINARIES_DIR | ||
${EXTERNAL_BINARIES_DIR} | ||
EXTERNAL_BINARIES | ||
${EXTERNAL_BINARIES} | ||
EXTERNAL_BINARIES_DEPENDENCIES | ||
${EXTERNAL_BINARIES_DEPENDENCIES} | ||
DEPENDS_ON | ||
${DEPENDS_ON} | ||
) |