コード例 #1
0
ファイル: BuildJobBuild.cs プロジェクト: ByteChkR/VisCPU
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            string old = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory(projectRoot);



            ProgramBuilder.Build(job.Arguments);



            if (job.Arguments.TryGetValue("export:labels", out string headerFiles))
            {
                string   headerFile = Path.Combine(projectRoot, "header.vhlheader");
                string[] list       = headerFiles.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).
                                      Select(x => x.Trim()).
                                      ToArray();

                BuildJobMakeHeader.MakeHeader(headerFile, list);
            }

            Directory.SetCurrentDirectory(old);
        }
コード例 #2
0
        private static ProjectBuildJob CreateDebugBuildJob()
        {
            ProjectBuildJob debugBuildJob = new ProjectBuildJob();

            debugBuildJob.JobName                                      = "Build %NAME%@%VERSION%";
            debugBuildJob.BuildJobRunner                               = "build";
            debugBuildJob.Arguments["build:input"]                     = "Program.vhl";
            debugBuildJob.Arguments["build:steps"]                     = "HL-expr bin";
            debugBuildJob.Arguments["build:clean"]                     = "false";
            debugBuildJob.Arguments["assembler:offset.global"]         = "0";
            debugBuildJob.Arguments["assembler:format"]                = "v1";
            debugBuildJob.Arguments["linker:export"]                   = "true";
            debugBuildJob.Arguments["linker:no-hide"]                  = "false";
            debugBuildJob.Arguments["compiler:optimize-temp-vars"]     = "false";
            debugBuildJob.Arguments["compiler:optimize-const-expr"]    = "false";
            debugBuildJob.Arguments["compiler:optimize-reduce-expr"]   = "false";
            debugBuildJob.Arguments["compiler:optimize-if-expr"]       = "false";
            debugBuildJob.Arguments["compiler:optimize-while-expr"]    = "false";
            debugBuildJob.Arguments["compiler:strip-unused-functions"] = "false";

            debugBuildJob.Arguments["compiler:omit-temp-var-init"] = "false";
            debugBuildJob.Arguments["compiler:aggressive-math-var-optimization"] = "false";
            debugBuildJob.Arguments["compiler:constructor-prolog-mode"]          = "Inline";

            return(debugBuildJob);
        }
コード例 #3
0
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            string input  = job.Arguments["source"];
            string output = job.Arguments["destination"];

            if (Directory.Exists(input))
            {
                Directory.CreateDirectory(output);
                ProjectPackSubSystem.CopyTo(input, output);
            }
            else if (File.Exists(input))
            {
                if (Directory.Exists(output))
                {
                    File.Copy(input, Path.Combine(output, Path.GetFileName(input)), true);
                }
                else
                {
                    File.Copy(input, output, true);
                }
            }
        }
コード例 #4
0
        private static ProjectBuildTarget CreateReleaseTarget()
        {
            ProjectBuildTarget release = new ProjectBuildTarget();

            release.TargetName = "Release";
            ProjectBuildJob restoreJob = new ProjectBuildJob();

            restoreJob.BuildJobRunner      = "restore";
            restoreJob.JobName             = "Restore %NAME%@%VERSION%";
            restoreJob.Arguments["origin"] = "local";
            release.Jobs.Add(restoreJob);

            ProjectBuildJob externalJob = new ProjectBuildJob();

            externalJob.BuildJobRunner      = "external-build";
            externalJob.JobName             = "Building Dependencies of %NAME%@%VERSION%";
            externalJob.Arguments["path"]   = "";
            externalJob.Arguments["target"] = "%TARGET%";
            release.Jobs.Add(externalJob);

            ProjectBuildJob mergeBuildJob = new ProjectBuildJob();

            mergeBuildJob.JobName                    = "Merged Release Build";
            mergeBuildJob.BuildJobRunner             = "merged";
            mergeBuildJob.Arguments["merge:include"] = "%VISDIR%common/jobs/release_build.json";
            mergeBuildJob.Arguments["build:input"]   = "Program.vhl";
            release.Jobs.Add(mergeBuildJob);

            return(release);
        }
コード例 #5
0
ファイル: BuildJobClean.cs プロジェクト: ByteChkR/VisCPU
 public override void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job)
 {
     ProjectCleanSubSystem.Clean(projectRoot);
 }
コード例 #6
0
ファイル: BuildJobAddOrigin.cs プロジェクト: ByteChkR/VisCPU
 public override void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job)
 {
     foreach (KeyValuePair <string, string> keyValuePair in job.Arguments)
     {
         AddOriginSubSystem.AddOrigin(keyValuePair.Key, keyValuePair.Value);
     }
 }
コード例 #7
0
 public override void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job)
 {
     foreach (string argumentsKey in job.Arguments.Keys)
     {
         RemoveOriginSubSystem.RemoveOrigin(argumentsKey);
     }
 }
コード例 #8
0
 public override void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job)
 {
     foreach (KeyValuePair <string, string> keyValuePair in job.Arguments)
     {
         ProjectConfig info = ProjectResolver.Resolve(keyValuePair.Key, keyValuePair.Value);
         info.Manager.Get(info, Path.Combine(projectRoot, info.ProjectName));
     }
 }
コード例 #9
0
 public override void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job)
 {
     foreach (KeyValuePair <string, string> buildJobs in job.Arguments)
     {
         ProjectBuildJob subJob = ProjectBuildJob.Load(buildJobs.Value);
         project.RunJob(projectRoot, target, subJob);
     }
 }
コード例 #10
0
ファイル: BuildJobRunJob.cs プロジェクト: ByteChkR/VisCPU
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            string old = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory(projectRoot);
            ProgramRunner.Run(job.Arguments);
            Directory.SetCurrentDirectory(old);
        }
コード例 #11
0
ファイル: BuildJobRestore.cs プロジェクト: ByteChkR/VisCPU
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            if (!job.Arguments.TryGetValue("origin", out string repo))
            {
                repo = "local";
            }

            ProjectRestoreSubSystem.Restore(projectRoot, repo);
        }
コード例 #12
0
ファイル: BuildJobBuild.cs プロジェクト: ByteChkR/VisCPU
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            if (job.Arguments.TryGetValue("files", out string linkerPath))
            {
                string[] list = linkerPath.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray();


                string headerFile = Path.Combine(projectRoot, "header.vhlheader");
                MakeHeader(headerFile, list);
            }
        }
コード例 #13
0
        private static void GenerateCommonJobs()
        {
            string dir = Path.Combine(AppRootHelper.AppRoot, "common/jobs");

            Directory.CreateDirectory(dir);
            ProjectBuildJob cleanJob = new ProjectBuildJob();

            cleanJob.BuildJobRunner = "clean";
            cleanJob.JobName        = "Clean Project %NAME%@%VERSION%";

            ProjectBuildJob restoreJob = new ProjectBuildJob();

            restoreJob.BuildJobRunner = "restore";
            restoreJob.JobName        = "Restore Project %NAME%@%VERSION%";

            ProjectBuildJob publishJob = new ProjectBuildJob();

            publishJob.BuildJobRunner    = "publish";
            publishJob.JobName           = "Publish Project %NAME%@%VERSION%";
            publishJob.Arguments["repo"] = "local";

            ProjectBuildJob newVersionJob = new ProjectBuildJob();

            newVersionJob.BuildJobRunner       = "combined";
            newVersionJob.JobName              = "New Version Project %NAME%";
            newVersionJob.Arguments["publish"] = "%VISDIR%common/jobs/publish.json";
            newVersionJob.Arguments["restore"] = "%VISDIR%common/jobs/restore.json";



            ProjectBuildJob dBuildJob = CreateDebugBuildJob();
            ProjectBuildJob rBuildJob = CreateReleaseBuildJob();
            ProjectBuildJob dRunJob   = CreateDebugRunJob();
            ProjectBuildJob rRunJob   = CreateReleaseRunJob();

            ProjectBuildJob.Save(Path.Combine(dir, "debug_build.json"), dBuildJob);
            ProjectBuildJob.Save(Path.Combine(dir, "release_build.json"), rBuildJob);
            ProjectBuildJob.Save(Path.Combine(dir, "debug_run.json"), dRunJob);
            ProjectBuildJob.Save(Path.Combine(dir, "release_run.json"), rRunJob);

            ProjectBuildJob.Save(Path.Combine(dir, "clean.json"), cleanJob);
            ProjectBuildJob.Save(Path.Combine(dir, "restore.json"), restoreJob);
            ProjectBuildJob.Save(Path.Combine(dir, "publish.json"), publishJob);
            ProjectBuildJob.Save(Path.Combine(dir, "newVersion.json"), newVersionJob);
        }
コード例 #14
0
        private static ProjectBuildTarget CreateDebugRunTarget()
        {
            ProjectBuildTarget debug = new ProjectBuildTarget();

            debug.TargetName = "DebugRun";

            debug.DependsOn = new[] { "Debug" };

            ProjectBuildJob mergeRunJob = new ProjectBuildJob();

            mergeRunJob.JobName                    = "Merged Debug Run";
            mergeRunJob.BuildJobRunner             = "merged";
            mergeRunJob.Arguments["merge:include"] = "%VISDIR%common/jobs/debug_run.json";
            mergeRunJob.Arguments["run:input"]     = "Program.vbin";
            debug.Jobs.Add(mergeRunJob);

            return(debug);
        }
コード例 #15
0
        private static ProjectBuildTarget CreateRunTarget()
        {
            ProjectBuildTarget release = new ProjectBuildTarget();

            release.TargetName = "Run";

            release.DependsOn = new string[0];

            ProjectBuildJob mergeRunJob = new ProjectBuildJob();

            mergeRunJob.JobName                    = "Merged Run";
            mergeRunJob.BuildJobRunner             = "merged";
            mergeRunJob.Arguments["merge:include"] = "%VISDIR%common/jobs/release_run.json";
            mergeRunJob.Arguments["run:input"]     = "Program.vbin";
            release.Jobs.Add(mergeRunJob);

            return(release);
        }
コード例 #16
0
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            ProjectBuildJob includeJob = ProjectBuildJob.Load(job.Arguments["merge:include"]);

            foreach (KeyValuePair <string, string> buildJobs in job.Arguments)
            {
                if (buildJobs.Key != "merge:include")
                {
                    includeJob.Arguments[buildJobs.Key] = buildJobs.Value;
                }
            }

            project.RunJob(projectRoot, target, includeJob);
        }
コード例 #17
0
        public static ProjectConfig GenerateProjectConfig(string name, string version)
        {
            ProjectConfig config = new ProjectConfig();

            if (name != null)
            {
                config.ProjectName = name;
            }

            if (version != null)
            {
                config.ProjectVersion = version;
            }

            ProjectBuildTarget debugTarget = CreateDebugTarget();

            ProjectBuildTarget debugRunTarget = CreateDebugRunTarget();

            ProjectBuildTarget releaseTarget = CreateReleaseTarget();

            ProjectBuildTarget releaseRunTarget = CreateReleaseRunTarget();

            ProjectBuildTarget runTarget = CreateRunTarget();

            ProjectBuildTarget publishTarget = new ProjectBuildTarget();

            publishTarget.TargetName = "Publish";
            ProjectBuildJob publishJob = new ProjectBuildJob();

            publishJob.JobName                    = "Publish Project";
            publishJob.BuildJobRunner             = "merged";
            publishJob.Arguments["merge:include"] = "%VISDIR%common/jobs/newVersion.json";
            publishTarget.Jobs.Add(publishJob);
            config.BuildTargets["Publish"]    = publishTarget;
            config.BuildTargets["Debug"]      = debugTarget;
            config.BuildTargets["DebugRun"]   = debugRunTarget;
            config.BuildTargets["Release"]    = releaseTarget;
            config.BuildTargets["ReleaseRun"] = releaseRunTarget;
            config.BuildTargets["Run"]        = runTarget;

            return(config);
        }
コード例 #18
0
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            string input  = job.Arguments["source"];
            string output = job.Arguments["destination"];

            if (Directory.Exists(input))
            {
                if (Directory.Exists(output))
                {
                    Directory.Delete(output);
                }

                Directory.Move(input, output);
            }
            else if (File.Exists(input))
            {
                if (Directory.Exists(output))
                {
                    string path = Path.Combine(output, Path.GetFileName(input));

                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }

                    File.Move(input, path);
                }
                else
                {
                    if (File.Exists(output))
                    {
                        File.Delete(output);
                    }

                    File.Move(input, output);
                }
            }
        }
コード例 #19
0
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            ProjectPackSubSystem.PackOptions       opts = new ProjectPackSubSystem.PackOptions();
            ProjectPublishSubSystem.PublishOptions pops = new ProjectPublishSubSystem.PublishOptions();

            if (job.Arguments.TryGetValue("version", out string ver))
            {
                opts.VersionString = ver;
            }

            if (job.Arguments.TryGetValue("origin", out string origin))
            {
                pops.Repository = origin;
            }

            ProjectPublishSubSystem.Publish(projectRoot, pops, opts);
        }
コード例 #20
0
        private static ProjectBuildJob CreateReleaseRunJob()
        {
            ProjectBuildJob runJob = new ProjectBuildJob();

            runJob.JobName                         = "Run %NAME%@%VERSION%";
            runJob.BuildJobRunner                  = "run";
            runJob.Arguments["run:input"]          = "Program.vbin";
            runJob.Arguments["run:cpu.interrupt"]  = "0x00000000";
            runJob.Arguments["run:cpu.reset"]      = "0x00000000";
            runJob.Arguments["run:working-dir"]    = "%PROJDIR%";
            runJob.Arguments["run:trim"]           = "false";
            runJob.Arguments["memory-bus:devices"] = "%VISDIR%configs/cpu/peripherals/memory/default.json";

            runJob.Arguments["memory:read"]            = "true";
            runJob.Arguments["memory:write"]           = "true";
            runJob.Arguments["memory:persistent"]      = "false";
            runJob.Arguments["memory:persistent.path"] = "%VISDIR%configs/cpu/peripherals/memory/states/default.bin";
            runJob.Arguments["memory:size"]            = "1048576";

            return(runJob);
        }
コード例 #21
0
        public override void RunJob(
            string projectRoot,
            ProjectConfig project,
            ProjectBuildTarget target,
            ProjectBuildJob job)
        {
            string path = job.Arguments["path"];

            string[] projects = path.Split(';');
            job.Arguments.TryGetValue("target", out string externalTarget);

            foreach (string projJson in projects)
            {
                if (string.IsNullOrWhiteSpace(projJson))
                {
                    continue;
                }

                string        projectPath = Path.GetFullPath(projJson);
                ProjectConfig external    = ProjectConfig.Load(projectPath);
                external.RunTarget(Path.GetDirectoryName(projectPath), externalTarget);
            }
        }
コード例 #22
0
ファイル: BuildJobRunner.cs プロジェクト: ByteChkR/VisCPU
 public abstract void RunJob(
     string projectRoot,
     ProjectConfig project,
     ProjectBuildTarget target,
     ProjectBuildJob job);