diff options
author | paltherr <paltherr@epfl.ch> | 2003-02-14 10:18:21 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-02-14 10:18:21 +0000 |
commit | 073294fbbaf752ed4f9005eb9421b7bd4f475173 (patch) | |
tree | 3f42a962441b0a43418ca981a576d61e9edad14c /Makefile | |
parent | 4177daab2f54bdb20c71f623296a8bb32616fd12 (diff) | |
download | scala-073294fbbaf752ed4f9005eb9421b7bd4f475173.tar.gz scala-073294fbbaf752ed4f9005eb9421b7bd4f475173.tar.bz2 scala-073294fbbaf752ed4f9005eb9421b7bd4f475173.zip |
- Added list of compiler source files
- Added Makefile
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..1405130c2a --- /dev/null +++ b/Makefile @@ -0,0 +1,157 @@ +############################################################-*-Makefile-*-#### +# Makefile for the Scala Compiler +############################################################################## +# $Id$ + +############################################################################## +# Include private stuff + +-include Makefile.private + +############################################################################## +# Variables + +ROOT = . + +# project +PROJECT_NAME = scala +PROJECT_ROOT = $(ROOT) +PROJECT_SOURCES += $(COMPILER_SOURCES) +PROJECT_OUTPUTDIR = $(PROJECT_ROOT)/classes +PROJECT_CLASSPATH = $(PROJECT_OUTPUTDIR) +PROJECT_LISTDIR = $(PROJECT_ROOT)/config/list +PROJECT_SOURCEDIR = $(PROJECT_ROOT)/sources + +# scala compiler +COMPILER_ROOT = $(PROJECT_SOURCEDIR)/scalac +COMPILER_LIST = $(call READLIST,$(PROJECT_LISTDIR)/compiler.lst) +COMPILER_SOURCES += $(COMPILER_LIST:%=$(COMPILER_ROOT)/%) +COMPILER_JC_COMPILER = PICO +COMPILER_JC_CLASSPATH = $(PROJECT_CLASSPATH):$(BCEL_JARFILE):$(MSIL_JARFILE) + +# java compilation + +JC_OUTPUTDIR = $(PROJECT_OUTPUTDIR) +JC_CLASSPATH = $(PROJECT_CLASSPATH) + +############################################################################## +# Variables - libraries + +# BCEL (see http://jakarta.apache.org/bcel/) + +BCEL_HOME ?= /home/linuxsoft/apps/BCEL-5 +BCEL_JARFILE ?= $(BCEL_HOME)/bcel.jar +BCEL_LICENSE = $(BCEL_HOME)/LICENSE + +# needed for the .NET backend + +MSIL_HOME ?= /home/linuxsoft/apps/java2net +MSIL_JARFILE ?= $(MSIL_HOME)/msil.jar + +############################################################################## +# Variables - tools + +ECHO ?= echo +CAT ?= cat +JAR ?= jar +GREP ?= grep +FIND ?= find +WC ?= wc +SED ?= sed +M4 ?= m4 +RM ?= rm +CP ?= cp +LN ?= ln +MKDIR ?= mkdir +TOUCH ?= touch +CHMOD ?= chmod +DIRNAME ?= dirname +BASENAME ?= basename +DATE ?= date +NICE ?= nice +ZIP ?= zip +UNIX2DOS ?= unix2dos + +JAVAC ?= javac +JAVAC_FLAGS += + +PICO ?= pico +PICO_FLAGS += -make -source 1.4 + +############################################################################## +# Functions + +RUN = echo $(1); $(1) || exit $$? +MAKE += --no-print-directory +LOOKUP = $(if $($(source)_$(1)),$($(source)_$(1)),$($(1))) +READLIST = $(shell cat $(1) | grep -v "^\#") + +############################################################################## +# Commands + +all : compiler + +force : + $(RM) -f .latest-compiler + @$(MAKE) all + +clean : + $(RM) -f .latest-compiler + $(RM) -rf $(PROJECT_OUTPUTDIR) + +distclean : clean + $(RM) -f .latest-* + +compiler : .latest-compiler + +.PHONY : all +.PHONY : force +.PHONY : clean +.PHONY : distclean +.PHONY : compiler + +############################################################################## +# Targets + +.latest-compiler : $(COMPILER_SOURCES) + @$(MAKE) .do-jc source=COMPILER JC_FILES='$?' + touch $@ + +############################################################################## +# JC - compile java files +############################################################################## +# +# JC_COMPILER = compiler name, for example JAVAC or PICO +# $(JC_COMPILER) = compiler command +# $(JC_COMPILER)_FLAGS = compiler-specific compilation flags +# JC_FLAGS += compilation flags +# JC_OUTPUTDIR = directory for the generated class files +# JC_CLASSPATH = class path +# JC_FILES += files to compile +# +############################################################################## + +# setup default values + +JC_COMPILER ?= JAVAC +JAVAC ?= javac + +# lookup actual values + +JC_COMPILER := $(call LOOKUP,JC_COMPILER) +JC_compiler := $(call LOOKUP,$(JC_COMPILER)) +JC_compiler_flags := $(call LOOKUP,$(JC_COMPILER)_FLAGS) +JC_FLAGS := $(call LOOKUP,JC_FLAGS) +JC_OUTPUTDIR := $(call LOOKUP,JC_OUTPUTDIR) +JC_CLASSPATH := $(call LOOKUP,JC_CLASSPATH) +JC_FILES := $(call LOOKUP,JC_FILES) + +# rules + +.do-jc: + @[ -d "$(JC_OUTPUTDIR)" ] || $(MKDIR) -p "$(JC_OUTPUTDIR)" + $(strip $(JC_compiler) $(JC_compiler_flags) $(JC_FLAGS) \ + $(JC_OUTPUTDIR:%=-d %) $(JC_CLASSPATH:%=-classpath %) \ + $(JC_FILES)) + +############################################################################## |