# Makefile for IFCLib
#

#
# Program specific options:
#
COMPONENT  = IFCLib
OBJS       = \
        o.ifc
EXPORTS    = ${EXP_LIB}.${LIBCOMPONENT}.h.ifc
INCLUDES   = 
CDEFINES   = 

EXP_LIB = @
# <include of LibExport>
TARGET ?= lib${COMPONENT}
# Usually LIBCOMPONENT would be conditionally given the same name as the
# component, but I'm re-working this for the export.
LIBCOMPONENT ?= lib
# <include of Tools>
#
# Tools:
#
MKDIR   = cdir
CC      = cc
CP      = copy
LD      = link
RM      = remove
LIBFILE = libfile
WIPE    = -wipe
IFTHERE = IfThere
IFTHERETHEN = Then
IFTHEREELSE = Else
VTRANSLATE = vtranslate VersionNum 
# If you don't have VTranslate, you might need to use another tool
# VTRANSLATE = pipecopy
#
# Default flags
#
CFLAGS_BASE = ${THROWBACK} ${PCC} -c -depend !Depend -Wc -fa ${CDEFINES} ${INCLUDES}
CFLAGS      = ${CFLAGS_BASE} -apcs 3/26
CFLAGS32    = ${CFLAGS_BASE} -apcs 3/32
CFLAGS_ZM   = ${CFLAGS} -zM -zps1
CFLAGS32_ZM = ${CFLAGS32} -zM -zps1
LDFLAGS     =
CPFLAGS     = ~cfr~v
WFLAGS      = ~c~v
LIBFILEFLAGS = -o -c 

INCLUDES := -I${INCLUDES}
#
# Rule patterns
#
.SUFFIXES: .o .oz .o32 .oz32 $(EXTRASUFFIXES) .s .c .cmhg
.c.o:;    ${CC} ${CFLAGS} -o $@ $<
.c.o32:;  ${CC} ${CFLAGS32} -o $@ $<
.c.oz:;   ${CC} ${CFLAGS_ZM} -o $@ $<
.c.oz32:; ${CC} ${CFLAGS32_ZM} -o $@ $<

EXPTARGET = $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET) \
            $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)zm
ifdef NO32BITLIBS
OBJTARGET32 =
EXPTARGET32 =
else
OBJTARGET32 = o32.$(TARGET) oz32.$(TARGET)
EXPTARGET32 = ${EXPTARGET:%=%-32}
endif

# Export rules
export: export_$(PHASE)
export_: export_hdrs export_libs

export_all: export_hdrs export_libs

export_hdrs: $(EXPORTS)
        @echo ${COMPONENT}: export complete (hdrs)

export_libs: ${EXPTARGET} \
             $(EXPTARGET32) \
             $(EXPORTLIBS)
        @echo ${COMPONENT}: export complete (libs)

$(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET): o.$(TARGET)
        ${CP} $? $@ ${CPFLAGS}
$(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)zm: oz.$(TARGET)
        ${CP} $? $@ ${CPFLAGS}
$(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)-32: o32.$(TARGET)
        ${CP} $? $@ ${CPFLAGS}
$(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)zm-32: oz32.$(TARGET) 
        ${CP} $? $@ ${CPFLAGS}
        
# Clean rules
clean: ${CLEANTARGET}
        ${WIPE} o.* ${WFLAGS}
        ${WIPE} oz.* ${WFLAGS}
        ${WIPE} o32.* ${WFLAGS}
        ${WIPE} oz32.* ${WFLAGS}
        ${RM} ${EXPORTS}
        ${RM} $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)
        ${RM} $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)zm
        ${RM} $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)-32
        ${RM} $(EXP_LIB).$(LIBCOMPONENT).o.$(TARGET)
        @echo ${COMPONENT}: cleaned

# Init rules
.INIT: $(INITTARGET)
        ${MKDIR} $(EXP_LIB).$(LIBCOMPONENT)
        ${MKDIR} $(EXP_LIB).$(LIBCOMPONENT).h
        ${MKDIR} $(EXP_LIB).$(LIBCOMPONENT).o
        ${MKDIR} o
        ${MKDIR} oz
ifndef NO32BITLIBS
        ${MKDIR} o32
        ${MKDIR} oz32
endif

# Library construction
o.$(TARGET):       ${OBJS}
        ${LIBFILE} ${LIBFILEFLAGS} o.${TARGET} ${OBJS}

oz.$(TARGET):      ${OBJS:o.%=oz.%}
        ${LIBFILE} ${LIBFILEFLAGS} oz.${TARGET} ${OBJS:o.%=oz.%}

o32.$(TARGET):     ${OBJS:o.%=o32.%}
        ${LIBFILE} ${LIBFILEFLAGS} o32.${TARGET} ${OBJS:o.%=o32.%}

oz32.$(TARGET):     ${OBJS:o.%=oz32.%}
        ${LIBFILE} ${LIBFILEFLAGS} oz32.${TARGET} ${OBJS:o.%=oz32.%}
# <end include of LibExport>

# Exports
${EXP_LIB}.${LIBCOMPONENT}.h.ifc: h.ifc
        ${CP} $?  $@  ${CPFLAGS}

#---------------------------------------------------------------------------
# Dynamic dependencies:
