$! $! BUILD.COM - Build Kerberos & GSS API Examples $! $! P1 - Build Example (Optional) $! K[rb] | G[ss] $! The default is to build all examples $! $! P2 - Build operation (Optional) $! C[ompile] | L[ink] $! The default is Compile & Link all modules $! $! P3 - Module Name[s] (Optional) $! The module names can be comma separated $! $! P4 - Debug indicator (Optional) $! Y[es] | N[o] $! The default is No $! $ VERIFY = F$VERIFY(0) $ Set NoOn $! $!------------------------------------------------------------------------------ $! Establish the base symbols used by this procedure $!------------------------------------------------------------------------------ $! $ VAX = 1 $ Alpha = 2 $ IA64 = 3 $ SAY := WRITE SYS$OUTPUT $! $!------------------------------------------------------------------------------ $! Determine the architecture $!------------------------------------------------------------------------------ $! $ ARCH_TYPE = F$GETSYI ("ARCH_TYPE") $ IF .NOT. ($STATUS .AND. 1) .OR. (ARCH_TYPE .NE. VAX .AND. ARCH_TYPE .NE. - Alpha .AND ARCH_TYPE .NE. IA64) $ THEN $ SAY "Invalid Architecture type ''ARCH_TYPE' was encountered ... aborting" $ GOTO EXIT $ ENDIF $! $ ARCH_NAME = F$GETSYI ("ARCH_NAME") $! $!------------------------------------------------------------------------------ $! Establish the rest of the symbols used by this procedure $!------------------------------------------------------------------------------ $! $ EXE_DIR = F$ENVIRONMENT ("DEFAULT") $ OBJ_DIR = F$ENVIRONMENT ("DEFAULT") $ SRC_DIR = F$ENVIRONMENT ("DEFAULT") $! $!------------------------------------------------------------------------------ $! Trim, upper case and validate the parameters $!------------------------------------------------------------------------------ $! $ P1 = F$EDIT (P1, "TRIM,UPCASE") $ IF F$LENGTH (P1) .GT. 0 .AND. - P1 .NES. F$EXTRACT (0, 3, "KRB") .AND. - P1 .NES. F$EXTRACT (0, 3, "GSS") $ THEN $ SAY "Invalid P1 parameter ''P1' encountered" $ SAY "Expected KRB or GSS ... Aborting build" $ GOTO EXIT $ ENDIF $! $ P2 = F$EDIT (P2, "TRIM,UPCASE") $ IF F$LENGTH (P2) .GT. 0 .AND. - P2 .NES. F$EXTRACT (0, F$LENGTH(P2), "COMPILE") .AND. - P2 .NES. F$EXTRACT (0, F$LENGTH(P2), "LINK") $ THEN $ SAY "Invalid P2 parameter ''P2' encountered" $ SAY "Expected KRB or GSS ... Aborting build" $ GOTO EXIT $ ENDIF $! $ P3 = F$EDIT (P3, "TRIM,UPCASE,COLLAPSE") $! $ P4 = F$EDIT (P4, "TRIM,UPCASE") $ IF F$LENGTH (P4) .GT. 0 .AND. - P4 .NES. F$EXTRACT (0, F$LENGTH(P4), "YES") .AND. - P4 .NES. F$EXTRACT (0, F$LENGTH(P4), "NO") $ THEN $ SAY "Invalid P4 parameter ''P4' encountered" $ SAY "Expected YES or NO ... Aborting build" $ GOTO EXIT $ ENDIF $! $!------------------------------------------------------------------------------ $! Parse Parameter 4 for Debug command $!------------------------------------------------------------------------------ $! $ DEFINE GSSAPI KRB$ROOT:[INCLUDE] $ COMPILE_CMD = "CC/include=krb$root:[include]" $ LINK_CMD = "Link " $! $ IF F$LENGTH (P4) .GT. 0 .AND. P4 .EQS. F$EXTRACT (0, F$LENGTH(P4), "YES") $ THEN $ COMPILE_OPT = "/Debug /NoOptimize" $ LINK_OPT = "/Debug /Traceback" $ ELSE $ COMPILE_OPT = "/NoDebug /NoOptimize " $ LINK_OPT = "/NoDebug /NoTraceback " $ ENDIF $! $ COMPILE_OPT = COMPILE_OPT + "/Machine_Code /Prefix_Library_Entries=ALL_ENTRIES " $! $ IF (ARCH_TYPE .EQ. Alpha) .OR. (ARCH_TYPE .EQ. IA64) THEN - COMPILE_OPT = COMPILE_OPT + "/Pointer_Size=LONG " $! $! LINK_OPT = LINK_OPT + "/Full " $! $!------------------------------------------------------------------------------ $! Setup the Compile and Link Command Lines $!------------------------------------------------------------------------------ $! $ COMPILE_RTN := Call TST_Compile $ LINK_RTN := Call TST_Link $! $!------------------------------------------------------------------------------ $! Parse Parameter 2 for Compile command $!------------------------------------------------------------------------------ $! $ IF F$LENGTH (P2) .GT. 0 .AND. P2 .EQS. F$EXTRACT (0, F$LENGTH(P2), "COMPILE") $ THEN $ IF P3 .NES. "" $ THEN $ CTR = 0 $CNAME_LOOP: $ MOD = F$ELEMENT (CTR, ",", P3) $ IF MOD .NES. "," $ THEN $ MOD = F$PARSE (MOD,,,"NAME") $ 'COMPILE_RTN' 'MOD' $ CTR = CTR + 1 $ GOTO CNAME_LOOP $ ENDIF $ GOTO EXIT $ ELSE $ GOTO COMPILE_LBL $ ENDIF $ ENDIF $! $!------------------------------------------------------------------------------ $! Parse Parameter 2 for Link command $!------------------------------------------------------------------------------ $! $ IF F$LENGTH (P2) .GT. 0 .AND. P2 .EQS. F$EXTRACT (0, F$LENGTH(P2), "LINK") $ THEN $ IF P3 .NES. "" $ THEN $ CTR = 0 $LNAME_LOOP: $ MOD = F$ELEMENT (CTR, ",", P3) $ IF MOD .NES. "," $ THEN $ MOD = F$PARSE (MOD,,,"NAME") $ IF P1 .EQS. "GSS" $ THEN $ 'LINK_RTN' 'MOD' GSS_COMMON $ ELSE $ 'LINK_RTN' 'MOD' KRB_COMMON $ ENDIF $ CTR = CTR + 1 $ GOTO LNAME_LOOP $ ENDIF $ GOTO EXIT $ ELSE $ GOTO LINK_LBL $ ENDIF $ ENDIF $! $!------------------------------------------------------------------------------ $! Now, Compile each module $!------------------------------------------------------------------------------ $! $COMPILE_LBL: $! $ IF P1 .EQS. "" .OR. P1 .EQS. "GSS" $ THEN $ 'COMPILE_RTN' GSS_CLIENT $ 'COMPILE_RTN' GSS_SERVER $ 'COMPILE_RTN' GSS_COMMON $ ENDIF $! $ IF P1 .EQS. "" .OR. P1 .EQS. "KRB" $ THEN $ 'COMPILE_RTN' KRB_CLIENT $ 'COMPILE_RTN' KRB_SERVER $ 'COMPILE_RTN' KRB_COMMON $ ENDIF $! $ IF P2 .NES. "" THEN GOTO EXIT $! $!------------------------------------------------------------------------------ $! Now, Link each module $!------------------------------------------------------------------------------ $! $LINK_LBL: $! $ IF P1 .EQS. "" .OR. P1 .EQS. "GSS" $ THEN $ 'LINK_RTN' GSS GSS_CLIENT $ 'LINK_RTN' GSS GSS_SERVER $ ENDIF $! $ IF P1 .EQS. "" .OR. P1 .EQS. "KRB" $ THEN $ 'LINK_RTN' KRB KRB_CLIENT $ 'LINK_RTN' KRB KRB_SERVER $ ENDIF $! $ GOTO EXIT $! $!------------------------------------------------------------------------------ $! Compile subroutine $!------------------------------------------------------------------------------ $! $TST_Compile: SubRoutine $! $ Set NoOn $! $ CMD = "''F$EDIT(COMPILE_CMD,"TRIM,COLLAPSE")'" $ OPT = "''F$EDIT(COMPILE_OPT,"TRIM,COLLAPSE")'" $! $ IF P2 .EQS. "" THEN P2 = P1 $! $ SAY "''CMD' ''OPT' -" $ SAY " /OBJ=''OBJ_DIR'''P2'.OBJ -" $ SAY " ''SRC_DIR'''P1'" $! $ 'CMD' 'OPT' - /OBJ='OBJ_DIR''P2'.OBJ - 'SRC_DIR''P1' $! $ EXIT $ EndSubRoutine $! $!------------------------------------------------------------------------------ $! Link subroutine $!------------------------------------------------------------------------------ $! $TST_Link: SubRoutine $! $ Set NoOn $! $ P1 = F$EDIT(P1,"TRIM,UPCASE") $ CMD = "''F$EDIT(LINK_CMD,"TRIM,COLLAPSE")'" $ OPT = "''F$EDIT(LINK_OPT,"TRIM,COLLAPSE")'" $! $ IF P1 .NES. "GSS" .AND. P1 .NES. "KRB" $ THEN $ SAY "Invalid P1 parameter ''P1' encountered" $ SAY "Expected KRB or GSS ... Aborting build" $ ENDIF $! $ IF P3 .EQS. "" THEN P3 = P2 $! $ SAY "''CMD' ''OPT' -" $ SAY " /EXE=''EXE_DIR'''P3'.EXE -" $ SAY " ''OBJ_DIR'''P2', -" $ IF P1 .EQS. "GSS" $ THEN $ SAY " ''OBJ_DIR'GSS_COMMON, -" $ SAY " SYS$INPUT/OPT" $ SAY "SYS$LIBRARY:GSS$RTL/SHARE" $ ELSE $ SAY " ''OBJ_DIR'KRB_COMMON, -" $ SAY " SYS$INPUT/OPT" $ SAY "SYS$LIBRARY:KRB$RTL/SHARE" $ ENDIF $! $ IF P1 .EQS. "GSS" $ THEN $ 'CMD' 'OPT' - /EXE='EXE_DIR''P3'.EXE - 'OBJ_DIR''P2', - 'OBJ_DIR'GSS_COMMON, - SYS$INPUT/OPT SYS$LIBRARY:GSS$RTL/SHARE $ ELSE $ 'CMD' 'OPT' - /EXE='EXE_DIR''P3'.EXE - 'OBJ_DIR''P2', - 'OBJ_DIR'KRB_COMMON, - SYS$INPUT/OPT SYS$LIBRARY:KRB$RTL/SHARE $ ENDIF $! $ EXIT $ EndSubRoutine $! $!------------------------------------------------------------------------------ $! Exit Build Kerberos Clients $!------------------------------------------------------------------------------ $! $Exit: $! $ VERIFY = F$VERIFY(VERIFY) $! $ Exit