summaryrefslogtreecommitdiff
path: root/cook.py
diff options
context:
space:
mode:
Diffstat (limited to 'cook.py')
-rwxr-xr-xcook.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/cook.py b/cook.py
index 801d928..631311b 100755
--- a/cook.py
+++ b/cook.py
@@ -1,11 +1,15 @@
#!/usr/bin/python
+import sys
import os
from pathlib import Path
from threading import local
import shutil
import argparse
+def error(*args):
+ print(*args, file = sys.stderr)
+
def find_program(prog, required=True):
path = shutil.which(prog)
if path == None and required:
@@ -253,7 +257,7 @@ class CExe(Processor):
return super().gen(name, *args, extra_args = extra_args)
-def CCStyleToolchain(name, ccname, arname, suffix="", c_args=[], ld_args=[]):
+def CCStyleToolchain(name, gccname, arname, suffix="", c_args=[], ld_args=[]):
ccname = name + suffix
exename = name + "exe" + suffix
libname = name + "lib" + suffix
@@ -262,7 +266,7 @@ def CCStyleToolchain(name, ccname, arname, suffix="", c_args=[], ld_args=[]):
c_args = " ".join(flatten(c_args))
ld_args = " ".join(flatten(ld_args))
- gcc = find_program(ccname)
+ gcc = find_program(gccname)
ar = find_program(arname)
cc = CC(
@@ -314,15 +318,19 @@ CTOOLCHAINS = {
'clang': ClangToolchain,
'gcc': GccToolchain
}
-
+
def CToolchain(name="system", suffix="", c_args=[], ld_args=[]):
+ if suffix == "" and (c_args != [] or ld_args != []):
+ error("warning: instanciating default toolchain %s with non-default arguments" % (name))
+ error("note: to fix this, add a suffix")
+
if name != "system":
if not name in CTOOLCHAINS:
raise Exception("No such C toolchain available")
return CTOOLCHAINS[name](suffix, c_args, ld_args)
-
+
for t in CTOOLCHAINS.values():
try:
return t(suffix, c_args, ld_args)
@@ -332,7 +340,7 @@ def CToolchain(name="system", suffix="", c_args=[], ld_args=[]):
raise Exception("No C toolchain found on system")
global cc, exe, lib, shlib
-cc, exe, lib, shlib = CToolchain("clang")
+cc, exe, lib, shlib = CToolchain()
def find_one(names):
for name in names: