summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2018-03-18 10:48:26 +0800
committerJohn Hodge <tpg@mutabah.net>2018-03-18 10:48:26 +0800
commit5b0450395af81ceba0d0ac27fc73b16f966bd7d3 (patch)
treee3c753b83a562be78cdbd74b8164dab785bf07a6
parent363e6fa172f787e970c8abc8f631b6d60d571248 (diff)
downloadmrust-5b0450395af81ceba0d0ac27fc73b16f966bd7d3.tar.gz
All - Move toml parser and path header to a common library, start on custom target specs.
-rw-r--r--Makefile9
-rw-r--r--src/trans/target.cpp172
-rw-r--r--tools/common/Makefile36
-rw-r--r--tools/common/debug.cpp (renamed from tools/minicargo/debug.cpp)0
-rw-r--r--tools/common/debug.h (renamed from tools/minicargo/debug.h)0
-rw-r--r--tools/common/helpers.h (renamed from tools/minicargo/helpers.h)0
-rw-r--r--tools/common/path.cpp (renamed from tools/minicargo/path.cpp)0
-rw-r--r--tools/common/path.h (renamed from tools/minicargo/path.h)0
-rw-r--r--tools/common/toml.cpp (renamed from tools/minicargo/toml.cpp)0
-rw-r--r--tools/common/toml.h (renamed from tools/minicargo/toml.h)12
-rw-r--r--tools/minicargo/Makefile9
-rw-r--r--tools/minicargo/build.h2
-rw-r--r--tools/minicargo/manifest.h3
-rw-r--r--tools/testrunner/Makefile4
-rw-r--r--tools/testrunner/main.cpp4
-rw-r--r--vsproject/common_lib/common_lib.vcxproj127
-rw-r--r--vsproject/common_lib/common_lib.vcxproj.filters42
-rw-r--r--vsproject/minicargo/minicargo.vcxproj23
-rw-r--r--vsproject/minicargo/minicargo.vcxproj.filters21
-rw-r--r--vsproject/mrustc.sln17
-rw-r--r--vsproject/mrustc.vcxproj22
-rw-r--r--vsproject/testrunner/testrunner.vcxproj13
-rw-r--r--vsproject/testrunner/testrunner.vcxproj.filters3
23 files changed, 464 insertions, 55 deletions
diff --git a/Makefile b/Makefile
index 18820ee0..18415510 100644
--- a/Makefile
+++ b/Makefile
@@ -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