#!/usr/ccs/bin/make -f
######################################################################
# Projekt:	Parallaxis-III
# Filename:	p3versions
# Autor:	Hartmut Keller
# Datum:	Donnerstag, 11. September 1997, 22:55:21
#
# Beschreibung
# ------------
# Ein Makefile zur automatischen Generierung von Parallaxis-III
# Versionen. Idee: Im Verzeichnis p3referenz wird die aktuelle
# CVS-Version ausgepackt, alle anderen Verzeichnisse haben nur Links
# auf diese Files.
#
#
# Benutzung:
# Entweder 
#             make -f p3versions <targets>
# oder
#             p3versions <targets>
# Als <targets> gehen dabei: SGI, SUNOS, SOLARIS, LINUX, AIX, ULTRIX,
#                            ALPHA, HPUX, source, develop,
#                            all(=default=alle obigen)
#
# ACHTUNG: Dieses File benoetigt einen Rechner zur Ausfuehrung, auf dem 
#          das Compilerbau-Toolkit Cocktail installiert ist (rex, ell,
#          ast, ag, cg, puma).
# ANMERKUNG: Momentan wird die Solaris-Version auf dem lokalen Rechner
#            compiliert, d.h. dieses File muss auf einem Solaris-
#            Rechner gestartet werden!
######################################################################

# Rechnernamen, die fuer die Compilierung benutzt werden. (Aufruf ueber rsh)

M_SOLARIS = matisse 
M_SUNOS   = odysseus
M_SGI     = raffael
M_AIX     = oedipus
M_LINUX   = robopc2
M_ULTRIX  = priamos
M_ALPHA   = chaos
M_HPUX    = ipvr1


#----------------------------------------------------------------------
# Name des Referenzverzeichnisses, in dem die Files mit cvs update aus
# CVS ausgecheckt und durch Cocktail gejagt werden.

P3REFERENZ= p3referenz


#----------------------------------------------------------------------
# Einstellungen fuer SUN (Solaris 2.x):

# Name des Unterverzeichnisses und des tar-Files:
P3SOLARIS= p3solaris

# Pfad, in dem compiliert wird:
P_SOLARIS= /usr/local/bv/data/P3_SOURCES/$(P3SOLARIS)

# Files der Binary-Version (inklusive Pfad):
BINSOLARIS= $(P3SOLARIS)/p3 $(P3SOLARIS)/p3c $(P3SOLARIS)/p3.1 \
            $(P3SOLARIS)/libp3.a $(P3SOLARIS)/SYSTEM_C.h \
            $(P3SOLARIS)/README.solaris.beta $(P3SOLARIS)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer SUN (SunOS 4.1.x):

# Name des Unterverzeichnisses und des tar-Files:
P3SUNOS= p3sunos

# Pfad, in dem compiliert wird:
P_SUNOS = /usr/local/bv/data/P3_SOURCES/$(P3SUNOS)

# Files der Binary-Version (inklusive Pfad):
BINSUNOS= $(P3SUNOS)/p3 $(P3SUNOS)/p3c $(P3SUNOS)/p3.1 $(P3SUNOS)/libp3.a \
          $(P3SUNOS)/SYSTEM_C.h $(P3SUNOS)/README.sunos.beta $(P3SUNOS)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer Silicon Graphics (IRIX):

# Name des Unterverzeichnisses und des tar-Files:
P3SGI= p3sgi

# Pfad, in dem compiliert wird:
P_SGI= /usr/local/bv/data/P3_SOURCES/$(P3SGI)

# Files der Binary-Version (inklusive Pfad):
BINSGI= $(P3SGI)/p3 $(P3SGI)/p3c $(P3SGI)/p3.1 $(P3SGI)/libp3.a \
        $(P3SGI)/SYSTEM_C.h $(P3SGI)/README.sgi.beta $(P3SGI)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer IBM RS6000 (AIX):

# Name des Unterverzeichnisses und des tar-Files:
P3AIX= p3rs6000

# Pfad, in dem compiliert wird:
P_AIX= /usr/local/bv/data/P3_SOURCES/$(P3AIX)

# Files der Binary-Version (inklusive Pfad):
BINAIX= $(P3AIX)/p3 $(P3AIX)/p3c $(P3AIX)/p3.1 $(P3AIX)/libp3.a \
        $(P3AIX)/SYSTEM_C.h $(P3AIX)/README.rs6000.beta $(P3AIX)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer PC (Linux):

# Name des Unterverzeichnisses und des tar-Files:
P3LINUX= p3linux

# Pfad, in dem compiliert wird:
P_LINUX= /usr/local/bv/data/P3_SOURCES/$(P3LINUX)

# Files der Binary-Version (inklusive Pfad):
BINLINUX= $(P3LINUX)/p3 $(P3LINUX)/p3c $(P3LINUX)/p3.1 $(P3LINUX)/libp3.a \
          $(P3LINUX)/SYSTEM_C.h $(P3LINUX)/README.linux.beta \
          $(P3LINUX)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer DEC (Ultrix):

# Name des Unterverzeichnisses und des tar-Files:
P3ULTRIX= p3ultrix

# Pfad, in dem compiliert wird:
P_ULTRIX = $(PWD)/$(P3ULTRIX)

# Files der Binary-Version (inklusive Pfad):
BINULTRIX= $(P3ULTRIX)/p3 $(P3ULTRIX)/p3c $(P3ULTRIX)/p3.1 $(P3ULTRIX)/libp3.a \
           $(P3ULTRIX)/SYSTEM_C.h $(P3ULTRIX)/README.ultrix.beta \
           $(P3ULTRIX)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer DEC (Alpha):

# Name des Unterverzeichnisses und des tar-Files:
P3ALPHA= p3alpha

# Pfad, in dem compiliert wird:
P_ALPHA = $(PWD)/$(P3ALPHA)

# Files der Binary-Version (inklusive Pfad):
BINALPHA= $(P3ALPHA)/p3 $(P3ALPHA)/p3c $(P3ALPHA)/p3.1 $(P3ALPHA)/libp3.a \
           $(P3ALPHA)/SYSTEM_C.h $(P3ALPHA)/README.alpha.beta \
           $(P3ALPHA)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer HP9000/730 (HP-UX):

# Name des Unterverzeichnisses und des tar-Files:
P3HPUX= p3hp9000

# Pfad, in dem compiliert wird:
P_HPUX= /usr/local/bv/data/P3_SOURCES/$(P3HPUX)

# Files der Binary-Version (inklusive Pfad):
BINHPUX=    $(P3HPUX)/p3 $(P3HPUX)/p3c $(P3HPUX)/p3.1 \
            $(P3HPUX)/libp3.a $(P3HPUX)/SYSTEM_C.h \
            $(P3HPUX)/README.hp9000.beta $(P3HPUX)/KnownBugs


#----------------------------------------------------------------------
# Einstellungen fuer die Source-Distribution:

# Name des Unterverzeichnisses und des tar-Files:
P3SOURCE= p3source


#----------------------------------------------------------------------
# Einstellungen fuer die Developer-Distribution:

# Name des Unterverzeichnisses und des tar-Files:
P3DEVELOP= p3develop


#----------------------------------------------------------------------
# Einstellungen fuer die Libraries:

# Name des Unterverzeichnisses und des tar-Files:
P3LIBRARIES= p3libraries



#======================================================================

# Hier jetzt die Regeln fuer die Targets:

# Default-Target:
all: solaris sunos sgi aix linux ultrix alpha hpux source develop

#----------------------------------------------------------------------
# Alle Files, die von Cocktail generiert werden:

CREATED = Code.c Code.h Eval.c Eval.h Parser.c Parser.h \
          Scanner.c Scanner.h Symbols.c Symbols.h \
          Tree.TS Tree.c Tree.h \
          yyCode.w yySymbols.w yyTree.w 

# Files generieren, die von Cocktail erzeugt werden:
# 1. Neueste Version der Source-Files aus CVS ins Referenz-Verzeichnis
#    holen 
# 2. Ueber make die neueste Version dieser Files erzeugen (Aufruf der
#    Cocktail-Werkzeuge). Dies geschieht auf der lokalen Maschine!

cocktail: cvsupdate
	cd $(P3REFERENZ); make $(CREATED) 

cvsupdate:
	cd $(P3REFERENZ); cvs update -d; make -f export BV

#----------------------------------------------------------------------
# Solaris-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. Solaris-Version auf lokalem Rechner compilieren (make SOLARIS)
# 3. Archiv packen (tar, gzip)

solaris SOLARIS: cocktail
	cd $(P_SOLARIS); make SOLARIS REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.sun5 ARFLAGS=crs RANLIB=: STATIC=-static
	tar cvhf - $(BINSOLARIS) | gzip >$(P3SOLARIS).tar.gz


#----------------------------------------------------------------------
# SunOS-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. SunOS-Version remote auf SunOS-Rechner compilieren (make SUNOS)
# 3. Archiv packen (tar, gzip)

sunos SUNOS: cocktail
	rsh $(M_SUNOS) \
	  "cd $(P_SUNOS); make SUNOS REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib STDINC=/usr/5include STATIC=-static"
	tar cvhf - $(BINSUNOS) | gzip >$(P3SUNOS).tar.gz


#----------------------------------------------------------------------
# SGI-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. SGI-Version remote auf SGI-Rechner compilieren (make SGI)
# 3. Archiv packen (tar, gzip)

sgi SGI: cocktail
	rsh $(M_SGI) "cd $(P_SGI); make SGI REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.iris4d ARFLAGS=crs RANLIB=: STATIC=-static"
	tar cvhf - $(BINSGI) | gzip >$(P3SGI).tar.gz


#----------------------------------------------------------------------
# RS6000-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. RS6000-Version remote auf IBM-Rechner compilieren (make AIX)
# 3. Archiv packen (tar, gzip)

aix AIX rs6000 RS6000: cocktail
	rsh $(M_AIX) "cd $(P_AIX); make AIX REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.rs6000 ARFLAGS=crs STATIC=-static"
	tar cvhf - $(BINAIX) | gzip >$(P3AIX).tar.gz


#----------------------------------------------------------------------
# LINUX-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. LINUX-Version remote auf LINUX-Rechner compilieren (make LINUX)
# 3. Archiv packen (tar, gzip)

linux LINUX: cocktail
	rsh $(M_LINUX) "cd $(P_LINUX); make LINUX REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.i386-linux ARFLAGS=crs RANLIB=: STATIC=-static"
	tar cvhf - $(BINLINUX) | gzip >$(P3LINUX).tar.gz

tarlinux:
	tar cvhf - $(BINLINUX) | gzip >$(P3LINUX).tar.gz

# LINUX-Version (alt):
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    SunOS-Verzeichnis)
# 2. Files an LINUX-Rechner schicken (rcp)
# 3. LINUX-Version auf LINUX-Rechner compilieren (make LINUX)
# 4. Erzeugte Files wieder zurueckschicken (rcp)
# 5. Archiv packen (tar, gzip)

#linux LINUX: cocktail
#	rcp -p $(P3LINUX)/* $(M_LINUX):$(P_LINUX)
#	rsh $(M_LINUX) "cd $(P_LINUX); make -f Makefile.C REUSEINC=/usr/include REUSELIB=/usr/lib ARFLAGS=crs RANLIB=:; rcp -p p3c p3 p3.1 libp3.a $(HOST):$(PWD)/$(P3LINUX)"
#	tar cvhf - $(BINLINUX) | gzip >$(P3LINUX).tar.gz

#----------------------------------------------------------------------
# Ultrix-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. Ultrix-Version remote auf Decstation-Rechner compilieren (make ULTRIX)
# 3. Archiv packen (tar, gzip)

ultrix ULTRIX: cocktail
	rsh $(M_ULTRIX) \
	  "cd $(P_ULTRIX); make ULTRIX REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.decstation STATIC=-static"
	tar cvhf - $(BINULTRIX) | gzip >$(P3ULTRIX).tar.gz


#----------------------------------------------------------------------
# Alpha-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. Alpha-Version remote auf Dec-Alpha-Rechner compilieren (make ALPHA)
# 3. Archiv packen (tar, gzip)

alpha ALPHA: cocktail
	rsh $(M_ALPHA) \
	  "cd $(P_ALPHA); make ALPHA REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.alpha STATIC=-static"
	tar cvhf - $(BINALPHA) | gzip >$(P3ALPHA).tar.gz


#----------------------------------------------------------------------
# HP-UX-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. HPUX-Version remote auf HP-Rechner compilieren (make HPUX)
# 3. Archiv packen (tar, gzip)

hpux HPUX hp9000 HP9000: cocktail
	rsh $(M_HPUX) \
	  "cd $(P_HPUX); make HPUX REUSEINC=/usr/local/bv/include/reuse REUSELIB=/usr/local/bv/lib.hp ARFLAGS=crs RANLIB=: STATIC=-static"
	tar cvhf - $(BINHPUX) | gzip >$(P3HPUX).tar.gz


#----------------------------------------------------------------------
# Source-Version:
# 1. Neueste Files aus CVS holen und mit Cocktail uebersetzen (im
#    Referenz-Verzeichnis)
# 2. Archiv packen (tar, gzip)

source src SOURCE SRC: cocktail
	tar cvhf - $(P3SOURCE)/* | gzip >$(P3SOURCE).tar.gz


#----------------------------------------------------------------------
# Develop-Version:
# 1. Neueste Files aus CVS holen, aber nicht (!) mit Cocktail uebersetzen
# 2. Archiv packen (tar, gzip)

develop DEVELOP: cvsupdate
	tar cvhf - $(P3DEVELOP)/* | gzip >$(P3DEVELOP).tar.gz


#----------------------------------------------------------------------
# Libraries packen (vorlaeufige Version):
# 0. Die Files sind nur per Links aus /usr/local/bv und ~braunl/examples 
#    hier praesent
# 2. Archiv packen (tar, gzip)

libraries libs LIBRARIES LIBS: 
	tar cvhf - $(P3LIBRARIES)/* | gzip >$(P3LIBRARIES).tar.gz


#----------------------------------------------------------------------
# Unterverzeichnisse loeschen, um eine neue Version von Null auf zu
# compilieren.

NEW new: CLEAN

#----------------------------------------------------------------------
# Targets zum vereinfachten Loeschend er Subdirectories:
#   clean: .o weg
#   Clean: auch erzeugte Executables weg
#   CLEAN: auch alles weg, was durch Cocktail erzeugt wird

CLEAN: Clean
	cd $(P3REFERENZ); make CLEAN

Clean:
	cd $(P3SOLARIS); make Clean
	cd $(P3SUNOS); make Clean
	cd $(P3SGI); make Clean
	cd $(P3AIX); make Clean
	cd $(P3LINUX); make Clean
	cd $(P3ULTRIX); make Clean
	cd $(P3ALPHA); make Clean
	cd $(P3HPUX); make Clean

clean:
	cd $(P3SOLARIS); make clean
	cd $(P3SUNOS); make clean
	cd $(P3SGI); make clean
	cd $(P3AIX); make clean
	cd $(P3LINUX); make clean
	cd $(P3ULTRIX); make clean
	cd $(P3ALPHA); make clean
	cd $(P3HPUX); make clean

#end of p3versions



