import migen in litex/gen
[litex.git] / litex / gen / migen / build / tools.py
1 import os
2 import struct
3 from distutils.version import StrictVersion
4
5
6 def mkdir_noerror(d):
7 try:
8 os.mkdir(d)
9 except OSError:
10 pass
11
12
13 def language_by_filename(name):
14 extension = name.rsplit(".")[-1]
15 if extension in ["v", "vh", "vo"]:
16 return "verilog"
17 if extension in ["vhd", "vhdl", "vho"]:
18 return "vhdl"
19 return None
20
21
22 def write_to_file(filename, contents, force_unix=False):
23 newline = None
24 if force_unix:
25 newline = "\n"
26 with open(filename, "w", newline=newline) as f:
27 f.write(contents)
28
29
30 def arch_bits():
31 return struct.calcsize("P")*8
32
33
34 def versions(path):
35 for n in os.listdir(path):
36 full = os.path.join(path, n)
37 if not os.path.isdir(full):
38 continue
39 try:
40 yield StrictVersion(n)
41 except ValueError:
42 continue