algorithm-archive icon indicating copy to clipboard operation
algorithm-archive copied to clipboard

Add more languages to the build system

Open Amaras opened this issue 3 years ago • 6 comments

Feature Request

Add more language builders to the SCons-based build system.

Description

Since #885 was merged, we now have a build system that aims to provide a compilation framework for every compiled language. However, most of the work is currently not done yet.

Here are all the current languages in the AAA (in alphabetical order of the directory names). Each of the languages needs either a way to compile an executable in the build/ directory at the project root, copy the interpreted file to the correct folder, or prove that it is impossible to do.

If you want to provide compilation instructions, please follow the example provided in #885: a builder per language which has the name of the language which each leaf SConscript uses, and the list of the language's folders added to the language list in the root SConstruct file.

  • [x] X86-64 Assembly (asm-x64) [#940]
  • [x] Bash [#950]
  • [x] C [#885]
  • [x] C++ (cpp) [#939]
  • [ ] Common Lisp
  • [ ] Clojure
  • [x] Coconut [#949]
  • [ ] Crystal
  • [ ] C# (csharp) [#1012]
  • [ ] D
  • [ ] Dart
  • [ ] Elm
  • [ ] Emojicode
  • [ ] Factor
  • [x] Fortran [#948]
  • [ ] GNUPlot
  • [x] Go (go/golang) [#947]
  • [ ] #976
  • [x] #972
  • [x] JavaScript [#950]
  • [x] Julia [#950]
  • [ ] Kotlin [#984]
  • [ ] LabView
  • [x] LOLCode [#950]
  • [x] Lua [#950]
  • [ ] MatLab
  • [ ] Nim
  • [ ] OCaml [#1006]
  • [x] PHP [#950]
  • [ ] Piet
  • [x] PowerShell [#950]
  • [x] Python [#950]
  • [ ] R
  • [ ] Racket
  • [x] Ruby [#950]
  • [x] Rust [#945]
  • [ ] Scala
  • [ ] Scheme
  • [ ] Scratch
  • [ ] Smalltalk
  • [ ] Swift
  • [ ] TypeScript
  • [ ] V
  • [x] VimL [#950]
  • [ ] WhiteSpace

Additional context

Related to #870. Don't hesitate to reach out to me (@Amaras on GitHub, and .amaras on Discord, formerly Amaras#8643) if you have questions.

Amaras avatar Oct 26 '21 17:10 Amaras

Most languages will add temporary files for build, .o are generated for C, but should we just add the minimal amount of files added by a scons build? Or should we just add the whole list like the one generated by gitignore.io?

ShadowMitia avatar Nov 03 '21 09:11 ShadowMitia

I think we only need to add the minimal amount of things to the .gitignore. Right now, only the .o are annoyingly not in the correct directory, so I don't see any reason to add any other files. I'm open to discussion, of course :)

Amaras avatar Nov 03 '21 11:11 Amaras

I don't really have a strong opinion on this^^ The other idea was to make sure everything is built out of the content directory.

ShadowMitia avatar Nov 03 '21 11:11 ShadowMitia

Well there's a way to do that, but it adds complexity to the scripts

Amaras avatar Nov 03 '21 12:11 Amaras

The gfortran compiler is part of the Gnu Compiler Collection and works like the C compiler gcc. So

gfortran -o prog func.f90 main.f90

will produce executable prog. Are there obstacles to adding Fortran codes?

Beliavsky avatar Nov 07 '21 15:11 Beliavsky

@Beliavsky No obstacles to adding Fortran code, this is about adding an automated system to compile all the examples in the Archive.

ShadowMitia avatar Nov 07 '21 15:11 ShadowMitia