# ------------------------------------------------------------------------
# Makefile: module Global of the SpecC Reference Compiler
#	    (global definitions, error handling etc.)
# ------------------------------------------------------------------------
#
# Modifications: (most recent first)
#
# RD 05/25/01	reduced contents to SCRC requirements
# ------------------------------------------------------------------------

# --- macros

include ../../Makefile.macros

MODULE	=	Global
BINARY	=	gl_debug
BINFILE	=	$(BINARY)$(EXE_SUFFIX)
PREFIX	=	GL_
LIBRARY	=	lib$(MODULE)
LIBOBJ	=	$(MODULE).o GL_String.o
OBJECTS =	GL_String.o
LIBDEP	=	$(SPECC_LIB)/lib$(LLONG_LIB_NAME).$(LIBSFX)
LIBS	=	-l$(LLONG_LIB_NAME)
INCLUDE	=	$(MODULE).h GL_String.h
EXAMPLE	=
DIST	=	$(MODULE).cc $(MODULE).h GL_String.cc GL_String.h \
		Makefile .purify
ORIG	=	$(MODULE).cc $(MODULE).h GL_String.cc GL_String.h \
		Makefile


# --- compilation rules

all:		$(LIBRARY).$(LIBSFX) $(SPECC_LIB)/$(LIBRARY).$(LIBSFX)


$(BINFILE):	$(BINARY).o $(OBJECTS) $(LIBDEP)
	$(LN) -o $(BINFILE) $(BINARY).o $(OBJECTS) $(LIBS) $(STDLIB)

$(BINARY)_pure:	$(BINARY).o $(OBJECTS) $(LIBDEP)
	$(LNPURE) -o $(BINARY)_pure $(BINARY).o $(OBJECTS) $(LIBS) $(STDLIB)

$(LIBRARY).a:	$(LIBOBJ)
	$(RM) $(LIBRARY).a
	$(AR) $(LIBRARY).a $(LIBOBJ)
	$(RAN) $(LIBRARY).a
	if [ "$(ADDLIB)" = "so" ]; then					\
		$(MAKE) $(LIBRARY).so $(SPECC_LIB)/$(LIBRARY).so ;	\
		fi;

$(LIBRARY).so:	$(LIBOBJ)
	$(LNSO) -o $(LIBRARY).so $(LIBOBJ)
	if [ "$(ADDLIB)" = "a" ]; then					\
		$(MAKE) $(LIBRARY).a $(SPECC_LIB)/$(LIBRARY).a ;	\
		fi;

$(MODULE).o:	$(MODULE).cc $(INCLUDE)
	$(CC) $(MODULE).cc

$(BINARY).o:	$(MODULE).cc $(INCLUDE)
	$(CC) $(DEBUG) -o $(BINARY).o $(MODULE).cc

# if there is no symbolic link already, create a copy in the public directory
$(SPECC_LIB)/$(LIBRARY).a:	$(LIBRARY).a
	$(CP) $(LIBRARY).a $(SPECC_LIB)

$(SPECC_LIB)/$(LIBRARY).so:	$(LIBRARY).so
	$(CP) $(LIBRARY).so $(SPECC_LIB)


# --- submodules

GL_String.o:	GL_String.cc GL_String.h
	$(CC) GL_String.cc

$(BINARY)_string$(EXE_SUFFIX):	$(BINARY)_string.o $(MODULE).o $(LIBDEP)
	$(LN) -o $(BINARY)_string$(EXE_SUFFIX) $(BINARY)_string.o	\
		$(MODULE).o $(LIBS) $(STDLIB)

$(BINARY)_string_pure:	$(BINARY)_string.o $(MODULE).o $(LIBDEP)
	$(LNPURE) -o $(BINARY)_string_pure $(BINARY)_string.o		\
		$(MODULE).o $(LIBS) $(STDLIB)

$(BINARY)_string.o:	GL_String.cc GL_String.h
	$(CC) $(DEBUG) -o $(BINARY)_string.o GL_String.cc



# --- service rules

clean:
	-$(RM) *.bak *.BAK *~
	-$(RM) *.o $(BINFILE) $(BINARY)_string* $(LIBRARY).* core
	-$(RM) *.pure* *_pure* .pure

dist:
	for file in $(DIST); do echo $(DISTPREFIX)/$$file >>$(DISTLIST); done

orig:
	for file in $(ORIG); do echo $(ORIGPREFIX)/$$file >>$(ORIGLIST); done

test:		$(BINARY)_string$(EXE_SUFFIX) $(BINFILE)
	./$(BINARY)_string$(EXE_SUFFIX)
	./$(BINFILE)

pure:		$(BINARY)_string_pure $(BINARY)_pure

puretest:	$(BINARY)_string_pure $(BINARY)_pure
	./$(BINARY)_string_pure
	./$(BINARY)_pure


# --- EOF Makefile ---
