BuildPBX.jam   [plain text]



# Use: PBX  Target : Project ;
rule PBX
{
	PBXBuild all         : "$(2)" "$(1)" all ;
	PBXBuild build       : "$(2)" "$(1)" build ;
	PBXBuild installsrc  : "$(2)" "$(1)" installsrc ;
	PBXBuild installhdrs : "$(2)" "$(1)" installhdrs ;
	PBXBuild install     : "$(2)" "$(1)" install ;
	PBXBuild clean       : "$(2)" "$(1)" clean ;
}

actions PBX
{
}

# Use: PBXBuild Action : Project Target Action;
rule PBXBuild
{
    ALWAYS "$(1)" ;
    NOTFILE "$(2[2])" ;
    NOTFILE "$(2[3])" ;
    
    # When this jam script is called, these variables are set in the environment (PB checkbox)
    # However, pbxbuild won't inherit these values from us, so we pass them in on the command line...
    #
    ENVIRONMENT = ;
    if $(DSTROOT) != ""              { ENVIRONMENT += "DSTROOT=$(DSTROOT:J= )" ; }
    if $(OBJROOT) != ""              { ENVIRONMENT += "OBJROOT=$(OBJROOT:J= )" ; }
    if $(SYMROOT) != ""              { ENVIRONMENT += "SYMROOT=$(SYMROOT:J= )" ; }
    if $(OPTIMIZATION_CFLAGS) != ""  { ENVIRONMENT += "OPTIMIZATION_CFLAGS=$(OPTIMIZATION_CFLAGS:J= )" ; }
    if $(OTHER_CFLAGS) != ""         { ENVIRONMENT += "OTHER_CFLAGS=$(OTHER_CFLAGS:J= )" ; }
    if $(OTHER_CPLUSPLUSFLAGS) != "" { ENVIRONMENT += "OTHER_CPLUSPLUSFLAGS =$(OTHER_CPLUSPLUSFLAGS:J= )" ; }
    if $(INSTALL_MODE_FLAG) != ""    { ENVIRONMENT += "INSTALL_MODE_FLAG=$(INSTALL_MODE_FLAG:J= )" ; }
    if $(KERBEROS_ORDER_FILE) != ""  { ENVIRONMENT += "KERBEROS_ORDER_FILE=$(KERBEROS_ORDER_FILE:J= )" ; }
} 

actions PBXBuild
{
    # Marshall sez "Insane!"
    #srcroot=`echo -n "$(2[1]:D)" | perl -pe 'if (/^\.(\/.+)$/) { $_ = $ENV{PWD} . $1; }'`
    
    if [ -x /usr/bin/pbbuild ]; then
        # Xcode
        PBCOMMAND=/usr/bin/pbbuild
    elif [ -x /usr/bin/pbxbuild ]; then
        # Project Builder
        PBCOMMAND=/usr/bin/pbxbuild
    else
        echo "ERROR!  No command line IDE"
        exit 1
    fi
    
    # PB behaves strangely when passed "all".  It really wants "build" or no action argument.
    # Specify SRCROOT in the arguments for Jaguar build system:
    if [ "$(2[3])" = "all" ]; then
        cd "$(2[1]:D)" && ${PBCOMMAND} -target "$(2[2])" "SRCROOT=$(2[1]:D)" "$(ENVIRONMENT)"
    else 
        cd "$(2[1]:D)" && ${PBCOMMAND} "$(2[3])" -target "$(2[2])" "SRCROOT=$(2[1]:D)" "$(ENVIRONMENT)"
    fi
}