libt/Makefile
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 27 Sep 2015 07:07:46 +0100
changeset 19 7597503194b8
permissions -rw-r--r--
First shot of libt and some examples libt serves (well, might serve at some point) as a basic library for Tea language. Added directory with examples demostration Tea (and libt) Both includes makefiles to compile libt and examples to compile them down to machine code. This also demonstrates how to use `teak`, a standalone Tea compiler.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
# Sources 
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
SOURCES = $(wildcard *.tea)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
BITCODES = $(patsubst %.tea,%.bc,$(SOURCES))
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
# Tools
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
AR=ar
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
LD=ld
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
CC=gcc
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
TEAK = ../compiler/cli/teak
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
LLVM_CONFIG ?= llvm-config-3.8
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
LLVM_BINDIR  = $(shell $(LLVM_CONFIG) --bindir)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
LLVM_LLC  = $(LLVM_BINDIR)/llc
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
LLVM_LINK  = $(LLVM_BINDIR)/llvm-link
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
# Artifacts...
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
LIBRARY_NAME=libt
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
LIBRARY = $(LIBRARY_NAME).so
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
ARCHIVE = $(LIBRARY_NAME).a
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
all: $(LIBRARY) $(ARCHIVE)	
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
$(LIBRARY): $(LIBRARY_NAME).o
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	ld -shared -o $@ $<
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
$(ARCHIVE): $(LIBRARY_NAME).o	
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	$(AR) r $@ $<
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
$(LIBRARY_NAME).o: $(LIBRARY_NAME).bc
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	$(LLVM_LLC) -filetype=obj -o=$@ $<
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
$(LIBRARY_NAME).bc: $(BITCODES)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
	$(LLVM_LINK) -o=$@ $(BITCODES)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
# ----------vvvvvvvvvv should be replace by real dependendies of .tea file
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
%.bc: %.tea $(SOURCES)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
	$(TEAK) $(SOURCES)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
%.ll: %.tea $(SOURCES)
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
	$(TEAK) --output=$@ --emit-llvm-ir $<
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
        
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
clean:
7597503194b8 First shot of libt and some examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
	rm -f *.ll $(BITCODES) $(LIBRARY_NAME).o $(LIBRARY_NAME).bc $(LIBRARY) $(ARCHIVE)