From 2923f64c28650e55833dd9d9a088dd7c4804e3e8 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 15 Mar 2013 13:28:37 -0500 Subject: [svn-r23357] HDFFV-8338: Add cmake support, this commit only tested for linux Tested: local linux --- src/CMakeLists.txt | 16 +++++++++ test/CMakeLists.txt | 15 +++++++++ test/plugin_lib/CMakeLists.txt | 74 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 test/plugin_lib/CMakeLists.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f964992..e560004 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -477,6 +477,16 @@ SET (H5P_HDRS ) IDE_GENERATED_PROPERTIES ("H5P" "${H5P_HDRS}" "${H5P_SRCS}" ) +SET (H5PL_SRCS + ${HDF5_SRC_DIR}/H5PL.c +) + +SET (H5PL_HDRS + ${HDF5_SRC_DIR}/H5PLpkg.h + ${HDF5_SRC_DIR}/H5PLpublic.h +) +IDE_GENERATED_PROPERTIES ("H5PL" "${H5PL_HDRS}" "${H5PL_SRCS}" ) + SET (H5R_SRCS ${HDF5_SRC_DIR}/H5R.c @@ -662,6 +672,7 @@ SET (common_SRCS ${H5MP_SRCS} ${H5O_SRCS} ${H5P_SRCS} + ${H5PL_SRCS} ${H5R_SRCS} ${H5RC_SRCS} ${H5RS_SRCS} @@ -701,6 +712,7 @@ SET (H5_PUBLIC_HEADERS ${H5MP_HDRS} ${H5O_HDRS} ${H5P_HDRS} + ${H5PL_HDRS} ${H5R_HDRS} ${H5S_HDRS} ${H5SM_HDRS} @@ -739,6 +751,7 @@ SET (H5_PRIVATE_HEADERS ${HDF5_SRC_DIR}/H5MPprivate.h ${HDF5_SRC_DIR}/H5Oprivate.h ${HDF5_SRC_DIR}/H5Pprivate.h + ${HDF5_SRC_DIR}/H5PLprivate.h ${HDF5_SRC_DIR}/H5RCprivate.h ${HDF5_SRC_DIR}/H5Rprivate.h ${HDF5_SRC_DIR}/H5RSprivate.h @@ -825,6 +838,9 @@ SET_SOURCE_FILES_PROPERTIES (${HDF5_BINARY_DIR}/H5overflow.h GENERATED) ADD_LIBRARY (${HDF5_LIB_TARGET} ${LIB_TYPE} ${common_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS}) TARGET_LINK_LIBRARIES (${HDF5_LIB_TARGET} ${LINK_LIBS}) +IF (NOT WIN32) + TARGET_LINK_LIBRARIES (${HDF5_LIB_TARGET} dl) +ENDIF (NOT WIN32) SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT ${HDF5_LIB_TARGET}) H5_SET_LIB_OPTIONS (${HDF5_LIB_TARGET} ${HDF5_LIB_NAME} ${LIB_TYPE}) SET_TARGET_PROPERTIES (${HDF5_LIB_TARGET} PROPERTIES FOLDER libraries) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6af1e94..d104978 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -7,6 +7,21 @@ PROJECT (HDF5_TEST) ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS}) #----------------------------------------------------------------------------- +# If plugin library tests can be tested +#----------------------------------------------------------------------------- +IF (BUILD_SHARED_LIBS) + IF (EXISTS "${HDF5_TEST_SOURCE_DIR}/plugin_lib" AND IS_DIRECTORY "${HDF5_TEST_SOURCE_DIR}/plugin_lib") + ADD_SUBDIRECTORY (${HDF5_TEST_SOURCE_DIR}/plugin_lib ${PROJECT_BINARY_DIR}/plugin_lib) + ENDIF (EXISTS "${HDF5_TEST_SOURCE_DIR}/plugin_lib" AND IS_DIRECTORY "${HDF5_TEST_SOURCE_DIR}/plugin_lib") +ELSE (BUILD_SHARED_LIBS) + MESSAGE (STATUS " **** Plugins libraries must be built as shared libraries **** ") + ADD_TEST ( + NAME H5PLUGIN-SKIPPED + COMMAND ${CMAKE_COMMAND} -E echo "SKIP H5PLUGIN TESTING" + ) +ENDIF (BUILD_SHARED_LIBS) + +#----------------------------------------------------------------------------- # Define Sources #----------------------------------------------------------------------------- SET (TEST_LIB_SRCS diff --git a/test/plugin_lib/CMakeLists.txt b/test/plugin_lib/CMakeLists.txt new file mode 100644 index 0000000..f39e2df --- /dev/null +++ b/test/plugin_lib/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required (VERSION 2.8.10) +PROJECT (HDF5_TEST_PLUGIN_LIB) + +#----------------------------------------------------------------------------- +# Set the core name of the library +#----------------------------------------------------------------------------- +SET (HDF5_TEST_PLUGIN_LIB_CORENAME "dynlib1") + +#----------------------------------------------------------------------------- +# Set the true names of all the libraries if customized by external project +#----------------------------------------------------------------------------- +SET (HDF5_TEST_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_PLUGIN_LIB_CORENAME}") + +#----------------------------------------------------------------------------- +# Set the target names of all the libraries +#----------------------------------------------------------------------------- +SET (HDF5_TEST_PLUGIN_LIB_TARGET ${HDF5_TEST_PLUGIN_LIB_CORENAME}) + +#----------------------------------------------------------------------------- +# Apply Definitions to compiler in this directory and below +#----------------------------------------------------------------------------- +ADD_DEFINITIONS (${HDF5_EXTRA_C_FLAGS}) + +#----------------------------------------------------------------------------- +# Setup include Directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES (${HDF5_SRC_DIR}) + +#----------------------------------------------------------------------------- +# Define Sources +#----------------------------------------------------------------------------- + +SET (H5_TEST_PLUGIN_LIB_SRCS + ${HDF5_TEST_PLUGIN_LIB_SOURCE_DIR}/dynlib1.c +) + +SET (H5_TEST_PLUGIN_LIB_HDRS + ${HDF5_TEST_PLUGIN_LIB_SOURCE_DIR}/dynlib1.h + ${HDF5_TEST_SOURCE_DIR}/H5srcdir.h + ${HDF5_TEST_SOURCE_DIR}/h5test.h +) + +#----------------------------------------------------------------------------- +# Generate the H5srcdir_str.h file containing user settings needed by compilation +#----------------------------------------------------------------------------- +SET (srcdir ${CMAKE_CURRENT_SOURCE_DIR}) +CONFIGURE_FILE (${HDF5_TEST_SOURCE_DIR}/H5srcdir_str.h.in H5srcdir_str.h @ONLY) +INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR}) + +ADD_LIBRARY (${HDF5_TEST_PLUGIN_LIB_TARGET} ${LIB_TYPE} ${H5_TEST_PLUGIN_LIB_SRCS} ${H5_TEST_PLUGIN_LIB_HDRS}) +TARGET_LINK_LIBRARIES (${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_LIB_TARGET}) +#SET_GLOBAL_VARIABLE( HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TEST_PLUGIN_LIB_TARGET}") +H5_SET_LIB_OPTIONS ( + ${HDF5_TEST_PLUGIN_LIB_TARGET} ${HDF5_TEST_PLUGIN_LIB_NAME} + ${LIB_TYPE} + HDF5_TEST_PLUGIN_LIB_NAME_RELEASE + HDF5_TEST_PLUGIN_LIB_NAME_DEBUG +) +SET_TARGET_PROPERTIES (${HDF5_TEST_PLUGIN_LIB_TARGET} PROPERTIES FOLDER libraries/TEST_PLUGIN) + +############################################################################## +############################################################################## +### T E S T S ### +############################################################################## +############################################################################## + +#-- Adding test for plugin +ADD_EXECUTABLE (plugin ${HDF5_TEST_SOURCE_DIR}/plugin.c) +TARGET_NAMING (plugin ${LIB_TYPE}) +TARGET_LINK_LIBRARIES (plugin ${HDF5_TEST_PLUGIN_LIB_TARGET}) +SET_TARGET_PROPERTIES (plugin PROPERTIES FOLDER test) + +ADD_TEST (NAME H5PLUGIN-plugin COMMAND $) +SET_TESTS_PROPERTIES (H5PLUGIN-plugin PROPERTIES ENVIRONMENT HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/bin) -- cgit v0.12