diff --git a/CMake/cmt-ulib.spec.in b/CMake/cmt-ulib.spec.in deleted file mode 100644 index 5ac5911..0000000 --- a/CMake/cmt-ulib.spec.in +++ /dev/null @@ -1,116 +0,0 @@ -Summary: Cosmic Muon Tomography core libraries -Name: cmt-ulib -Version: @PKGVERSION@ -Release: @PKGRELEASE@%{?dist} -License: EUROPEAN UNION PUBLIC LICENCE v. 1.2 -Vendor: INFN -URL: https://github.com/OpenCMT/uLib -Group: Development/Libraries -BuildArch: %{_arch} -%if %{?rhel}%{!?rhel:0} >= 8 -BuildRequires: cmake -%else -BuildRequires: cmake3 -%endif -BuildRequires: doxygen -BuildRequires: boost-devel -BuildRequires: eigen3-devel -BuildRequires: vtk-devel -BuildRequires: readline-devel -BuildRequires: pcl-devel -BuildRequires: root-geom -BuildRequires: root-genvector -BuildRequires: root-smatrix -BuildRequires: root-montecarlo-eg -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -AutoReqProv: yes -Source: %{name}-%{version}.tar.gz - -%description -This package contains the base toolkit library for Cosmic Muon Tomography reconstruction, -analysis and imaging software Developed by University of Padova and INFN Sezione di Padova Italy - -%global _ulibpkgname mutom -%global _ulibcmakedir %{_libdir}/cmake/%{_ulibpkgname} - -%prep -%setup -c -rm -rf %{buildroot} -mkdir -p %{buildroot} - -%build -mkdir %{_builddir}/%{name}-%{version}/build -cd %{_builddir}/%{name}-%{version}/build -%cmake -DCMAKE_INSTALL_PREFIX=%{buildroot}%{_prefix} \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DPACKAGE_NAME=%{_ulibpkgname} \ - -DPACKAGE_INSTALL_LIB_DIR=%{buildroot}%{_libdir} \ - -DPACKAGE_INSTALL_INC_DIR=%{buildroot}%{_includedir}/%{_ulibpkgname} \ - -DPACKAGE_INSTALL_CMAKE_DIR=%{buildroot}%{_ulibcmakedir} \ - -DNODOXYGEN=ON \ - %{_builddir}/%{name}-%{version} -make %{?_smp_mflags} - -%install -cd %{_builddir}/%{name}-%{version}/build -make install -sed -i 's|%{buildroot}/usr|%{_prefix}|g' %{buildroot}%{_ulibcmakedir}/uLibTargets.cmake -sed -i 's|%{buildroot}/usr|%{_prefix}|g' %{buildroot}%{_ulibcmakedir}/uLibTargets-relwithdebinfo.cmake - -%clean -rm -rf %{buildroot} - -%files -%defattr(-,root,root) -%{_libdir}/libmutom*.so.0.2 -%{_libdir}/uLibRootDict_rdict.pcm - -%package devel -Summary: Cosmic Muon Tomography core libraries, development files -Requires: %{name} -Requires: boost-devel -Requires: eigen3-devel -Requires: vtk-devel -Requires: readline-devel -Requires: pcl-devel -Requires: root-geom -Requires: root-genvector -Requires: root-smatrix -Requires: root-montecarlo-eg - - -%description devel -This package contains the base toolkit library for Cosmic Muon Tomography reconstruction, -analysis and imaging software Developed by University of Padova and INFN Sezione di Padova Italy - -%files devel -%defattr(-,root,root) -%dir %{_ulibcmakedir} -/usr/bin/uLib_config -%{_libdir}/libmutom*.so -%{_ulibcmakedir}/*.cmake -%dir %{_includedir}/%{_ulibpkgname} -%dir %{_includedir}/%{_ulibpkgname}/Core -%dir %{_includedir}/%{_ulibpkgname}/Math -%dir %{_includedir}/%{_ulibpkgname}/Root -%dir %{_includedir}/%{_ulibpkgname}/Detectors -%dir %{_includedir}/%{_ulibpkgname}/Vtk -%{_includedir}/%{_ulibpkgname}/*.h -%{_includedir}/%{_ulibpkgname}/Core/*.h -%{_includedir}/%{_ulibpkgname}/Math/*.h -%{_includedir}/%{_ulibpkgname}/Math/*.hpp -%{_includedir}/%{_ulibpkgname}/Root/*.h -%{_includedir}/%{_ulibpkgname}/Detectors/*.h -%{_includedir}/%{_ulibpkgname}/Vtk/*.h - - - - - - - - -%changelog -* Tue Dec 04 2018 Paolo Andreetto - 0.2.1-1 -- Repackaging for CentOS 7 - diff --git a/CMake/uLibFindDependencies.cmake b/CMake/uLibFindDependencies.cmake index 70ba7d1..ec14546 100644 --- a/CMake/uLibFindDependencies.cmake +++ b/CMake/uLibFindDependencies.cmake @@ -13,7 +13,7 @@ set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) -find_package(Boost 1.45.0 COMPONENTS serialization signals program_options REQUIRED) +find_package(Boost 1.45.0 COMPONENTS program_options REQUIRED) if(Boost_FOUND) set(HAVE_BOOST true) endif(Boost_FOUND) diff --git a/CMake/uLibGenerateRPMS.cmake b/CMake/uLibGenerateRPMS.cmake deleted file mode 100644 index f0a8363..0000000 --- a/CMake/uLibGenerateRPMS.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# Target for RPMs creation - -set(PKGREL 1 CACHE STRING "Package build number") -set(ITEMS_FOR_SOURCE AUTHORS - CMakeConfig.in.h - CMakePkgConfig.pc.in - test.cpp - uLibConfig.cmake.in - uLib.creator - ulib.h - vtk_test.cpp - CMake - CMakeLists.txt - Jenkinsfile - src - uLib.config - uLibConfigVersion.cmake.in - uLib.files - uLib.includes) - -add_custom_target(rpm - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/BUILD - ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/RPMS - ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SOURCES - ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS - ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SRPMS - COMMAND tar -zcf ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SOURCES/cmt-ulib-${PACKAGE_VERSION}.tar.gz ${ITEMS_FOR_SOURCE} - COMMAND sed -e 's|@PKGVERSION@|${PACKAGE_VERSION}|g' - -e 's|@PKGRELEASE@|${PKGREL}|g' - CMake/cmt-ulib.spec.in > ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS/cmt-ulib.spec - COMMAND QA_SKIP_BUILD_ROOT=1 rpmbuild -ba --define '_topdir ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild' - ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS/cmt-ulib.spec - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - diff --git a/CMakeLists.txt b/CMakeLists.txt index 27accf4..c4ac7eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ project(uLib) # The version number. set(PROJECT_VERSION_MAJOR 0) -set(PROJECT_VERSION_MINOR 2) +set(PROJECT_VERSION_MINOR 3) set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") set(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") @@ -26,130 +26,169 @@ set(PACKAGE_AUTHOR "Andrea Rigoni Garola ") set(ULIB_CMAKE_DIR "${PROJECT_SOURCE_DIR}/CMake") set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) -message(STATUS "Module path: ${CMAKE_MODULE_PATH}") - -include(uLibMacros) -include(uLibDebugMacro) -include(uLibTargetMacros) -#include(uLibGenerateRMake) - +message(STATUS "Project name = ${PROJECT_NAME}") +message(STATUS "Package name = ${PACKAGE_NAME}") +message(STATUS "Package version = ${PACKAGE_VERSION}") +message(STATUS "Module path = ${CMAKE_MODULE_PATH}") ## GLOBALS ------------------------------------------------------------------ ## -include(uLibCommon) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") ## Add flags here ## +set(PACKAGE_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin + CACHE PATH "Installation directory for executables") +set(PACKAGE_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/ + CACHE PATH "Installation directory for libraries") +set(PACKAGE_INSTALL_INC_DIR ${CMAKE_INSTALL_PREFIX}/include/${PACKAGE_NAME} + CACHE PATH "Installation directory for headers") +set(PACKAGE_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME} + CACHE PATH "Installation directory for data files") +set(PACKAGE_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/lib/cmake/${PACKAGE_NAME} + CACHE PATH "Installation directory for CMake files") -enable_testing() +set(SRC_DIR ${PROJECT_SOURCE_DIR}/src) + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to 'Release' as none was specified.") + set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE) + set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed") + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY + STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +set(CMAKE_CXX_WARNING_OPTION "" + CACHE STRING "Warning level -WAll to verbose all warnings") +set(CMAKE_VERBOSE_MAKEFILE FALSE + CACHE STRING "Verbose compile output switch") + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -UULIB_SERIALIZATION_ON") + +#enable_testing() ## FIND PACKAGES ------------------------------------------------------------ ## -include(uLibFindDependencies) +set(Boost_USE_STATIC_LIBS OFF) +set(Boost_USE_MULTITHREADED ON) +set(Boost_USE_STATIC_RUNTIME OFF) +find_package(Boost 1.45.0 COMPONENTS program_options REQUIRED) +include_directories(${Boost_INCLUDE_DIRS}) +find_package(Eigen3 CONFIG REQUIRED) +include(${EIGEN3_USE_FILE}) + +find_package(ROOT CONFIG REQUIRED) +include(${ROOT_USE_FILE}) + +find_package(VTK CONFIG REQUIRED) +include(${VTK_USE_FILE}) + +set(CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_INCLUDES math.h) +set(CMAKE_REQUIRED_LIBRARIES CMAKE_REQUIRED_LIBRARIES m) ## CONFIG ------------------------------------------------------------------- ## -include(uLibConfigHeader) +set(BOOST_PP_VARIADICS ON) + +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckSymbolExists) + +CHECK_INCLUDE_FILES(inittypes.h HAVE_INITTYPES_H) +CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H) +CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H) +CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H) +CHECK_INCLUDE_FILES(dlfcn.h HAVE_DLFCN_H) +CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H) +CHECK_FUNCTION_EXISTS(malloc HAVE_MALLOC) +CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H) +CHECK_INCLUDE_FILES(math.h HAVE_MATH_H) +CHECK_FUNCTION_EXISTS(fsetround HAVE_FSETROUND) +CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR) +CHECK_FUNCTION_EXISTS(pow HAVE_POW) +CHECK_FUNCTION_EXISTS(sqrt HAVE_SQRT) +CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP) +CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR) +CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H) +CHECK_INCLUDE_FILES(string.h HAVE_STRING_H) +CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H) +CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) +CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) +CHECK_INCLUDE_FILES(assert.h HAVE_ASSERT_H) + +configure_file("${PROJECT_SOURCE_DIR}/CMakeConfig.in.h" + "${PROJECT_BINARY_DIR}/config.h") + +install(FILES "${PROJECT_BINARY_DIR}/config.h" + DESTINATION ${PACKAGE_INSTALL_INC_DIR}) ## ADD LIBRARIES SUBDIRECTORIES --------------------------------------------- ## -## select modules ## -set(ULIB_SELECTED_MODULES - Core - Math - Detectors - Root -) +include_directories(${PROJECT_BINARY_DIR}) +include_directories(${SRC_DIR}) ## uLib_add_shared_library puts names there set(ULIB_SHARED_LIBRARIES) +## select modules ## +set(ULIB_SELECTED_MODULES) -if(ULIB_USE_VTK) - LIST(APPEND ULIB_SELECTED_MODULES Vtk) -endif(ULIB_USE_VTK) +include_directories(${SRC_DIR}/Core) +add_subdirectory(${SRC_DIR}/Core) + +include_directories(${SRC_DIR}/Math) +add_subdirectory(${SRC_DIR}/Math) + +include_directories(${SRC_DIR}/Detectors) +add_subdirectory(${SRC_DIR}/Detectors) + +include_directories(${SRC_DIR}/Root) +add_subdirectory(${SRC_DIR}/Root) + +include_directories(${SRC_DIR}/Vtk) +add_subdirectory(${SRC_DIR}/Vtk) + +#add_subdirectory("${SRC_DIR}/utils/make_recipe") ## Documentation and packages -include(uLibGenerateRPMS) -include(uLibGenerateDoc) - -## this gets ulib modules into a variable ## -function(uLib_modules result) - set(out) - foreach(module ${ULIB_SELECTED_MODULES}) - list(APPEND out ${PACKAGE_LIBPREFIX}${module}) - endforeach(module) - set(${result} "${out}" PARENT_SCOPE) -endfunction() - - -## ENTERING MODULES SUBDIRECTORIES ## -message("/////////// SELECTED MODULES //////////////") -foreach(module ${ULIB_SELECTED_MODULES}) - message(STATUS "adding module: ${module}") - set( uLib-module ${module}) - include_directories(${SRC_DIR}/${module}) - add_subdirectory(${SRC_DIR}/${module}) -endforeach(module) +#include(uLibGenerateDoc) ## UTILITIES ## -add_subdirectory("${SRC_DIR}/utils/make_recipe") +#add_subdirectory("${SRC_DIR}/utils/make_recipe") ## INSTALLS AND EXPORTS ----------------------------------------------------- ## -#export(PACKAGE uLib) -export(PACKAGE ULIB) -export(TARGETS ${ULIB_SHARED_LIBRARIES} ${ULIB_EXPORTED_TARGETS} - FILE "${PROJECT_BINARY_DIR}/uLibTargets.cmake" ) -#export(TARGETS ${ULIB_EXPORTED_TARGETS} -# FILE "${PROJECT_BINARY_DIR}/uLibExeTargets.cmake" ) +#export(PACKAGE ULIB) +#export(TARGETS ${ULIB_SHARED_LIBRARIES} ${ULIB_EXPORTED_TARGETS} +# FILE "${PROJECT_BINARY_DIR}/uLibTargets.cmake" ) # Create the FooBarConfig.cmake and FooBarConfigVersion files file(RELATIVE_PATH REL_INCLUDE_DIR "${PACKAGE_INSTALL_CMAKE_DIR}" "${PACKAGE_INSTALL_INC_DIR}") + # ... for the build tree -set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}") -configure_file(uLibConfig.cmake.in - "${PROJECT_BINARY_DIR}/uLibConfig.cmake" @ONLY) +#set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}") +#configure_file(uLibConfig.cmake.in +# "${PROJECT_BINARY_DIR}/uLibConfig.cmake" @ONLY) + # ... for the install tree set(CONF_INCLUDE_DIRS "\${ULIB_CMAKE_DIR}/${REL_INCLUDE_DIR}") configure_file(uLibConfig.cmake.in - "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake" @ONLY) + "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake" + @ONLY) + # ... for both configure_file(uLibConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" @ONLY) install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake" "${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" - "${PROJECT_SOURCE_DIR}/CMake/FindReadLine.cmake" - "${PROJECT_SOURCE_DIR}/CMake/FindROOT.cmake" - "${PROJECT_SOURCE_DIR}/CMake/FindROOTv6.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibCommon.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibConfigHeader.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibDebugMacro.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibFindDependencies.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibGenerateDoc.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibGenerateRMake.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibGenerateRPMS.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibMacros.cmake" - "${PROJECT_SOURCE_DIR}/CMake/uLibTargetMacros.cmake" DESTINATION "${PACKAGE_INSTALL_CMAKE_DIR}" COMPONENT dev) # Install the export set for use with the install-tree -install(EXPORT "${PROJECT_NAME}Targets" DESTINATION - "${PACKAGE_INSTALL_CMAKE_DIR}" COMPONENT dev) - -install(FILES ${PROJECT_SOURCE_DIR}/ulib.h DESTINATION ${PACKAGE_INSTALL_INC_DIR}) - - -# TODO clean also subdirectories -add_custom_target(clean-cmake-files - COMMAND ${CMAKE_COMMAND} -P ${ULIB_CMAKE_DIR}/clean-all.cmake -) - - - - +install(EXPORT "${PROJECT_NAME}Targets" + DESTINATION "${PACKAGE_INSTALL_CMAKE_DIR}" + COMPONENT dev) diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index fc62532..bbe84ab 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -1,41 +1,27 @@ -set(HEADERS - Archives.h - Array.h - Debug.h - Export.h - Function.h - Macros.h - Mpl.h - Object.h - ObjectProps.h - Options.h - Serializable.h - Signal.h - Singleton.h - SmartPointer.h - StaticInterface.h - StringReader.h - Types.h - Uuid.h - Timer.h -) +set(HEADERS Options.h + StaticInterface.h) + +set(SOURCES Options.cpp) + +set(LIBRARIES ${Boost_PROGRAM_OPTIONS_LIBRARY}) + +set(libname ${PACKAGE_LIBPREFIX}Core) +set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE) +set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Core PARENT_SCOPE) + +add_library(${libname} SHARED ${SOURCES}) +set_target_properties(${libname} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_SOVERSION}) +target_link_libraries(${libname} ${LIBRARIES}) + +install(TARGETS ${libname} + EXPORT "${PROJECT_NAME}Targets" + RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin + LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib) + +install(FILES ${HEADERS} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Core) -SET(SOURCES - Archives.cpp - Object.cpp - Options.cpp - Serializable.cpp - Signal.cpp - Uuid.cpp -) -set(LIBRARIES - ${Boost_SERIALIZATION_LIBRARY} - ${Boost_SIGNALS_LIBRARY} - ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${ROOT_LIBRARIES} -) -uLib_add_shared_library(${uLib-module}) -add_subdirectory(testing) diff --git a/src/Detectors/CMakeLists.txt b/src/Detectors/CMakeLists.txt index f7ca12e..016c18f 100644 --- a/src/Detectors/CMakeLists.txt +++ b/src/Detectors/CMakeLists.txt @@ -1,37 +1,6 @@ -#set(HEADERS -# DetectorChamber.h -# ExperimentFitEvent.h -# GeantEvent.h -# HitMC.h -# MuonScatter.h -# MuonEvent.h -# MuonError.h -# ChamberHitEvent.h -# Hit.h -# LinearFit.h -# Solid.h -# Matter.h -# Scene.h -#) - - -#set(SOURCES -# Solid.cpp -# Scene.cpp -#) - -#set(LIBRARIES -# ${Boost_SERIALIZATION_LIBRARY} -# ${Boost_SIGNALS_LIBRARY} -# ${Boost_PROGRAM_OPTIONS_LIBRARY} -# ${Eigen_LIBRARY} -# ${Geant4_LIBRARIES} -# ${ROOT_LIBRARIES} -# ${PACKAGE_LIBPREFIX}Core -# ${PACKAGE_LIBPREFIX}Math -#) - set(HEADERS MuonScatter.h MuonError.h MuonEvent.h) -uLib_add_shared_library(${uLib-module}) -add_subdirectory(testing) +set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Detectors PARENT_SCOPE) + +install(FILES ${HEADERS} + DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Detectors) diff --git a/src/Math/CMakeLists.txt b/src/Math/CMakeLists.txt index fb0c5a4..de44c98 100644 --- a/src/Math/CMakeLists.txt +++ b/src/Math/CMakeLists.txt @@ -1,53 +1,53 @@ +set(HEADERS ContainerBox.h + Dense.h + Geometry.h + Transform.h + StructuredData.h + StructuredGrid.h + VoxImage.h + VoxRaytracer.h + Utils.h + VoxImageFilter.h + VoxImageFilter.hpp + VoxImageFilterLinear.hpp + VoxImageFilterMedian.hpp + VoxImageFilterABTrim.hpp + VoxImageFilterBilateral.hpp + VoxImageFilterThreshold.hpp + VoxImageFilter2ndStat.hpp + VoxImageFilterCustom.hpp + Accumulator.h + TriangleMesh.h + BitCode.h + Structured2DGrid.h + Structured4DGrid.h) -# HEADERS -set(HEADERS - ContainerBox.h - Dense.h - Geometry.h - Transform.h - StructuredData.h - StructuredGrid.h - VoxImage.h - VoxRaytracer.h - Utils.h - VoxImageFilter.h - VoxImageFilter.hpp - VoxImageFilterLinear.hpp - VoxImageFilterMedian.hpp - VoxImageFilterABTrim.hpp - VoxImageFilterBilateral.hpp - VoxImageFilterThreshold.hpp - VoxImageFilter2ndStat.hpp - VoxImageFilterCustom.hpp - Accumulator.h - TriangleMesh.h - BitCode.h - Structured2DGrid.h - Structured4DGrid.h -) +set(SOURCES VoxRaytracer.cpp + StructuredData.cpp + StructuredGrid.cpp + VoxImage.cpp + TriangleMesh.cpp + Dense.cpp + Structured2DGrid.cpp + Structured4DGrid.cpp) +set(LIBRARIES ${Eigen_LIBRARY} + ${ROOT_LIBRARIES}) -# SOURCES -set(SOURCES - VoxRaytracer.cpp - StructuredData.cpp - StructuredGrid.cpp - VoxImage.cpp - TriangleMesh.cpp - Dense.cpp - Structured2DGrid.cpp - Structured4DGrid.cpp -) +set(libname ${PACKAGE_LIBPREFIX}Math) +set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE) +set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Math PARENT_SCOPE) -set(LIBRARIES - ${Boost_SERIALIZATION_LIBRARY} - ${Boost_SIGNALS_LIBRARY} - ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${Eigen_LIBRARY} - ${ROOT_LIBRARIES} - ${PACKAGE_LIBPREFIX}Core -) +add_library(${libname} SHARED ${SOURCES}) +set_target_properties(${libname} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_SOVERSION}) +target_link_libraries(${libname} ${LIBRARIES}) +install(TARGETS ${libname} + EXPORT "${PROJECT_NAME}Targets" + RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin + LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib) + +install(FILES ${HEADERS} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Math) -uLib_add_shared_library(${uLib-module}) -add_subdirectory(testing) diff --git a/src/Math/VoxImageFilterCustom.hpp b/src/Math/VoxImageFilterCustom.hpp index ad9f402..3080f1a 100644 --- a/src/Math/VoxImageFilterCustom.hpp +++ b/src/Math/VoxImageFilterCustom.hpp @@ -28,11 +28,12 @@ #ifndef VOXIMAGEFILTERCUSTOM_HPP #define VOXIMAGEFILTERCUSTOM_HPP -#include "Core/Macros.h" #include #include "Math/VoxImage.h" #include "VoxImageFilter.h" +#define likely(expr) __builtin_expect(!!(expr), 1) + //////////////////////////////////////////////////////////////////////////////// ///// VOXIMAGE FILTER CUSTOM ///////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// diff --git a/src/Math/VoxRaytracer.cpp b/src/Math/VoxRaytracer.cpp index 76ee855..ae87c13 100644 --- a/src/Math/VoxRaytracer.cpp +++ b/src/Math/VoxRaytracer.cpp @@ -24,12 +24,12 @@ //////////////////////////////////////////////////////////////////////////////*/ - +#include #include "VoxRaytracer.h" #include "Utils.h" -#include "Core/Macros.h" +#define unlikely(expr) __builtin_expect(!!(expr), 0) inline float fast_sign(float f) { return 1 - 2 * (f < 0); } diff --git a/src/Root/CMakeLists.txt b/src/Root/CMakeLists.txt index 32aa3c0..76fdab6 100644 --- a/src/Root/CMakeLists.txt +++ b/src/Root/CMakeLists.txt @@ -1,55 +1,64 @@ -set(HEADERS - TestTObject.h - RootMathDense.h - RootMuonScatter.h - RootHitRaw.h - muBlastHit.h - muBlastMCTrack.h - muCastorMCTrack.h - muCastorHit.h - muCastorInfo.h -) +set(HEADERS TestTObject.h + RootMathDense.h + RootMuonScatter.h + RootHitRaw.h + muBlastHit.h + muBlastMCTrack.h + muCastorMCTrack.h + muCastorHit.h + muCastorInfo.h) -set(DICTIONARY_HEADERS - TestTObject.h - RootMathDense.h - RootMuonScatter.h - RootHitRaw.h - muBlastHit.h - muBlastMCTrack.h - muCastorMCTrack.h - muCastorHit.h - muCastorInfo.h -) +set(DICTIONARY_HEADERS TestTObject.h + RootMathDense.h + RootMuonScatter.h + RootHitRaw.h + muBlastHit.h + muBlastMCTrack.h + muCastorMCTrack.h + muCastorHit.h + muCastorInfo.h) -SET(SOURCES - TestTObject.cpp - RootMuonScatter.cpp - muBlastHit.cpp - muBlastMCTrack.cpp - muCastorMCTrack.cpp - muCastorHit.cpp - muCastorInfo.cpp -) +set(SOURCES TestTObject.cpp + RootMuonScatter.cpp + muBlastHit.cpp + muBlastMCTrack.cpp + muCastorMCTrack.cpp + muCastorHit.cpp + muCastorInfo.cpp) -set(LIBRARIES -# ${Boost_SERIALIZATION_LIBRARY} -# ${Boost_SIGNALS_LIBRARY} -# ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${ROOT_LIBRARIES} - ${PACKAGE_LIBPREFIX}Core - ${PACKAGE_LIBPREFIX}Math -) +set(LIBRARIES ${ROOT_LIBRARIES} + ${PACKAGE_LIBPREFIX}Math) -include(FindROOTv6) -root_generate_dictionary(uLibRootDict ${DICTIONARY_HEADERS} LINKDEF Linkdef.h) -set_source_files_properties(uLibRootDict.cxx PROPERTIES GENERATED TRUE) -set_source_files_properties(uLibRootDict.h PROPERTIES GENERATED TRUE) -list(APPEND SOURCES uLibRootDict.cxx) +set(rDictName ${PACKAGE_LIBPREFIX}RootDict) +root_generate_dictionary(${rDictName} ${DICTIONARY_HEADERS} + LINKDEF Linkdef.h) +set_source_files_properties(${rDictName}.cxx + PROPERTIES GENERATED TRUE) +set_source_files_properties(${rDictName}.h + PROPERTIES GENERATED TRUE) +list(APPEND SOURCES ${rDictName}.cxx) # TODO use a custom target linked to root_generate_dictionary -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/uLibRootDict_rdict.pcm +set(R_ARTIFACTS ${CMAKE_CURRENT_BINARY_DIR}/lib${rDictName}_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/lib${rDictName}.rootmap) +install(FILES ${R_ARTIFACTS} DESTINATION ${PACKAGE_INSTALL_LIB_DIR}) -uLib_add_shared_library(${uLib-module}) -add_subdirectory(testing) +set(libname ${PACKAGE_LIBPREFIX}Root) +set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE) +set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Root PARENT_SCOPE) + +add_library(${libname} SHARED ${SOURCES}) +set_target_properties(${libname} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_SOVERSION}) +target_link_libraries(${libname} ${LIBRARIES}) + +install(TARGETS ${libname} + EXPORT "${PROJECT_NAME}Targets" + RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin + LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib) + +install(FILES ${HEADERS} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Root) + + diff --git a/src/Root/muBlastMCTrack.h b/src/Root/muBlastMCTrack.h index e0caab1..f389bb1 100644 --- a/src/Root/muBlastMCTrack.h +++ b/src/Root/muBlastMCTrack.h @@ -9,6 +9,7 @@ // Martin Subieta martin.subieta@ing.unibs.it //######################################## +#include #include #include "TObject.h" #include "TParticle.h" diff --git a/src/Root/muCastorMCTrack.h b/src/Root/muCastorMCTrack.h index f06526c..ff422d9 100644 --- a/src/Root/muCastorMCTrack.h +++ b/src/Root/muCastorMCTrack.h @@ -9,6 +9,7 @@ // Martin Subieta martin.subieta@ing.unibs.it //######################################## +#include #include "vector" #include "TObject.h" #include "TParticle.h" diff --git a/src/Vtk/CMakeLists.txt b/src/Vtk/CMakeLists.txt index 8a2170f..ab85943 100644 --- a/src/Vtk/CMakeLists.txt +++ b/src/Vtk/CMakeLists.txt @@ -1,37 +1,38 @@ -set(HEADERS - uLibVtkInterface.h - uLibVtkViewer.h - vtkContainerBox.h - vtkMuonScatter.h - vtkStructuredGrid.h - vtkVoxRaytracerRepresentation.h - vtkVoxImage.h -# vtkHLineRepresentation.h -# vtkTriangleMesh.h -) +set(HEADERS uLibVtkInterface.h + uLibVtkViewer.h + vtkContainerBox.h + vtkMuonScatter.h + vtkStructuredGrid.h + vtkVoxRaytracerRepresentation.h + vtkVoxImage.h) -SET(SOURCES - uLibVtkInterface.cxx - uLibVtkViewer.cpp - vtkContainerBox.cpp - vtkMuonScatter.cxx - vtkStructuredGrid.cpp - vtkVoxRaytracerRepresentation.cpp - vtkVoxImage.cpp -) +set(SOURCES uLibVtkInterface.cxx + uLibVtkViewer.cpp + vtkContainerBox.cpp + vtkMuonScatter.cxx + vtkStructuredGrid.cpp + vtkVoxRaytracerRepresentation.cpp + vtkVoxImage.cpp) -set(LIBRARIES - ${Boost_SERIALIZATION_LIBRARY} - ${Boost_SIGNALS_LIBRARY} - ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${Eigen_LIBRARY} - ${ROOT_LIBRARIES} - ${Geant4_LIBRARIES} - ${VTK_LIBRARIES} - ${PACKAGE_LIBPREFIX}Core - ${PACKAGE_LIBPREFIX}Math -) +set(LIBRARIES ${Eigen_LIBRARY} + ${ROOT_LIBRARIES} + ${VTK_LIBRARIES} + ${PACKAGE_LIBPREFIX}Math) -uLib_add_shared_library(${uLib-module}) +set(libname ${PACKAGE_LIBPREFIX}Vtk) +set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE) +set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Vtk PARENT_SCOPE) + +add_library(${libname} SHARED ${SOURCES}) +set_target_properties(${libname} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_SOVERSION}) +target_link_libraries(${libname} ${LIBRARIES}) + +install(TARGETS ${libname} + EXPORT "${PROJECT_NAME}Targets" + RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin + LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib) + +install(FILES ${HEADERS} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Vtk) -add_subdirectory(testing) diff --git a/uLibConfig.cmake.in b/uLibConfig.cmake.in index 148fc17..1705d0b 100644 --- a/uLibConfig.cmake.in +++ b/uLibConfig.cmake.in @@ -9,11 +9,7 @@ get_filename_component(ULIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) set(ULIB_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") # Our library dependencies (contains definitions for IMPORTED targets) -# if(NOT TARGET foo AND NOT FooBar_BINARY_DIR) - include("${ULIB_CMAKE_DIR}/uLibTargets.cmake") -# endif() +include("${ULIB_CMAKE_DIR}/uLibTargets.cmake") # These are IMPORTED targets created by FooBarTargets.cmake -# set(FOOBAR_LIBRARIES foo) -# set(FOOBAR_EXECUTABLE bar) set(ULIB_LIBRARIES @ULIB_SHARED_LIBRARIES@)