Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/workflows/windows_debug_vs2026_modules.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Copyright (c) 2020 Mikael Simberg
# Copyright (c) 2024-2026 The STE||AR Group
#
# SPDX-License-Identifier: BSL-1.0
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

name: Windows CI (Debug, VS2026 toolset, C++20 Modules)

on: [pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: windows-2025-vs2026

steps:
- uses: actions/checkout@v6
- uses: lukka/get-cmake@v4.3.2

- name: Install dependencies
run: |
md C:\projects
$client = new-object System.Net.WebClient
$client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
- name: Configure
shell: bash
run: |
cmake . -Bbuild -G'Visual Studio 18 2026' \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_TOOLCHAIN_FILE='C:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake' \
-DHPX_WITH_FETCH_ASIO=ON \
-DHPX_WITH_ASIO_TAG=asio-1-38-0 \
-DHPX_WITH_EXAMPLES=OFF \
-DHPX_WITH_TESTS=OFF \
-DHPX_WITH_TESTS_EXAMPLES=OFF \
-DHPX_WITH_DEPRECATION_WARNINGS=OFF \
-DHPX_WITH_TESTS_MAX_THREADS_PER_LOCALITY=2 \
-DHPX_COROUTINES_WITH_SWAP_CONTEXT_EMULATION=ON \
-DHPX_WITH_VERIFY_LOCKS=ON \
-DHPX_WITH_VERIFY_LOCKS_BACKTRACE=ON \
-DHPX_WITH_CHECK_MODULE_DEPENDENCIES=ON \
-DHPX_WITH_CXX_MODULES=ON \
-DHPX_WITH_DATAPAR=ON \
-DHPX_WITH_DATAPAR_BACKEND=EMULATE
- name: Build
shell: bash
run: |
cmake --build build --config Debug --target ALL_BUILD \
-- -maxcpucount:2 -verbosity:minimal -nologo
- name: Install
shell: bash
run: |
cmake --install build --config Debug
# - name: Test
# run: |
# $exclude_regex = & "$env:GITHUB_WORKSPACE/.github/ci-scripts/generate_ctest_exclude_regex.ps1" `
# "$env:GITHUB_WORKSPACE/.github/workflows/tests.examples.targets"
# cd build
# ctest `
# --output-on-failure `
# --build-config Debug `
# --tests-regex tests.examples `
# --exclude-regex $exclude_regex
18 changes: 10 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -293,17 +293,19 @@ if(HPX_WITH_DOCUMENTATION)
endif()

if(WIN32)
set(HPX_WITH_PSEUDO_DEPENDENCIES
OFF
CACHE INTERNAL "" FORCE
)
set(HPX_WITH_PSEUDO_DEPENDENCIES_DEFAULT OFF)
else()
set(HPX_WITH_PSEUDO_DEPENDENCIES
ON
CACHE INTERNAL "" FORCE
)
set(HPX_WITH_PSEUDO_DEPENDENCIES_DEFAULT ON)
endif()

hpx_option(
HPX_WITH_PSEUDO_DEPENDENCIES
BOOL
"Turn compiler warnings into errors (default: ${HPX_WITH_PSEUDO_DEPENDENCIES_DEFAULT})"
${HPX_WITH_PSEUDO_DEPENDENCIES_DEFAULT}
ADVANCED
)

hpx_option(
HPX_WITH_UNITY_BUILD BOOL
"Enable unity build for certain build targets (default OFF)" OFF ADVANCED
Expand Down
16 changes: 14 additions & 2 deletions cmake/HPX_SetupAsio.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,20 @@ elseif(NOT TARGET Asio::asio AND NOT HPX_FIND_PACKAGE)
set(Asio_ROOT ${asio_SOURCE_DIR})

add_library(asio INTERFACE)

# convert ASIO tag into CMake version
string(REGEX REPLACE "asio-([0-9]+)-([0-9]+)-([0-9]+)" "\\1.\\2.\\3" VERSION
"${HPX_WITH_ASIO_TAG}"
)

# starting v1.37.0 ASIO has changed its directory structure
set(asio_base_directory ${Asio_ROOT}/asio/include)
if(VERSION VERSION_GREATER "1.36.0")
set(asio_base_directory ${Asio_ROOT}/include)
endif()

target_include_directories(
asio SYSTEM INTERFACE $<BUILD_INTERFACE:${Asio_ROOT}/asio/include>
asio SYSTEM INTERFACE $<BUILD_INTERFACE:${asio_base_directory}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

Expand All @@ -58,7 +70,7 @@ elseif(NOT TARGET Asio::asio AND NOT HPX_FIND_PACKAGE)
)

install(
DIRECTORY ${Asio_ROOT}/asio/include/
DIRECTORY ${asio_base_directory}/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT core
FILES_MATCHING
Expand Down
24 changes: 12 additions & 12 deletions cmake/HPX_SetupTarget.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -264,23 +264,23 @@ function(hpx_setup_target target)
target_compile_definitions(
${target} PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)

# If modules are enabled, Clang emits DWARF v5, which requires using lld
# instead of ld.
if((NOT MSVC)
AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
AND (NOT (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang"))
)
get_target_property(_type ${target} TYPE)
if((_type STREQUAL "SHARED_LIBRARY") OR (_type STREQUAL "EXECUTABLE"))
target_link_options(${target} PRIVATE "-fuse-ld=lld")
endif()
endif()
endif()

set_target_properties(${target} PROPERTIES CXX_SCAN_FOR_MODULES OFF)
endif()

# Newer Clang emits DWARF v5, which requires using lld instead of ld.
if(HPX_WITH_CXX_MODULES
AND (NOT MSVC)
AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
AND (NOT (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang"))
)
get_target_property(_type ${target} TYPE)
if((_type STREQUAL "SHARED_LIBRARY") OR (_type STREQUAL "EXECUTABLE"))
target_link_options(${target} PRIVATE "-fuse-ld=lld")
endif()
endif()

get_target_property(target_EXCLUDE_FROM_ALL ${target} EXCLUDE_FROM_ALL)

if(target_EXPORT AND NOT target_EXCLUDE_FROM_ALL)
Expand Down
10 changes: 10 additions & 0 deletions components/component_storage/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,15 @@ add_hpx_pseudo_dependencies(
components.component_storage component_storage_component
)

# MSVC V1951 and V1952 exposes ICE compiling this in C++20 module mode
if(HPX_WITH_CXX_MODULES
AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
AND ((MSVC_VERSION EQUAL 1951) OR (MSVC_VERSION EQUAL 1952))
)
target_compile_definitions(
component_storage_component PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)
endif()

add_subdirectory(tests)
add_subdirectory(examples)
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
#include <hpx/modules/errors.hpp>
#include <hpx/modules/functional.hpp>
#include <hpx/modules/naming_base.hpp>
#include <hpx/runtime_distributed/runtime_support.hpp>
#include <hpx/runtime_distributed/server/migrate_component.hpp>
#include <hpx/modules/runtime_distributed.hpp>

#include <hpx/components/component_storage/export_definitions.hpp>
#include <hpx/components/component_storage/server/component_storage.hpp>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

#include <hpx/config.hpp>
#include <hpx/components/component_storage/server/component_storage.hpp>
#include <hpx/modules/errors.hpp>
#include <hpx/runtime_distributed/find_localities.hpp>
#include <hpx/modules/runtime_distributed.hpp>

#include <hpx/components/component_storage/server/component_storage.hpp>

#include <vector>

Expand Down
10 changes: 10 additions & 0 deletions components/containers/partitioned_vector/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,15 @@ add_hpx_pseudo_dependencies(
components.containers.partitioned_vector partitioned_vector_component
)

# MSVC V1951 and V1952 exposes ICE compiling this in C++20 module mode
if(HPX_WITH_CXX_MODULES
AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
AND ((MSVC_VERSION EQUAL 1951) OR (MSVC_VERSION EQUAL 1952))
)
target_compile_definitions(
partitioned_vector_component PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)
endif()

add_subdirectory(tests)
add_subdirectory(examples)
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
#pragma once

#include <hpx/collectives/spmd_block.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/type_support.hpp>

#include <hpx/components/containers/partitioned_vector/partitioned_vector.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_view.hpp>
#include <hpx/modules/type_support.hpp>
#include <hpx/runtime_distributed/find_all_localities.hpp>

#include <algorithm>
#include <array>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
#include <hpx/modules/distribution_policies.hpp>
#include <hpx/modules/functional.hpp>
#include <hpx/modules/runtime_components.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/type_support.hpp>
#include <hpx/runtime_distributed/copy_component.hpp>

#include <hpx/components/containers/partitioned_vector/export_definitions.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_component_decl.hpp>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <hpx/modules/errors.hpp>
#include <hpx/modules/execution.hpp>
#include <hpx/modules/runtime_components.hpp>
#include <hpx/runtime_distributed/copy_component.hpp>
#include <hpx/modules/runtime_distributed.hpp>

#include <hpx/components/containers/partitioned_vector/partitioned_vector_component_impl.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_decl.hpp>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@
#include <hpx/config.hpp>
#if !defined(HPX_COMPUTE_DEVICE_CODE)
#include <hpx/collectives/spmd_block.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_local_view.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_view.hpp>
#include <hpx/hpx_main.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/testing.hpp>

#include <hpx/include/partitioned_vector_predef.hpp>
#include <hpx/include/partitioned_vector_view.hpp>
#include <hpx/modules/testing.hpp>
#include <hpx/runtime_distributed/find_all_localities.hpp>

#include <hpx/components/containers/partitioned_vector/partitioned_vector_local_view.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_view.hpp>

#include <cstddef>
#include <string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
#include <hpx/config.hpp>
#if !defined(HPX_COMPUTE_DEVICE_CODE)
#include <hpx/collectives/spmd_block.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_local_view.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_view.hpp>
#include <hpx/hpx_main.hpp>
#include <hpx/include/partitioned_vector_predef.hpp>
#include <hpx/include/partitioned_vector_view.hpp>
#include <hpx/modules/executors.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/testing.hpp>
#include <hpx/runtime_distributed/find_all_localities.hpp>

#include <hpx/include/partitioned_vector_predef.hpp>
#include <hpx/include/partitioned_vector_view.hpp>

#include <hpx/components/containers/partitioned_vector/partitioned_vector_local_view.hpp>
#include <hpx/components/containers/partitioned_vector/partitioned_vector_view.hpp>

#include <cstddef>
#include <string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@
#if !defined(HPX_COMPUTE_DEVICE_CODE)
#include <hpx/collectives/spmd_block.hpp>
#include <hpx/hpx_main.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/testing.hpp>

#include <hpx/include/partitioned_vector_predef.hpp>
#include <hpx/include/partitioned_vector_view.hpp>
#include <hpx/modules/testing.hpp>
#include <hpx/runtime_distributed/find_all_localities.hpp>

#include <cstddef>
#include <string>
Expand Down
10 changes: 10 additions & 0 deletions components/containers/unordered/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,15 @@ add_hpx_component(

add_hpx_pseudo_dependencies(components.containers.unordered unordered_component)

# MSVC V1951 and V1952 exposes ICE compiling this in C++20 module mode
if(HPX_WITH_CXX_MODULES
AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
AND ((MSVC_VERSION EQUAL 1951) OR (MSVC_VERSION EQUAL 1952))
)
target_compile_definitions(
unordered_component PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)
endif()

add_subdirectory(tests)
add_subdirectory(examples)
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
#include <hpx/modules/distribution_policies.hpp>
#include <hpx/modules/functional.hpp>
#include <hpx/modules/runtime_components.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/serialization.hpp>
#include <hpx/modules/type_support.hpp>
#include <hpx/runtime_distributed/copy_component.hpp>

#include <hpx/components/containers/unordered/partition_unordered_map_component.hpp>
#include <hpx/components/containers/unordered/unordered_map_segmented_iterator.hpp>
Expand Down
10 changes: 10 additions & 0 deletions components/iostreams/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,15 @@ target_compile_definitions(

add_hpx_pseudo_dependencies(components.iostreams iostreams_component)

# MSVC V1951 and V1952 exposes ICE compiling this in C++20 module mode
if(HPX_WITH_CXX_MODULES
AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
AND ((MSVC_VERSION EQUAL 1951) OR (MSVC_VERSION EQUAL 1952))
)
target_compile_definitions(
iostreams_component PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)
endif()

add_subdirectory(tests)
add_subdirectory(examples)
2 changes: 1 addition & 1 deletion components/iostreams/src/server/output_stream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
#include <hpx/config.hpp>
#include <hpx/modules/functional.hpp>
#include <hpx/modules/io_service.hpp>
#include <hpx/modules/runtime_distributed.hpp>
#include <hpx/modules/serialization.hpp>
#include <hpx/modules/threading_base.hpp>
#include <hpx/runtime_distributed/runtime_fwd.hpp>

#include <hpx/components/iostreams/server/data_buffer.hpp>
#include <hpx/components/iostreams/server/output_stream.hpp>
Expand Down
2 changes: 1 addition & 1 deletion components/iostreams/src/standard_streams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#include <hpx/modules/execution.hpp>
#include <hpx/modules/functional.hpp>
#include <hpx/modules/logging.hpp>
#include <hpx/runtime_distributed/runtime_fwd.hpp>
#include <hpx/modules/runtime_distributed.hpp>

#include <hpx/components/iostreams/ostream.hpp>
#include <hpx/components/iostreams/standard_streams.hpp>
Expand Down
10 changes: 10 additions & 0 deletions components/process/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,5 +138,15 @@ target_compile_definitions(process_component PRIVATE HPX_PROCESS_EXPORTS)

add_hpx_pseudo_dependencies(components.process process_component)

# MSVC V1951 and V1952 exposes ICE compiling this in C++20 module mode
if(HPX_WITH_CXX_MODULES
AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
AND ((MSVC_VERSION EQUAL 1951) OR (MSVC_VERSION EQUAL 1952))
)
target_compile_definitions(
process_component PRIVATE HPX_HAVE_FORCE_NO_CXX_MODULES
)
endif()

add_subdirectory(tests)
add_subdirectory(examples)
Original file line number Diff line number Diff line change
Expand Up @@ -897,7 +897,7 @@ An example of how to use the ``partitioned_vector`` container
with distribution policies would be::

#include <hpx/include/partitioned_vector.hpp>
#include <hpx/runtime_distributed/find_localities.hpp>
#include <hpx/modules/runtime_distributed.hpp>

// The following code generates all necessary boiler plate to enable the
// remote creation of 'partitioned_vector' segments
Expand Down
Loading
Loading