diff --git a/gen/libpng/generator.toml b/gen/libpng/generator.toml index 87f1c01..862e8e5 100644 --- a/gen/libpng/generator.toml +++ b/gen/libpng/generator.toml @@ -1,6 +1,6 @@ [general] library_name = "libpng" -output_file_path = "libpng.jl" +output_file_path = "libpng_api.jl" prologue_file_path = "prologue.jl" use_julia_native_enum_type = false print_using_CEnum = false diff --git a/gen/libpng/libpng.jl b/gen/libpng/libpng_api.jl similarity index 99% rename from gen/libpng/libpng.jl rename to gen/libpng/libpng_api.jl index 6eb643e..da00fca 100644 --- a/gen/libpng/libpng.jl +++ b/gen/libpng/libpng_api.jl @@ -654,7 +654,7 @@ function png_get_error_ptr(png_ptr) end function png_set_write_fn(png_ptr, io_ptr, write_data_fn, output_flush_fn) - ccall((:png_set_write_fn, libpng), Cvoid, (png_structrp, png_voidp, png_rw_ptr, png_flush_ptr), png_ptr, io_ptr, write_data_fn, output_flush_fn) + ccall((:png_set_write_fn, libpng), Cvoid, (png_structrp, Any, png_rw_ptr, png_flush_ptr), png_ptr, io_ptr, write_data_fn, output_flush_fn) end function png_set_read_fn(png_ptr, io_ptr, read_data_fn) diff --git a/gen/libpng/wrap_libpng.jl b/gen/libpng/wrap_libpng.jl index 52aa162..8b3ee55 100644 --- a/gen/libpng/wrap_libpng.jl +++ b/gen/libpng/wrap_libpng.jl @@ -1,6 +1,19 @@ using Clang.Generators using libpng_jll +function rewrite(ex::Expr) + if Meta.isexpr(ex, :function) && ex.args[1].args[1] == :png_set_write_fn + ex = quote + function png_set_write_fn(png_ptr, io_ptr, write_data_fn, output_flush_fn) + ccall((:png_set_write_fn, libpng), Cvoid, (png_structrp, Any, png_rw_ptr, png_flush_ptr), png_ptr, io_ptr, write_data_fn, output_flush_fn) + end + end |> Base.remove_linenums! + ex.args[] + else + ex + end +end + cd(@__DIR__) include_dir = joinpath(libpng_jll.artifact_dir, "include") |> normpath @@ -22,4 +35,10 @@ headers = [joinpath(header_dir, "png.h")] ctx = create_context(headers, args, options) # run generator -build!(ctx) \ No newline at end of file +build!(ctx, BUILDSTAGE_NO_PRINTING) +for node in get_nodes(ctx.dag) + for (i, expr) in enumerate(node.exprs) + node.exprs[i] = rewrite(expr) + end +end +build!(ctx, BUILDSTAGE_PRINTING_ONLY) diff --git a/src/PNGFiles.jl b/src/PNGFiles.jl index fa2f964..14fc249 100644 --- a/src/PNGFiles.jl +++ b/src/PNGFiles.jl @@ -9,7 +9,7 @@ using libpng_jll libpng_wrap_dir = joinpath(@__DIR__, "..", "gen", "libpng") using CEnum -include(joinpath(libpng_wrap_dir, "libpng.jl")) +include(joinpath(libpng_wrap_dir, "libpng_api.jl")) const readcallback_c = Ref{Ptr{Cvoid}}(C_NULL) const readcallback_iobuffer_c = Ref{Ptr{Cvoid}}(C_NULL)