Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to HELICS v2.3.0 #17

Merged
merged 3 commits into from
Nov 15, 2019
Merged
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
2 changes: 1 addition & 1 deletion deps/build.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build the dependencies
Mod = @eval module Anon end
Mod.include("build_ZMQ.v4.3.1.jl")
Mod.include("build_libhelicsSharedLib.v2.2.2.jl")
Mod.include("build_libhelicsSharedLib.v2.3.0.jl")

57 changes: 0 additions & 57 deletions deps/build_libhelicsSharedLib.v2.2.2.jl

This file was deleted.

57 changes: 57 additions & 0 deletions deps/build_libhelicsSharedLib.v2.3.0.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using BinaryProvider # requires BinaryProvider 0.3.0 or later

# Parse some basic command-line arguments
const verbose = "--verbose" in ARGS
const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr")))
products = [
LibraryProduct(prefix, ["libhelicsSharedLib"], :libhelicsSharedLib),
]

# Download binaries from hosted location
bin_prefix = "https://github.com/GMLC-TDC/HELICSBuilder/releases/download/v2.3.0"

# Listing of files generated by BinaryBuilder:
download_info = Dict(
Linux(:aarch64, libc=:glibc, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.aarch64-linux-gnu-gcc7.tar.gz", "2479213ebdf0dec96912bb7ab67f3fc451be5c01657d5d04725e178245b813c4"),
Linux(:aarch64, libc=:glibc, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.aarch64-linux-gnu-gcc8.tar.gz", "9e71d255f654eb0a1202214268eee4effd248706287f6372daf71690e6e96ad7"),
Linux(:aarch64, libc=:musl, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.aarch64-linux-musl-gcc7.tar.gz", "9f683ab8f01168011ed191ad34e915043048d5f1dc4cddd1d58f564523cfcd86"),
Linux(:aarch64, libc=:musl, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.aarch64-linux-musl-gcc8.tar.gz", "3226531ddf33d7993de8a94efebf3d4b27d4cb573520b03ab7db3909dccd02e9"),
Linux(:armv7l, libc=:glibc, call_abi=:eabihf, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.arm-linux-gnueabihf-gcc7.tar.gz", "2a24a02a238b98d9deb92d328224d1033d604ccc45207cce1425e034de203df9"),
Linux(:armv7l, libc=:glibc, call_abi=:eabihf, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.arm-linux-gnueabihf-gcc8.tar.gz", "f00aa104df7a2519c9cf0ebc05d55c05b276e8c5a02c890c2c2696edc21dada0"),
Linux(:armv7l, libc=:musl, call_abi=:eabihf, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.arm-linux-musleabihf-gcc7.tar.gz", "421aaeb0267a2803ac002520ab682fe4ee9687a2a2d92e844e711d44f881c3cf"),
Linux(:armv7l, libc=:musl, call_abi=:eabihf, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.arm-linux-musleabihf-gcc8.tar.gz", "259d2f68689ea096c424b55b88222d96bd36aad5289ba0f9cc73706ee5d9c856"),
Linux(:i686, libc=:glibc, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.i686-linux-gnu-gcc7.tar.gz", "66820dd0eaacdd6e90e7c45cac5d20b6b1298bb22c6a33ca6ca635071b4f50db"),
Linux(:i686, libc=:glibc, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.i686-linux-gnu-gcc8.tar.gz", "9b976365906c47e47094094a373a43a54c78903e92293298d07f1e617be4ffd6"),
Linux(:i686, libc=:musl, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.i686-linux-musl-gcc7.tar.gz", "49614b1a32db889bff71463e4420167b46e662749f612439cb3ced5e6d1d6ebe"),
Linux(:i686, libc=:musl, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.i686-linux-musl-gcc8.tar.gz", "80c8e6c5b800bba8e6a9868db98e818895ac6a5b6738a892b3c28a3304120973"),
Linux(:powerpc64le, libc=:glibc, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.powerpc64le-linux-gnu-gcc7.tar.gz", "9d63e2344141fc37e007c7d63fd93c97a4c97453625ec2462ba594db1bc7f495"),
Linux(:powerpc64le, libc=:glibc, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.powerpc64le-linux-gnu-gcc8.tar.gz", "b884bc78954ce102f8828b43c4112ced7d22fefa514a7c3f709a0036bd993103"),
MacOS(:x86_64, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-apple-darwin14-gcc7.tar.gz", "bad98d9bee1fb87b2d5df2db34ac3461e2fb555eb713e9a87f236c48fa17bd60"),
MacOS(:x86_64, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-apple-darwin14-gcc8.tar.gz", "ae0f1597e9906e8f024a4ae503c43dd24ec39ce8af25c6e449b2d65eb1d915db"),
Linux(:x86_64, libc=:glibc, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-linux-gnu-gcc7.tar.gz", "0c2728c7a4635244b7c24ecd0cbcc6739ecdabb712307ee89a8fbb3da48276be"),
Linux(:x86_64, libc=:glibc, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-linux-gnu-gcc8.tar.gz", "39b1ac0b0e6ff9848c8497144f2fe83f96cff0054073198e92c9d9f5237038d6"),
Linux(:x86_64, libc=:musl, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-linux-musl-gcc7.tar.gz", "9593958ade5e0e689fcce19cd0436e61d65f2db2cab4d40ed30d423db96ef012"),
Linux(:x86_64, libc=:musl, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-linux-musl-gcc8.tar.gz", "dea3206779ccb310dc4f674dba568791945083bad8ef5f9cd91ffb7bc8ccbddb"),
Windows(:x86_64, compiler_abi=CompilerABI(:gcc7)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-w64-mingw32-gcc7.tar.gz", "f74f0fe20116b76502e50bce47885d230d1b501a4c9817653e7286b35719c8dd"),
Windows(:x86_64, compiler_abi=CompilerABI(:gcc8)) => ("$bin_prefix/libhelicsSharedLib.v2.3.0.x86_64-w64-mingw32-gcc8.tar.gz", "fb3264a7e92497f5dee0607765031672e8ae0ca5b7393729b281f83eb02893dc"),
)

# Install unsatisfied or updated dependencies:
unsatisfied = any(!satisfied(p; verbose=verbose) for p in products)
dl_info = choose_download(download_info, platform_key_abi())
if dl_info === nothing && unsatisfied
# If we don't have a compatible .tar.gz to download, complain.
# Alternatively, you could attempt to install from a separate provider,
# build from source or something even more ambitious here.
error("Your platform (\"$(Sys.MACHINE)\", parsed as \"$(triplet(platform_key_abi()))\") is not supported by this package!")
end

# If we have a download, and we are unsatisfied (or the version we're
# trying to install is not itself installed) then load it up!
if unsatisfied || !isinstalled(dl_info...; prefix=prefix)
# Download and install binaries
install(dl_info...; prefix=prefix, force=true, verbose=verbose)
end

# Write out a deps.jl file that will contain mappings for our products
write_deps_file(joinpath(@__DIR__, "deps.jl"), products, verbose=verbose)
25 changes: 20 additions & 5 deletions scripts/generate.jl
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
using Clang

# LIBCLANG_HEADERS are those headers to be wrapped.
const LIBCLANG_INCLUDE = joinpath(@__DIR__, "../deps/usr/include/helics/shared_api_library") |> normpath
const LIBCLANG_HEADERS = [joinpath(LIBCLANG_INCLUDE, header) for header in readdir(LIBCLANG_INCLUDE) if endswith(header, ".h")]
const LIBHELICS_INCLUDE = [
joinpath(@__DIR__, "../deps/usr/include/helics/shared_api_library") |> normpath,
joinpath(@__DIR__, "../deps/usr/include/helics") |> normpath
]

wc = init(; headers = LIBCLANG_HEADERS,
const LIBHELICS_HEADERS = String[]

for folder in LIBHELICS_INCLUDE
for header in readdir(folder)
if endswith(header, ".h")
push!(LIBHELICS_HEADERS, joinpath(folder, header))
end
end
end

wc = init(; headers = LIBHELICS_HEADERS,
output_file = joinpath(@__DIR__, "../src/lib.jl"),
common_file = joinpath(@__DIR__, "../src/common.jl"),
clang_includes = vcat(LIBCLANG_INCLUDE, CLANG_INCLUDE),
clang_args = ["-I", joinpath(LIBCLANG_INCLUDE, "..")],
clang_includes = vcat(LIBHELICS_INCLUDE..., CLANG_INCLUDE),
clang_args = [
"-I", joinpath(LIBHELICS_INCLUDE[1], ".."),
"-I", joinpath(LIBHELICS_INCLUDE[2], ".."),
],
header_wrapped = (root, current)->root == current,
header_library = x->"libhelicsSharedLib",
clang_diagnostics = true,
Expand Down
2 changes: 2 additions & 0 deletions src/HELICS.jl
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ module Lib

end

const HELICS_VERSION = VersionNumber(split(Lib.HELICS_VERSION_STRING)[1])

include("wrapper.jl")

include("utils.jl")
Expand Down
8 changes: 8 additions & 0 deletions src/api.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2516,3 +2516,11 @@ function helicsFederateInfoSetBrokerInitString(fi::FederateInfo, brokerInit::Str
Utils.@invoke_and_check Lib.helicsFederateInfoSetBrokerInitString(fi::FederateInfo, brokerInit)
end

function helicsBrokerMakeConnections(broker::Broker, file::String)
Utils.@invoke_and_check Lib.helicsBrokerMakeConnections(broker, file)
end

function helicsCoreMakeConnections(core::Core, file::String)
Utils.@invoke_and_check Lib.helicsCoreMakeConnections(core, file)
end

120 changes: 120 additions & 0 deletions src/common.jl
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,123 @@ end

const HELICS_DEPRECATED_EXPORT = HELICS_EXPORT
const HELICS_DEPRECATED_NO_EXPORT = HELICS_NO_EXPORT

@cenum helics_data_type::UInt32 begin
helics_data_type_string = 0
helics_data_type_double = 1
helics_data_type_int = 2
helics_data_type_complex = 3
helics_data_type_vector = 4
helics_data_type_complex_vector = 5
helics_data_type_named_point = 6
helics_data_type_boolean = 7
helics_data_type_time = 8
helics_data_type_raw = 25
helics_data_type_any = 25262
end


const helics_data_type_char = helics_data_type_string

@cenum helics_core_type::UInt32 begin
helics_core_type_default = 0
helics_core_type_zmq = 1
helics_core_type_mpi = 2
helics_core_type_test = 3
helics_core_type_interprocess = 4
helics_core_type_ipc = 5
helics_core_type_tcp = 6
helics_core_type_udp = 7
helics_core_type_zmq_test = 10
helics_core_type_nng = 9
helics_core_type_tcp_ss = 11
helics_core_type_http = 12
helics_core_type_websocket = 14
helics_core_type_inproc = 18
end

@cenum helics_federate_flags::UInt32 begin
helics_flag_observer = 0
helics_flag_uninterruptible = 1
helics_flag_interruptible = 2
helics_flag_source_only = 4
helics_flag_only_transmit_on_change = 6
helics_flag_only_update_on_change = 8
helics_flag_wait_for_current_time_update = 10
helics_flag_restrictive_time_policy = 11
helics_flag_rollback = 12
helics_flag_forward_compute = 14
helics_flag_realtime = 16
helics_flag_single_thread_federate = 27
helics_flag_delay_init_entry = 45
helics_flag_enable_init_entry = 47
helics_flag_ignore_time_mismatch_warnings = 67
end

@cenum helics_log_levels::Int32 begin
helics_log_level_no_print = -1
helics_log_level_error = 0
helics_log_level_warning = 1
helics_log_level_summary = 2
helics_log_level_connections = 3
helics_log_level_interfaces = 4
helics_log_level_timing = 5
helics_log_level_data = 6
helics_log_level_trace = 7
end

@cenum helics_error_types::Int32 begin
helics_ok = 0
helics_error_registration_failure = -1
helics_error_connection_failure = -2
helics_error_invalid_object = -3
helics_error_invalid_argument = -4
helics_error_discard = -5
helics_error_system_failure = -6
helics_warning = -8
helics_error_invalid_state_transition = -9
helics_error_invalid_function_call = -10
helics_error_execution_failure = -14
helics_error_insufficient_space = -18
helics_error_other = -101
helics_error_external_type = -203
end

@cenum helics_properties::UInt32 begin
helics_property_time_delta = 137
helics_property_time_period = 140
helics_property_time_offset = 141
helics_property_time_rt_lag = 143
helics_property_time_rt_lead = 144
helics_property_time_rt_tolerance = 145
helics_property_time_input_delay = 148
helics_property_time_output_delay = 150
helics_property_int_max_iterations = 259
helics_property_int_log_level = 271
helics_property_int_file_log_level = 272
helics_property_int_console_log_level = 274
end

@cenum helics_handle_options::UInt32 begin
helics_handle_option_connection_required = 397
helics_handle_option_connection_optional = 402
helics_handle_option_single_connection_only = 407
helics_handle_option_multiple_connections_allowed = 409
helics_handle_option_buffer_data = 411
helics_handle_option_strict_type_checking = 414
helics_handle_option_ignore_unit_mismatch = 447
helics_handle_option_only_transmit_on_change = 6
helics_handle_option_only_update_on_change = 8
helics_handle_option_ignore_interrupts = 475
end

@cenum helics_filter_type::UInt32 begin
helics_filter_type_custom = 0
helics_filter_type_delay = 1
helics_filter_type_random_delay = 2
helics_filter_type_random_drop = 3
helics_filter_type_reroute = 4
helics_filter_type_clone = 5
helics_filter_type_firewall = 6
end

Loading