63 static set<VuoCompiler *> allCompilers;
64 static dispatch_queue_t environmentQueue;
65 static map<string, vector< vector<VuoCompilerEnvironment *> > > sharedEnvironments;
66 static map<string, map<string, vector<VuoCompilerEnvironment *> > > environmentsForCompositionFamily;
67 vector< vector<VuoCompilerEnvironment *> > environments;
69 string lastCompositionBaseDir;
70 bool shouldLoadAllModules;
71 bool hasLoadedAllModules;
72 dispatch_queue_t modulesToLoadQueue;
73 static map<VuoCompilerEnvironment *, map<string, pair<VuoCompilerModule *, dispatch_group_t>>> invalidatedModulesAwaitingRecompilation;
74 static map<VuoCompilerEnvironment *, set<VuoCompilerModule *>> addedModulesAwaitingReification;
75 static map<VuoCompilerEnvironment *, set<pair<VuoCompilerModule *, VuoCompilerModule *>>> modifiedModulesAwaitingReification;
76 dispatch_group_t modulesLoading;
77 dispatch_group_t moduleSourceCompilersExist;
78 static dispatch_group_t moduleSourceCompilersExistGlobally;
79 dispatch_group_t moduleCacheBuilding;
82 static string vuoFrameworkInProgressPath;
85 string requestedTarget;
87 string dependencyOutputPath;
88 bool _shouldShowSplashWindow;
90 dispatch_queue_t delegateQueue;
97 static void reset(
void);
100 void loadModulesIfNeeded(
const set<string> &moduleKeys = set<string>());
101 set<dispatch_group_t> loadModulesAndSources(
const set<string> &modulesAddedKeys,
const set<string> &modulesModifiedKeys,
const set<string> &modulesRemovedKeys,
const set<string> &sourcesAddedKeys,
const set<string> &sourcesModifiedKeys,
const set<string> &sourcesRemovedKeys,
bool willLoadAllModules,
bool shouldRecompileSourcesIfUnchanged,
VuoCompilerEnvironment *currentEnvironment,
VuoCompilerIssues *issuesForCurrentEnvironment, std::function<
void(
void)> moduleLoadedCallback,
const string &moduleAddedOrModifiedSourceCode);
102 void findDependentModulesAndSources(map<
VuoCompilerEnvironment *, set<string> > &changedModules,
const vector<VuoDirectedAcyclicNetwork *> &searchDependencyGraphs,
VuoDirectedAcyclicGraph *currentEnvironmentDependencyGraph,
bool includeIndirectDependents, map<
VuoCompilerEnvironment *, set<string> > &modulesDepOnChangedModules_this, map<
VuoCompilerEnvironment *, set<string> > &modulesDepOnChangedModules_other, map<
VuoCompilerEnvironment *, set<string> > &sourcesDepOnChangedModules_this, map<
VuoCompilerEnvironment *, set<string> > &sourcesDepOnChangedModules_other);
103 void loadedModules(map<string, VuoCompilerModule *> modulesAdded, map<
string, pair<VuoCompilerModule *, VuoCompilerModule *> > modulesModified, map<string, VuoCompilerModule *> modulesRemoved,
VuoCompilerIssues *issues,
void *delegateData,
VuoCompilerEnvironment *currentEnvironment);
106 void reifyGenericPortTypes(
VuoNode *node);
108 void linkCompositionToCreateExecutableOrDynamicLibrary(
string compiledCompositionPath,
string linkedCompositionPath,
Optimization optimization,
bool isDylib,
const vector<string> &rPaths,
bool shouldAdHocCodeSign =
true);
109 set<string> getDependenciesForComposition(
const string &compiledCompositionPath);
110 set<string> getDependenciesForComposition(
const set<string> &directDependencies,
bool checkCompatibility);
111 static string getLibraryPath(
const string &dependency, vector<string> librarySearchPaths);
112 void makeModuleCachesAvailable(
bool shouldUseExistingBuiltInCaches,
bool shouldUseExistingOtherCaches,
const string &target =
"");
113 vector<shared_ptr<VuoModuleCacheRevision>> useCurrentModuleCaches(
Optimization optimization);
114 void link(
string outputPath,
const VuoLinkerInputs &linkerInputs,
bool isDylib,
const vector<string> &rPaths,
bool shouldAdHocCodeSign =
true,
VuoCompilerIssues *issues =
nullptr);
115 static void adHocCodeSign(
string path);
117 static Module *readModuleFromBitcodeData(
char *inputData,
size_t inputDataBytes,
string arch, set<string> &availableArchs,
string &error);
119 static void writeModuleToBitcode(Module *module,
string target,
string outputPath,
VuoCompilerIssues *issues);
120 VuoNode * createPublishedNode(
const string &nodeClassName,
const vector<VuoPublishedPort *> &publishedPorts);
121 static void setTargetForModule(Module *module,
string target);
122 static string getProcessTarget(
void);
125 static vector<string> getCoreVuoDependencies(
void);
126 static string getRuntimeMainDependency(
void);
127 static string getRuntimeDependency(
void);
128 void addModuleSearchPath(
string path);
129 string getClangPath(
void);
130 void setClangPath(
const string &clangPath);
131 string getCompositionStubPath(
void);
136 friend class TestCompilerDelegate;
145 friend class TestVuoCompilerBitcodeGenerator;
147 friend class TestVuoCompilerModule;
151 VuoCompiler(
const string &compositionPath =
"",
string target =
"");
155 static Module *readModuleFromBitcode(
string inputPath,
string arch);
163 void compileModule(
const string &inputPath,
const string &outputPath);
189 map<string, VuoCompilerType *>
getTypes(
void);
220#include "../compiler/pro/VuoCompiler_Pro.hh"