@@ -7,7 +7,9 @@ option( VALGRIND "Run select unit tests under valgrind" OFF )
77option ( ASAN "Build the plugin with the address sanitizer" OFF )
88
99set ( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake )
10- set ( CMAKE_BUILD_TYPE Debug )
10+ if ( "${CMAKE_BUILD_TYPE} " STREQUAL "" )
11+ set ( CMAKE_BUILD_TYPE Debug )
12+ endif ()
1113
1214find_package ( XRootD REQUIRED COMPONENTS UTILS SERVER )
1315find_package ( CURL REQUIRED )
@@ -39,6 +41,8 @@ endif()
3941# Our custom Filesystem module creates the std::filesystem library target for
4042# any special dependencies needed for using std::filesystem.
4143find_package ( Filesystem REQUIRED )
44+ # Similar setup for libatomic; required only on 32-bit systems
45+ find_package ( Atomic REQUIRED )
4246
4347if ( NOT XROOTD_EXTERNAL_TINYXML2 )
4448 include (FetchContent)
@@ -78,7 +82,7 @@ add_definitions( -D_FILE_OFFSET_BITS=64 )
7882add_library (XrdS3Obj OBJECT src/CurlUtil.cc src/S3File.cc src/S3Directory.cc src/S3AccessInfo.cc src/S3FileSystem.cc src/AWSv4-impl.cc src/S3Commands.cc src/HTTPCommands.cc src/TokenFile.cc src/stl_string_utils.cc src/shortfile.cc src/logging.cc)
7983set_target_properties (XrdS3Obj PROPERTIES POSITION_INDEPENDENT_CODE ON )
8084target_include_directories (XrdS3Obj PRIVATE ${XRootD_INCLUDE_DIRS} )
81- target_link_libraries (XrdS3Obj ${XRootD_UTILS_LIBRARIES} ${XRootD_SERVER_LIBRARIES} CURL::libcurl OpenSSL::Crypto tinyxml2::tinyxml2 Threads::Threads std::filesystem)
85+ target_link_libraries ( XrdS3Obj ${XRootD_UTILS_LIBRARIES} ${XRootD_SERVER_LIBRARIES} CURL::libcurl OpenSSL::Crypto tinyxml2::tinyxml2 Threads::Threads std::filesystem std::atomic )
8286
8387add_library (XrdS3 MODULE "$<TARGET_OBJECTS:XrdS3Obj>" )
8488target_link_libraries (XrdS3 XrdS3Obj)
@@ -116,11 +120,11 @@ else()
116120 set_target_properties ( XrdOssFilter PROPERTIES OUTPUT_NAME "XrdOssFilter-${XRootD_PLUGIN_VERSION} " SUFFIX ".so" LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR} /configs/export-lib-symbols" )
117121endif ()
118122
119- SET (LIB_INSTALL_DIR " ${CMAKE_INSTALL_PREFIX} /lib" CACHE PATH "Install path for libraries" )
123+ include (GNUInstallDirs )
120124
121125install (
122126 TARGETS XrdS3 XrdHTTPServer
123- LIBRARY DESTINATION ${LIB_INSTALL_DIR }
127+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR }
124128)
125129
126130if ( BUILD_TESTING )
@@ -137,7 +141,18 @@ if( BUILD_TESTING )
137141 target_link_libraries ( XrdOssFilterTesting XrdOssFilterObj )
138142 target_include_directories ( XrdOssFilterTesting INTERFACE ${XRootD_INCLUDE_DIRS} )
139143
140- # Ensure that GTest is available
144+ find_program (GoWrk go-wrk HINTS "$ENV{HOME} /go/bin" )
145+ if ( NOT GoWrk )
146+ # Try installing the go-wrk variable to generate a reasonable stress test
147+ execute_process ( COMMAND go install github.com/bbockelm/go-wrk@92dbe19
148+ RESULT_VARIABLE go_install_result )
149+ if ( go_install_result EQUAL 0 )
150+ find_program (GoWrk go-wrk HINTS "$ENV{HOME} /go/bin" )
151+ else ()
152+ message (ERROR "Failed to install the go-wrk binary" )
153+ endif ()
154+ endif ()
155+
141156 if ( NOT XROOTD_PLUGINS_EXTERNAL_GTEST )
142157 include ( FetchContent )
143158 set ( GTEST_URL "${CMAKE_CURRENT_SOURCE_DIR} /googletest-1.15.2.tar.gz" )
0 commit comments