diff --git a/SConstruct b/SConstruct index bdbcc9b2d..5c4d82479 100644 --- a/SConstruct +++ b/SConstruct @@ -19,12 +19,16 @@ rust_rustc_builder = Builder(action='rustc $SOURCE -o $TARGET$PROGSUFFIX') go_builder = Builder(action='go build -o $TARGET$PROGSUFFIX $SOURCE') +# For interpreted languages to copy to build directory +copy_builder = Builder(action=Copy('$TARGET', '$SOURCE')) + coconut_builder = Builder(action='coconut $COCONUTFLAGS $SOURCE $TARGET', src_suffix='.coco', target_suffix='.py') env = Environment(ENV=os.environ, BUILDERS={'rustc': rust_rustc_builder, 'cargo': rust_cargo_builder, 'Go': go_builder, + 'Copier': copy_builder, 'Coconut': coconut_builder}, tools=['gcc', 'gnulink', 'g++', 'gas', 'gfortran']) @@ -37,14 +41,25 @@ env['COCONUTFLAGS'] = '--target 3.8' # Add other languages here when you want to add language targets # Put 'name_of_language_directory' : 'file_extension' + languages = { - 'c': 'c', - 'cpp': 'cpp', 'asm-x64': 's', - 'rust': 'rs', - 'go': 'go', - 'fortran': 'f90', + 'bash': 'bash', + 'c': 'c', 'coconut': 'coco', + 'cpp': 'cpp', + 'fortran': 'f90', + 'go': 'go', + 'javascript': 'js', + 'julia': 'jl', + 'lolcode': 'lol', + 'lua': 'lua', + 'php': 'php', + 'powershell': 'ps1', + 'python': 'py', + 'ruby': 'rb', + 'rust': 'rs', + 'viml': 'vim', } # Do not add new Builders here, add them to the BUILDERS argument in the call to Environment above diff --git a/sconscripts/bash_SConscript b/sconscripts/bash_SConscript new file mode 100644 index 000000000..0b3c17dc0 --- /dev/null +++ b/sconscripts/bash_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.bash' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) diff --git a/sconscripts/javascript_SConscript b/sconscripts/javascript_SConscript new file mode 100644 index 000000000..767f5cd4a --- /dev/null +++ b/sconscripts/javascript_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.js' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/julia_SConscript b/sconscripts/julia_SConscript new file mode 100644 index 000000000..84de28959 --- /dev/null +++ b/sconscripts/julia_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.jl' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/lolcode_SConscript b/sconscripts/lolcode_SConscript new file mode 100644 index 000000000..241565f53 --- /dev/null +++ b/sconscripts/lolcode_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.lol' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/lua_SConscript b/sconscripts/lua_SConscript new file mode 100644 index 000000000..a64415d74 --- /dev/null +++ b/sconscripts/lua_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.lua' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/php_SConscript b/sconscripts/php_SConscript new file mode 100644 index 000000000..9748a1a5a --- /dev/null +++ b/sconscripts/php_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.php' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/powershell_SConscript b/sconscripts/powershell_SConscript new file mode 100644 index 000000000..bbb4a9b1a --- /dev/null +++ b/sconscripts/powershell_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.ps1' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/python_SConscript b/sconscripts/python_SConscript new file mode 100644 index 000000000..0d26a9620 --- /dev/null +++ b/sconscripts/python_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.py' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/ruby_SConscript b/sconscripts/ruby_SConscript new file mode 100644 index 000000000..ad58ed64a --- /dev/null +++ b/sconscripts/ruby_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.rb' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file diff --git a/sconscripts/viml_SConscript b/sconscripts/viml_SConscript new file mode 100644 index 000000000..bef5029f4 --- /dev/null +++ b/sconscripts/viml_SConscript @@ -0,0 +1,6 @@ +Import('files_to_compile env') + +for file_info in files_to_compile: + build_target = f'#/build/{file_info.language}/{file_info.chapter}/{file_info.path.stem}.vim' + build_result = env.Copier(build_target, str(file_info.path)) + env.Alias(str(file_info.chapter), build_result) \ No newline at end of file