exjobb-public/scripts/build_env.py

49 lines
1.2 KiB
Python

import os
import subprocess
def ghdlEnvExists(relativePath="work"):
## Check if work exists
try:
os.lstat(relativePath)
except:
return False
## Check that work is writable
if not os.access(relativePath, os.W_OK):
print(f"{relativePath} is write-protected, please acquire correct permissions")
return False
cfFileExists = False
filesInWork = os.listdir(relativePath)
for file in filesInWork:
if ".cf" in file:
cfFileExists = True
if not cfFileExists:
return False
## Nothing bad, continue
return True
def createBuildEnv():
if ghdlEnvExists():
return -1
## Create build env
os.makedirs("work",exist_ok=True)
addAllVHDLFiles(init=True)
return 0
def addAllVHDLFiles(init=False):
## Ensure everything is ready for adding files
## (init exception to avoid one if-case in ghdlEnvExists)
if not ghdlEnvExists() and not init:
return -1
## Add files
vhdlFiles = []
for file in os.listdir():
if ".vhd" in file:
vhdlFiles.append(file)
command = ["ghdl", "-i", "--workdir=work"] + vhdlFiles
subprocess.run(command)
return 0
if __name__ == "__main__":
createBuildEnv()