classdef (Abstract) IApplicationBuildStrategy < handle
    %IAPPLICATIONBUILDSTRATEGY Service interface to allow PIL and other 
    %connectivity workflows to build connectivity applications for the 
    %target platform

%   Copyright 2020 The MathWorks, Inc.
    
    methods (Abstract)
        
        setTargetServices(targetServices);
        setPILBuildOptions(pilOptions);
        
        matFileContents = getComponentBuildInfoMATFileContents(this, componentBuildInfoPath); % BUILDER
        
        buildInfo = processComponentIntegrationBuildInfo(this, componentBuildInfo); % BUILDER
        
        [applicationBuildInfo, appFrameworkUpdated] = createApplicationBuildInfo(this, ...
                                                                                 componentIntegrationBuildInfo, ...
                                                                                 targetApplicationBuildInfo, ...
                                                                                 prevTargetApplicationBuildInfo); % BUILDER
                                                                             
        
        doBuild(this, buildInfo); % BUILDER
        
        doUpdateBuild(this, applicationBuildInfo); % BUILDER
        
        applicationPath = getApplicationPath(buildInfo); % BUILDER
        
        componenetRelativePath = getRelativePathFromApplicationToComponent(this); % MAKEFILEBUILDER
        
        % Get the file separator for the target toolchain. 
        fileSeparator = getFileSeparator(this); % MAKEFILEBUILDER
        
        fullFileResult = fullFile(this, varargin); % MAKEFILEBUILDER
        
        exeExtension = getExecutableFileExtension(this); % MAKEFILEBUILDER
    end
end
