All Projects → tendra → Tendra

tendra / Tendra

Licence: other
The TenDRA Project

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Tendra

One
OneLang: The One System Programming Language. (release as soon)
Stars: ✭ 120 (-10.45%)
Mutual labels:  compiler
Md
A markdown parser and compiler. Built for speed.
Stars: ✭ 128 (-4.48%)
Mutual labels:  compiler
Naskah
Bahasa pemrograman dengan sintaks Bahasa Indonesia (Programming language with Indonesian syntax) 🇮🇩
Stars: ✭ 132 (-1.49%)
Mutual labels:  compiler
Ghc Grin
GRIN backend for GHC
Stars: ✭ 123 (-8.21%)
Mutual labels:  compiler
Phplrt
PHP Language Recognition Tool
Stars: ✭ 127 (-5.22%)
Mutual labels:  compiler
Ocaml Protoc
A Protobuf Compiler for OCaml
Stars: ✭ 129 (-3.73%)
Mutual labels:  compiler
Serverless Layers
Serverless.js plugin that implements AWS Lambda Layers which reduces drastically lambda size, warm-up and deployment time.
Stars: ✭ 119 (-11.19%)
Mutual labels:  compiler
Lesscpy
Python LESS compiler
Stars: ✭ 133 (-0.75%)
Mutual labels:  compiler
Grain
The Grain compiler toolchain and CLI. Home of the modern web staple. 🌾
Stars: ✭ 2,199 (+1541.04%)
Mutual labels:  compiler
Tinyscript
自制的一个编译器, 用于学习,完整实现了词法分析,语法分析,中间代码(SSA)生成,机器码生成,和基于寄存器的虚拟机
Stars: ✭ 132 (-1.49%)
Mutual labels:  compiler
Mcscript
A programming language for Minecraft Vanilla
Stars: ✭ 124 (-7.46%)
Mutual labels:  compiler
Asterius
A Haskell to WebAssembly compiler
Stars: ✭ 1,799 (+1242.54%)
Mutual labels:  compiler
Jphp
JPHP - an implementation of PHP on Java VM
Stars: ✭ 1,665 (+1142.54%)
Mutual labels:  compiler
Reading
A list of computer-science readings I recommend
Stars: ✭ 1,919 (+1332.09%)
Mutual labels:  compiler
Solang
First fully featured programming language for Stack Overflow Driven Development
Stars: ✭ 133 (-0.75%)
Mutual labels:  compiler
Impala
An imperative and functional programming language
Stars: ✭ 118 (-11.94%)
Mutual labels:  compiler
Pl0 Compiler
Compiler written for PL0 programming Language. Written in C, for COP3402 class from UCF.
Stars: ✭ 128 (-4.48%)
Mutual labels:  compiler
Koto
A simple, expressive, embeddable programming language, made with Rust
Stars: ✭ 134 (+0%)
Mutual labels:  compiler
Hivemind
a multi-syntax language
Stars: ✭ 133 (-0.75%)
Mutual labels:  compiler
Instapack
All-in-one TypeScript and Sass compiler for web applications! 📦 🚀
Stars: ✭ 131 (-2.24%)
Mutual labels:  compiler

The TenDRA Project

http://www.tendra.org/

The source tree is organised into several independent programs. These are intended to be packaged separately, and may be built independently of each other. See the Orientation Guide [1] for details of how this all fits together.

The top-level Makefile provided here is a convenience to build everything. If you just want to try TenDRA out, this is what you're looking for.

Build Dependencies

  • A BSD compatible make(1)

    This can be any BSD's native make(1). An ancient version of NetBSD's make is sometimes packaged as "pmake". There's also sjg's portable bmake, which you can get here: http://www.crufty.net/help/sjg/bmake.html

    GNU's gmake uses a completely different syntax, and is not supported.

  • A C compiler

    See shared/mk/tendra.compiler.mk for supported compilers.

  • A supported toolchain

    This should be no problem for any of the supported OSes; their provided toolchains will do fine. For Linux and BSDs this is GNU's ld, as, etc.

  • A supported OS, libc and architecture combination

    This is trickier than it sounds. I've been working to make it easier, and it's certainly easier than it was, but there's still some way to go before you can expect a build to work on an arbitrary platform.

    Architecture:

    In particular there is currently no code generation for 64-bit platforms (other than Alpha) - so no x86_64, mips64, UltraSPARC, 64-bit PA-RISC etc.

    You can see the supported architectures under /trans/src.

    OS:

    TenDRA needs to know not only what the OS is, but also what version.

    You can see supported OSes under /osdep/machines.

    libc:

    This where it gets more difficult. The particular version of your libc matters due to the version-specific workarounds for various non-standard or incorrect things in your system headers.

    You can see the supported libc implementations under /api/libc.

    If your particular libc is not supported, it's straightforward to add. However this is something of a dark art, involving figuring out where system headers deviate from the various standards TenDRA enforces (ANSI, POSIX and so on), and what to do about it which is decided case-by-case.

    I've started writing a guide on how to do this. [2]

I don't care about any of that

I'd suggest using either OpenBSD, FreeBSD or Linux. If you're using Linux, install pmake.

Look at /shared/mk/tendra.makedefs.mk for some idea of supported versions, pick one, and try it. Talk to me if it doesn't work. [3]

Building

Build with:

% bmake -r

If all goes well, this should give you a working compiler in ./obj.$host-bootstrap/bin

Building with docker

The Dockerfile defines a base system that can compile the compiler. You will need to build the docker image first, but thereafter you can just run it (without the --build parameter).

To build and run the docker image: % ./run-docker.sh --build

Notes on x86_64

There is currently no code generation for x86_64 assembly. So you can't produce native x86_64 executables. However, for systems with multilib support (FreeBSD, Linux), you can build TenDRA such that it will generate x86_32 executables on an x86_64 system:

% make TARGETARCH=x32_64
% ./obj.iona-bootstrap/bin/tcc hello.c

which gives you this:

% ./a.out
   hello, world
% uname -sm
   Linux x86_64
% file a.out
   a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
   dynamically linked (uses shared libs), ...
%

When building for x32_64, you'll need x86_32-compatible libc headers. For Debian, that's packaged as libc6-dev-i386.

Good luck,

--
Kate
[email protected]

[1] Orientation Guide: /tendra-doc/doc/developer/guides/orientation
[2] Porting TenDRA to Different Operating Systems: /osdep/doc/devguides/porting
[3] IRC: #tendra on irc.freenode.net

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].