Skip to content

Commit

Permalink
Update to HELICS v2.3.0 (#17)
Browse files Browse the repository at this point in the history
Update to HELICS v2.3.0
  • Loading branch information
kdheepak authored Nov 15, 2019
2 parents 2c90a28 + fd500c4 commit 93110f7
Show file tree
Hide file tree
Showing 11 changed files with 237 additions and 188 deletions.
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

0 comments on commit 93110f7

Please sign in to comment.