Skip to content

Commit

Permalink
Libace (#113)
Browse files Browse the repository at this point in the history
* added ACE as external project
* do not build ACE if USE_SYSTEM_ACE
* Add FindACE.cmake from gadgetron, added license and origin of the file
* compiles HDF5_DL_LIB if CUDA is found

partially closes #127
  • Loading branch information
paskino authored Jun 27, 2018
1 parent ba7cdbe commit b16e149
Show file tree
Hide file tree
Showing 7 changed files with 245 additions and 9 deletions.
12 changes: 8 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,19 @@ language: cpp
# so try to keep this concise to avoid need to update
matrix:
include:
- os: linux
python: 3
# +boost -itk +fftw3 +hdf5 -ace
env: EXTRA_BUILD_FLAGS="-DUSE_SYSTEM_Boost=ON -DUSE_ITK=OFF -DUSE_SYSTEM_FFTW3=ON -DUSE_SYSTEM_HDF5=ON -DUSE_SYSTEM_ACE=OFF" CC=gcc-5 CXX=g++-5 PYMVER=3
# linux g{cc,++}-5 py{27,3}
- os: linux
python: 3
# +boost +fftw3 +hdf5
env: EXTRA_BUILD_FLAGS="-DUSE_SYSTEM_Boost=ON -DUSE_SYSTEM_FFTW3=ON -DUSE_SYSTEM_HDF5=ON" CC=gcc-5 CXX=g++-5 PYMVER=3
# +boost +fftw3 +hdf5 +ace
env: EXTRA_BUILD_FLAGS="-DUSE_SYSTEM_Boost=ON -DUSE_SYSTEM_FFTW3=ON -DUSE_SYSTEM_HDF5=ON -DUSE_SYSTEM_ACE=ON" CC=gcc-5 CXX=g++-5 PYMVER=3
- os: linux
python: 2.7
# +boost +fftw3 +hdf5 +siemens_to_ismrmrd +swig
env: EXTRA_BUILD_FLAGS="-DUSE_SYSTEM_Boost=ON -DUSE_SYSTEM_FFTW3=ON -DUSE_SYSTEM_HDF5=ON -DBUILD_siemens_to_ismrmrd=ON -DUSE_SYSTEM_SWIG=ON" CC=gcc-5 CXX=g++-5 PYMVER=2
# +boost +fftw3 +hdf5 +siemens_to_ismrmrd +swig +ace
env: EXTRA_BUILD_FLAGS="-DUSE_SYSTEM_Boost=ON -DUSE_SYSTEM_FFTW3=ON -DUSE_SYSTEM_HDF5=ON -DBUILD_siemens_to_ismrmrd=ON -DUSE_SYSTEM_SWIG=ON -DUSE_SYSTEM_ACE=ON" CC=gcc-5 CXX=g++-5 PYMVER=2
- os: linux
python: 3
# +DEVEL +boost -hdf5 -fftw3 +siemens_to_ismrmrd
Expand Down
125 changes: 125 additions & 0 deletions CMake/FindACE.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# this file is part of the Gadgetron repository
# dowloaded from https://github.com/gadgetron/gadgetron/commit/43dd980f5368776b58df2e211470cabeeabab745
# https://github.com/gadgetron/gadgetron/blob/master/cmake/FindACE.cmake
#
# The file is distributed with the following license:
#
# GADGETRON SOFTWARE LICENSE V1.0, NOVEMBER 2011
#
# PERMISSION IS HEREBY GRANTED, FREE OF CHARGE, TO ANY PERSON OBTAINING
# A COPY OF THIS SOFTWARE AND ASSOCIATED DOCUMENTATION FILES (THE
# "SOFTWARE"), TO DEAL IN THE SOFTWARE WITHOUT RESTRICTION, INCLUDING
# WITHOUT LIMITATION THE RIGHTS TO USE, COPY, MODIFY, MERGE, PUBLISH,
# DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THE SOFTWARE, AND TO
# PERMIT PERSONS TO WHOM THE SOFTWARE IS FURNISHED TO DO SO, SUBJECT TO
# THE FOLLOWING CONDITIONS:
#
# THE ABOVE COPYRIGHT NOTICE, THIS PERMISSION NOTICE, AND THE LIMITATION
# OF LIABILITY BELOW SHALL BE INCLUDED IN ALL COPIES OR REDISTRIBUTIONS
# OF SUBSTANTIAL PORTIONS OF THE SOFTWARE.
#
# SOFTWARE IS BEING DEVELOPED IN PART AT THE NATIONAL HEART, LUNG, AND BLOOD
# INSTITUTE, NATIONAL INSTITUTES OF HEALTH BY AN EMPLOYEE OF THE FEDERAL
# GOVERNMENT IN THE COURSE OF HIS OFFICIAL DUTIES. PURSUANT TO TITLE 17,
# SECTION 105 OF THE UNITED STATES CODE, THIS SOFTWARE IS NOT SUBJECT TO
# COPYRIGHT PROTECTION AND IS IN THE PUBLIC DOMAIN. EXCEPT AS CONTAINED IN
# THIS NOTICE, THE NAME OF THE AUTHORS, THE NATIONAL HEART, LUNG, AND BLOOD
# INSTITUTE (NHLBI), OR THE NATIONAL INSTITUTES OF HEALTH (NIH) MAY NOT
# BE USED TO ENDORSE OR PROMOTE PRODUCTS DERIVED FROM THIS SOFTWARE WITHOUT
# SPECIFIC PRIOR WRITTEN PERMISSION FROM THE NHLBI OR THE NIH.THE SOFTWARE IS
# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
# IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Find the ACE client includes and library
#

# This module defines
# ACE_INCLUDE_DIR, where to find ace.h
# ACE_LIBRARIES, the libraries to link against ... !! NOT header is old !! ...
# ACE_FOUND, if false, you cannot build anything that requires ACE

# This is the new header...

########################################################################
## check pkg-config for ace information, if available

set(ACE_INCLUDE_DIR_GUESS)
set(ACE_LIBRARY_DIR_GUESS)
set(ACE_LINK_FLAGS)
if(PKGCONFIG_EXECUTABLE)
PKGCONFIG(ace ACE_INCLUDE_DIR_GUESS ACE_LIBRARY_DIR_GUESS ACE_LINK_FLAGS ACE_C_FLAGS)
if (NOT ACE_LINK_FLAGS)
PKGCONFIG(ACE ACE_INCLUDE_DIR_GUESS ACE_LIBRARY_DIR_GUESS ACE_LINK_FLAGS ACE_C_FLAGS)
endif ()
add_definitions(${ACE_C_FLAGS})
endif()

set(ACE_LINK_FLAGS "${ACE_LINK_FLAGS}" CACHE INTERNAL "ace link flags")

########################################################################
## general find

find_path(ACE_INCLUDE_DIR ace/ACE.h ${CMAKE_SOURCE_DIR}/../ACE_wrappers/ /usr/include /usr/local/include $ENV{ACE_ROOT} $ENV{ACE_ROOT}/include DOC "directory containing ace/*.h for ACE library")

# in YARP1, config was in another directory
set(ACE_INCLUDE_CONFIG_DIR "" CACHE STRING "location of ace/config.h")
mark_as_advanced(ACE_INCLUDE_CONFIG_DIR)

find_library(ACE_LIBRARY NAMES ACE ace PATHS ${CMAKE_SOURCE_DIR}/../ACE_wrappers/lib/ /usr/lib /usr/local/lib $ENV{ACE_ROOT}/lib $ENV{ACE_ROOT} DOC "ACE library file")

if (WIN32 AND NOT CYGWIN)
set(CMAKE_DEBUG_POSTFIX "d")
find_library(ACE_DEBUG_LIBRARY NAMES ACE${CMAKE_DEBUG_POSTFIX} ace${CMAKE_DEBUG_POSTFIX} PATHS ${CMAKE_SOURCE_DIR}/../ACE_wrappers/lib/ /usr/lib /usr/local/lib $ENV{ACE_ROOT}/lib $ENV{ACE_ROOT} DOC "ACE library file (debug version)")
endif ()


########################################################################
## OS-specific extra linkage

# Solaris needs some extra libraries that may not have been found already
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
#message(STATUS "need to link solaris-specific libraries")
# link_libraries(socket rt)
set(ACE_LIBRARY ${ACE_LIBRARY} socket rt nsl)
endif()

# Windows needs some extra libraries
if (WIN32 AND NOT CYGWIN)
#message(STATUS "need to link windows-specific libraries")
#link_libraries(winmm)
set(ACE_LIBRARY ${ACE_LIBRARY} winmm)
endif ()


########################################################################
## finished - now just set up flags and complain to user if necessary

if (ACE_INCLUDE_DIR AND ACE_LIBRARY)
set(ACE_FOUND TRUE)
else ()
set(ACE_FOUND FALSE)
endif ()

if (ACE_DEBUG_LIBRARY)
set(ACE_DEBUG_FOUND TRUE)
else ()
set(ACE_DEBUG_LIBRARY ${ACE_LIBRARY})
endif ()

if (ACE_FOUND)
if (NOT Ace_FIND_QUIETLY)
message(STATUS "Found ACE library: ${ACE_LIBRARY}")
message(STATUS "Found ACE include: ${ACE_INCLUDE_DIR}")
endif ()
else ()
if (Ace_FIND_REQUIRED)
message(FATAL_ERROR "Could not find ACE")
endif ()
endif ()

# TSS: backwards compatibility
set(ACE_LIBRARIES ${ACE_LIBRARY})
2 changes: 1 addition & 1 deletion SuperBuild.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ option(USE_SYSTEM_SWIG "Build using an external version of SWIG" OFF)
#option(USE_SYSTEM_Gadgetron "Build using an external version of Gadgetron" OFF)
option(USE_SYSTEM_SIRF "Build using an external version of SIRF" OFF)
option(USE_SYSTEM_GTest "Build using an external version of GTest" OFF)

option(USE_SYSTEM_ACE "Build using an external version of ACE" ON)
if (APPLE)
set (build_STIR_OPENMP_default OFF)
else()
Expand Down
93 changes: 93 additions & 0 deletions SuperBuild/External_ACE.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#========================================================================
# Author: Benjamin A Thomas
# Author: Kris Thielemans
# Author: Edoardo Pasca
# Copyright 2017 University College London
# Copyright 2017 STFC
#
# This file is part of the CCP PETMR Synergistic Image Reconstruction Framework (SIRF) SuperBuild.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#=========================================================================

#This needs to be unique globally
set(proj ACE)

# Set dependency list
set(${proj}_DEPENDENCIES "")

# Include dependent projects if any
ExternalProject_Include_Dependencies(${proj} DEPENDS_VAR ${proj}_DEPENDENCIES)

# Set external name (same as internal for now)
set(externalProjName ${proj})

set(${proj}_SOURCE_DIR "${SOURCE_ROOT_DIR}/${proj}" )
set(${proj}_BINARY_DIR "${SUPERBUILD_WORK_DIR}/builds/${proj}/build" )
set(${proj}_DOWNLOAD_DIR "${SUPERBUILD_WORK_DIR}/downloads/${proj}" )
set(${proj}_STAMP_DIR "${SUPERBUILD_WORK_DIR}/builds/${proj}/stamp" )
set(${proj}_TMP_DIR "${SUPERBUILD_WORK_DIR}/builds/${proj}/tmp" )

if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalProjName}}" ) )
message(STATUS "${__indent}Adding project ${proj}")

### --- Project specific additions here
set(libACE_Install_Dir ${SUPERBUILD_INSTALL_DIR})

#message(STATUS "HDF5_ROOT in External_SIRF: " ${HDF5_ROOT})
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${SUPERBUILD_INSTALL_DIR})
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${SUPERBUILD_INSTALL_DIR})



ExternalProject_Add(${proj}
${${proj}_EP_ARGS}
GIT_REPOSITORY ${${proj}_URL}
GIT_TAG ${${proj}_TAG}
SOURCE_DIR ${${proj}_SOURCE_DIR}
BINARY_DIR ${${proj}_BINARY_DIR}
DOWNLOAD_DIR ${${proj}_DOWNLOAD_DIR}
STAMP_DIR ${${proj}_STAMP_DIR}
TMP_DIR ${${proj}_TMP_DIR}

CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${Gadgetron_Install_Dir}
INSTALL_DIR ${Gadgetron_Install_Dir}
DEPENDS
${${proj}_DEPENDENCIES}
)

set(${proj}_ROOT ${${proj}_SOURCE_DIR})
set(${proj}_INCLUDE_DIR ${${proj}_SOURCE_DIR})

else()
if(${USE_SYSTEM_${externalProjName}})
find_package(${proj} ${${externalProjName}_REQUIRED_VERSION} REQUIRED)
message("USING the system ${externalProjName}, set ${externalProjName}_DIR=${${externalProjName}_DIR}")
endif()
ExternalProject_Add_Empty(${proj} DEPENDS "${${proj}_DEPENDENCIES}"
SOURCE_DIR ${${proj}_SOURCE_DIR}
BINARY_DIR ${${proj}_BINARY_DIR}
DOWNLOAD_DIR ${${proj}_DOWNLOAD_DIR}
STAMP_DIR ${${proj}_STAMP_DIR}
TMP_DIR ${${proj}_TMP_DIR}
)
endif()

mark_as_superbuild(
VARS
${externalProjName}_DIR:PATH
LABELS
"FIND_PACKAGE"
)
4 changes: 2 additions & 2 deletions SuperBuild/External_Gadgetron.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
set(proj Gadgetron)

# Set dependency list
set(${proj}_DEPENDENCIES "Boost;HDF5;ISMRMRD;FFTW3double;Armadillo;GTest")
set(${proj}_DEPENDENCIES "ACE;Boost;HDF5;ISMRMRD;FFTW3double;Armadillo;GTest")

# Include dependent projects if any
ExternalProject_Include_Dependencies(${proj} DEPENDS_VAR ${proj}_DEPENDENCIES)
Expand Down Expand Up @@ -82,7 +82,7 @@ endif ()
-DBUILD_MATLAB_SUPPORT=${BUILD_GADGETRON_NATIVE_MATLAB_SUPPORT}
-DCMAKE_PREFIX_PATH=${SUPERBUILD_INSTALL_DIR}
-DCMAKE_LIBRARY_PATH=${SUPERBUILD_INSTALL_DIR}/lib
-DCMAKE_INCLUDE_PATH=${SUPERBUILD_INSTALL_DIR}
-DCMAKE_INCLUDE_PATH=${SUPERBUILD_INSTALL_DIR}/include
-DCMAKE_INSTALL_PREFIX=${Gadgetron_Install_Dir}
-DBOOST_INCLUDEDIR=${BOOST_ROOT}/include/
-DBOOST_LIBRARYDIR=${BOOST_LIBRARY_DIR}
Expand Down
10 changes: 8 additions & 2 deletions SuperBuild/External_HDF5.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,13 @@ if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalPr
endif()

#set(HDF5_SOURCE_DIR ${SOURCE_DOWNLOAD_CACHE}/${proj}-prefix/src/HDF5/hdf5-1.10.0-patch1 )

set (HDF5_BUILD_HL_LIB "OFF")
find_package(CUDA)
if (CUDA_FOUND)
message("<<<<<<<<<<<<<<<<< CUDA FOUND >>>>>>>>>>>>>>>>>>>>>")
set(HDF5_BUILD_HL_LIB "ON")
endif()

ExternalProject_Add(${proj}
${${proj}_EP_ARGS}
URL ${${proj}_URL}
Expand All @@ -68,7 +74,7 @@ if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalPr
${CLANG_ARG}
-DHDF5_BUILD_EXAMPLES=OFF
-DHDF5_BUILD_TOOLS=OFF
-DHDF5_BUILD_HL_LIB=OFF
-DHDF5_BUILD_HL_LIB=${HDF5_BUILD_HL_LIB}
-DBUILD_TESTING=OFF
INSTALL_DIR ${HDF5_Install_Dir}
)
Expand Down
8 changes: 8 additions & 0 deletions version_config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ if (DEVEL_BUILD)
## glog
set(DEFAULT_glog_URL https://github.com/google/glog )
set(DEFAULT_glog_TAG v035)

set(DEFAULT_ACE_URL https://github.com/paskino/libace-conda)
set(DEFAULT_ACE_TAG origin/master)

else()
set(DEFAULT_SIRF_TAG v1.1.1)
Expand Down Expand Up @@ -145,6 +148,8 @@ else()
set(DEFAULT_glog_URL https://github.com/google/glog )
set(DEFAULT_glog_TAG v035)

set(DEFAULT_ACE_URL https://github.com/paskino/libace-conda)
set(DEFAULT_ACE_TAG origin/master)
endif()


Expand All @@ -171,6 +176,9 @@ SET(petmr_rd_tools_URL ${DEFAULT_petmr_rd_tools_URL} CACHE STRING ON)
SET(glog_URL ${DEFAULT_glog_URL} CACHE STRING ON)
SET(glog_TAG ${DEFAULT_glog_TAG} CACHE STRING ON)

set(ACE_URL ${DEFAULT_ACE_URL} CACHE STRING ON)
set(ACE_TAG ${DEFAULT_ACE_TAG} CACHE STRING ON)

mark_as_advanced(SIRF_URL SIRF_TAG STIR_URL STIR_TAG
Gadgetron_URL Gadgetron_TAG
siemens_to_ismrmrd_URL siemens_to_ismrmrd_TAG
Expand Down

0 comments on commit b16e149

Please sign in to comment.