Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #
  2. # Tiny BASIC Interpreter and Compiler Project
  3. # Makefile
  4. #
  5. # Released as Public Domain by Damian Gareth Walker 2019
  6. # Created: 18-Aug-2019
  7. #
  8.  
  9. # Target
  10. TARGET = tinybasic
  11.  
  12. # Paths and extensions
  13. SRCDIR := src
  14. INCDIR := inc
  15. DOCDIR := doc
  16. BASDIR := bas
  17. BUILDDIR := obj
  18. TARGETDIR := bin
  19. INSTALLDIR := /usr/local
  20. SRCEXT := c
  21. HDREXT := h
  22. OBJEXT := o
  23. MANEXT := man
  24. BASEXT := bas
  25.  
  26. # Compiler flags
  27. CFLAGS := -Wall
  28. INC := -I$(INCDIR) -I/usr/local/include
  29.  
  30. # Generate file lists
  31. SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
  32. OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))
  33. SAMPLES := $(shell find $(BASDIR) -type f -name *.$(BASEXT))
  34.  
  35. # Default make
  36. all: $(TARGETDIR)/$(TARGET)
  37.  
  38. $(TARGETDIR)/$(TARGET): $(OBJECTS)
  39.         gcc -o $(TARGETDIR)/$(TARGET) $(OBJECTS)
  40.  
  41. $(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT)
  42.         gcc $(CFLAGS) $(INC) -c -o $@ $<
  43.  
  44. # Cleanup
  45. clean:
  46.         rm -f $(BUILDDIR)/*.$(OBJEXT)
  47.         rm -f $(TARGETDIR)/$(TARGET)
  48.  
  49. # Installation (Unix)
  50. install: $(TARGETDIR)/$(TARGET) $(DOCDIR)/tinybasic.man $(SAMPLES)
  51.         mkdir -p $(INSTALLDIR)/bin
  52.         cp $(TARGETDIR)/$(TARGET) $(INSTALLDIR)/bin
  53.         mkdir -p $(INSTALLDIR)/share/man/man1
  54.         cp $(DOCDIR)/tinybasic.man $(INSTALLDIR)/share/man/man1/tinybasic.1
  55.         mkdir -p $(INSTALLDIR)/share/doc/tinybasic/samples
  56.         cp $(SAMPLES) $(INSTALLDIR)/share/doc/tinybasic/samples