Skip to content

Commit e52b2c2

Browse files
committed
Use rewrite! mechanism rather than patch
1 parent c084472 commit e52b2c2

File tree

4 files changed

+49
-62
lines changed

4 files changed

+49
-62
lines changed

src/libzstd/LibZstd.jl

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,9 @@ export Zstd_jll
55

66
using CEnum
77

8-
const ZDICTLIB_VISIBILITY = nothing
9-
const ZSTDLIB_VISIBILITY = nothing
10-
const ZSTDERRORLIB_VISIBILITY = nothing
118
const INT_MAX = typemax(Cint)
129

13-
ZSTD_LIB_VERSION = quote
14-
ZSTD_VERSION_MAJOR, ZSTD_VERSION_MINOR, ZSTD_VERSION_RELEASE
15-
end
16-
17-
function ZSTD_EXPAND_AND_QUOTE(expr)
18-
v = eval(expr)
19-
join(string.(v),".")
20-
end
10+
ZSTD_EXPAND_AND_QUOTE(expr) = string(expr)
2111

2212
function ZDICT_trainFromBuffer(dictBuffer, dictBufferCapacity, samplesBuffer, samplesSizes, nbSamples)
2313
ccall((:ZDICT_trainFromBuffer, libzstd), Csize_t, (Ptr{Cvoid}, Csize_t, Ptr{Cvoid}, Ptr{Csize_t}, Cuint), dictBuffer, dictBufferCapacity, samplesBuffer, samplesSizes, nbSamples)
@@ -982,11 +972,11 @@ function ZSTD_getErrorString(code)
982972
ccall((:ZSTD_getErrorString, libzstd), Ptr{Cchar}, (ZSTD_ErrorCode,), code)
983973
end
984974

985-
# Skipping MacroDefinition: ZDICTLIB_VISIBILITY __attribute__ ( ( visibility ( "default" ) ) )
975+
const ZDICTLIB_VISIBILITY = nothing
986976

987977
const ZDICTLIB_API = ZDICTLIB_VISIBILITY
988978

989-
# Skipping MacroDefinition: ZSTDLIB_VISIBILITY __attribute__ ( ( visibility ( "default" ) ) )
979+
const ZSTDLIB_VISIBILITY = nothing
990980

991981
const ZSTDLIB_API = ZSTDLIB_VISIBILITY
992982

@@ -998,7 +988,7 @@ const ZSTD_VERSION_RELEASE = 0
998988

999989
const ZSTD_VERSION_NUMBER = ZSTD_VERSION_MAJOR * 100 * 100 + ZSTD_VERSION_MINOR * 100 + ZSTD_VERSION_RELEASE
1000990

1001-
# Skipping MacroDefinition: ZSTD_LIB_VERSION ZSTD_VERSION_MAJOR . ZSTD_VERSION_MINOR . ZSTD_VERSION_RELEASE
991+
const ZSTD_LIB_VERSION = VersionNumber(ZSTD_VERSION_MAJOR, ZSTD_VERSION_MINOR, ZSTD_VERSION_RELEASE)
1002992

1003993
const ZSTD_VERSION_STRING = ZSTD_EXPAND_AND_QUOTE(ZSTD_LIB_VERSION)
1004994

@@ -1028,8 +1018,11 @@ const ZSTD_WINDOWLOG_MAX_32 = 30
10281018

10291019
const ZSTD_WINDOWLOG_MAX_64 = 31
10301020

1031-
# Skipping MacroDefinition: ZSTD_WINDOWLOG_MAX ( ( int ) ( sizeof ( size_t ) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64 ) )
1032-
const ZSTD_WINDOWLOG_MAX = sizeof(Csize_t) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64
1021+
const ZSTD_WINDOWLOG_MAX = if sizeof(Csize_t) == 4
1022+
ZSTD_WINDOWLOG_MAX_32
1023+
else
1024+
ZSTD_WINDOWLOG_MAX_64
1025+
end
10331026

10341027
const ZSTD_WINDOWLOG_MIN = 10
10351028

@@ -1045,7 +1038,11 @@ const ZSTD_CHAINLOG_MAX_32 = 29
10451038

10461039
const ZSTD_CHAINLOG_MAX_64 = 30
10471040

1048-
# Skipping MacroDefinition: ZSTD_CHAINLOG_MAX ( ( int ) ( sizeof ( size_t ) == 4 ? ZSTD_CHAINLOG_MAX_32 : ZSTD_CHAINLOG_MAX_64 ) )
1041+
const ZSTD_CHAINLOG_MAX = if sizeof(Csize_t) == 4
1042+
ZSTD_CHAINLOG_MAX_32
1043+
else
1044+
ZSTD_CHAINLOG_MAX_64
1045+
end
10491046

10501047
const ZSTD_CHAINLOG_MIN = ZSTD_HASHLOG_MIN
10511048

@@ -1135,7 +1132,7 @@ const ZSTD_d_forceIgnoreChecksum = ZSTD_d_experimentalParam3
11351132

11361133
const ZSTD_d_refMultipleDDicts = ZSTD_d_experimentalParam4
11371134

1138-
# Skipping MacroDefinition: ZSTDERRORLIB_VISIBILITY __attribute__ ( ( visibility ( "default" ) ) )
1135+
const ZSTDERRORLIB_VISIBILITY = nothing
11391136

11401137
const ZSTDERRORLIB_API = ZSTDERRORLIB_VISIBILITY
11411138

src/libzstd/generator.jl

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,36 @@ headers = [joinpath(include_dir, header) for header in readdir(include_dir) if e
1717
# create context
1818
ctx = create_context(headers, args, options)
1919

20-
# run generator
21-
build!(ctx)
22-
run(`git apply libzstd_clang_generated.patch`)
20+
# build without printing so we can do custom rewriting
21+
build!(ctx, BUILDSTAGE_NO_PRINTING)
22+
23+
# custom rewriter
24+
function rewrite!(e::Expr)
25+
if e.head == :struct && length(e.args) > 1 && (e.args[2] == :ZSTD_inBuffer_s || e.args[2] == :ZSTD_outBuffer_s)
26+
# Make Zstd_inBuffer and Zstd_outBuffer mutable
27+
e.args[1] = true
28+
end
29+
e
30+
end
31+
32+
function rewrite!(dag::ExprDAG)
33+
for node in get_nodes(dag)
34+
if node.id == :ZSTD_WINDOWLOG_MAX
35+
node.exprs[1].args[1] = :(const ZSTD_WINDOWLOG_MAX = sizeof(Csize_t) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64)
36+
elseif node.id == :ZSTD_CHAINLOG_MAX
37+
node.exprs[1].args[1] = :(const ZSTD_CHAINLOG_MAX = sizeof(Csize_t) == 4 ? ZSTD_CHAINLOG_MAX_32 : ZSTD_CHAINLOG_MAX_64)
38+
elseif node.id == :ZSTD_LIB_VERSION
39+
node.exprs[1].args[1] = :(const ZSTD_LIB_VERSION = VersionNumber(ZSTD_VERSION_MAJOR, ZSTD_VERSION_MINOR, ZSTD_VERSION_RELEASE))
40+
elseif node isa ExprNode{Generators.MacroUnsupported}
41+
node.exprs[1].args[1] = :(const $(node.id) = nothing)
42+
end
43+
for expr in get_exprs(node)
44+
rewrite!(expr)
45+
end
46+
end
47+
end
48+
49+
rewrite!(ctx.dag)
50+
51+
# print
52+
build!(ctx, BUILDSTAGE_PRINTING_ONLY)

src/libzstd/libzstd_clang_generated.patch

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/libzstd/prologue.jl

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
const ZDICTLIB_VISIBILITY = nothing
2-
const ZSTDLIB_VISIBILITY = nothing
3-
const ZSTDERRORLIB_VISIBILITY = nothing
41
const INT_MAX = typemax(Cint)
52

6-
ZSTD_LIB_VERSION = quote
7-
ZSTD_VERSION_MAJOR, ZSTD_VERSION_MINOR, ZSTD_VERSION_RELEASE
8-
end
9-
10-
function ZSTD_EXPAND_AND_QUOTE(expr)
11-
v = eval(expr)
12-
join(string.(v),".")
13-
end
3+
ZSTD_EXPAND_AND_QUOTE(expr) = string(expr)

0 commit comments

Comments
 (0)