@@ -11,26 +11,51 @@ from pathlib import Path
1111from collections import namedtuple
1212import os
1313
14-
15- rust_cargo_builder = Builder (action = ['cargo build --bins --manifest-path $MANIFEST' ,
16- Move ('$TARGET$PROGSUFFIX' , '$SOURCE_DIR/target/debug/main$PROGSUFFIX' )])
17-
18- rust_rustc_builder = Builder (action = 'rustc $SOURCE -o $TARGET$PROGSUFFIX' )
19-
20- go_builder = Builder (action = 'go build -o $TARGET$PROGSUFFIX $SOURCE' )
14+ import SCons
15+ SCons .Warnings .warningAsException ()
2116
2217# For interpreted languages to copy to build directory
2318copy_builder = Builder (action = Copy ('$TARGET' , '$SOURCE' ))
2419
25- coconut_builder = Builder (action = 'coconut $COCONUTFLAGS $SOURCE $TARGET' , src_suffix = '.coco' , target_suffix = '.py' )
26-
2720env = Environment (ENV = os .environ ,
28- BUILDERS = {'rustc' : rust_rustc_builder ,
29- 'cargo' : rust_cargo_builder ,
30- 'Go' : go_builder ,
31- 'Copier' : copy_builder ,
32- 'Coconut' : coconut_builder },
33- tools = ['gcc' , 'gnulink' , 'g++' , 'gas' , 'gfortran' , 'javac' ])
21+ BUILDERS = {'Copier' : copy_builder },
22+ tools = [
23+ 'g++' , 'gas' , 'gcc' , 'gfortran' , 'gnulink' , 'javac' ],
24+ toolpath = ['builders' ])
25+
26+ available_languages = {
27+ 'asm-x64' ,
28+ 'bash' ,
29+ 'c' ,
30+ 'cpp' ,
31+ 'fortran' ,
32+ 'java' ,
33+ 'julia' ,
34+ 'lolcode'
35+ 'lua' ,
36+ 'php' ,
37+ 'powershell' ,
38+ 'python' ,
39+ 'ruby' ,
40+ 'viml' ,
41+ }
42+
43+ languages_to_import = {
44+ 'coconut' : ['coconut' ],
45+ 'go' : ['go' ],
46+ 'rust' : ['rustc' , 'cargo' ],
47+ }
48+
49+ for language , tools in languages_to_import .items ():
50+ for tool in tools :
51+ try :
52+ env .Tool (tool )
53+ except SCons .Warnings .SConsWarning as w :
54+ print (f'{ w .args [0 ][0 ]} , ignoring' )
55+ break
56+ else :
57+ available_languages .add (language )
58+
3459
3560Export ('env' )
3661
@@ -69,11 +94,11 @@ env.CPlusPlus = env.Program
6994env .X64 = env .Program
7095env .Fortran = env .Program
7196
72- for language in languages :
97+ for language in available_languages :
7398 Alias (language , f'#/build/{ language } ' )
7499
75100sconscripts = []
76- files_to_compile = {language : [] for language in languages }
101+ files_to_compile = {language : [] for language in languages if language in available_languages }
77102
78103FileInformation = namedtuple ('FileInformation' , ['path' , 'chapter' , 'language' ])
79104
@@ -85,7 +110,7 @@ for chapter_dir in contents_path.iterdir():
85110 extended_chapter_path = code_dir .relative_to (contents_path ).parent
86111
87112 for language_dir in code_dir .iterdir ():
88- if (language := language_dir .stem ) in languages :
113+ if (language := language_dir .stem ) in available_languages :
89114 new_files = [FileInformation (path = file_path ,
90115 chapter = extended_chapter_path ,
91116 language = language )
0 commit comments