AUSTAL (modifiziert)

rules_austal.make

# rules for making austal
# last change: 2024-01-17
#
# language file: make NLS LAN= VRS=
#          e.g.: make NLS LAN=de VRS=3.3.0
#
vpath %.c $(SRC)
vpath %.h $(SRC)
vpath %.nls $(SRC)
vpath %.text $(SRC)/nls
#
OBJALL = TalDos$(OBJ) TalDtb$(OBJ) TalBlm$(OBJ) TalGrd$(OBJ) \
         TalHlp$(OBJ) TalIo1$(OBJ) \
         TalMat$(OBJ) TalMod$(OBJ) TalNms$(OBJ) \
         TalPpm$(OBJ) TalPrm$(OBJ) TalZet$(OBJ) TalPtl$(OBJ) TalSrc$(OBJ) \
         TalTmn$(OBJ) TalWrk$(OBJ) TalBds$(OBJ) \
         genutl$(OBJ) genio$(OBJ)  TalRnd$(OBJ) \
         IBJdmng$(OBJ) IBJary$(OBJ) IBJtxt$(OBJ) IBJmsg$(OBJ) IBJgk$(OBJ) \
         IBJntr$(OBJ) IBJtm$(OBJ) \
         TalUtl$(OBJ) TalUti$(OBJ) TalAKT$(OBJ) TalDef$(OBJ) TalAKS$(OBJ) \
         TalInp$(OBJ) TalQtl$(OBJ) TalMtm$(OBJ) TalMon$(OBJ) TalRgl$(OBJ) \
         TalPrf$(OBJ) TalDMK$(OBJ) TalDMKutil$(OBJ) TalSOR$(OBJ) \
         austal$(OBJ) TALdia$(OBJ) IBJstd$(OBJ) TalCfg$(OBJ) \
         TalStt$(OBJ)  mpisync$(OBJ) pluris$(OBJ) $(LIBS)

OBJAST = TalDos$(OBJ) TalDtb$(OBJ) TalBlm$(OBJ) TalGrd$(OBJ) \
         TalHlp$(OBJ) TalIo1$(OBJ) \
         TalMat$(OBJ) TalMod$(OBJ) TalNms$(OBJ) \
         TalPpm$(OBJ) TalPrm$(OBJ) TalZet$(OBJ) TalPtl$(OBJ) TalSrc$(OBJ) \
         TalTmn$(OBJ) TalWrk$(OBJ) TalBds$(OBJ) \
         genutl$(OBJ) genio$(OBJ) TalRnd$(OBJ) \
         IBJdmng$(OBJ) IBJary$(OBJ) IBJtxt$(OBJ) IBJmsg$(OBJ) IBJgk$(OBJ) \
         IBJntr$(OBJ) IBJtm$(OBJ) \
         TalUtl$(OBJ) TalUti$(OBJ) TalAKT$(OBJ) TalDef$(OBJ) TalAKS$(OBJ) \
         TalInp$(OBJ) TalQtl$(OBJ) TalMtm$(OBJ) TalMon$(OBJ) TalRgl$(OBJ) \
         TalPrf$(OBJ) \
         IBJnls$(OBJ) IBJstd$(OBJ) TalCfg$(OBJ) TalStt$(OBJ) pluris$(OBJ) mpisync$(OBJ) $(LIBS)

OBJDIA = TalBlm$(OBJ)  TalIo1$(OBJ)  TalGrd$(OBJ) \
         TalNms$(OBJ)  TalTmn$(OBJ)  TalMat$(OBJ) TalAdj$(OBJ) \
         genutl$(OBJ)  genio$(OBJ) \
         IBJdmng$(OBJ) IBJary$(OBJ) IBJtxt$(OBJ) IBJmsg$(OBJ) IBJgk$(OBJ) \
         IBJtm$(OBJ) \
         TalInp$(OBJ)  TalDef$(OBJ) TalAKT$(OBJ) TalAKS$(OBJ) TalUtl$(OBJ) \
         TalRgl$(OBJ)  IBJntr$(OBJ) TalDMK$(OBJ) TalBds$(OBJ) TalSOR$(OBJ) \
         TalDMKutil$(OBJ) \
         IBJnls$(OBJ) IBJstd$(OBJ) TalCfg$(OBJ) TalStt$(OBJ) $(LIBS)
            
EXEVRF = verif00$(EXE) verif01$(EXE)  verif02$(EXE)  \
         verif11$(EXE) verif13$(EXE)  verif14$(EXE) \
         verif21$(EXE) verif22a$(EXE) verif22b$(EXE) \
         verif23$(EXE) verif31$(EXE) \
         verif41$(EXE) verif51a$(EXE) verif51b$(EXE) verif51c$(EXE) verif61$(EXE) 

# programs with native language support
NLSPGM = AST DIA V00 V01 V02 V11 V13 V14 V21 V22a V22b V23 V31 V41 V51a V51b V51c V61

# modules for AST with NLS
NLSAST = austal TalInp IBJstd TalHlp TalMtm TalQtl TalDef IBJary IBJdmn \
         IBJmsg IBJntr IBJtxt IBJtm TalAKS TalAKT TalBlm TalDos TalDtb TalGrd \
         TalIo1 TalMod TalMon TalPpm TalPrf TalPrm TalPtl TalRgl TalSrc \
         TalTmn TalUti TalUtl TalWrk TalZet TalCfg
         
# modules for DIA with NLS
NLSDIA = TalWnd TalInp TalDef IBJary IBJdmn IBJmsg IBJtxt IBJtm TalAdj \
         TalAKS TalAKT TalBds TalBlm TalDMK TalDMKutil TalGrd \
         TalIo1 TalRgl TalSOR TalTmn TalUtl TalCfg

#modules for verfication with NLS      
NLSVRF = verif00  verif01  verif02  verif11  verif13  verif14  verif21 \
         verif22a verif22b verif23  verif31  verif41  verif51a verif51b \
         verif51c verif61  TalCfg

NLSV00  = verif00  TalCfg  IBJmsg
NLSV01  = verif01  TalCfg  IBJmsg
NLSV02  = verif02  TalCfg  IBJmsg
NLSV11  = verif11  TalCfg  IBJmsg
NLSV13  = verif13  TalCfg  IBJmsg
NLSV14  = verif14  TalCfg  IBJmsg
NLSV21  = verif21  TalCfg  IBJmsg
NLSV22a = verif22a TalCfg  IBJmsg
NLSV22b = verif22b TalCfg  IBJmsg
NLSV23  = verif23  TalCfg  IBJmsg
NLSV31  = verif31  TalCfg  IBJmsg
NLSV41  = verif41  TalCfg  IBJmsg
NLSV51a = verif51a TalCfg  IBJmsg
NLSV51b = verif51b TalCfg  IBJmsg
NLSV51c = verif51c TalCfg  IBJmsg
NLSV61  = verif61  TalCfg  IBJmsg

######################################################## main targets

all austal-system : IBJnls$(EXE) austal$(EXE) verification 

NLS : AST_$(LAN).nls DIA_$(LAN).nls VRF_$(LAN).nls 

######################################################## implicit rules

#
%$(OBJ) : %.c
$(CC) -c $(COPT) $(SRC)$*.c $(OUTO)$*$(OBJ)

# support for language LAN
%_$(LAN).nls : $(SRC)nls/*.text $(SRC)nls/$(LAN)/*.text IBJnls$(EXE)
IBJnls -collect$(VRS) nls/$(LAN)/$*_$(LAN) $(NLS$*) 

# the NLS source code included by the modules
%.nls : %.text IBJnls$(EXE)
IBJnls -prepare $*

# the NLS client source code for usage with a program
IBJnls_%.c : IBJnls$(EXE)
IBJnls -defaults $* $(NLS$*)

IBJnls_%$(OBJ) : IBJnls_%.c

######################################################### explicit rules

austal$(EXE): austal$(OBJ) $(OBJAST) IBJnls_AST$(OBJ)
$(CC) $(COPT) -c $(SRC)IBJstamp.c
$(CC) $(COPT) $(OUTE)austal$(EXE) $(LOPT) austal$(OBJ) IBJstamp$(OBJ) \
              $(OBJAST) IBJnls_AST$(OBJ) $(SYSL)

#taldia$(EXE) : TALdia$(OBJ) $(OBJDIA) IBJnls_DIA$(OBJ)
# $(CC) $(COPT) -c $(SRC)IBJstamp.c
# $(CC) $(COPT) $(OUTE)taldia$(EXE) $(LOPT) TALdia$(OBJ) IBJstamp$(OBJ) \
#               IBJnls_DIA$(OBJ) $(OBJDIA) $(SYSL)

#pluris$(EXE): pluris$(OBJ)
# $(CC) $(OUTE)pluris$(EXE) $(LOPT) pluris$(OBJ)

# the NLS server
IBJnls$(EXE) : IBJnls_m$(OBJ)
$(CC) $(COPT) $(OUTE)IBJnls$(EXE) $(LOPT) IBJnls_m$(OBJ) $(SYSL)

#
GENHDR   = genutl.h genio.h
IBJHDR   = IBJtxt.h IBJmsg.h IBJall.h IBJary.h IBJtm.h IBJstamp.h

mpisync$(OBJ) : mpisync.c

IBJstd$(OBJ)  : IBJstd.c IBJstd.h IBJmsg.h IBJstd.nls
genutl$(OBJ)  : genutl.c genutl.h $(IBJHDR)
genio$(OBJ)   : genio.c  genio.h  genutl.h $(IBJHDR)
gencnv$(OBJ)  : gencnv.c gencnv.h $(IBJHDR) $(GENHDR)
IBJary$(OBJ)  : IBJary.c IBJary.nls $(IBJHDR)
IBJdmng$(OBJ) : IBJdmn.c IBJdmn.nls IBJdmn.h $(IBJHDR) zlib.h zconf.h
$(CC) -c $(COPT) $(OUTO)IBJdmng$(OBJ) $(SRC)IBJdmn.c

IBJgk$(OBJ)   : IBJgk.c  IBJgk.h
IBJmsg$(OBJ)  : IBJmsg.c IBJmsg.h IBJmsg.nls IBJall.h
IBJnls$(OBJ)  : IBJnls.c IBJnls.h
IBJntr$(OBJ)  : IBJntr.c IBJntr.h IBJntr.nls IBJdmn.h $(IBJHDR)
IBJstamp$(OBJ): IBJstamp.c IBJstamp.h
IBJtxt$(OBJ)  : IBJtxt.c IBJtxt.h IBJtxt.nls IBJmsg.h IBJall.h
IBJtm$(OBJ)   : IBJtm.c IBJtm.h IBJtm.nls
TalAdj$(OBJ)  : TalAdj.c TalAdj.h TalAdj.nls $(IBJHDR) $(GENHDR)
TalAKS$(OBJ)  : TalAKS.c TalAKS.h TalAKS.nls TalInp.h TalStt.h TalCfg.h $(IBJHDR)
TalAKT$(OBJ)  : TalAKT.c TalAKT.h TalAKT.nls IBJdmn.h TalInp.h $(IBJHDR)
TalBds$(OBJ)  : TalBds.c TalBds.h TalBds.nls TalNms.h TalMat.h TalIo1.h \
                IBJdmn.h $(GENHDR)
TalBlm$(OBJ)  : TalBlm.c TalBlm.h TalBlm.nls TalGrd.h TalIo1.h TalTmn.h TalNms.h \
                IBJstd.h $(IBJHDR) $(GENHDR)
TalCfg$(OBJ)  : TalCfg.c TalCfg.h TalCfg.nls
TalDef$(OBJ)  : TalDef.c TalDef.h TalDef.nls TalAKT.h TalAKS.h TalInp.h \
                TalUtl.h TalMat.h IBJdmn.h TalStt.h TalCfg.h $(IBJHDR) 
TalDMK$(OBJ)  : TalDMK.c TalSOR.h TalDMK.nls TalDMKutil.h TalDMK.h TalWnd.h \
                IBJdmn.h $(IBJHDR) 
TalDMKutil$(OBJ) : TalDMKutil.c TalDMKutil.h TalDMKutil.nls $(IBJHDR) TalWnd.h
TalDos$(OBJ)  : TalDos.c TalDos.h TalDos.nls TalGrd.h TalBlm.h TalNms.h \
                TalPrm.h TalPtl.h \
                TalSrc.h TalTmn.h TalWrk.h IBJstd.h $(IBJHDR) $(GENHDR)
TalDtb$(OBJ)  : TalDtb.c TalDtb.h TalDtb.nls TalDos.h TalGrd.h TalMod.h TalNms.h \
                TalInp.h TalPrm.h TalZet.c TalZet.h \
                TalTmn.h TalWrk.h TalBlm.h IBJstd.h IBJdmn.h $(IBJHDR) $(GENHDR)
TalGrd$(OBJ)  : TalGrd.c TalGrd.h TalGrd.nls IBJstd.h TalNms.h TalTmn.h TalBds.h \
                IBJdmn.h $(IBJHDR) $(GENHDR)
TalHlp$(OBJ)  : TalHlp.c TalHlp.h TalHlp.nls TalCfg.h IBJmsg.h
TalInp$(OBJ)  : TalInp.c TalInp.h TalInp.nls IBJdmn.h TalCfg.h $(IBJHDR) \
                TalUtl.h TalAKT.h TalDef.h TalAKS.h IBJntr.h TalStt.h \
                TalMat.h TalDMK.h TalZet.h TalRgl.h
TalIo1$(OBJ)  : TalIo1.c TalIo1.h TalIo1.nls IBJmsg.h IBJary.h IBJtm.h $(GENHDR)
TalMat$(OBJ)  : TalMat.c TalMat.h
TalMod$(OBJ)  : TalMod.c TalMod.h TalMod.nls TalPrf.h TalGrd.h TalPrm.h TalNms.h \
                TalTmn.h IBJstd.h IBJdmn.h $(IBJHDR) $(GENHDR)
TalMon$(OBJ)  : TalMon.c TalMon.h TalMon.nls TalInp.h TalCfg.h TalUti.h \
                IBJdmn.h $(IBJHDR)
TalMtm$(OBJ)  : TalMtm.c TalMtm.h TalMtm.nls genutl.h IBJdmn.h $(IBJHDR)
TalNms$(OBJ)  : TalNms.c TalNms.h
TalPpm$(OBJ)  : TalPpm.c TalPpm.h TalPpm.nls TalGrd.h TalNms.h TalMod.h \
                TalPrf.h TalPrm.h TalTmn.h IBJstd.h IBJdmn.h $(IBJHDR) $(GENHDR)
TalPrf$(OBJ)  : TalPrf.c TalPrf.h TalPrf.nls TalBlm.h TalGrd.h TalIo1.h TalNms.h  \
                TalTmn.h IBJstd.h TalWnd.h TalUtl.h TalPrm.h IBJdmn.h $(GENHDR) $(IBJHDR)
TalPrm$(OBJ)  : TalPrm.c TalPrm.h TalPrm.nls IBJstd.h TalNms.h TalTmn.h \
                TalIo1.h TalGrd.h $(IBJHDR) $(GENHDR)
TalPtl$(OBJ)  : TalPtl.c TalPtl.h TalPtl.nls TalNms.h TalTmn.h IBJstd.h \
                TalInp.h $(IBJHDR) $(GENHDR)
TalQtl$(OBJ)  : TalQtl.c TalQtl.h TalQtl.nls TalDtb.h TalUtl.h \
                IBJstamp.h IBJdmn.h $(IBJHDR)
TalRgl$(OBJ)  : TalRgl.c TalRgl.h TalRgl.nls IBJgk.h IBJdmn.h $(IBJHDR)
TalRnd$(OBJ)  : TalRnd.c TalRnd.h
TalSOR$(OBJ)  : TalSOR.c TalSOR.h TalSOR.nls IBJmsg.h IBJary.h TalDMKutil.h \
                TalWnd.h
TalSrc$(OBJ)  : TalSrc.c TalSrc.h TalSrc.nls TalGrd.h TalNms.h TalPrm.h \
                TalPtl.h IBJstd.h TalRnd.h TalTmn.h IBJdmn.h $(IBJHDR) $(GENHDR)
TalStt$(OBJ)  : TalStt.c TalStt.h IBJdmn.h IBJtxt.h IBJary.h IBJmsg.h
TalTmn$(OBJ)  : TalTmn.c TalTmn.h TalTmn.nls IBJdmn.h $(IBJHDR) $(GENHDR)
TalUti$(OBJ)  : TalUti.c TalUti.h TalUti.nls TalCfg.h IBJdmn.h $(IBJHDR)
TalUtl$(OBJ)  : TalUtl.c TalUtl.h TalUtl.nls $(IBJHDR)
TalWrk$(OBJ)  : TalWrk.c TalWrk.h TalWrk.nls TalGrd.h TalMat.h TalMod.h \
                TalNms.h TalPrf.h TalPrm.h TalPtl.h TalPpm.h \
                TalSrc.h TalTmn.h IBJstd.h IBJdmn.h pluris.h $(IBJHDR) $(GENHDR)
TalZet$(OBJ)  : TalZet.c TalZet.h TalZet.nls TalGrd.h IBJstd.h TalNms.h \
                TalTmn.h IBJdmn.h $(IBJHDR) $(GENHDR)

austal$(OBJ) : austal.c austal.h austal.nls IBJstd.nls\
           TalDos.h TalDtb.h pluris.h \
           TalGrd.h TalIo1.h TalMod.h TalNms.h \
           TalPrf.h TalPrm.h TalPtl.h TalSrc.h TalTmn.h TalWrk.h \
           TalInp.h TalDef.h TalMtm.h TalQtl.h TalMon.h TalUti.h \
           TalUtl.h TalRnd.h $(IBJHDR) IBJstamp.h IBJstd.h $(GENHDR) \
           TalCfg.h TalStt.h mpisync.h
$(CC)  -DMAIN $(COPT) -c $(SRC)austal.c $(OUTO)austal$(OBJ)

pluris$(OBJ): pluris.c pluris.h
$(CC) -c $(COPT) $(SRC)pluris.c $(OUTO)pluris$(OBJ)

TALdia$(OBJ) : TalWnd.c  TalWnd.h  TalWnd.nls TalGrd.h  TalBlm.h  TalNms.h  \
           TalTmn.h  TalMat.h  IBJstd.h  TalAdj.h  $(IBJHDR) TalBds.h \
           $(GENHDR) TalInp.h  TalDef.h TalDMK.h TalDMKutil.h IBJdmn.h \
           TalStt.h  IBJtm.h IBJnls.h
$(CC) -DMAIN -c $(COPT) $< $(OUTO)$@

IBJnls_m$(OBJ) : IBJnls.c
$(CC)  -DMAIN $(COPT) -c $(SRC)IBJnls.c $(OUTO)IBJnls_m$(OBJ)

########################################################################

verification : $(EXEVRF)

verif%$(EXE) : verif%.c verif.h verif%.nls IBJnls_V%.c TalCfg.h IBJmsg.h \
               TalCfg$(OBJ) IBJmsg$(OBJ)
$(CC) -c $(COPT) $(SRC)IBJnls_V$*.c $(OUTO)IBJnls_V$*$(OBJ)
$(CC) $(COPT) $< $(LOPT) IBJnls_V$*$(OBJ) IBJnls$(OBJ) TalCfg$(OBJ) \
                         IBJmsg$(OBJ) $(SYSL) $(OUTE)$@

IBJnls_V%.c : $(SRC)nls/verif%.text
IBJnls -defaults V$* $(NLSV$*)

###################### remove all object files #####################

.PHONY : clean clean_nls
clean :
$(REMOVE) *$(OBJ) austal$(EXE) taldia$(EXE) IBJnls$(EXE) $(EXEVRF) \
$(SRCRM)*.nls $(SRCRM)IBJnls_*.c

clean_nls :
$(REMOVE) IBJnls_*$(OBJ) $(SRCRM)IBJnls_*.c

##########################################################################