From f35b0dc42553e506cab99584aa713af48cd9797e Mon Sep 17 00:00:00 2001 From: biagas Date: Mon, 29 Jul 2024 12:41:52 -0700 Subject: [PATCH 1/4] Create consistency with WIN32 define checks Use `_WIN32` for the check instead of `WIN32`. --- src/silo/silo_win32_compatibility.h | 2 +- tools/python/pysilo.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/silo/silo_win32_compatibility.h b/src/silo/silo_win32_compatibility.h index bc4d38f8..00b970cd 100644 --- a/src/silo/silo_win32_compatibility.h +++ b/src/silo/silo_win32_compatibility.h @@ -1,4 +1,4 @@ -#ifdef WIN32 +#ifdef _WIN32 #ifndef SILO_WIN32_COMPATIBILITY #define SILO_WIN32_COMPATIBILITY #include /* Include Windows IO */ diff --git a/tools/python/pysilo.cpp b/tools/python/pysilo.cpp index 6176c147..213631ec 100644 --- a/tools/python/pysilo.cpp +++ b/tools/python/pysilo.cpp @@ -68,7 +68,7 @@ static PyObject *siloModule = 0; std::vector SiloMethods; #if defined(_WIN32) -# if defined(Silo_EXPORTS) +# if defined(SiloPy_EXPORTS) || defined(Silo_EXPORTS) # define SILOMODULE_API __declspec(dllexport) # else # define SILOMODULE_API __declspec(dllimport) From c63889c8b5d947a4215eb46353167c0450e47386 Mon Sep 17 00:00:00 2001 From: biagas Date: Mon, 29 Jul 2024 17:05:55 -0700 Subject: [PATCH 2/4] Update python testing on Windows. Ensure all appropriate dlls are copied to the test directory. Required mods to FindHDF5, FindSzip, FindZlib and FindPython. Rename python module target from `Silo` to `SiloPy` to prevent conflict with `silo` library target. Update config-site file for my windows machine. --- CMake/SiloFindHDF5.cmake | 19 +++++++++++-------- CMake/SiloFindPython.cmake | 11 +++++++++++ CMake/SiloFindSzip.cmake | 21 +++++++++++---------- CMake/SiloFindZlib.cmake | 21 +++++++++++---------- config-site/steppenwolf.cmake | 34 +++++++--------------------------- tests/CMakeLists.txt | 15 +++++++++++++++ tools/python/CMakeLists.txt | 18 ++++++++++-------- 7 files changed, 76 insertions(+), 63 deletions(-) diff --git a/CMake/SiloFindHDF5.cmake b/CMake/SiloFindHDF5.cmake index 08c71b09..c7d80eeb 100644 --- a/CMake/SiloFindHDF5.cmake +++ b/CMake/SiloFindHDF5.cmake @@ -73,16 +73,19 @@ if(HDF5_FOUND) # On Windows need to have hdf5's dll installed with browser/silex # in order for the executables to work - if(WIN32 AND (SILO_ENABLE_SILEX OR SILEX_ENABLE_BROWSER)) + if(WIN32) + # DLL may also be needed by testing infrastructure get_target_property(HDF5_DLL ${HDF5_C_LIBRARIES} IMPORTED_LOCATION_RELEASE ) - install(FILES ${HDF5_DLL} DESTINATION bin - PERMISSIONS OWNER_READ OWNER_WRITE - GROUP_READ GROUP_WRITE - WORLD_READ) + if(SILO_ENABLE_SILEX OR SILO_ENABLE_BROWSER) + install(FILES ${HDF5_DLL} DESTINATION bin + PERMISSIONS OWNER_READ OWNER_WRITE + GROUP_READ GROUP_WRITE + WORLD_READ) - add_custom_command(TARGET copy_deps POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${HDF5_DLL} ${Silo_BINARY_DIR}/bin/$<$:$>/) + add_custom_command(TARGET copy_deps POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${HDF5_DLL} ${Silo_BINARY_DIR}/bin/$) + endif() endif() else() diff --git a/CMake/SiloFindPython.cmake b/CMake/SiloFindPython.cmake index 86e437bc..f835fc11 100644 --- a/CMake/SiloFindPython.cmake +++ b/CMake/SiloFindPython.cmake @@ -66,6 +66,17 @@ endif() find_package(Python COMPONENTS Interpreter Development) if(Python_FOUND) + if(WIN32) + # Need to ensure these vars are available by testing, so make + # them live in PARENT_SCOPE. + set(Python_EXECUTABLE ${Python_EXECUTABLE} PARENT_SCOPE) + if(TARGET Python::Module) + get_target_property(PYTHON_DLL Python::Module IMPORTED_LOCATION) + if(PYTHON_DLL) + set(PYTHON_DLL ${PYTHON_DLL} PARENT_SCOPE) + endif() + endif() + endif() else() message(FATAL_ERROR "An explicit request for Silo's python module was made but python could not be found. You may want to try setting SILO_PYTHON_DIR") endif() diff --git a/CMake/SiloFindSzip.cmake b/CMake/SiloFindSzip.cmake index 6a4c1f4d..4f37c3b3 100644 --- a/CMake/SiloFindSzip.cmake +++ b/CMake/SiloFindSzip.cmake @@ -61,7 +61,7 @@ if(DEFINED SILO_HDF5_SZIP_DIR AND EXISTS ${SILO_HDF5_SZIP_DIR}/szip-config.cmake) # this works for szip with CMake - find_package(SZIP PATHS ${SILO_HDF5_SZIP_DIR} CONFIG) + find_package(SZIP PATHS ${SILO_HDF5_SZIP_DIR} CONFIG NO_DEFAULT_PATH) else() if(DEFINED SILO_HDF5_SZIP_DIR AND EXISTS ${SILO_HDF5_SZIP_DIR}) # help CMake find the specified szip @@ -73,17 +73,18 @@ endif() if(SZIP_FOUND) # needed for config.h set(HAVE_LIBSZ 1) - if(WIN32 AND (SILO_ENABLE_SILEX OR SILEX_ENABLE_BROWSER)) + if(WIN32) get_target_property(SZIP_DLL szip IMPORTED_LOCATION_RELEASE ) - install(FILES ${SZIP_DLL} DESTINATION bin - PERMISSIONS OWNER_READ OWNER_WRITE - GROUP_READ GROUP_WRITE - WORLD_READ) - - add_custom_command(TARGET copy_deps POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${SZIP_DLL} ${Silo_BINARY_DIR}/bin/$<$:$>/) + if(SILO_ENABLE_SILEX OR SILEX_ENABLE_BROWSER) + install(FILES ${SZIP_DLL} DESTINATION bin + PERMISSIONS OWNER_READ OWNER_WRITE + GROUP_READ GROUP_WRITE + WORLD_READ) + add_custom_command(TARGET copy_deps POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${SZIP_DLL} ${Silo_BINARY_DIR}/bin/$) + endif() endif() else() message(FATAL_ERROR "Could not find szip, you may want to try setting SILO_HDF5_SZIP_DIR") diff --git a/CMake/SiloFindZlib.cmake b/CMake/SiloFindZlib.cmake index 4485f3e9..831202e0 100644 --- a/CMake/SiloFindZlib.cmake +++ b/CMake/SiloFindZlib.cmake @@ -74,17 +74,18 @@ if(ZLIB_FOUND) # needed for config.h set(HAVE_LIBZ 1) set(HAVE_ZLIB_H 1) - if(WIN32 AND (SILO_ENABLE_SILEX OR SILEX_ENABLE_BROWSER)) - get_target_property(ZLIB_DLL zlib IMPORTED_LOCATION_RELEASE ) - install(FILES ${ZLIB_DLL} DESTINATION bin - PERMISSIONS OWNER_READ OWNER_WRITE - GROUP_READ GROUP_WRITE - WORLD_READ) - - add_custom_command(TARGET copy_deps POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${ZLIB_DLL} ${Silo_BINARY_DIR}/bin/$<$:$>/) + if(WIN32) + get_target_property(ZLIB_DLL zlib IMPORTED_LOCATION_RELEASE) + if(SILO_ENABLE_SILEX OR SILEX_ENABLE_BROWSER) + install(FILES ${ZLIB_DLL} DESTINATION bin + PERMISSIONS OWNER_READ OWNER_WRITE + GROUP_READ GROUP_WRITE + WORLD_READ) + add_custom_command(TARGET copy_deps POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${ZLIB_DLL} ${Silo_BINARY_DIR}/bin/$) + endif() endif() else() message(FATAL_ERROR "Could not find zlib, you may want to try setting SILO_ZLIB_DIR") diff --git a/config-site/steppenwolf.cmake b/config-site/steppenwolf.cmake index da62acde..e8f35af7 100644 --- a/config-site/steppenwolf.cmake +++ b/config-site/steppenwolf.cmake @@ -55,11 +55,12 @@ ### # config-site for STEPPENWOLF, a Windows system. ### +message("steppenwolf.cmake being processed") ### # Helpers for TP lib location ### -set(TP_DIR C:/A_Visit/ForRegression/visit-deps/windowsbuild/MSVC2017) +set(TP_DIR C:/A_Visit/ForRegression/visit-deps/windowsbuild/MSVC2022) ## # HDF5 @@ -74,20 +75,20 @@ silo_option_default(VAR SILO_HDF5_SZIP_DIR VALUE ${TP_DIR}/szip/2.1.1/cmake) ## # ZLIB ## -silo_option_default(VAR SILO_ZLIB_DIR VALUE ${TP_DIR}/zlib/1.2.11/cmake) +silo_option_default(VAR SILO_ZLIB_DIR VALUE ${TP_DIR}/zlib/1.2.13/cmake) ## # QT5 (must be the location of Qt5Config.cmake) ## -silo_option_default(VAR SILO_QT5_DIR VALUE ${TP_DIR}/Qt/5.14.2/lib/cmake/Qt5) +#silo_option_default(VAR SILO_QT5_DIR VALUE ${TP_DIR}/Qt/5.14.2/lib/cmake/Qt5) ## # python ## -silo_option_default(VAR SILO_PYTHON_DIR VALUE ${TP_DIR}/python/3.7.7) +silo_option_default(VAR SILO_PYTHON_DIR VALUE ${TP_DIR}/python/3.9.18) # enable silex -silo_option_default(VAR SILO_ENABLE_SILEX VALUE ON TYPE BOOL) +#silo_option_default(VAR SILO_ENABLE_SILEX VALUE ON TYPE BOOL) # disable fortran silo_option_default(VAR SILO_ENABLE_FORTRAN VALUE OFF TYPE BOOL) @@ -96,27 +97,6 @@ silo_option_default(VAR SILO_ENABLE_FORTRAN VALUE OFF TYPE BOOL) silo_option_default(VAR SILO_ENABLE_PYTHON_MODULE VALUE ON TYPE BOOL) # enable tests -silo_option_default(VAR SILO_ENABLE_TESTS VALUE ON TYPE BOOL) - - - -# cmake automatically uses MDd for Debug flags, but the -# third-party libs above are NOT debug versions, so won't be able to -# link against them if that define is used. Replace that flag: - -macro(silo_replace_flag OLD_FLAG NEW_FLAG FLAG_TYPE FLAG_STRING) - string(REPLACE "${OLD_FLAG}" "${NEW_FLAG}" TMP "${${FLAG_TYPE}}") - set(${FLAG_TYPE} "${TMP}" CACHE STRING "${FLAG_STRING}" FORCE) -endmacro() - -# Change /MDd to /MD for debug builds -silo_replace_flag("/MDd" "/MD" CMAKE_CXX_FLAGS_DEBUG - "Flags used by the compiler during debug builds") -silo_replace_flag("/MDd" "/MD" CMAKE_C_FLAGS_DEBUG - "Flags used by the compiler during debug builds") -silo_replace_flag("/MDd" "/MD" CMAKE_EXE_LINKER_FLAGS_DEBUG - "Flags used by the linker during debug builds") -silo_replace_flag("/MDd" "/MD" CMAKE_MODULE_LINKER_FLAGS_DEBUG - "Flags used by the linker during debug builds") +#silo_option_default(VAR SILO_ENABLE_TESTS VALUE ON TYPE BOOL) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7a5b1b1d..7f85f8ea 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -88,12 +88,27 @@ if(WIN32) ${SZIP_DLL} ${silo_test_output_dir}) endif() + # hdf5 if(HDF5_FOUND AND DEFINED HDF5_DLL) add_custom_command(TARGET copy_test_deps POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${HDF5_DLL} ${silo_test_output_dir}) endif() + # python + if(SILO_ENABLE_PYTHON_MODULE) + if(PYTHON_DLL) + add_custom_command(TARGET copy_test_deps POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${PYTHON_DLL} ${silo_test_output_dir}) + endif() + if(TARGET SiloPy) + add_custom_command(TARGET copy_test_deps POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + $ ${silo_test_output_dir}) + endif() + endif() + endif() ###------------------------------------------------------------------------------------- diff --git a/tools/python/CMakeLists.txt b/tools/python/CMakeLists.txt index feeffb62..b6fe7298 100644 --- a/tools/python/CMakeLists.txt +++ b/tools/python/CMakeLists.txt @@ -66,7 +66,7 @@ project(SiloPythonModule LANGUAGES CXX) # Python_add_library comes from CMake's FindPython package. # It automatically adds python includes/links to the target being created -Python_add_library(Silo MODULE +Python_add_library(SiloPy MODULE pydbfile.cpp pydbtoc.cpp pysilo.cpp) @@ -79,16 +79,17 @@ else() set(mod_dest lib) endif() -set_target_properties(Silo PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${Silo_BINARY_DIR}/${mod_dest}) +set_target_properties(SiloPy PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${Silo_BINARY_DIR}/${mod_dest} + OUTPUT_NAME Silo) -add_dependencies(Silo silo) -target_link_libraries(Silo PRIVATE silo) -target_include_directories(Silo PRIVATE +add_dependencies(SiloPy silo) +target_link_libraries(SiloPy PRIVATE silo) +target_include_directories(SiloPy PRIVATE ${Silo_SOURCE_DIR}/src/silo ${silo_build_include_dir}) -install(TARGETS Silo DESTINATION ${mod_dest} EXPORT ${silo_targets_name} +install(TARGETS SiloPy DESTINATION ${mod_dest} EXPORT ${silo_targets_name} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) @@ -97,7 +98,8 @@ install(FILES s2ex.py DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ) -add_custom_command(TARGET Silo POST_BUILD + +add_custom_command(TARGET SiloPy POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/s2ex.py ${Silo_BINARY_DIR}/bin/$<$:$>/) From 1c52660105eaf07cbb45de15cf90461ce1903d99 Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Tue, 3 Sep 2024 11:56:55 -0700 Subject: [PATCH 3/4] WS change to trigger CI --- tools/python/pysilo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/python/pysilo.cpp b/tools/python/pysilo.cpp index 213631ec..b33a432f 100644 --- a/tools/python/pysilo.cpp +++ b/tools/python/pysilo.cpp @@ -48,6 +48,7 @@ // National Security, LLC, and shall not be used for advertising or // product endorsement purposes. + #include #include #include "pydbfile.h" From db877f8b7ab0409cb1217fdaa3bdbe14e0d6d54a Mon Sep 17 00:00:00 2001 From: Kathleen Biagas Date: Wed, 4 Sep 2024 09:20:29 -0700 Subject: [PATCH 4/4] Update steppenwolf.cmake uncomment the option for enabling silex --- config-site/steppenwolf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-site/steppenwolf.cmake b/config-site/steppenwolf.cmake index 0f254579..7caeb4ca 100644 --- a/config-site/steppenwolf.cmake +++ b/config-site/steppenwolf.cmake @@ -86,7 +86,7 @@ silo_option_default(VAR SILO_QT6_DIR VALUE ${TP_DIR}/Qt/6.4.2/lib/cmake/Qt6) silo_option_default(VAR SILO_PYTHON_DIR VALUE ${TP_DIR}/python/3.9.18) # enable silex -#silo_option_default(VAR SILO_ENABLE_SILEX VALUE ON TYPE BOOL) +silo_option_default(VAR SILO_ENABLE_SILEX VALUE ON TYPE BOOL) # disable fortran silo_option_default(VAR SILO_ENABLE_FORTRAN VALUE OFF TYPE BOOL)