Merge pull request #309 from antmicro/mmcm-fix
[litex.git] / litex_setup.py
1 #!/usr/bin/env python3
2
3 import os
4 import sys
5 from collections import OrderedDict
6
7
8 current_path = os.path.dirname(os.path.realpath(__file__))
9
10 # name, (url, recursive clone, develop)
11 repos = [
12 # HDL
13 ("migen", ("https://github.com/m-labs/", True, True)),
14
15 # LiteX SoC builder
16 ("litex", ("https://github.com/enjoy-digital/", True, True)),
17
18 # LiteX cores ecosystem
19 ("liteeth", ("https://github.com/enjoy-digital/", False, True)),
20 ("litedram", ("https://github.com/enjoy-digital/", False, True)),
21 ("litepcie", ("https://github.com/enjoy-digital/", False, True)),
22 ("litesata", ("https://github.com/enjoy-digital/", False, True)),
23 ("litesdcard", ("https://github.com/enjoy-digital/", False, True)),
24 ("liteiclink", ("https://github.com/enjoy-digital/", False, True)),
25 ("litevideo", ("https://github.com/enjoy-digital/", False, True)),
26 ("litescope", ("https://github.com/enjoy-digital/", False, True)),
27 ("litejesd204b", ("https://github.com/enjoy-digital/", False, True)),
28
29 # LiteX boards support
30 ("litex-boards", ("https://github.com/litex-hub/", False, True)),
31 ]
32 repos = OrderedDict(repos)
33
34 if len(sys.argv) < 2:
35 print("Available commands:")
36 print("- init")
37 print("- install (add --user to install to user directory)")
38 print("- update")
39 exit()
40
41 if "init" in sys.argv[1:]:
42 for name in repos.keys():
43 url, need_recursive, need_develop = repos[name]
44 # clone repo (recursive if needed)
45 print("[cloning " + name + "]...")
46 full_url = url + name
47 opts = "--recursive" if need_recursive else ""
48 os.system("git clone " + full_url + " " + opts)
49
50 if "install" in sys.argv[1:]:
51 for name in repos.keys():
52 url, need_recursive, need_develop = repos[name]
53 # develop if needed
54 print("[installing " + name + "]...")
55 if need_develop:
56 os.chdir(os.path.join(current_path, name))
57 if "--user" in sys.argv[1:]:
58 os.system("python3 setup.py develop --user")
59 else:
60 os.system("python3 setup.py develop")
61
62 if "update" in sys.argv[1:]:
63 for name in repos.keys():
64 # update
65 print("[updating " + name + "]...")
66 os.chdir(os.path.join(current_path, name))
67 os.system("git pull")