diff --git a/config/cmake/FindZMQ4.cmake b/config/cmake/FindZMQ4.cmake index 959e8c71a8726e9704d4fac4e6f099528bd3dbdc..c67db7d982e413e616f4a7f94deb091d981c4b64 100644 --- a/config/cmake/FindZMQ4.cmake +++ b/config/cmake/FindZMQ4.cmake @@ -7,7 +7,7 @@ set(cds_find_zmq4_included TRUE) FIND_PACKAGE(PkgConfig) -pkg_check_modules(LibZMQ REQUIRED libzmq>=4.0.0) +pkg_check_modules(LibZMQ libzmq>=4.0.0) if (LibZMQ_FOUND) set (_fcpp_lib_list "") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4437902bcbb5cd53e27f70724305bdb68fae0e5e..1ea7c3d5877e233745077a7b58f615f574bc9345 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,7 +4,11 @@ add_subdirectory(dv) add_subdirectory(nds) add_subdirectory(mx_stream) add_subdirectory(run_number) -add_subdirectory(zmq_stream) +if (${LibZMQ_FOUND}) + add_subdirectory(zmq_stream) +else (${LibZMQ_FOUND}) + MESSAGE("Skipping zmq_stream") +endif (${LibZMQ_FOUND}) if (${DEV_BUILD}) add_subdirectory(fe_stream_test) -endif(${DEV_BUILD}) \ No newline at end of file +endif(${DEV_BUILD}) diff --git a/src/daqd/Makefile.in b/src/daqd/Makefile.in index bf2a5f8d617375549453ebad88748d3702503816..7c4cbf08daa7c239f73682778677dd4942f800ed 100644 --- a/src/daqd/Makefile.in +++ b/src/daqd/Makefile.in @@ -41,8 +41,8 @@ GDSFLAGS=@GDSFLAGS@ GDSLIBFLAGS=@GDSLIBFLAGS@ GDSOBJECTS=@GDSOBJECTS@ RUN_NUMBER_ARCHIVE=@srcdir@/../run_number -RUN_NUMBER_OBJECTS=run_number_client.o -RUN_NUMBER_LIBS=-lzmq +RUN_NUMBER_OBJECTS=@RUN_NUMBER_CLIENT@.o +RUN_NUMBER_LIBS=@RUN_NUMBER_LIBS@ BROADCAST_OBJECTS=framesend.o gdsmutex.o BROADCASTOBJECTS=@BROADCASTOBJECTS@ @@ -165,7 +165,7 @@ gdsxdr_util.o: ${GDS_ARCHIVE}/gdsxdr_util.c sockutil.o: ${GDS_ARCHIVE}/sockutil.c $(CC) -c -D_TP_DAQD -D_TESTPOINT_DIRECT=0 $< -run_number_client.o: ${RUN_NUMBER_ARCHIVE}/run_number_client.cc +@RUN_NUMBER_CLIENT@.o: ${RUN_NUMBER_ARCHIVE}/@RUN_NUMBER_CLIENT@.cc $(CXX) -c ${CXXFLAGS} -I$(srcdir)/@ZMQ_INCLUDES@ $< diff --git a/src/daqd/configure.ac b/src/daqd/configure.ac index 34daf4f5d92160a8afaf0815906ad7957977b0b1..9a4417d0b11a05f5c83dcdb2a9f727f78644a6c3 100644 --- a/src/daqd/configure.ac +++ b/src/daqd/configure.ac @@ -35,9 +35,21 @@ AC_CHECK_HEADERS(FlexLexer.h arpa/inet.h assert.h ctype.h \ errno.h fcntl.h fstream.h iostream.h limits.h math.h \ netinet/in.h pthread.h signal.h stdio.h stdlib.h stream.h \ string.h sys/socket.h sys/types.h time.h unistd.h tnf/probe.h \ - regex.h regexp.h zmq.h) + regex.h regexp.h) AC_HEADER_TIME +dnl check for zmq headers +dnl ===================== +AC_CHECK_HEADER(zmq.h, [HAVE_ZMQ_H=1], [HAVE_ZMQ_H=0]) +RUN_NUMBER_CLIENT="run_number_client" +RUN_NUMBER_LIBS="-lzmq" +AS_IF([test "$HAVE_ZMQ_H" = "0"], [ + RUN_NUMBER_CLIENT="null_run_number_client"; + RUN_NUMBER_LIBS="" +]) +AC_SUBST(RUN_NUMBER_CLIENT) +AC_SUBST(RUN_NUMBER_LIBS) + dnl check for zmq c++ wrapper dnl ========================= AC_LANG_PUSH([C++]) diff --git a/src/run_number/CMakeLists.txt b/src/run_number/CMakeLists.txt index f927be1d935aa161f03aab7c5a94e78210d00c05..12245eca9f643db089909557e4f583e7f08b1068 100644 --- a/src/run_number/CMakeLists.txt +++ b/src/run_number/CMakeLists.txt @@ -5,7 +5,7 @@ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../c INCLUDE(CheckCXXCompilerFlag) include(FindThreads) -find_package(ZMQ4 REQUIRED) +find_package(ZMQ4) find_path(CATCH_PATH catch.hpp HINTS /usr/include /usr/local/include ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) @@ -20,27 +20,39 @@ else(${HAS_CXX_11}) set(_RN_CHECK_FLAGS "") endif (${HAS_CXX_11}) -add_executable(run_number_server run_number_main.cc run_number.cc run_number.hh) -target_link_libraries(run_number_server PUBLIC zmq4::zmq) -target_compile_options(run_number_server PRIVATE ${_RN_CHECK_FLAGS}) +if (${LibZMQ_FOUND}) -add_library(run_number_client STATIC run_number_client.cc run_number_client.hh) -target_link_libraries(run_number_client PUBLIC zmq4::zmq) -target_include_directories(run_number_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -add_library(run_number::run_number ALIAS run_number_client) + add_executable(run_number_server run_number_main.cc run_number.cc run_number.hh) + target_link_libraries(run_number_server PUBLIC zmq4::zmq) + target_compile_options(run_number_server PRIVATE ${_RN_CHECK_FLAGS}) -add_executable(test_run_number tests/test_main.cc tests/test_run_number.cc tests/test_run_number_structs.cc run_number.cc run_number.hh) -target_include_directories(test_run_number PRIVATE ${CATCH_PATH}) -target_compile_options(test_run_number PRIVATE ${_RN_CHECK_FLAGS}) + add_library(run_number_client STATIC run_number_client.cc run_number_client.hh) + target_link_libraries(run_number_client PUBLIC zmq4::zmq) + target_include_directories(run_number_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + add_library(run_number::run_number ALIAS run_number_client) -add_executable(test_run_number_client tests/test_client_main.cc) -target_link_libraries(test_run_number_client PUBLIC run_number::run_number) + add_executable(test_run_number tests/test_main.cc tests/test_run_number.cc tests/test_run_number_structs.cc run_number.cc run_number.hh) + target_include_directories(test_run_number PRIVATE ${CATCH_PATH}) + target_compile_options(test_run_number PRIVATE ${_RN_CHECK_FLAGS}) -add_executable(run_number_test_client run_number_test_client.cc) -target_link_libraries(run_number_test_client PUBLIC run_number_client) + add_executable(test_run_number_client tests/test_client_main.cc) + target_link_libraries(test_run_number_client PUBLIC run_number::run_number) -add_test(_rn_basic_run_number_tests_ test_run_number) + add_executable(run_number_test_client run_number_test_client.cc) + target_link_libraries(run_number_test_client PUBLIC run_number_client) -install(TARGETS run_number_server - DESTINATION bin - ) \ No newline at end of file + add_test(_rn_basic_run_number_tests_ test_run_number) + + install(TARGETS run_number_server + DESTINATION bin + ) + +else (${LibZMQ_FOUND}) + + MESSAGE("ZeroMQ libraries not found, building the null run number client") + + add_library(null_run_number_client STATIC null_run_number_client.cc run_number_client.hh) + target_include_directories(null_run_number_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + add_library(run_number::run_number ALIAS null_run_number_client) + +endif (${LibZMQ_FOUND}) \ No newline at end of file diff --git a/src/run_number/null_run_number_client.cc b/src/run_number/null_run_number_client.cc new file mode 100644 index 0000000000000000000000000000000000000000..b7d0c023b6b5dc5fd6d88884ef5c90844486a3b0 --- /dev/null +++ b/src/run_number/null_run_number_client.cc @@ -0,0 +1,10 @@ +#include "run_number_client.hh" + + +namespace daqd_run_number { + + int get_run_number(const std::string &target, const std::string &hash) { + return 0; + } + +} \ No newline at end of file