diff -Naur ORIG/CMakeLists.txt PATCHED/CMakeLists.txt
--- ORIG/CMakeLists.txt	2026-04-07 20:27:15.057007573 +0000
+++ PATCHED/CMakeLists.txt	2026-04-07 20:27:15.057204473 +0000
@@ -129,6 +129,10 @@
     find_package(Rivet COMPONENTS HEPMC2 )
   endif()
   message(STATUS "RAPGAP: RIVET_FOUND=${RIVET_FOUND} RIVET_VERSION=${RIVET_VERSION} RIVET_LIBRARIES=${RIVET_LIBRARIES} RIVET_INCLUDE_DIRS=${RIVET_INCLUDE_DIRS} RIVET_DATA_PATH=${RIVET_DATA_PATH} RIVET_ANALYSIS_PATH=${RIVET_ANALYSIS_PATH} Rivet_HEPMC2_FOUND=${Rivet_HEPMC2_FOUND}  Rivet_HEPMC3_FOUND=${Rivet_HEPMC3_FOUND}")
+  if ("${RIVET_VERSION}" VERSION_GREATER_EQUAL "4")
+    add_definitions(-DRIVET4)
+    add_definitions(-DRIVET_ENABLE_HEPMC_3)
+  endif()
 endif()
 
 if (NOT RAPGAP_RIVET OR NOT RIVET_FOUND) 
@@ -197,10 +201,13 @@
                        binomi.F kerset.F
                          )
 list(TRANSFORM rapgapmycern_la_SOURCES PREPEND "${PROJECT_SOURCE_DIR}/misc/")
-add_library(rapgapmycern SHARED ${rapgapmycern_la_SOURCES})
+add_library(rapgapmycern SHARED ${rapgapmycern_la_SOURCES} src/rapgap/rndm.F src/rapgap/draprn.F  )
 target_include_directories(rapgapmycern PRIVATE ${PROJECT_SOURCE_DIR}/include)
 install(TARGETS rapgapmycern DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
 set_target_properties(rapgapmycern PROPERTIES LINKER_LANGUAGE Fortran SOVERSION 0)
+
+target_link_libraries(rapgapbases rapgapmycern)
+
 #PYTHIA6 ###############################################################
 if (NOT RAPGAP_EXTERNAL_PYTHIA6)
   set( libpythia_la_SOURCES  
@@ -245,6 +252,7 @@
   list(TRANSFORM libpythia_la_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/pythia6428/")
   add_library(rapgappythia6 SHARED ${libpythia_la_SOURCES})
   set_target_properties(rapgappythia6 PROPERTIES LINKER_LANGUAGE Fortran SOVERSION 0)
+  target_link_libraries(rapgappythia6 ${LHAPDF_LIBRARIES})
   set(PYTHIA6_LIBRARIES rapgappythia6)
   install(TARGETS rapgappythia6 DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
 endif()
@@ -270,8 +278,9 @@
 		arcomp.f        arexma.f        arinqq.f        arniqq.f        arqq2o.f        arstor.f        arzcms.f artest.f
 )
   list(TRANSFORM librapgapariadne_la_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/ariadne412/")
-  add_library(rapgapariadne SHARED ${librapgapariadne_la_SOURCES})
+  add_library(rapgapariadne SHARED ${librapgapariadne_la_SOURCES}   src/rapgap/pydata.f)  
   set_target_properties(rapgapariadne PROPERTIES LINKER_LANGUAGE Fortran SOVERSION 0)
+   target_link_libraries(rapgapariadne ${PYTHIA6_LIBRARIES})
   set(ARIADNE_LIBRARIES rapgapariadne)
   install(TARGETS rapgapariadne DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
 endif()
@@ -306,7 +315,7 @@
         rapgap/diffr5.F   rapgap/fxnb.F      rapgap/pqcd.F      rapgap/rgupevnt.F  
         rapgap/diffr6.F   rapgap/gadap.F     rapgap/pqcdi.F     rapgap/rgupinit.F  
         rapgap/diffr7.F   rapgap/gadap2.F    rapgap/pqcdqqb.F   rapgap/rlu.F  
-        rapgap/diffr8.F   rapgap/gadapf.F    rapgap/pqpm.F      rapgap/rndm.F  
+        rapgap/diffr8.F   rapgap/gadapf.F    rapgap/pqpm.F      
         rapgap/dir1.F     rapgap/graini.F    rapgap/prodiff.F    
         rapgap/dir2.F     rapgap/grawq2.F    rapgap/ptime.F     rapgap/steer.F  
         rapgap/dir3.F     rapgap/h1rn.F      rapgap/rggamm.F    rapgap/usdiffr.F  
@@ -317,7 +326,7 @@
         rapgap/difxvq.F   rapgap/difxv1.F  
         rapgap/dir99.F    rapgap/xpqhf.F  
         rapgap/dot.F      rapgap/rasspa.F  
-        rapgap/dot1.F     rapgap/rgstfe.F    rapgap/draprn.F 
+        rapgap/dot1.F     rapgap/rgstfe.F    
         rapgap/rapgen.F   rapgap/intga.F     rapgap/rgstfu.F  
         util/Ctq4Pdfm.F   util/Ctq6Pdfm.F   util/minuts.F  
         util/Ctq5Pdfm.F   util/getintPDF.F  util/strpriv.F  
@@ -422,7 +431,7 @@
 ##RAPGAP BIN ##########################################################
 set(rapgap33_SOURCES  
             rapgap/rgmain-hepmc.F  rapgap/drn.F  rapgap/pyr.F rapgap/pyname.F 
-            rapgap/upinit.F   rapgap/upevnt.F rapgap/pydata.f )
+            rapgap/upinit.F   rapgap/upevnt.F  )
 list(TRANSFORM rapgap33_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/src/")
 add_executable(rapgap ${rapgap33_SOURCES} ${ariadne_SOURCES} ${conv_source})
 target_include_directories(rapgap PRIVATE ${PROJECT_SOURCE_DIR}/include   ${LHAPDF_INCLUDE_DIR})
@@ -452,7 +461,7 @@
 if (RAPGAP_RIVET AND RIVET_FOUND)
   target_include_directories(rapgap PRIVATE  ${RIVET_INCLUDE_DIR}) 
   target_link_libraries(rapgap PRIVATE ${RIVET_LIBRARIES})
-    set_property(TARGET rapgap PROPERTY CXX_STANDARD 14)
+  set_property(TARGET rapgap PROPERTY CXX_STANDARD 17)
 endif()
 
 ## MANUAL  #############################################################
@@ -495,6 +504,11 @@
 )
 list(TRANSFORM dataexamples PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/")
 install(FILES ${dataexamples} DESTINATION  ${CMAKE_INSTALL_DATADIR}/rapgap COMPONENT doc)
+install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rapgap COMPONENT devel
+FILES_MATCHING PATTERN "*"
+          PATTERN "*akefile*" EXCLUDE
+          PATTERN "*bak" EXCLUDE
+)
 
 macro(RapgapTestTarget nam pdf card hmout)
     add_custom_target(test${nam}${pdf} ALL COMMAND lhapdf install ${pdf})
diff -Naur ORIG/ariadne412/atest.f PATCHED/ariadne412/atest.f
--- ORIG/ariadne412/atest.f	2026-04-07 20:27:15.057161417 +0000
+++ PATCHED/ariadne412/atest.f	2026-04-07 20:27:15.057242560 +0000
@@ -8,9 +8,10 @@
 C...This is a dummy routine to ensure the relevant block data routines
 C...are linked from the JETSET/PYTHIA library. This routine should never
 C...be called.
-
-      CALL LUDATA
-      CALL PYDATA
+      EXTERNAL PYDATA
+      EXTERNAL LUDATA
+C      CALL LUDATA
+C      CALL PYDATA
 
       RETURN
       END
diff -Naur ORIG/cmake/Modules/FindRivet.cmake PATCHED/cmake/Modules/FindRivet.cmake
--- ORIG/cmake/Modules/FindRivet.cmake	2026-04-07 20:27:15.057184399 +0000
+++ PATCHED/cmake/Modules/FindRivet.cmake	2026-04-07 20:27:15.057257600 +0000
@@ -24,11 +24,11 @@
   endif()
 endif()
 if (RIVET_SEARCH_DIRS)
-  find_path(RIVET_DATA_PATH ATLAS_2012_I1094061.yoda PATH_SUFFIXES share/Rivet/)
+  find_path(RIVET_DATA_PATH NAMES ATLAS_2012_I1094061.yoda ATLAS_2012_I1094061.yoda.gz PATH_SUFFIXES share/Rivet/)
   find_path(RIVET_INCLUDE_DIR Rivet/Rivet.hh PATHS ${RIVET_SEARCH_DIRS} PATH_SUFFIXES include NO_DEFAULT_PATH)
   find_library(RIVET_LIBRARY NAMES Rivet PATHS ${RIVET_SEARCH_DIRS}  PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH)
 else()
-  find_path(RIVET_DATA_PATH ATLAS_2012_I1094061.yoda PATH_SUFFIXES share/Rivet/)
+  find_path(RIVET_DATA_PATH NAMES ATLAS_2012_I1094061.yoda ATLAS_2012_I1094061.yoda.gz PATH_SUFFIXES share/Rivet/)
   find_path(RIVET_INCLUDE_DIR Rivet/Rivet.hh PATH_SUFFIXES include)
   find_library(RIVET_LIBRARY NAMES Rivet PATHS_SUFFIXES lib lib64)
 endif()
@@ -40,7 +40,7 @@
       string(REGEX MATCH "[1234567890\.]+[a-zA-Z]*" RIVET_VERSION ${RIVET_VERSION_STRING_CONTENT})
     endif()
     file(STRINGS ${RIVET_INCLUDE_DIR}/Rivet/Config/RivetConfig.hh RIVET_HEPMC_VERSION_STRING REGEX "^#define[ ]+RIVET_ENABLE_HEPMC_3[ ]+" )
-    if (RIVET_HEPMC_VERSION_STRING)
+    if (RIVET_HEPMC_VERSION_STRING OR "${RIVET_VERSION}" VERSION_GREATER_EQUAL "4")
       set(Rivet_HEPMC2_FOUND FALSE)
       set(Rivet_HEPMC3_FOUND TRUE)
     else()  
diff -Naur ORIG/src/rapgap/RivetInterface.cc PATCHED/src/rapgap/RivetInterface.cc
--- ORIG/src/rapgap/RivetInterface.cc	2026-04-07 20:27:15.057204473 +0000
+++ PATCHED/src/rapgap/RivetInterface.cc	2026-04-07 20:27:15.057276579 +0000
@@ -69,8 +69,16 @@
     int rivet_init_(char* rname1) {
         if ( rivet ) return 0;
         rname=std::string(rname1);
+#if defined(RIVET_VERSION_CODE) && (RIVET_VERSION_CODE>=40100)        
+        rivet = new Rivet::AnalysisHandler();
+#else
         rivet = new Rivet::AnalysisHandler(rname);
+#endif  
+#ifdef RIVET4
+        rivet->setCheckBeams(!igBeam);
+#else
         rivet->setIgnoreBeams(igBeam);
+#endif
         Rivet::addAnalysisLibPath(".");
         for (std::set<std::string>::iterator it = analyses.begin();
                 it != analyses.end(); ++it) {
