#*****************************************************************************/
#*                                                                           */
#*                           OCO SOURCE MATERIALS                            */
#*                             IBM CONFIDENTIAL                              */
#*                                    OR                                     */
#*                        IBM CONFIDENTIAL RESTRICTED                        */
#*            WHEN COMBINED WITH THE AGGREGATED OCO SOURCE MODULES           */
#*                           FOR THIS PROGRAM PRODUCT                        */
#*                                                                           */
#*    5639-A26 VisualAge Generator Workgroup Services for Windows NT V2.2    */
#*                     (C) COPYRIGHT IBM CORP. 1994,1996                     */
#*                                                                           */
#*****************************************************************************/
CALLEDAPP = $(CALLAPP)
FCWLIB = fcw.lib
LIBS = $(FCWLIB) csorstrc.lib CPPRMO36.LIB

DEFINES=/DFCW_NT /DCSOWIN32 /DWIN32 /D_Windows
CPPFLAGS=$(DEFINES)

!IF "$(FCWCOMP)" == "MSVC++"
CPPCMD = cl
LINK = link
CPPFLAGS=/MD /GX /c $(CPPFLAGS) /DFCW_MS_CPP /W0
LINKFLAGS=/NOLOGO /MAP
LINKFLAGSCALL=/NOLOGO /MAP

!IF "$(DEBUG)" == "YES"
CPPFLAGS=/Od /Ob0 /Zi $(CPPFLAGS)
LINKFLAGS=/DEBUG $(LINKFLAGS)
LINKFLAGSCALL = /DEBUG $(LINKFLAGSCALL)
!ELSE
CPPFLAGS= /O2 $(CPPFLAGS)
LINKFLAGS=/PDB:NONE $(LINKFLAGS)
!ENDIF

!ELSE
CPPCMD = icc
LINK=ilink
LIBCMD=ilib
CPPFLAGS=/Gn /C+ /Ge- /Gm+ /Q+ /Tx+ /Gd+ /Mc $(CPPFLAGS) /DFCW_VA_CPP
LINKFLAGS=/NOD /NOE /NOLOGO /M
LINKFLAGSCALL=/NOD /NOE /NOLOGO /M
LIBS = $(LIBS) CSORMI36.lib

!IF "$(DEBUG)" == "YES"
CPPFLAGS=/Ti+ /O- /Oi- $(CPPFLAGS)
LINKFLAGS = /DEBUG $(LINKFLAGS)
LINKFLAGSCALL = /DEBUG $(LINKFLAGSCALL)
!ELSE
CPPFLAGS= /O+ $(CPPFLAGS)
!ENDIF

!IF "$(FCWDBCS)" == "YES"
CPPFLAGS = $(CPPFLAGS) /Sn+
!ENDIF

!ENDIF

!IF "$(CICS)" == "YES"
LIBS = $(LIBS) $(CICSLIB)\cicsprCpp.lib
EXT=ibmcpp
!IF "$(FCWCOMP)" == "MSVC++"
MAINENTRY = main @1
!ELSE
MAINENTRY = ?main @1
CPPFLAGS=/Mc $(CPPFLAGS) /DFCW_VA_CPP
!ENDIF
OBJS      = $(FCWDIR)\lib\fcwpcics.obj
CPPFLAGS=$(CPPFLAGS) /DCICS_APP
CALLEDAPP   = NO
!ELSE
EXT=dll
!IF "$(FCWCOMP)" == "MSVC++"
MAINENTRY = $* @1
!ELSE
MAINENTRY = _$* @1
!ENDIF
!IF "$(ENTRYNAME)" != ""
MAINENTRY = $(ENTRYNAME)=$(MAINENTRY)
!ENDIF
!ENDIF

!IF "$(SQL)" != "YES"

all : $(CPPNAME).$(EXT)

clean :
        - erase $(CPPNAME).obj
        - erase $(CPPNAME).def

!IF "$(CALLEDAPP)" == "YES"

$(CPPNAME).dll : $*.obj $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        @ echo LIBRARY     $*  INITINSTANCE               >  $*.def
        @ echo DATA        MOVEABLE MULTIPLE PRELOAD      >> $*.def
        @ echo CODE        MOVEABLE DISCARDABLE           >> $*.def
        @ echo STACKSIZE   8192                           >> $*.def
        @ echo HEAPSIZE    8192                           >> $*.def
        @ echo EXPORTS     $(MAINENTRY)                   >> $*.def
        $(LINK) $(LINKFLAGSCALL) /DLL /OUT:$@ $*.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo LIBRARY     $*                       >  $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LIBCMD) $*.def
        $(LINK) $(LINKFLAGSCALL) /DLL /OUT:$@ $*.obj $*.exp $(OBJS) $(LIBS) /Stack:8192 /Heap:8192
!ENDIF

$(CPPNAME).obj : $*.cpp
        $(CPPCMD) $(CPPFLAGS) $*.cpp

!ELSE

!IF "$(CICS)" == "YES"

$(CPPNAME).ibmcpp : $*.cpp $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        copy   $(CPPNAME).cpp $*.C
        @ echo LIBRARY     $*         INITINSTANCE  >  $*.def
        @ echo PROTMODE                             >> $*.def
        @ echo DATA        MULTIPLE NONSHARED       >> $*.def
        @ echo CODE        LOADONCALL               >> $*.def
        @ echo STACKSIZE   8192                     >> $*.def
        @ echo HEAPSIZE    8192                     >> $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(CPPCMD) -c -MD -GX -O2 /DFCW_MS_CPP /W0 $(DEFINES) -Tp$*.C
        -5$(LINK) $(LINKFLAGS) /DLL /OUT:$*.cpp $*.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo EXPORTS     $(MAINENTRY)             > $*.def

        $(CPPCMD) -B"$(LINKFLAGS)"  $(CPPFLAGS) -Tp$*.cpp $*.def $(OBJS) $(LIBS)
        $(LIBCMD) $(OBJS) /gi:$* /def:$*.def
        -5$(LINK) $(LINKFLAGS) /DLL /OUT:$*.ibmcpp $*.obj $*.exp $(OBJS)  $(LIBS) /Stack:8192 /Heap:8192
!ENDIF

!ELSE

$(CPPNAME).dll : $*.obj $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        @ echo LIBRARY     $*         INITINSTANCE  >  $*.def
        @ echo PROTMODE                             >> $*.def
        @ echo DATA        MULTIPLE NONSHARED       >> $*.def
        @ echo CODE        LOADONCALL               >> $*.def
        @ echo STACKSIZE   8192                     >> $*.def
        @ echo HEAPSIZE    8192                     >> $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LINK) $(LINKFLAGS) /DLL /OUT:$@ $*.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo LIBRARY     $*                       >  $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LIBCMD) $*.def
        $(LINK) $(LINKFLAGS) /DLL /OUT:$@ $*.obj $*.exp $(OBJS) $(LIBS) /Stack:8192 /Heap:8192
!ENDIF

$(CPPNAME).obj : $*.cpp
        $(CPPCMD) $(CPPFLAGS) $*.cpp

!ENDIF
!ENDIF

nul $(FCWLIB) :
        @ echo > NUL

!ELSE

!IF "$(DBMS)" == "ORACLE"
LIBS=$(LIBS) sqllib18.lib ociw32.lib

!IF "$(DATABASE)" == ""
UIDPSW=
!ELSE
UIDPSW=@$(DATABASE) SQLCHECK=FULL
!ENDIF

!IF "$(DBUSER)" == ""
!IF "$(FCWDBUSER)" == ""
UIDPSW=
!ELSE
UIDPSW=userid=$(FCWDBUSER)/$(FCWDBPASSWORD)$(UIDPSW)
!ENDIF
!ELSE
UIDPSW=userid=$(DBUSER)/$(DBPASSWORD)$(UIDPSW)
!ENDIF

# Not ORACLE
!ELSE
LIBS = $(LIBS) db2api.lib

!IF "$(DATABASE)" == ""
CONNTO =
!ELSE
CONNTO = to
!ENDIF

!IF "$(DBUSER)" == ""
!IF "$(FCWDBUSER)" == ""
UIDPSW=
!ELSE
UIDPSW=user $(FCWDBUSER) using $(FCWDBPASSWORD)
!ENDIF
!ELSE
UIDPSW=user $(DBUSER) using $(DBPASSWORD)
!ENDIF

!IF "$(BIND)" == "YES"
BINDOPTS=bindfile using $(CPPNAME).bnd package USING $(CPPNAME)
!ELSE
BINDOPTS=package using $(CPPNAME)
!ENDIF

!IF "$(DATEFORMAT)" != ""
DATEOPT=datetime $(DATEFORMAT)
!ENDIF
!ENDIF

all : $(CPPNAME).$(EXT)

clean :
        - erase $(CPPNAME)_.obj
        - erase $(CPPNAME).def
        - erase $(CPPNAME)_.bnd
        - erase $(CPPNAME).map
        - erase $(CPPNAME)_.cpp

!IF "$(CALLEDAPP)" == "YES"

$(CPPNAME).dll : $*_.obj $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        @ echo LIBRARY     $*         INITINSTANCE   >  $*.def
        @ echo DATA        MOVEABLE MULTIPLE PRELOAD >> $*.def
        @ echo CODE        MOVEABLE DISCARDABLE      >> $*.def
        @ echo STACKSIZE   8192                      >> $*.def
        @ echo HEAPSIZE    8192                      >> $*.def
        @ echo EXPORTS     $(MAINENTRY)              >> $*.def
        $(LINK) $(LINKFLAGSCALL) /DLL /OUT:$@ $*_.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo LIBRARY     $*                       >  $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LIBCMD) $*.def
        $(LINK) $(LINKFLAGSCALL) /DLL /OUT:$@ $*_.obj $*.exp $(OBJS) $(LIBS) /Stack:8192 /Heap:8192
!ENDIF

$(CPPNAME)_.obj : $(CPPNAME)_.cpp
        $(CPPCMD) $(CPPFLAGS) $*.cpp

$(CPPNAME)_.cpp : $(CPPNAME).cpp
        copy $(CPPNAME).cpp $*.sqc
!IF "$(DBMS)" == "ORACLE"
        proc $*.sqc $(UIDPSW) code=CPP mode=ISO
!ELSE
        -4db2 start dbm
        -2db2 connect $(CONNTO) $(DATABASE) $(UIDPSW) &db2 prep $*.sqc $(DATEOPT) $(BINDOPTS)
        copy $*.c $*.cpp
!ENDIF

!ELSE
!IF "$(CICS)" == "YES"

$(CPPNAME).ibmcpp : $*_.cpp $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        @ echo LIBRARY     $*         INITINSTANCE  >  $*.def
        @ echo PROTMODE                             >> $*.def
        @ echo DATA        MULTIPLE NONSHARED       >> $*.def
        @ echo CODE        LOADONCALL               >> $*.def
        @ echo STACKSIZE   8192                     >> $*.def
        @ echo HEAPSIZE    8192                     >> $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(CPPCMD) -c -MD -GX -O2 /DFCW_MS_CPP /W0 $(DEFINES) -Tp$(CPPNAME)_.C
        -5$(LINK) $(LINKFLAGS) /DLL /OUT:$*.cpp $*_.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo EXPORTS     $(MAINENTRY)             > $*.def
        $(CPPCMD) -B"$(LINKFLAGS)"  $(CPPFLAGS) -Tp$(CPPNAME)_.cpp $*.def $(OBJS) $(LIBS)
        $(LIBCMD) $(OBJS) /gi:$* /def:$*.def
        -5$(LINK) $(LINKFLAGS) /DLL /OUT:$*.ibmcpp $*_.obj $*.exp $(OBJS) $(LIBS) /Stack:8192 /Heap:8192
!ENDIF

!ELSE
$(CPPNAME).dll : $*_.obj $(FCWLIB)
!IF "$(FCWCOMP)" == "MSVC++"
        @ echo LIBRARY     $*         INITINSTANCE  >  $*.def
        @ echo PROTMODE                             >> $*.def
        @ echo DATA        MULTIPLE NONSHARED       >> $*.def
        @ echo CODE        LOADONCALL               >> $*.def
        @ echo STACKSIZE   8192                     >> $*.def
        @ echo HEAPSIZE    8192                     >> $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LINK) $(LINKFLAGS) /DLL /OUT:$@ $*_.obj $(OBJS) $(LIBS) /DEF:$*.def
!ELSE
        @ echo LIBRARY     $*                       >  $*.def
        @ echo EXPORTS     $(MAINENTRY)             >> $*.def
        $(LIBCMD) $*.def
        $(LINK) $(LINKFLAGS) /DLL /OUT:$@ $*_.obj $*.exp $(OBJS) $(LIBS) /Stack:8192 /Heap:8192
!ENDIF
!ENDIF

$(CPPNAME)_.obj : $(CPPNAME)_.cpp
        $(CPPCMD) $(CPPFLAGS) $*.cpp

$(CPPNAME)_.cpp : $(CPPNAME).cpp
        copy $(CPPNAME).cpp $*.sqc
!IF "$(DBMS)" == "ORACLE"
        proc $*.sqc $(UIDPSW) code=CPP mode=ISO
!ELSE
        -4db2 start dbm
        -2db2 connect $(CONNTO) $(DATABASE) $(UIDPSW) &db2 prep $*.sqc $(DATEOPT) $(BINDOPTS)
        copy $*.c $*.cpp
!ENDIF


!ENDIF

nul $(FCWLIB) :
        @ echo > NUL

!ENDIF
