$! This command procedure will build the image IP_VCM.EXE in the $! directory where this file resides. All the source files $! are assumed to be in the same directory as this procedure. $! For the image IP_VCM.EXE to be loaded by the LOAD_IP_VCM $! image, it must be copied to SYS$LOADABLE_IMAGES. $ $! Define our location $ $ SAVE_DEFAULT = F$ENVIRONMENT("DEFAULT") $ NEW_DEFAULT = F$ENVIRONMENT("PROCEDURE") $ NEW_DEFAULT = F$PARSE(NEW_DEFAULT,,,"DEVICE") + - F$PARSE(NEW_DEFAULT,,,"DIRECTORY") $ SET DEFAULT 'NEW_DEFAULT' $ $ DEFINE IP_VCM$OBJ 'NEW_DEFAULT' $ $! Compile/Assemble the source $ $ MACRO/MIGRATE/NOTIE IP_VCM_INIT + SYS$LIBRARY:ARCH_DEFS.MAR + - SYS$LIBRARY:LIB.MLB/LIB $ MACRO/MIGRATE/NOTIE VCI_JKT + SYS$LIBRARY:ARCH_DEFS.MAR + - SYS$LIBRARY:LIB.MLB/LIB $ CC/INSTRUCTION=NOFLOAT/EXTERN=STRICT_REFDEF/NAMES=UPPER - IP_VCM + SYS$LIBRARY:SYS$LIB_C.TLB/LIB $ CC/INSTRUCTION=NOFLOAT/EXTERN=STRICT_REFDEF/NAMES=UPPER - IPCP + SYS$LIBRARY:SYS$LIB_C.TLB/LIB $ $! Create/Load the object library with the resulting object files $ $ IF F$SEARCH("IP_VCM.OLB") .EQS. "" $ THEN $ LIBRARY/CREATE/OBJECT IP_VCM $ LIBRARY/OBJECT/INSERT IP_VCM IP_VCM_INIT,IP_VCM,IPCP,VCI_JKT $ ELSE $ LIBRARY/OBJECT/REPLACE IP_VCM IP_VCM_INIT,IP_VCM,IPCP,VCI_JKT $ ENDIF $ DELETE IP_VCM_INIT.OBJ;* $ DELETE VCI_JKT.OBJ;* $ DELETE IP_VCM.OBJ;* $ DELETE IPCP.OBJ;* $ $! Link to generate the image $ $ LINK/NOTRACE/NOUSERLIB/NOSYSLIB/NOSYSSHR - /SHARE - /NATIVEONLY - /BPAGE=14/NOTRACEBACK/NODEMAND_ZERO - /SECTION_BINDING - /SYSEXE=SELECTIVE - /EXE=IP_VCM.EXE - SYS$INPUT/OPT ! ! To get this to work need to define a logical ip_vcm$obj ! which points to the objects ! SYMBOL_TABLE=GLOBALS ! ! Ensure fixups are done before our initialization routines are called ! ALPHA$LIBRARY:STARLET/INCLUDE=(SYS$DOINIT,SYS$SSDEF) ! ! Get object files ! IP_VCM$OBJ:IP_VCM/INCLUDE=(PPP_IP_VCM_INIT,IP_VCM,IPCP,VCI_JKT) SYS$LIBRARY:VMS$VOLATILE_PRIVATE_INTERFACES/INCLUDE=(PPP_LIB) ! CASE_SENSITIVE=YES ! ! Set up psect attributes ! PSECT_ATTR=$CODE, PIC,CON,REL,GBL,NOSHR, EXE,NOWRT,NOVEC,MOD PSECT_ATTR=$CODE$, PIC,CON,REL,GBL,NOSHR, EXE,NOWRT,NOVEC,MOD ! PSECT_ATTR=$$$100_DATA, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$LINK$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$LINKAGE$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$LINKAGE, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$DATA$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$NONPAGED_DATA, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$LITERAL$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$READONLY$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD PSECT_ATTR=$BSS$, PIC,CON,REL,GBL,NOSHR,NOEXE, WRT,NOVEC,MOD ! PSECT_ATTR=EXEC$INIT_LINKAGE, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_000, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_001, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_002, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_CODE, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_SSTBL_000, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_SSTBL_001, PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD PSECT_ATTR=EXEC$INIT_SSTBL_002 PIC,CON,REL,GBL,NOSHR, EXE, WRT,NOVEC,MOD ! ! Collect all the psects into clusters ! COLLECT=NONPAGED_CODE/ATTRIBUTES=RESIDENT, $CODE, - $CODE$ COLLECT=NONPAGED_DATA/ATTRIBUTES=RESIDENT, $$$100_DATA, - $LINK$, - $LINKAGE$, - $LINKAGE, - $DATA$, - $LITERAL$, - $READONLY$, - $BSS$, - EXEC$NONPAGED_DATA COLLECT=INIT/ATTRIBUTES=INITIALIZATION_CODE, EXEC$INIT_LINKAGE, - EXEC$INIT_000, - EXEC$INIT_001, - EXEC$INIT_002, - EXEC$INIT_CODE, - EXEC$INIT_SSTBL_000, - EXEC$INIT_SSTBL_001, - EXEC$INIT_SSTBL_002 $ $ CLEANUP: $ $ SET DEFAULT 'SAVE_DEFAULT'