From d7bfa2b9e9e11e8c84c2f300194d324ccaaa8f90 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Tue, 14 Jun 2022 16:29:26 +0200 Subject: [PATCH] Initial Clang.jl generator. --- gen/Manifest.toml | 189 +++++++++++++++++++++++++++++++++++++++++++++ gen/Project.toml | 5 ++ gen/generator.jl | 33 ++++++++ gen/generator.toml | 5 ++ 4 files changed, 232 insertions(+) create mode 100644 gen/Manifest.toml create mode 100644 gen/Project.toml create mode 100644 gen/generator.jl create mode 100644 gen/generator.toml diff --git a/gen/Manifest.toml b/gen/Manifest.toml new file mode 100644 index 0000000..7d49bf0 --- /dev/null +++ b/gen/Manifest.toml @@ -0,0 +1,189 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.7.2" +manifest_format = "2.0" +project_hash = "d8ce2a2484bedb9a6d42ae1bee9de87ea0617c47" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.CEnum]] +git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.2" + +[[deps.Clang]] +deps = ["CEnum", "Clang_jll", "Downloads", "Pkg", "TOML"] +git-tree-sha1 = "b6998b85ea2abbc8a02ca1ccca9438338ed5f8e5" +uuid = "40e3b903-d033-50b4-a0cc-940c62c95e31" +version = "0.15.8" + +[[deps.Clang_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll", "libLLVM_jll"] +git-tree-sha1 = "8cf7e67e264dedc5d321ec87e78525e958aea057" +uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" +version = "12.0.1+3" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[deps.HYPRE_jll]] +deps = ["Artifacts", "JLLWrappers", "LAPACK_jll", "Libdl", "MPICH_jll", "MicrosoftMPI_jll", "OpenBLAS_jll", "Pkg"] +git-tree-sha1 = "41194ae5709514e0ac07a9c9637d7c53844085a5" +uuid = "0a602bbd-b08b-5d75-8d32-0de6eef44785" +version = "2.23.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.4.1" + +[[deps.LAPACK_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg", "libblastrampoline_jll"] +git-tree-sha1 = "b1cccaf9742bb82f2b3de81c510688e491d6e922" +uuid = "51474c39-65e3-53ba-86ba-03b1b862ec14" +version = "3.9.0+0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MPIPreferences", "Pkg"] +git-tree-sha1 = "4d61a56bd6d57dd7f9920b882a210bb849cdf217" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "4.0.2+2" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "49f10d34284610c125421c7a4e6f913e4bc00897" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.3" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a16aa086d335ed7e0170c5265247db29172af2f9" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.3+2" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.3.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[deps.libLLVM_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/gen/Project.toml b/gen/Project.toml new file mode 100644 index 0000000..8300767 --- /dev/null +++ b/gen/Project.toml @@ -0,0 +1,5 @@ +[deps] +CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82" +Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31" +HYPRE_jll = "0a602bbd-b08b-5d75-8d32-0de6eef44785" +MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4" diff --git a/gen/generator.jl b/gen/generator.jl new file mode 100644 index 0000000..3da24d1 --- /dev/null +++ b/gen/generator.jl @@ -0,0 +1,33 @@ +using Clang.Generators +using HYPRE_jll, MPICH_jll + +cd(@__DIR__) + +hypre_include_dir = normpath(HYPRE_jll.artifact_dir, "include") +mpi_include_dir = normpath(MPICH_jll.artifact_dir, "include") + +options = load_options(joinpath(@__DIR__, "generator.toml")) + +args = get_default_args() +push!(args, "-I$(hypre_include_dir)") +push!(args, "-I$(mpi_include_dir)") + +# Compiler flags from Yggdrasil (??) +# https://github.com/JuliaPackaging/Yggdrasil/blob/9d131ba0e4aa393b00f4d71ef5a3f909419a70a7/H/HYPRE/build_tarballs.jl +push!(args, "-DHYPRE_ENABLE_SHARED=ON") +push!(args, "-DHYPRE_ENABLE_HYPRE_BLAS=ON") +push!(args, "-DHYPRE_ENABLE_HYPRE_LAPACK=ON") +push!(args, "-DHYPRE_ENABLE_CUDA_STREAMS=OFF") +push!(args, "-DHYPRE_ENABLE_CUSPARSE=OFF") +push!(args, "-DHYPRE_ENABLE_CURAND=OFF") + +headers = joinpath.(hypre_include_dir, [ + # "HYPRE.h", + # "HYPRE_utilities.h", + # "IJ_matrix.h", + "HYPRE_IJ_mv.h", +]) + +ctx = create_context(headers, args, options) + +build!(ctx) diff --git a/gen/generator.toml b/gen/generator.toml new file mode 100644 index 0000000..2e131d4 --- /dev/null +++ b/gen/generator.toml @@ -0,0 +1,5 @@ +[general] +library_name = "libHYPRE" +output_file_path = "libHYPRE.jl" +jll_pkg_name = "HYPRE_jll" +export_symbol_prefixes = []