Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <Languages>
- <Language>
- <Name>D</Name>
- <Extensions>
- <Extension>d</Extension>
- <Extension>di</Extension>
- </Extensions>
- <Compilers>
- <Compiler>
- <Application>dmd</Application>
- <CompileCommand>{cmd} -c {source} -of{ObjectDir}/{source}.obj {includesArgument}</CompileCommand>
- <LinkCommand>{cmd} {objects} {libraries} -of{OuputDir}/{name}{extension} {includes}</LinkCommand>
- <IncludesArgument> -I{include}</IncludesArgument>
- <StaticLibraryArgument> -lib</StaticLibraryArgument>
- <DynamicLibraryArgument> -lib</DynamicLibraryArgument>
- <Platforms>
- <Platform>
- <Type>windows</Type>
- <Targets>
- <Target>win32</Target>
- <Target>win64</Target>
- </Targets>
- <CompilerLocation>C:/D/dmd2/windows/bin/</CompilerLocation>
- <StandardLibrary include="false">C:/D/dmd2/windows/lib/phobos.lib</StandardLibrary>
- <BinaryExtension>.exe</BinaryExtension>
- <DynamicLibraryExtension>.dll</DynamicLibraryExtension>
- <StaticLibraryExtension>.lib</StaticLibraryExtension>
- <Compatibility>
- </Compatibility>
- </Platform>
- <Platform>
- <Type>linux</Type>
- <BinaryExtension></BinaryExtension>
- <DynamicLibraryExtension>.so</DynamicLibraryExtension>
- <StaticLibraryExtension>.a</StaticLibraryExtension>
- <Compatibility>
- <Language objectsOnly="true">c</Language>
- </Compatibility>
- </Platform>
- </Platforms>
- <Profiles>
- <Profile default="true">
- <Name>Release</Name>
- <LinkCommand> -release</LinkCommand>
- </Profile>
- <Profile>
- <Name>Debug</Name>
- <CompileCommand> -debug -gc</CompileCommand>
- <LinkCommand> -debug -gc</LinkCommand>
- </Profile>
- <Profile>
- <Name>Unittest</Name>
- <CompileCommand> -unittest -gc</CompileCommand>
- <LinkCommand> -unittest -gc</LinkCommand>
- </Profile>
- </Profiles>
- <Project>
- <SourceDir>{project_dir}/src</SourceDir>
- <OutputDir clean="true">{project_dir}/bin/{target}</OutputDir>
- <ObjectDir clean="true">{project_dir}/obj/{target}</ObjectDir>
- <ResourceDir>{project_dir}/resources</ResourceDir>
- <Includes>
- </Includes>
- <ProvidesModules>
- </ProvidesModules>
- <target>{hostPlatform}</target>
- </Project>
- </Compiler>
- </Compilers>
- </Language>
- <Language>
- <Name>C</Name>
- <Extensions>
- <Extension>c</Extension>
- </Extensions>
- <Compilers>
- <Compiler>
- <Application>gcc</Application>
- <CompileCommand>{cmd} -c {source} -o{ObjectDir}/{source}.obj {includesArgument}</CompileCommand>
- <LinkCommand>{cmd} {objects} {libraries} -o{OuputDir}/{name}{extension} {includes}</LinkCommand>
- <IncludesArgument> -I{include}</IncludesArgument>
- <StaticLibraryArgument> -lib</StaticLibraryArgument>
- <DynamicLibraryArgument> -lib</DynamicLibraryArgument>
- <Platforms>
- <Platform>
- <Type>windows</Type>
- <Targets>
- <Target>win32</Target>
- <Target>win64</Target>
- </Targets>
- <CompilerLocation>C:/MinGW/bin/</CompilerLocation>
- <BinaryExtension>.exe</BinaryExtension>
- <DynamicLibraryExtension>.dll</DynamicLibraryExtension>
- <StaticLibraryExtension>.lib</StaticLibraryExtension>
- <Compatibility>
- <Language objectsOnly="true">C++</Language>
- </Compatibility>
- </Platform>
- <Platform>
- <Type>linux</Type>
- <BinaryExtension></BinaryExtension>
- <DynamicLibraryExtension>.so</DynamicLibraryExtension>
- <StaticLibraryExtension>.a</StaticLibraryExtension>
- <Compatibility>
- <Language objectsOnly="true">C++</Language>
- <Language objectsOnly="true" requireStandardLibrary="true">D</Language>
- </Compatibility>
- </Platform>
- </Platforms>
- <Profiles>
- <Profile default="true">
- <Name>Release</Name>
- </Profile>
- <Profile>
- <Name>Debug</Name>
- <CompileCommand> -ggdb</CompileCommand>
- <LinkCommand> -ggdb</LinkCommand>
- </Profile>
- </Profiles>
- <Project>
- <SourceDir>{project_dir}/src</SourceDir>
- <OutputDir clean="true">{project_dir}/bin/{target}</OutputDir>
- <ObjectDir clean="true">{project_dir}/obj/{target}</ObjectDir>
- <ResourceDir>{project_dir}/resources</ResourceDir>
- <Includes>
- <Include>{project_dir}/headers</Include>
- </Includes>
- <ProvidesModules>
- </ProvidesModules>
- <target>{hostPlatform}</target>
- </Project>
- </Compiler>
- </Compilers>
- </Language>
- <Language>
- <Name>C++</Name>
- <Extensions>
- <Extension>cpp</Extension>
- </Extensions>
- <Compilers>
- <Compiler>
- <Application>g++</Application>
- <CompileCommand>{cmd} -c {source} -o{ObjectDir}/{source}.obj {includesArgument}</CompileCommand>
- <LinkCommand>{cmd} {objects} {libraries} -o{OuputDir}/{name}{extension} {includes}</LinkCommand>
- <IncludesArgument> -I{include}</IncludesArgument>
- <StaticLibraryArgument> -lib</StaticLibraryArgument>
- <DynamicLibraryArgument> -lib</DynamicLibraryArgument>
- <Platforms>
- <Platform>
- <Type>windows</Type>
- <Targets>
- <Target>win32</Target>
- <Target>win64</Target>
- </Targets>
- <CompilerLocation>C:/MinGW/bin/</CompilerLocation>
- <BinaryExtension>.exe</BinaryExtension>
- <DynamicLibraryExtension>.dll</DynamicLibraryExtension>
- <StaticLibraryExtension>.lib</StaticLibraryExtension>
- <Compatibility>
- <Language>C</Language>
- </Compatibility>
- </Platform>
- <Platform>
- <Type>linux</Type>
- <BinaryExtension></BinaryExtension>
- <DynamicLibraryExtension>.so</DynamicLibraryExtension>
- <StaticLibraryExtension>.a</StaticLibraryExtension>
- <Compatibility>
- <CompatibilityLanguage>C</CompatibilityLanguage>
- <CompatibilityLanguage objectsOnly="true" requireStandardLibrary="true">D</CompatibilityLanguage>
- </Compatibility>
- </Platform>
- </Platforms>
- <Profiles>
- <Profile default="true">
- <Name>Release</Name>
- </Profile>
- <Profile>
- <Name>Debug</Name>
- <CompileCommand> -ggdb</CompileCommand>
- <LinkCommand> -ggdb</LinkCommand>
- </Profile>
- </Profiles>
- <Project>
- <SourceDir>{project_dir}/src</SourceDir>
- <OutputDir clean="true">{project_dir}/bin/{target}</OutputDir>
- <ObjectDir clean="true">{project_dir}/obj/{target}</ObjectDir>
- <ResourceDir>{project_dir}/resources</ResourceDir>
- <Includes>
- <Include>{project_dir}/headers</Include>
- </Includes>
- <ProvidesModules>
- </ProvidesModules>
- <Target>{hostPlatform}</Target>
- <Repositories>
- <Repository>
- <Name>Main Repository</Name>
- <BaseURL>http://example.com/repo</BaseURL>
- </Repository>
- <Repository>
- <Name>Local repository</Name>
- <Directory>{bspDataDir}/repo</Directory>
- </Repository>
- </Repositories>
- </Project>
- </Compiler>
- </Compilers>
- </Language>
- </Languages>
- If targets is not specified for a platform of a compiler then check
- against it's type.
- The type insignifies the binary of the compiler is in. Not the output it produces.
- The output of a compiler is the type.
- The type should match one of these:
- windows
- linux
- osx
- freeBSD
- solaris
- posix
- Targets are made up of the platform and a more specific information.
- win32
- win64
- <Project>
- <Name>ABC project</Name>
- <Version>x.y.z</Version>
- <Description>An amazing project!</Description>
- <Profile>Release</Profile>
- <ProvidesModules>
- <Module>project.abc.test</Module>
- </ProvidesModules>
- <Developers>
- </Developers>
- <VCS>https://example.com/repo/abc.git</VCS>
- <URL>http://example.com/project/abc</URL>
- <Dependencies>
- <Dependency>
- <Name>DEF project</Name>
- <Version>i.j.k</Version>
- <Module>project.def.test</Module>
- <Directory>{ProjectDir}/../DEF</Directory>
- </Dependency>
- </Dependencies>
- </Project>
- Configuration 'flattening' occurs in these steps
- 1. Load all files and keep output seperate
- 2. Create list of all languages which have unique names
- 3. Add to list of languages a new version of each language that has conflicts
- If append is available append to previous value for property otherwise overide.
- Prefer the later files not the first ones.
- 4. For each project in languages create a new one and use it as the base then overlay the projects configuration.
- 5. For each project created in last step gather the application, compile command, link command, includes, dynamic library and static library arguments.
- 6. Create base command to be executed for each project for storage.
- Make sure 1-4 can be made into a cached file. (Preferably a mmfile).
- Folder structure
- ~/.bsp/languages.xml
- e.g. ~/.bsp/repo/m.o.d.u.l.e/v.e.r.s.i.o.n/project.xml
- e.g. ~/.bsp/repo/m.o.d.u.l.e/v.e.r.s.i.o.n/languages.xml
- e.g. ~/.bsp/repo/m.o.d.u.l.e/v.e.r.s.i.o.n/src
- e.g. ~/.bsp/repo/m.o.d.u.l.e/v.e.r.s.i.o.n/bin/win32/bin.dll
- e.g. ~/.bsp/repo/m.o.d.u.l.e/v.e.r.s.i.o.n/bin/win32/bin.lib
- project_dir/project.xml
- project_dir/languages.xml
- project_dir/project_cached.xml
- e.g. project_dir/bin/win32/bin.dll
- e.g. project_dir/src
- e.g. project_dir/obj/win32/bin.obj
- e.g. project_dir/obj/win32/dependencies/m.o.d.u.l.e/bin.lib
- e.g. project_dir/resources
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement