Example #1
0
String CompilerThread_createLibtoolString(ProjectData& projData, const ArrayList<String>& inputFiles, const String& outputFile)
{
	String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName();
	
	String command = libtoolCommand + ' ';
	
	ProjectType projType = projData.getProjectType();
	if(projType==PROJECTTYPE_DYNAMICLIBRARY)
	{
		command += "-dynamic ";
	}
	else if(projType==PROJECTTYPE_STATICLIBRARY)
	{
		command += "-static ";
	}
	
	//user-specified compiler flags
	ArrayList<String>& flags = projData.getProjectSettings().getCompilerFlags();
	for(int i=0; i<flags.size(); i++)
	{
		String& flag = flags.get(i);
		command += flag + " ";
	}
	
	//source (input) files
	for(int i=0; i<inputFiles.size(); i++)
	{
		const String& file = inputFiles.get(i);
		String extension = CompilerThread_getExtensionForFilename(file);
		if(!extension.equals("h"))
		{
			command += (String)"\"" + file + "\" ";
		}
	}
	
	command += (String)"-o \"" + outputFile + "\"";
	
	return command;
}
Example #2
0
String CompilerThread_createCompileString(ProjectData& projData, const ArrayList<String>& inputFiles, const String& outputFile)
{
	String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName();
	
	String command = clangCommand + ' ';
	
	ProjectType projType = projData.getProjectType();
	if(projType==PROJECTTYPE_DYNAMICLIBRARY)
	{
		command += "-dynamiclib ";
	}
	
	//sdk root
	String sdk = projData.getProjectSettings().getSDK();
	if(!sdk.equals(""))
	{
		String sdkPath = (String)Global_getSDKFolderPath() + "/" + sdk;
		command += (String)"-isysroot \"" + sdkPath + "\" ";
	}
	
	//include directories
	ArrayList<String>& includes = projData.getIncludeDirs();
	for(int i=0; i<includes.size(); i++)
	{
		String& includeDir = includes.get(i);
		if(includeDir.length()>0)
		{
			if(includeDir.charAt(0)!='/')
			{
				command += (String)"-I\"" + projectRoot + "/ext/" + includeDir + "\" ";
			}
			else
			{
				command += (String)"-I\"" + includeDir + "\" ";
			}
		}
	}
	
	//frameworks
	ArrayList<String>& frameworks = projData.getFrameworkList();
	for(int i=0; i<frameworks.size(); i++)
	{
		String& framework = frameworks.get(i);
		command += (String)"-framework " + framework + " ";
	}
	
	//c++ standard library and objective-c library
	command += "-lstdc++ -lobjc ";
	
	//turn off fixit info
	command += "-fno-diagnostics-fixit-info -fno-caret-diagnostics ";
	
	//set disabled warning flags
	ArrayList<String>& disabledWarnings = projData.getProjectSettings().getDisabledWarnings();
	for(int i=0; i<disabledWarnings.size(); i++)
	{
		String warning = disabledWarnings.get(i);
		if(warning.length()>2 && warning.charAt(0)=='-' && warning.charAt(1)=='W')
		{
			String noWarning = (String)"-Wno-" + warning.substring(2) + ' ';
			command += noWarning;
		}
	}
	
	//user-specified compiler flags
	ArrayList<String>& flags = projData.getProjectSettings().getCompilerFlags();
	for(int i=0; i<flags.size(); i++)
	{
		String& flag = flags.get(i);
		command += flag + " ";
	}
	
	//source (input) files
	for(int i=0; i<inputFiles.size(); i++)
	{
		const String& file = inputFiles.get(i);
		String extension = CompilerThread_getExtensionForFilename(file);
		if(!extension.equals("h"))
		{
			command += (String)"\"" + file + "\" ";
		}
	}
	
	//lib directories
	ArrayList<String> srcTypes = CompilerThread_getSourceTypes();
	ArrayList<String>& libs = projData.getLibDirs();
	for(int i=0; i<libs.size(); i++)
	{
		String& libDir = libs.get(i);
		if(libDir.length()>0)
		{
			ArrayList<String> libFiles;
			if(libDir.charAt(0)!='/')
			{
				String fullLibDir = projectRoot + "/ext/" + libDir;
				libFiles = FileTools::getFilenamesWithExtension(fullLibDir, srcTypes);
			}
			else
			{
				libFiles = FileTools::getFilenamesWithExtension(libDir, srcTypes);
			}
			
			for(int j=0; j<libFiles.size(); j++)
			{
				String& file = libFiles.get(j);
				String extension = "";
				int dotIndex = file.lastIndexOf(".");
				if(dotIndex!=-1)
				{
					extension = file.substring(dotIndex+1, file.length());
				}
				if(extension=="dylib")
				{
					command += (String)"-l \""+file+"\" ";
				}
				else
				{
					command += (String)"\"" + file + "\" ";
				}
			}
		}
	}
	
	//TODO replace version info with specified version info in ProjectData
	if(projType==PROJECTTYPE_DYNAMICLIBRARY)
	{
		command += "-current_version 1.0 -compatibility_version 1.0 -fvisibility=hidden ";
	}
	
	//output file (executable)
	command += (String)"-o \"" + outputFile + "\" ";
	
	return command;
}
Example #3
0
String CompilerThread_createAssembleString(ProjectData& projData, const String& file, const String& outputFile, const String& dependencyFile)
{
	String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName();
	
	String command = clangCommand + ' ';
	
	String fileExtension = "";
	int dotIndex = file.lastIndexOf(".");
	if(dotIndex!=-1)
	{
		fileExtension = file.substring(dotIndex+1, file.length());
	}
	
	if(dependencyFile.length()>0)
	{
		command += (String)"-MD -MF \"" + dependencyFile + "\" ";
	}
	
	//sdk root
	String sdk = projData.getProjectSettings().getSDK();
	if(!sdk.equals(""))
	{
		String sdkPath = (String)Global_getSDKFolderPath() + "/" + sdk;
		command += (String)"-isysroot \"" + sdkPath + "\" ";
	}
	
	//include directories
	ArrayList<String>& includes = projData.getIncludeDirs();
	for(int i=0; i<includes.size(); i++)
	{
		String& includeDir = includes.get(i);
		if(includeDir.length()>0)
		{
			if(includeDir.charAt(0)!='/')
			{
				command += (String)"-I\"" + projectRoot + "/ext/" + includeDir + "\" ";
			}
			else
			{
				command += (String)"-I\"" + includeDir + "\" ";
			}
		}
	}
	
	//c++ flag
	if(fileExtension=="cpp" || fileExtension=="CPP" || fileExtension=="mm" || fileExtension=="MM" || fileExtension=="cxx" || fileExtension=="CXX" || fileExtension=="c++" || fileExtension=="C++")
	{
		command += "-stdlib=libstdc++ -std=c++11 ";
	}
	
	//assemble flag
	command += "-c ";
	
	//turn off fixit info
	command += "-fno-diagnostics-fixit-info -fno-caret-diagnostics ";
	
	//set disabled warning flags
	ArrayList<String>& disabledWarnings = projData.getProjectSettings().getDisabledWarnings();
	for(int i=0; i<disabledWarnings.size(); i++)
	{
		String warning = disabledWarnings.get(i);
		if(warning.length()>2 && warning.charAt(0)=='-' && warning.charAt(1)=='W')
		{
			String noWarning = (String)"-Wno-" + warning.substring(2) + ' ';
			command += noWarning;
		}
	}
	
	//user-specified compiler flags
	ArrayList<String>& flags = projData.getProjectSettings().getAssemblerFlags();
	for(int i=0; i<flags.size(); i++)
	{
		String& flag = flags.get(i);
		command += flag + " ";
	}
	
	//source file
	command += (String)"\"" + file + "\" ";
	
	//output file
	command += (String)"-o \"" + outputFile + "\"";
	
	return command;
}