diff --git a/CMakeLists.txt b/CMakeLists.txt index c1a36b9..ef9a793 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,93 +1,100 @@ # Top level CMakeLists.txt for EvtGen # Enforce an out-of-source build. # Should be the first action in the top level CMakeLists.txt if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(STATUS "EvtGen requires an out-of-source build.") message(STATUS "Please remove the following files from ${CMAKE_BINARY_DIR}:") message(STATUS " CMakeCache.txt") message(STATUS " CMakeFiles") message(STATUS "Once these files are removed, create a separate directory") message(STATUS "and run CMake from there, pointing it to:") message(STATUS " ${CMAKE_SOURCE_DIR}") message(FATAL_ERROR "in-source build detected") endif() # Also require a minimum version of CMake cmake_minimum_required(VERSION 3.8.0) # Project setup if(${CMAKE_VERSION} VERSION_LESS 3.9.0) project(EvtGen VERSION 2.0.0 ) elseif(${CMAKE_VERSION} VERSION_LESS 3.12.0) project(EvtGen VERSION 2.0.0 DESCRIPTION "Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons." ) else() project(EvtGen VERSION 2.0.0 DESCRIPTION "Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons." HOMEPAGE_URL "https://evtgen.hepforge.org" ) endif() # Prepend this project's custom module path(s) to CMAKE_MODULE_PATH set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules ${CMAKE_MODULE_PATH}) # Include needed modules to perform any custom setup # Install paths -include(InstallPaths) +include(GNUInstallDirs) # Compilation/linking flags and related settings include(CompilerFlags) # EvtGen external dependencies option(EVTGEN_PYTHIA "Enable/disable linking with Pythia8" OFF) option(EVTGEN_PHOTOS "Enable/disable linking with Photos++" OFF) option(EVTGEN_TAUOLA "Enable/disable linking with Tauola++" OFF) -message(STATUS "EvtGen: Linking with Pythia8 ${EVTGEN_PYTHIA}") -message(STATUS "EvtGen: Linking with Photos++ ${EVTGEN_PHOTOS}") -message(STATUS "EvtGen: Linking with Tauola++ ${EVTGEN_TAUOLA}") +message(STATUS "EvtGen: Linking with HepMC2") +message(STATUS "EvtGen: Optional linking with Pythia8 ${EVTGEN_PYTHIA}") +message(STATUS "EvtGen: Optional linking with Photos++ ${EVTGEN_PHOTOS}") +message(STATUS "EvtGen: Optional linking with Tauola++ ${EVTGEN_TAUOLA}") include(ExternalDependencies) # Now build the library add_subdirectory(src) # Copy the particle property and decay tables configure_file(DECAY.DEC ${CMAKE_CURRENT_BINARY_DIR}/DECAY.DEC COPYONLY) configure_file(DECAY.XML ${CMAKE_CURRENT_BINARY_DIR}/DECAY.XML COPYONLY) configure_file(evt.pdl ${CMAKE_CURRENT_BINARY_DIR}/evt.pdl COPYONLY) # Build the executables in the test and validation directories add_subdirectory(test) add_subdirectory(validation) # Install the include directories -install(DIRECTORY EvtGen DESTINATION ${CMAKE_INSTALL_PREFIX}) -install(DIRECTORY EvtGenBase DESTINATION ${CMAKE_INSTALL_PREFIX}) -install(DIRECTORY EvtGenExternal DESTINATION ${CMAKE_INSTALL_PREFIX}) -install(DIRECTORY EvtGenModels DESTINATION ${CMAKE_INSTALL_PREFIX}) +install(DIRECTORY EvtGen DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(DIRECTORY EvtGenBase DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(DIRECTORY EvtGenExternal DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(DIRECTORY EvtGenModels DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) # Install the particle properties and decay tables install(FILES DECAY.DEC DECAY.XML evt.pdl DESTINATION ${CMAKE_INSTALL_PREFIX}) # Generate CMake config files, which can be used by other projects include(CMakePackageConfigHelpers) -set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) -set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) +set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) +set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) configure_package_config_file(cmake/Templates/EvtGenConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfig.cmake INSTALL_DESTINATION cmake PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR ) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfigVersion.cmake COMPATIBILITY AnyNewerVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake ) + +install( + EXPORT "EvtGenTargets" + NAMESPACE "EvtGen::" + DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake + ) diff --git a/cmake/Modules/CompilerFlags.cmake b/cmake/Modules/CompilerFlags.cmake index e3fa0ad..d0eb386 100644 --- a/cmake/Modules/CompilerFlags.cmake +++ b/cmake/Modules/CompilerFlags.cmake @@ -1,52 +1,55 @@ # Set the build type (if not already specified) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "EvtGen: Setting build type to 'Release' as none was specified") set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Release, MinSizeRel, Debug, RelWithDebInfo" FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") elseif(CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "EvtGen: Build type '${CMAKE_BUILD_TYPE}'") endif() # Set the warning/optimise/debug flags for each build type if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" ) message(STATUS "EvtGen: Customising warning/optimise/debug flags for each build type") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wshadow -Woverloaded-virtual") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsigned-char -Wall -Wextra -Wshadow -Woverloaded-virtual") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsigned-char -Wall -Wextra") if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" ) set(CMAKE_CXX_FLAGS_DEBUG "-Og -g3") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3") elseif( ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" ) set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") endif() else() message(STATUS "EvtGen: No customisation of warning/optimise/debug flags implemented for compiler: ${CMAKE_CXX_COMPILER_ID}") endif() +# Make sure our project's include directories always come first +set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) + # Control verbosity of the build set(CMAKE_VERBOSE_MAKEFILE OFF) # C++ standard settings set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Special linker flags for MacOSX if (APPLE) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -single_module -undefined dynamic_lookup") endif() # RPATH handling set(CMAKE_MACOSX_RPATH TRUE) set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) diff --git a/cmake/Modules/ExternalDependencies.cmake b/cmake/Modules/ExternalDependencies.cmake index 9f28593..78b3990 100644 --- a/cmake/Modules/ExternalDependencies.cmake +++ b/cmake/Modules/ExternalDependencies.cmake @@ -1,16 +1,20 @@ set(HEPMC2_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/HepMC" CACHE STRING "Location of HepMC 2 installation") -set(PYTHIA8_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/pythia$ENV{PYTHIAVER}" CACHE STRING "Location of Pythia8 installation") +if(DEFINED ENV{PYTHIAVER}) + set(PYTHIA8_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/pythia$ENV{PYTHIAVER}" CACHE STRING "Location of Pythia8 installation") +else() + set(PYTHIA8_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/pythia8230" CACHE STRING "Location of Pythia8 installation") +endif() set(PHOTOSPP_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/PHOTOS" CACHE STRING "Location of Photos++ installation") set(TAUOLAPP_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/TAUOLA" CACHE STRING "Location of Tauola++ installation") find_package(HepMC2 REQUIRED) if(${EVTGEN_PYTHIA}) find_package(Pythia8 REQUIRED) endif() if(${EVTGEN_PHOTOS}) find_package(Photos++ REQUIRED) endif() if(${EVTGEN_TAUOLA}) find_package(Tauola++ REQUIRED) endif() diff --git a/cmake/Modules/InstallPaths.cmake b/cmake/Modules/InstallPaths.cmake index 73a328a..de59a98 100644 --- a/cmake/Modules/InstallPaths.cmake +++ b/cmake/Modules/InstallPaths.cmake @@ -1,8 +1,8 @@ # Always a CMAKE_INSTALL_PREFIX based installation, # except on frameworks where we use the system default set(CMAKE_INSTALL_BINDIR bin) set(CMAKE_INSTALL_LIBDIR lib) -#set(CMAKE_INSTALL_INCLUDEDIR include) +set(CMAKE_INSTALL_INCLUDEDIR include) #set(CMAKE_INSTALL_FRAMEWORKDIR /Library/Frameworks) diff --git a/cmake/Templates/EvtGenConfig.cmake.in b/cmake/Templates/EvtGenConfig.cmake.in index ac7875b..623935b 100644 --- a/cmake/Templates/EvtGenConfig.cmake.in +++ b/cmake/Templates/EvtGenConfig.cmake.in @@ -1,6 +1,8 @@ @PACKAGE_INIT@ +include("${CMAKE_CURRENT_LIST_DIR}/EvtGenTargets.cmake") + set_and_check(EVTGEN_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") set_and_check(EVTGEN_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") -check_required_components(EvtGen) +check_required_components("@PROJECT_NAME@") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3bf6387..d61cb75 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,100 +1,104 @@ # Use glob to find the sources for the main and external libraries file(GLOB EVTGEN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenBase/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenModels/*.cpp ) file(GLOB EVTGEN_EXTERNAL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenExternal/*.cpp ) # Add the main EvtGen library... add_library(objlib OBJECT ${EVTGEN_SOURCES}) set_target_properties(objlib PROPERTIES POSITION_INDEPENDENT_CODE 1) target_include_directories(objlib PRIVATE ${CMAKE_SOURCE_DIR}) target_include_directories(objlib PRIVATE ${HEPMC2_INCLUDE_DIR}) target_compile_definitions(objlib PRIVATE EVTGEN_CPP11) add_library(EvtGen SHARED $) set_target_properties(EvtGen PROPERTIES OUTPUT_NAME EvtGen) set_target_properties(EvtGen PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) set_target_properties(EvtGen PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) -target_include_directories(EvtGen PUBLIC ${CMAKE_SOURCE_DIR}) +target_include_directories(EvtGen PUBLIC $ $) target_include_directories(EvtGen PUBLIC ${HEPMC2_INCLUDE_DIR}) target_compile_definitions(EvtGen PUBLIC EVTGEN_CPP11) target_link_libraries(EvtGen ${HEPMC2_LIBRARIES}) add_library(EvtGenStatic STATIC $) set_target_properties(EvtGenStatic PROPERTIES OUTPUT_NAME EvtGen) set_target_properties(EvtGenStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/archive) -target_include_directories(EvtGenStatic PUBLIC ${CMAKE_SOURCE_DIR}) +target_include_directories(EvtGenStatic PUBLIC $ $) target_include_directories(EvtGenStatic PUBLIC ${HEPMC2_INCLUDE_DIR}) target_compile_definitions(EvtGenStatic PUBLIC EVTGEN_CPP11) target_link_libraries(EvtGenStatic ${HEPMC2_LIBRARIES}) # Add the EvtGenExternal library... if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) add_library(objlib_ext OBJECT ${EVTGEN_EXTERNAL_SOURCES}) set_target_properties(objlib_ext PROPERTIES POSITION_INDEPENDENT_CODE 1) target_include_directories(objlib_ext PRIVATE ${CMAKE_SOURCE_DIR}) target_include_directories(objlib_ext PRIVATE ${HEPMC2_INCLUDE_DIR}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_CPP11) if(${EVTGEN_PYTHIA}) target_include_directories(objlib_ext PRIVATE ${PYTHIA8_INCLUDE_DIR}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_PYTHIA) endif() if(${EVTGEN_PHOTOS}) target_include_directories(objlib_ext PRIVATE ${PHOTOS++_INCLUDE_DIR}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_PHOTOS) endif() if(${EVTGEN_TAUOLA}) target_include_directories(objlib_ext PRIVATE ${TAUOLA++_INCLUDE_DIR}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_TAUOLA) endif() add_library(EvtGenExternal SHARED $) set_target_properties(EvtGenExternal PROPERTIES OUTPUT_NAME EvtGenExternal) set_target_properties(EvtGenExternal PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) set_target_properties(EvtGenExternal PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) target_link_libraries(EvtGenExternal ${HEPMC2_LIBRARIES}) if(${EVTGEN_PYTHIA}) target_link_libraries(EvtGenExternal ${PYTHIA8_LIBRARIES}) endif() if(${EVTGEN_PHOTOS}) target_link_libraries(EvtGenExternal ${PHOTOS++_LIBRARIES}) endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternal ${TAUOLA++_LIBRARIES}) endif() add_library(EvtGenExternalStatic STATIC $) set_target_properties(EvtGenExternalStatic PROPERTIES OUTPUT_NAME EvtGenExternal) set_target_properties(EvtGenExternalStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/archive) target_link_libraries(EvtGenExternalStatic ${HEPMC2_LIBRARIES}) if(${EVTGEN_PYTHIA}) target_link_libraries(EvtGenExternalStatic ${PYTHIA8_LIBRARIES}) endif() if(${EVTGEN_PHOTOS}) target_link_libraries(EvtGenExternalStatic ${PHOTOS++_LIBRARIES}) endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternalStatic ${TAUOLA++_LIBRARIES}) endif() endif() # Install the libraries -install(TARGETS EvtGen EvtGenStatic +install( + TARGETS EvtGen EvtGenStatic + EXPORT "EvtGenTargets" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/archive ) if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) - install(TARGETS EvtGenExternal EvtGenExternalStatic + install( + TARGETS EvtGenExternal EvtGenExternalStatic + EXPORT "EvtGenTargets" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/archive ) endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e149173..6f1d3e7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,25 +1,29 @@ # the test executables require ROOT for histogramming etc. find_package(ROOT REQUIRED) -include(${ROOT_USE_FILE}) + +add_library(root_interface INTERFACE IMPORTED) +target_include_directories(root_interface INTERFACE ${ROOT_INCLUDE_DIRS}) +target_link_libraries(root_interface INTERFACE ${ROOT_LIBRARIES}) # build each of the executables foreach( test_exe evt_dalitz evtgenlhc_test1 example1 exampleWriteHepMC ) add_executable(${test_exe} ${test_exe}.cc) - target_link_libraries(${test_exe} PRIVATE EvtGen ${ROOT_LIBRARIES}) + target_link_libraries(${test_exe} PRIVATE EvtGen) if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) target_compile_definitions(${test_exe} PRIVATE EVTGEN_EXTERNAL) target_link_libraries(${test_exe} PRIVATE EvtGenExternal) endif() + target_link_libraries(${test_exe} PRIVATE root_interface) endforeach() # install the executables install(TARGETS evt_dalitz evtgenlhc_test1 example1 exampleWriteHepMC RUNTIME DESTINATION test ) # install the decay files, macros, scripts, etc. install(DIRECTORY exampleFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/test) install(FILES do_tests DESTINATION ${CMAKE_INSTALL_PREFIX}/test PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/validation/CMakeLists.txt b/validation/CMakeLists.txt index 750267d..d5855d0 100644 --- a/validation/CMakeLists.txt +++ b/validation/CMakeLists.txt @@ -1,55 +1,59 @@ # the validation executables require ROOT for histogramming etc. find_package(ROOT REQUIRED) -include(${ROOT_USE_FILE}) + +add_library(root_interface INTERFACE IMPORTED) +target_include_directories(root_interface INTERFACE ${ROOT_INCLUDE_DIRS}) +target_link_libraries(root_interface INTERFACE ${ROOT_LIBRARIES}) # build each of the executables foreach( validation_exe compareRootFiles genExampleRootFiles genRootDecayChain testCPVDecays ) add_executable(${validation_exe} ${validation_exe}.cc) - target_link_libraries(${validation_exe} PRIVATE EvtGen ${ROOT_LIBRARIES}) + target_link_libraries(${validation_exe} PRIVATE EvtGen) if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) target_compile_definitions(${validation_exe} PRIVATE EVTGEN_EXTERNAL) target_link_libraries(${validation_exe} PRIVATE EvtGenExternal) endif() + target_link_libraries(${validation_exe} PRIVATE root_interface) endforeach() # install the executables install(TARGETS compareRootFiles genExampleRootFiles genRootDecayChain testCPVDecays RUNTIME DESTINATION validation ) # install the decay files, macros, scripts, etc. install(DIRECTORY B0Files DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY CPVDecayFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY UpsilonFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY TauolaFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY Bs0Files DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY tauFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY rootFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY PHSPFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY BpFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY gifFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(DIRECTORY DalitzFiles DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(FILES BKstarGamma.dec BuDst0rhop.dec Kspimumu.dec photosTest.dec DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(FILES compareDalitz.C PhaseSpacePlots.C photosPlots.C plotBKstarGamma.C PlotKspimumu.C DESTINATION ${CMAKE_INSTALL_PREFIX}/validation) install(FILES compareAllDecays.sh compareB0PythiaDecays.sh compareBpPythiaDecays.sh compareBs0PythiaDecays.sh compareTauolaDecays.sh compareTauPythiaDecays.sh compareUpsilonPythiaDecays.sh genAllDecayExamples.sh genB0PythiaDecays.sh genBpPythiaDecays.sh genBs0PythiaDecays.sh genDalitzDecays.sh genDDalitzModes.sh genPHSP.sh genTauolaDecays.sh genTauPythiaDecays.sh genUpsilonPythiaDecays.sh runKspimumu.sh runPhotosTest.sh DESTINATION ${CMAKE_INSTALL_PREFIX}/validation PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)