Example #1
0
TEST(ApplicationsLib, ProjectData)
{
	ProjectData project;
	GeoLib::GEOObjects *geo_objects = project.getGEOObjects();

	ASSERT_TRUE(geo_objects != nullptr);
}
Example #2
0
void ClangCompilationDatabaseGenerator::generate()
{
    for (const Project &theProject : project().projects.values()) {
        QJsonArray database;
        const ProjectData projectData = theProject.projectData();
        const QString buildDir = projectData.buildDirectory();

        for (const ProductData &productData : projectData.allProducts()) {
            for (const GroupData &groupData : productData.groups()) {
                for (const ArtifactData &sourceArtifact : groupData.allSourceArtifacts()) {
                    if (!hasValidInputFileTag(sourceArtifact.fileTags()))
                        continue;

                    const QString filePath = sourceArtifact.filePath();
                    ErrorInfo errorInfo;
                    const RuleCommandList rules = theProject.ruleCommands(productData, filePath,
                                                                       QStringLiteral("obj"),
                                                                       &errorInfo);

                    if (errorInfo.hasError())
                        throw errorInfo;

                    for (const RuleCommand &rule : rules) {
                        if (rule.type() != RuleCommand::ProcessCommandType)
                            continue;
                        database.append(createEntry(filePath, buildDir, rule));
                    }
                }
            }
        }

        writeProjectDatabase(QDir(buildDir).filePath(DefaultDatabaseFileName), database);
    }
}
Example #3
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 #4
0
CommandLineFrontend::ProductMap CommandLineFrontend::productsToUse() const
{
    ProductMap products;
    QStringList productNames;
    const bool useAll = m_parser.products().empty();
    for (const Project &project : qAsConst(m_projects)) {
        QList<ProductData> &productList = products[project];
        const ProjectData projectData = project.projectData();
        const auto products = projectData.allProducts();
        for (const ProductData &product : products) {
            productNames << product.name();
            if (useAll || m_parser.products().contains(product.name())) {
                productList.push_back(product);
            }
        }
    }

    const auto parsedProductNames = m_parser.products();
    for (const QString &productName : parsedProductNames) {
        if (!productNames.contains(productName)) {
            QString msg;
            if (productNames.size() <= 10) {
                productNames.sort();
                const QString available = productNames.join(QLatin1String("', '"));
                msg = Tr::tr("No such product '%1'. "
                             "Available products: '%2'").arg(productName, available);
            } else {
                msg = Tr::tr("No such product '%1'. Use 'list-products' to see "
                                  "all available products.").arg(productName);
            }
            throw ErrorInfo(msg);
        }
    }

    return products;
}
Example #5
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 #6
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;
}
Example #7
0
void CompilerTools_fillProjectVarsInString(String& str, const ProjectData& projData)
{
	str.replace("${PRODUCT_NAME}", projData.getProductName());
	str.replace("${EXECUTABLE_NAME}", projData.getExecutableName());
	str.replace("${BUNDLE_IDENTIFIER}", projData.getBundleIdentifier());
}