diff options
author | John Hodge <tpg@mutabah.net> | 2018-03-18 10:48:26 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2018-03-18 10:48:26 +0800 |
commit | 5b0450395af81ceba0d0ac27fc73b16f966bd7d3 (patch) | |
tree | e3c753b83a562be78cdbd74b8164dab785bf07a6 | |
parent | 363e6fa172f787e970c8abc8f631b6d60d571248 (diff) | |
download | mrust-5b0450395af81ceba0d0ac27fc73b16f966bd7d3.tar.gz |
All - Move toml parser and path header to a common library, start on custom target specs.
23 files changed, 464 insertions, 55 deletions
@@ -40,7 +40,9 @@ endif CXXFLAGS += -std=c++14 #CXXFLAGS += -Wextra CXXFLAGS += -O2 + CPPFLAGS := -I src/include/ -I src/ +CPPFLAGS += -I tools/common/ CXXFLAGS += -Wno-pessimizing-move CXXFLAGS += -Wno-misleading-indentation @@ -300,10 +302,10 @@ output/libstack_dst.hir: ../rust_os/externals/crates.io/stack_dst/src/lib.rs $(B # ------------------------------- # Compile rules for mrustc itself # ------------------------------- -$(BIN): $(OBJ) +$(BIN): $(OBJ) tools/bin/common_lib.a @mkdir -p $(dir $@) @echo [CXX] -o $@ - $V$(CXX) -o $@ $(LINKFLAGS) $(OBJ) $(LIBS) + $V$(CXX) -o $@ $(LINKFLAGS) $(OBJ) tools/bin/common_lib.a $(LIBS) ifeq ($(OS),Windows_NT) else objcopy --only-keep-debug $(BIN) $(BIN).debug @@ -322,6 +324,9 @@ src/main.cpp: $(PCHS:%=src/%.gch) @echo [CXX] -o $@ $V$(CXX) -std=c++14 -o $@ $< $(CPPFLAGS) -MMD -MP -MF $@.dep +tools/bin/common_lib.a: + make -C tools/common + -include $(OBJ:%=%.dep) # vim: noexpandtab ts=4 diff --git a/src/trans/target.cpp b/src/trans/target.cpp index 1f04666e..54c3e7df 100644 --- a/src/trans/target.cpp +++ b/src/trans/target.cpp @@ -12,18 +12,19 @@ #include <map> #include <hir/hir.hpp> #include <hir_typeck/helpers.hpp> +#include <toml.h> // tools/common -TargetArch ARCH_X86_64 = { +const TargetArch ARCH_X86_64 = { "x86_64", 64, false, { /*atomic(u8)=*/true, false, true, true, true } }; -TargetArch ARCH_X86 = { +const TargetArch ARCH_X86 = { "x86", 32, false, { /*atomic(u8)=*/true, false, true, false, true } }; -TargetArch ARCH_ARM32 = { +const TargetArch ARCH_ARM32 = { "arm", 32, false, { /*atomic(u8)=*/true, false, true, false, true } @@ -37,25 +38,182 @@ namespace { TargetSpec load_spec_from_file(const ::std::string& filename) { - throw ""; + TargetSpec rv; + + TomlFile toml_file(filename); + for(auto key_val : toml_file) + { + // Assertion: The way toml works, there has to be at least two entries in every path. + assert(key_val.path.size() > 1); + DEBUG(key_val.path << " = " << key_val.value); + + auto check_path_length = [&](const TomlKeyValue& kv, unsigned len) { + if( kv.path.size() != len ) { + // TODO: Error. + } + }; + + try + { + if( key_val.path[0] == "target" ) + { + if( key_val.path[1] == "family" ) + { + check_path_length(key_val, 2); + rv.m_family = key_val.value.as_string(); + } + else if( key_val.path[1] == "os-name" ) + { + check_path_length(key_val, 2); + rv.m_os_name = key_val.value.as_string(); + } + else if( key_val.path[1] == "env-name" ) + { + check_path_length(key_val, 2); + rv.m_env_name = key_val.value.as_string(); + } + else if( key_val.path[1] == "env-name" ) + { + check_path_length(key_val, 2); + rv.m_env_name = key_val.value.as_string(); + } + else if( key_val.path[1] == "arch" ) + { + check_path_length(key_val, 2); + if( key_val.value.as_string() == ARCH_ARM32.m_name ) + { + rv.m_arch = ARCH_ARM32; + } + else if( key_val.value.as_string() == ARCH_X86.m_name ) + { + rv.m_arch = ARCH_X86; + } + else if( key_val.value.as_string() == ARCH_X86_64.m_name ) + { + rv.m_arch = ARCH_X86_64; + } + else + { + // TODO: Error. + } + } + else + { + // TODO: Error/warning + } + } + else if( key_val.path[0] == "backend" ) + { + if( key_val.path[1] == "c" ) + { + if( key_val.path.size() <= 2 ) { + // TODO: Error. + continue ; + } + + if( key_val.path[2] == "variant" ) + { + check_path_length(key_val, 3); + if( key_val.value.as_string() == "msvc" ) + { + rv.m_codegen_mode = CodegenMode::Msvc; + } + else if( key_val.value.as_string() == "gnu" ) + { + rv.m_codegen_mode = CodegenMode::Gnu11; + } + else + { + // TODO: Error. + } + } + else if( key_val.path[2] == "target" ) + { + check_path_length(key_val, 3); + rv.m_c_compiler = key_val.value.as_string(); + } + else + { + // TODO: Warning/error + } + } + // Does MMIR need configuration? + else + { + // TODO: Error/warning + } + } + else if( key_val.path[0] == "arch" ) + { + if( key_val.path[1] == "name" ) + { + rv.m_arch.m_name = key_val.value.as_string(); + } + else if( key_val.path[1] == "pointer-bits" ) + { + rv.m_arch.m_pointer_bits = key_val.value.as_int(); + } + else if( key_val.path[1] == "is-big-endian" ) + { + rv.m_arch.m_big_endian = key_val.value.as_bool(); + } + else if( key_val.path[1] == "has-atomic-u8" ) + { + rv.m_arch.m_atomics.u8 = key_val.value.as_bool(); + } + else if( key_val.path[1] == "has-atomic-u16" ) + { + rv.m_arch.m_atomics.u16 = key_val.value.as_bool(); + } + else if( key_val.path[1] == "has-atomic-u32" ) + { + rv.m_arch.m_atomics.u32 = key_val.value.as_bool(); + } + else if( key_val.path[1] == "has-atomic-u64" ) + { + rv.m_arch.m_atomics.u64 = key_val.value.as_bool(); + } + else if( key_val.path[1] == "has-atomic-ptr" ) + { + rv.m_arch.m_atomics.ptr = key_val.value.as_bool(); + } + else + { + // TODO: warning/error + } + } + else + { + } + } + catch(const TomlValue::TypeError& e) + { + // TODO: error + } + } + + // TODO: Ensure that everything is set + + return rv; } TargetSpec init_from_spec_name(const ::std::string& target_name) { - if( ::std::ifstream(target_name).is_open() ) + // TODO: If there's a '/' or a '\' in the filename, open it as a path, otherwise it has to be a triple. + if( target_name.find('/') != ::std::string::npos || target_name.find('\\') != ::std::string::npos ) { return load_spec_from_file(target_name); } else if(target_name == "i586-linux-gnu") { return TargetSpec { - "unix", "linux", "gnu", CodegenMode::Gnu11, "i586-pc-linux-gnu", + "unix", "linux", "gnu", CodegenMode::Gnu11, "i586-linux-gnu", ARCH_X86 }; } else if(target_name == "x86_64-linux-gnu") { return TargetSpec { - "unix", "linux", "gnu", CodegenMode::Gnu11, "x86_64-pc-linux-gnu", + "unix", "linux", "gnu", CodegenMode::Gnu11, "x86_64-linux-gnu", ARCH_X86_64 }; } diff --git a/tools/common/Makefile b/tools/common/Makefile new file mode 100644 index 00000000..36251680 --- /dev/null +++ b/tools/common/Makefile @@ -0,0 +1,36 @@ +# +# Mini version of cargo +# - Interprets Cargo.toml files and emits makefiles +# - Supports overriding build script output +# + +V ?= @ + +OBJDIR := .obj/ + +BIN := ../bin/common_lib.a +OBJS = toml.o path.o debug.o + +CXXFLAGS := -Wall -std=c++14 -g -O2 + +OBJS := $(OBJS:%=$(OBJDIR)%) + +.PHONY: all clean + +all: $(BIN) + +clean: + rm $(BIN) $(OBJS) + +$(BIN): $(OBJS) + @mkdir -p $(dir $@) + @echo [AR] rcu $@ + $V$(AR) rcu $@ $(OBJS) + +$(OBJDIR)%.o: %.cpp + @mkdir -p $(dir $@) + @echo [CXX] $< + $V$(CXX) -o $@ -c $< $(CXXFLAGS) -MMD -MP -MF $@.dep + +-include $(OBJS:%.o=%.o.dep) + diff --git a/tools/minicargo/debug.cpp b/tools/common/debug.cpp index a3fb9956..a3fb9956 100644 --- a/tools/minicargo/debug.cpp +++ b/tools/common/debug.cpp diff --git a/tools/minicargo/debug.h b/tools/common/debug.h index ace00876..ace00876 100644 --- a/tools/minicargo/debug.h +++ b/tools/common/debug.h diff --git a/tools/minicargo/helpers.h b/tools/common/helpers.h index 8111483a..8111483a 100644 --- a/tools/minicargo/helpers.h +++ b/tools/common/helpers.h diff --git a/tools/minicargo/path.cpp b/tools/common/path.cpp index 12e505bb..12e505bb 100644 --- a/tools/minicargo/path.cpp +++ b/tools/common/path.cpp diff --git a/tools/minicargo/path.h b/tools/common/path.h index dd97f9be..dd97f9be 100644 --- a/tools/minicargo/path.h +++ b/tools/common/path.h diff --git a/tools/minicargo/toml.cpp b/tools/common/toml.cpp index 9fad0ec4..9fad0ec4 100644 --- a/tools/minicargo/toml.cpp +++ b/tools/common/toml.cpp diff --git a/tools/minicargo/toml.h b/tools/common/toml.h index 315cf62f..e57c28ae 100644 --- a/tools/minicargo/toml.h +++ b/tools/common/toml.h @@ -97,6 +97,18 @@ struct TomlValue } return m_int_value != 0; } + uint64_t as_int() const { + if(m_type != Type::Integer) { + throw TypeError { m_type, Type::Integer }; + } + return m_int_value; + } + const ::std::vector<TomlValue>& as_list() const { + if(m_type != Type::List) { + throw TypeError { m_type, Type::List }; + } + return m_sub_values; + } friend ::std::ostream& operator<<(::std::ostream& os, const TomlValue& x) { switch(x.m_type) diff --git a/tools/minicargo/Makefile b/tools/minicargo/Makefile index 71e266b0..01010fb5 100644 --- a/tools/minicargo/Makefile +++ b/tools/minicargo/Makefile @@ -14,10 +14,10 @@ OBJDIR := .obj/ BIN := ../bin/minicargo$(EXESUF) OBJS := main.o build.o manifest.o repository.o -OBJS += toml.o path.o debug.o LINKFLAGS := -g -lpthread CXXFLAGS := -Wall -std=c++14 -g -O2 +CXXFLAGS += -I ../common OBJS := $(OBJS:%=$(OBJDIR)%) @@ -28,15 +28,18 @@ all: $(BIN) clean: rm $(BIN) $(OBJS) -$(BIN): $(OBJS) +$(BIN): $(OBJS) ../bin/common_lib.a @mkdir -p $(dir $@) @echo [CXX] -o $@ - $V$(CXX) -o $@ $(OBJS) $(LINKFLAGS) + $V$(CXX) -o $@ $(OBJS) ../bin/common_lib.a $(LINKFLAGS) $(OBJDIR)%.o: %.cpp @mkdir -p $(dir $@) @echo [CXX] $< $V$(CXX) -o $@ -c $< $(CXXFLAGS) -MMD -MP -MF $@.dep +../bin/common_lib.a: + make -C ../common + -include $(OBJS:%.o=%.o.dep) diff --git a/tools/minicargo/build.h b/tools/minicargo/build.h index 0b3e949b..54d03575 100644 --- a/tools/minicargo/build.h +++ b/tools/minicargo/build.h @@ -1,7 +1,7 @@ #pragma once #include "manifest.h" -#include "path.h" +#include <path.h> class StringList; class StringListKV; diff --git a/tools/minicargo/manifest.h b/tools/minicargo/manifest.h index bbe2c34b..e48e7f2a 100644 --- a/tools/minicargo/manifest.h +++ b/tools/minicargo/manifest.h @@ -5,8 +5,7 @@ #include <map> #include <memory> #include <functional> -#include "path.h" -#include <functional> +#include <path.h> class PackageManifest; class Repository; diff --git a/tools/testrunner/Makefile b/tools/testrunner/Makefile index 1285d732..7107eaf2 100644 --- a/tools/testrunner/Makefile +++ b/tools/testrunner/Makefile @@ -26,8 +26,8 @@ $(OBJDIR)%.o: %.cpp @mkdir -p $(dir $@) @echo [CXX] $< $V$(CXX) -o $@ -c $< $(CXXFLAGS) -MMD -MP -MF $@.dep -# - Include files from minicargo -$(OBJDIR)%.o: ../minicargo/%.cpp +# - Include files from common (TODO: Be less hacky) +$(OBJDIR)%.o: ../common/%.cpp @mkdir -p $(dir $@) @echo [CXX] $< $V$(CXX) -o $@ -c $< $(CXXFLAGS) -MMD -MP -MF $@.dep diff --git a/tools/testrunner/main.cpp b/tools/testrunner/main.cpp index 2aa7e696..63391fc5 100644 --- a/tools/testrunner/main.cpp +++ b/tools/testrunner/main.cpp @@ -7,8 +7,8 @@ #include <vector> #include <fstream> #include <cctype> // std::isblank -#include "../minicargo/debug.h" -#include "../minicargo/path.h" +#include "../common/debug.h" +#include "../common/path.h" #ifdef _WIN32 # include <Windows.h> # define MRUSTC_PATH "x64\\Release\\mrustc.exe" diff --git a/vsproject/common_lib/common_lib.vcxproj b/vsproject/common_lib/common_lib.vcxproj new file mode 100644 index 00000000..09789501 --- /dev/null +++ b/vsproject/common_lib/common_lib.vcxproj @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}</ProjectGuid> + <RootNamespace>Project1</RootNamespace> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> + <ProjectName>common_lib</ProjectName> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\tools\common\debug.cpp" /> + <ClCompile Include="..\..\tools\common\path.cpp" /> + <ClCompile Include="..\..\tools\common\toml.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\tools\common\debug.h" /> + <ClInclude Include="..\..\tools\common\helpers.h" /> + <ClInclude Include="..\..\tools\common\path.h" /> + <ClInclude Include="..\..\tools\common\toml.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/vsproject/common_lib/common_lib.vcxproj.filters b/vsproject/common_lib/common_lib.vcxproj.filters new file mode 100644 index 00000000..e1760444 --- /dev/null +++ b/vsproject/common_lib/common_lib.vcxproj.filters @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\tools\common\debug.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\..\tools\common\path.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\..\tools\common\toml.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\tools\common\debug.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\tools\common\path.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\tools\common\toml.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\tools\common\helpers.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/vsproject/minicargo/minicargo.vcxproj b/vsproject/minicargo/minicargo.vcxproj index 39418735..25ffbe03 100644 --- a/vsproject/minicargo/minicargo.vcxproj +++ b/vsproject/minicargo/minicargo.vcxproj @@ -74,14 +74,24 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> + <AdditionalIncludeDirectories>..\..\tools\common</AdditionalIncludeDirectories> </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> + <AdditionalIncludeDirectories>..\..\tools\common</AdditionalIncludeDirectories> </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> @@ -90,10 +100,13 @@ <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> + <AdditionalIncludeDirectories>..\..\tools\common</AdditionalIncludeDirectories> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> @@ -103,29 +116,25 @@ <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> + <AdditionalIncludeDirectories>..\..\tools\common</AdditionalIncludeDirectories> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\..\tools\minicargo\build.cpp" /> - <ClCompile Include="..\..\tools\minicargo\debug.cpp" /> <ClCompile Include="..\..\tools\minicargo\main.cpp" /> <ClCompile Include="..\..\tools\minicargo\manifest.cpp" /> - <ClCompile Include="..\..\tools\minicargo\path.cpp" /> <ClCompile Include="..\..\tools\minicargo\repository.cpp" /> - <ClCompile Include="..\..\tools\minicargo\toml.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\tools\minicargo\build.h" /> - <ClInclude Include="..\..\tools\minicargo\debug.h" /> - <ClInclude Include="..\..\tools\minicargo\helpers.h" /> <ClInclude Include="..\..\tools\minicargo\manifest.h" /> - <ClInclude Include="..\..\tools\minicargo\path.h" /> <ClInclude Include="..\..\tools\minicargo\repository.h" /> - <ClInclude Include="..\..\tools\minicargo\toml.h" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> diff --git a/vsproject/minicargo/minicargo.vcxproj.filters b/vsproject/minicargo/minicargo.vcxproj.filters index c503bbbf..8fcee797 100644 --- a/vsproject/minicargo/minicargo.vcxproj.filters +++ b/vsproject/minicargo/minicargo.vcxproj.filters @@ -24,38 +24,17 @@ <ClCompile Include="..\..\tools\minicargo\manifest.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="..\..\tools\minicargo\toml.cpp"> - <Filter>Source Files</Filter> - </ClCompile> <ClCompile Include="..\..\tools\minicargo\repository.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="..\..\tools\minicargo\path.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="..\..\tools\minicargo\debug.cpp"> - <Filter>Source Files</Filter> - </ClCompile> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\tools\minicargo\helpers.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="..\..\tools\minicargo\manifest.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="..\..\tools\minicargo\toml.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="..\..\tools\minicargo\debug.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="..\..\tools\minicargo\repository.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="..\..\tools\minicargo\path.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="..\..\tools\minicargo\build.h"> <Filter>Header Files</Filter> </ClInclude> diff --git a/vsproject/mrustc.sln b/vsproject/mrustc.sln index 08acf4af..f8cc274a 100644 --- a/vsproject/mrustc.sln +++ b/vsproject/mrustc.sln @@ -4,18 +4,27 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrustc", "mrustc.vcxproj", "{12AA9964-C1BD-406A-9545-43EE63230EBE}" + ProjectSection(ProjectDependencies) = postProject + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} = {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tu_test", "tu_test\tu_test.vcxproj", "{F0A80ABB-A11A-492C-B5FC-E26C29A988D8}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minicargo", "minicargo\minicargo.vcxproj", "{15F3D38B-14FF-4872-805D-6D9C52920842}" ProjectSection(ProjectDependencies) = postProject {12AA9964-C1BD-406A-9545-43EE63230EBE} = {12AA9964-C1BD-406A-9545-43EE63230EBE} + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} = {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrunner", "testrunner\testrunner.vcxproj", "{A6679301-7BF1-4B37-9468-687769472E24}" + ProjectSection(ProjectDependencies) = postProject + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} = {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "standalone_miri", "standalone_miri\standalone_miri.vcxproj", "{253306D0-355B-41F2-A2F6-033DED548878}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common_lib", "common_lib\common_lib.vcxproj", "{C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -64,6 +73,14 @@ Global {253306D0-355B-41F2-A2F6-033DED548878}.Release|x64.Build.0 = Release|x64 {253306D0-355B-41F2-A2F6-033DED548878}.Release|x86.ActiveCfg = Release|Win32 {253306D0-355B-41F2-A2F6-033DED548878}.Release|x86.Build.0 = Release|Win32 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Debug|x64.ActiveCfg = Debug|x64 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Debug|x64.Build.0 = Debug|x64 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Debug|x86.ActiveCfg = Debug|Win32 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Debug|x86.Build.0 = Debug|Win32 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Release|x64.ActiveCfg = Release|x64 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Release|x64.Build.0 = Release|x64 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Release|x86.ActiveCfg = Release|Win32 + {C2AE52D0-1EA5-4072-BE90-E4CEEB5002C4}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/vsproject/mrustc.vcxproj b/vsproject/mrustc.vcxproj index c48d0444..2096266a 100644 --- a/vsproject/mrustc.vcxproj +++ b/vsproject/mrustc.vcxproj @@ -75,7 +75,7 @@ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>../src/include;../src;../tools/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <WarningLevel>Level1</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> @@ -90,12 +90,15 @@ <TargetMachine>MachineX86</TargetMachine> <GenerateDebugInformation>true</GenerateDebugInformation> <SubSystem>Console</SubSystem> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> </Link> + <ProjectReference /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>../src/include;../src;../tools/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <WarningLevel>Level1</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> @@ -112,11 +115,14 @@ <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <FullProgramDatabaseFile>true</FullProgramDatabaseFile> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> </Link> + <ProjectReference /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> - <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>../src/include;../src;../tools/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessToFile>false</PreprocessToFile> <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> @@ -126,10 +132,15 @@ <WarningLevel>Level1</WarningLevel> <TreatSpecificWarningsAsErrors>4062;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors> </ClCompile> + <Link> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + </Link> + <ProjectReference /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ClCompile> - <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>../src/include;../src;../tools/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessToFile>false</PreprocessToFile> <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> @@ -140,7 +151,10 @@ </ClCompile> <Link> <FullProgramDatabaseFile>true</FullProgramDatabaseFile> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> </Link> + <ProjectReference /> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\src\ast\ast.cpp" /> diff --git a/vsproject/testrunner/testrunner.vcxproj b/vsproject/testrunner/testrunner.vcxproj index 857aea71..94d365f0 100644 --- a/vsproject/testrunner/testrunner.vcxproj +++ b/vsproject/testrunner/testrunner.vcxproj @@ -75,6 +75,10 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> @@ -82,6 +86,10 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> @@ -94,6 +102,8 @@ <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> @@ -107,10 +117,11 @@ <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories> + <AdditionalDependencies>common_lib.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> - <ClCompile Include="..\..\tools\minicargo\path.cpp" /> <ClCompile Include="..\..\tools\testrunner\main.cpp" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> diff --git a/vsproject/testrunner/testrunner.vcxproj.filters b/vsproject/testrunner/testrunner.vcxproj.filters index 6a7df4d6..9d0c19c8 100644 --- a/vsproject/testrunner/testrunner.vcxproj.filters +++ b/vsproject/testrunner/testrunner.vcxproj.filters @@ -18,8 +18,5 @@ <ClCompile Include="..\..\tools\testrunner\main.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="..\..\tools\minicargo\path.cpp"> - <Filter>Source Files</Filter> - </ClCompile> </ItemGroup> </Project>
\ No newline at end of file |