This repository has been archived by the owner on Sep 6, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
clash-eth.cabal
205 lines (188 loc) · 5.72 KB
/
clash-eth.cabal
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
cabal-version: 2.4
name: clash-eth
version: 0.1
license: BSD-2-Clause
author: Rowan Goemans <goemansrowan@gmail.com>
maintainer: Rowan Goemans <goemansrowan@gmail.com>
common common-options
default-extensions:
BangPatterns
BinaryLiterals
ConstraintKinds
DataKinds
DefaultSignatures
DeriveAnyClass
DeriveDataTypeable
DeriveFoldable
DeriveFunctor
DeriveGeneric
DeriveLift
DeriveTraversable
DerivingStrategies
InstanceSigs
KindSignatures
LambdaCase
NoStarIsType
PolyKinds
RankNTypes
ScopedTypeVariables
StandaloneDeriving
TupleSections
TypeApplications
TypeFamilies
TypeOperators
ViewPatterns
ImportQualifiedPost
-- TemplateHaskell is used to support convenience functions such as
-- 'listToVecTH' and 'bLit'.
TemplateHaskell
QuasiQuotes
-- Prelude isn't imported by default as Clash offers Clash.Prelude
NoImplicitPrelude
ghc-options:
-Wall -Wcompat
-haddock
-- Plugins to support type-level constraint solving on naturals
-fplugin GHC.TypeLits.Extra.Solver
-fplugin GHC.TypeLits.Normalise
-fplugin GHC.TypeLits.KnownNat.Solver
-- circuit-notation plugin
-fplugin Protocols.Plugin
-fconstraint-solver-iterations=10
-fplugin Protocols.Plugin
-- Clash needs access to the source code in compiled modules
-fexpose-all-unfoldings
-- Worker wrappers introduce unstable names for functions that might have
-- blackboxes attached for them. You can disable this, but be sure to add
-- a no-specialize pragma to every function with a blackbox.
-fno-worker-wrapper
-- Strict annotations - while sometimes preventing space leaks - trigger
-- optimizations Clash can't deal with. See:
--
-- https://github.com/clash-lang/clash-compiler/issues/2361
--
-- These flags disables these optimizations. Note that the fields will
-- remain strict.
-fno-unbox-small-strict-fields
-fno-unbox-strict-fields
build-depends:
base,
Cabal,
-- clash-prelude will set suitable version bounds for the plugins and clash-ghc
clash-prelude >= 1.8.1 && < 1.10,
clash-protocols,
ghc-typelits-natnormalise,
ghc-typelits-extra,
ghc-typelits-knownnat
custom-setup
setup-depends:
base >= 4.11 && <5,
Cabal >= 2.4,
cabal-doctest >= 1.0.1 && <1.1
library
import: common-options
hs-source-dirs: src
exposed-modules:
Clash.Cores.Ethernet.Arp
Clash.Cores.Ethernet.Arp.ArpManager
Clash.Cores.Ethernet.Arp.ArpTable
Clash.Cores.Ethernet.Arp.ArpTypes
Clash.Cores.Ethernet.Examples.ArpStack
Clash.Cores.Ethernet.Examples.FullUdpStack
Clash.Cores.Ethernet.Examples.RxStacks
Clash.Cores.Ethernet.Examples.TxStacks
Clash.Cores.Ethernet.IP.EthernetStream
Clash.Cores.Ethernet.IP.InternetChecksum
Clash.Cores.Ethernet.IP.IPPacketizers
Clash.Cores.Ethernet.IP.IPv4Types
Clash.Cores.Ethernet.Mac.EthernetTypes
Clash.Cores.Ethernet.Mac.FrameCheckSequence
Clash.Cores.Ethernet.Mac.InterpacketGapInserter
Clash.Cores.Ethernet.Mac.MacPacketizers
Clash.Cores.Ethernet.Mac.PaddingInserter
Clash.Cores.Ethernet.Mac.Preamble
Clash.Cores.Ethernet.Icmp
Clash.Cores.Ethernet.Udp
Clash.Lattice.ECP5.Colorlight.CRG
Clash.Lattice.ECP5.Colorlight.TopEntity
Clash.Lattice.ECP5.Prims
Clash.Lattice.ECP5.RGMII
Protocols.Extra.PacketStream.AsyncFIFO
Protocols.Extra.PacketStream.Converters
Protocols.Extra.PacketStream.PacketBuffer
Protocols.Extra.PacketStream.Packetizers
Protocols.Extra.PacketStream.Routing
Protocols.Extra.PacketStream
other-modules:
Clash.Signal.Extra
Clash.Sized.Vector.Extra
Data.Maybe.Extra
Protocols.Df.Extra
default-language: Haskell2010
build-depends:
interpolate,
clash-cores,
clash-cores-crc,
deepseq,
hashable,
constraints,
-- For debugging
pretty-show
test-suite doctests
type: exitcode-stdio-1.0
default-language: Haskell2010
main-is: doctests.hs
ghc-options: -Wall -Wcompat -threaded
hs-source-dirs: tests
build-depends:
base,
clash-eth,
doctest,
process,
test-suite test-library
import: common-options
default-language: Haskell2010
hs-source-dirs: tests
type: exitcode-stdio-1.0
ghc-options: -threaded
main-is: unittests.hs
other-modules:
Test.Cores.Ethernet.Arp.ArpManager
Test.Cores.Ethernet.IP.EthernetStream
Test.Cores.Ethernet.IP.InternetChecksum
Test.Cores.Ethernet.IP.IPPacketizers
Test.Cores.Ethernet.Mac.EthernetTypes
Test.Cores.Ethernet.Mac.FrameCheckSequence
Test.Cores.Ethernet.Mac.InterpacketGapInserter
Test.Cores.Ethernet.Mac.MacPacketizers
Test.Cores.Ethernet.Mac.PaddingInserter
Test.Cores.Ethernet.Mac.Preamble
Test.Cores.Ethernet.Icmp
Test.Protocols.Extra.PacketStream.AsyncFIFO
Test.Protocols.Extra.PacketStream.Converters
Test.Protocols.Extra.PacketStream.PacketBuffer
Test.Protocols.Extra.PacketStream.Packetizers
Test.Protocols.Extra.PacketStream.Routing
Test.Protocols.Extra.PacketStream
build-depends:
clash-eth,
QuickCheck,
hedgehog,
clash-cores,
clash-cores-crc,
hashable,
unordered-containers,
tasty >= 1.2 && < 1.5,
tasty-hedgehog,
tasty-th,
pretty-show
-- Builds the executable 'clash', with clash-eth project in scope
executable clash
main-is: bin/Clash.hs
default-language: Haskell2010
Build-Depends: base, clash-ghc, clash-eth
-- Builds the executable 'clashi', with clash-eth project in scope
executable clashi
main-is: bin/Clashi.hs
default-language: Haskell2010
build-depends: base, clash-ghc, clash-eth