forked from MiloszKrajewski/K4os.Compression.LZ4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.fsx
105 lines (82 loc) · 2.96 KB
/
build.fsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
open Fake
#r ".fake/FakeLib.dll"
#load "build.tools.fsx"
#load "sanitize.fsx"
let solutions = Proj.settings |> Config.keys "Build"
let packages = Proj.settings |> Config.keys "Pack"
//----
let clean () = !! "**/bin/" ++ "**/obj/" |> DeleteDirs
let restore () = solutions |> Seq.iter Proj.restore
let build () = solutions |> Seq.iter Proj.build
let test () = Proj.xtestAll ()
let release () = packages |> Proj.packMany
let publish apiKey = packages |> Seq.iter (Proj.publishNugetOrg apiKey)
//----
Target "Clean" (fun _ -> clean ())
Target "Restore" (fun _ -> restore ())
Target "Build" (fun _ -> build ())
Target "Rebuild" ignore
Target "Release" (fun _ -> release ())
Target "Test" (fun _ -> test ())
Target "Benchmark" (fun _ ->
getBuildParamOrDefault "args" ""
|> sprintf "run -p src/K4os.Compression.LZ4.Benchmarks -c Release -- %s"
|> Shell.run "dotnet"
)
Target "Release:Nuget" (fun _ -> Proj.settings |> Config.valueOrFail "nuget" "accessKey" |> publish)
Target "Sanitize" (fun _ ->
let rules = Sanitizer.basicTypes
let sanitize fn =
printfn "Processing: %s" fn
Sanitizer.sanitize (sprintf "./orig/lib/%s" fn) (sprintf "./src/sanitized/%s" fn) rules
sanitize "lz4.c"
sanitize "lz4hc.c"
sanitize "lz4opt.h"
sanitize "lz4frame.c"
)
let enusure7Zexe () =
if not (File.exists "./.tools/7za.exe") then
let zipFileUrl = "http://www.7-zip.org/a/7za920.zip"
let zipFileName = "./.tools/7za920.zip"
CreateDir "./.tools"
File.download zipFileName zipFileUrl
ZipHelper.Unzip "./.tools/" zipFileName
let ensureLZ4exe () =
if not (File.exists "./.tools/lz4.exe") then
let zipFileUrl = "https://github.com/lz4/lz4/releases/download/v1.8.1.2/lz4_v1_8_1_win64.zip"
let zipFile = "./.tools/lz4-1.8.1-win64.zip"
CreateDir "./.tools"
File.download zipFile zipFileUrl
ZipHelper.Unzip "./.tools/lz4" zipFile
"./.tools/lz4/lz4.exe" |> CopyFile "./.tools/lz4.exe"
DeleteDir "./.tools/lz4"
let uncorpus fn =
let dataFile = sprintf "./.corpus/%s" fn
if not (File.exists dataFile) then
let uri = sprintf "https://github.com/MiloszKrajewski/SilesiaCorpus/blob/master/%s.zip?raw=true" fn
dataFile |> directory |> CreateDir
let zipFile = sprintf "%s.zip" dataFile
File.download zipFile uri
Shell.run ".\\.tools\\7za.exe" (sprintf "-o%s x %s" (directory zipFile) zipFile)
DeleteFile zipFile
Target "Restore:Corpus" (fun _ ->
enusure7Zexe ()
ensureLZ4exe ()
uncorpus "dickens"
uncorpus "mozilla"
uncorpus "mr"
uncorpus "nci"
uncorpus "ooffice"
uncorpus "osdb"
uncorpus "reymont"
uncorpus "samba"
uncorpus "sao"
uncorpus "webster"
uncorpus "xml"
uncorpus "x-ray"
)
"Restore:Corpus" ==> "Restore" ==> "Build" ==> "Rebuild" ==> "Test" ==> "Release" ==> "Release:Nuget"
"Clean" ==> "Rebuild"
"Clean" ?=> "Restore"
"Build" ?=> "Test"
RunTargetOrDefault "Build"