From 30f0a8e8dc100dd606e5d971a45084119f22642a Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 14:59:49 +0100 Subject: [PATCH 1/9] Initial add of response file parsing Credit to https://github.com/tmiasko/shell-words for the basic algorithm --- src/compiler/args.rs | 178 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/src/compiler/args.rs b/src/compiler/args.rs index a256953c8..4c4a88da8 100644 --- a/src/compiler/args.rs +++ b/src/compiler/args.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::cmp::Ordering; use std::error::Error; use std::ffi::OsString; @@ -630,6 +631,183 @@ macro_rules! take_arg { }; } +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ParseError(char); + +impl fmt::Display for ParseError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use std::error::Error; + write!(f, "{}: `{}`", self.description(), self.0) + } +} + +impl std::error::Error for ParseError { + fn description(&self) -> &str { + "missing closing quote" + } +} + +enum State { + /// Within a delimiter. + Delimiter, + /// After backslash, but before starting word. + Backslash, + /// Within an unquoted word. + Unquoted, + /// After backslash in an unquoted word. + UnquotedBackslash, + /// Within a single quoted word. + SingleQuoted, + /// Within a double quoted word. + DoubleQuoted, + /// After backslash inside a double quoted word. + DoubleQuotedBackslash, +} + +/// Given the contents of a response file, attempts to parse it as a shell would (mostly) +/// to preserve the semantics of the arguments, namely, not splitting arguments on whitespace +/// if that whitespace is encapsulated inside double or single quotes. +pub fn split_response_contents(s: &str) -> Result>, ParseError> { + use self::State::*; + + let mut words = Vec::new(); + let mut chars = s.char_indices(); + let mut state = Delimiter; + let mut ranges = Vec::with_capacity(2); + let len = s.len(); + let mut index = 0; + + macro_rules! coalesce { + ($s:ident, $ind:expr, $w:ident, $r:ident) => { + if index < $ind { + ranges.push(index..$ind); + } + + let len = $r.iter().map(|r| r.len()).sum(); + + let word = $r.iter().fold(String::with_capacity(len), |mut string, r| { + let part = &$s[r.clone()]; + string.push_str(part); + string + }); + + $w.push(Cow::from(word)); + $r.clear(); + }; + } + + macro_rules! cut { + ($ind:expr, $r:ident) => { + if index < $ind { + ranges.push(index..$ind); + } + + index = $ind + 1; + }; + } + + loop { + let (ind, c) = chars + .next() + .map(|(ind, c)| (ind, Some(c))) + .unwrap_or_else(|| (len, None)); + state = match state { + Delimiter => match c { + None => break, + Some('\'') => { + index = ind + 1; + SingleQuoted + } + Some('\"') => { + index = ind + 1; + DoubleQuoted + } + Some('\\') => { + index = ind; + Backslash + } + Some(' ') | Some('\n') | Some('\r') | Some('\t') => Delimiter, + _ => { + index = ind; + Unquoted + } + }, + Backslash => match c { + None => { + coalesce!(s, ind, words, ranges); + break; + } + Some('\n') => { + coalesce!(s, ind, words, ranges); + Delimiter + } + _ => Unquoted, + }, + Unquoted => match c { + None => { + coalesce!(s, ind, words, ranges); + break; + } + Some('\'') => { + cut!(ind, ranges); + SingleQuoted + } + Some('\"') => { + cut!(ind, ranges); + DoubleQuoted + } + Some('\\') => { + cut!(ind, ranges); + UnquotedBackslash + } + Some(' ') | Some('\n') | Some('\r') | Some('\t') => { + coalesce!(s, ind, words, ranges); + Delimiter + } + _ => Unquoted, + }, + UnquotedBackslash => match c { + None => { + coalesce!(s, ind, words, ranges); + break; + } + Some('\n') => { + cut!(ind, ranges); + Unquoted + } + _ => Unquoted, + }, + SingleQuoted => match c { + None => return Err(ParseError('\'')), + Some('\'') => { + cut!(ind, ranges); + Unquoted + } + _ => SingleQuoted, + }, + DoubleQuoted => match c { + None => return Err(ParseError('\"')), + Some('\"') => { + cut!(ind, ranges); + Unquoted + } + Some('\\') => DoubleQuotedBackslash, + _ => DoubleQuoted, + }, + DoubleQuotedBackslash => match c { + None => return Err(ParseError('\"')), + Some('\n') => { + cut!(ind, ranges); + DoubleQuoted + } + _ => DoubleQuoted, + }, + } + } + + Ok(words) +} + #[cfg(test)] mod tests { use super::*; From 59d7030a95588f4d75de1c48a61b9ec66355e4c8 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 15:02:20 +0100 Subject: [PATCH 2/9] Attempt to parse response file if it contains quotes --- src/compiler/gcc.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/compiler/gcc.rs b/src/compiler/gcc.rs index f46793179..a68ab4661 100644 --- a/src/compiler/gcc.rs +++ b/src/compiler/gcc.rs @@ -596,11 +596,24 @@ impl<'a> Iterator for ExpandIncludeFile<'a> { debug!("failed to read @-file `{}`: {}", file.display(), e); return Some(arg) } + + // If any arguments are quoted we need to be a bit more involved than splitting + // on whitespace if contents.contains('"') || contents.contains('\'') { - return Some(arg) - } - let new_args = contents.split_whitespace().collect::>(); - self.stack.extend(new_args.iter().rev().map(|s| s.into())); + let contents = contents.trim(); + match split_response_contents(&contents) { + Ok(words) => { + self.stack.extend(words.into_iter().rev().map(|s| String::from(s).into())); + } + Err(e) => { + debug!("failed to parse @-file `{}`: {}", file.display(), e); + return Some(arg) + } + } + } else { + let new_args: Vec<_> = contents.split_whitespace().collect(); + self.stack.extend(new_args.iter().rev().map(|s| s.into())); + }; } } } From 947598fc17e5694815df44ab90bc74b699de2512 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:37:47 +0100 Subject: [PATCH 3/9] Add pretty_assertions for tests --- Cargo.toml | 2 +- src/lib.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index aa8f1fbfb..5d3e57b3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,7 +101,7 @@ chrono = "0.4" escargot = "0.3" itertools = "0.7" predicates = "0.9.0" -selenium-rs = "0.1" +pretty_assertions = "0.5.1" [target.'cfg(unix)'.dependencies] daemonize = "0.3" diff --git a/src/lib.rs b/src/lib.rs index 8f0e3535c..8f1ac85dd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -65,6 +65,8 @@ extern crate num_cpus; extern crate number_prefix; #[cfg(feature = "openssl")] extern crate openssl; +#[cfg(test)] +extern crate pretty_assertions; extern crate rand; #[cfg(feature = "redis")] extern crate redis; From ebd9c9755351d55e6575546be7370485bd27a3bd Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:38:28 +0100 Subject: [PATCH 4/9] Add test for a clang response file --- src/compiler/clang.rs | 80 +++++++++++++++++++++++++++++++++++++++++++ tests/ue_linux.rsp | 1 + 2 files changed, 81 insertions(+) create mode 100644 tests/ue_linux.rsp diff --git a/src/compiler/clang.rs b/src/compiler/clang.rs index 8d348a75c..124f84171 100644 --- a/src/compiler/clang.rs +++ b/src/compiler/clang.rs @@ -110,6 +110,7 @@ mod test { use std::collections::HashMap; use std::path::PathBuf; use super::*; + use tempdir::TempDir; use test::utils::*; fn _parse_arguments(arguments: &[String]) -> CompilerArguments { @@ -204,4 +205,83 @@ mod test { assert_eq!(ovec!["plugin.so"], a.extra_hash_files); } + #[test] + fn handle_response_file_with_quotes() { + use pretty_assertions::assert_eq; + + let td = TempDir::new("clang_response_file").unwrap(); + let rsp_path = td.path().join("nix_response.rsp"); + + std::fs::copy("tests/ue_linux.rsp", &rsp_path).unwrap(); + + let parsed = parses!(format!("@{}", rsp_path.display())); + + assert_eq!(parsed, ParsedArguments { + input: PathBuf::from("/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp"), + language: Language::Cxx, + depfile: None, + outputs: vec![("obj", PathBuf::from("/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp.o"))].into_iter().collect(), + preprocessor_args: ovec![ + "-nostdinc++", + "-IThirdParty/Linux/LibCxx/include/", + "-IThirdParty/Linux/LibCxx/include/c++/v1", + "-DPLATFORM_EXCEPTIONS_DISABLED=0", + "-D_LINUX64", + "-I/home/jake/code/unreal/Engine/Source", + "-I/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Private", + "-I/home/jake/code/unreal/Engine/Source/Runtime", + "-I/home/jake/code/unreal/Engine/Source/Runtime/Projects/Public", + "-I/home/jake/code/unreal/Engine/Source/Runtime/Core/Public/Linux", + "-I/home/jake/code/unreal/Engine/Source/Runtime/Core/Public", + "-I/home/jake/code/unreal/Engine/Source/Runtime/Json/Public", + "-I/home/jake/code/unreal/Engine/Source/Developer", + "-I/home/jake/code/unreal/Engine/Source/Developer/TargetPlatform/Public", + "-I/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Inc/CoreUObject", + "-I/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Public", + "-I/home/path that shouldnt exist because spaces are the devil/but shit happens", + "-include", + "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/PCH.CoreUObject.h" + ], + common_args: ovec![ + "-pipe", + "-Wall", + "-Werror", + "-Wsequence-point", + "-Wdelete-non-virtual-dtor", + "-fno-math-errno", + "-fno-rtti", + "-fcolor-diagnostics", + "-Wno-unused-private-field", + "-Wno-tautological-compare", + "-Wno-undefined-bool-conversion", + "-Wno-unused-local-typedef", + "-Wno-inconsistent-missing-override", + "-Wno-undefined-var-template", + "-Wno-unused-lambda-capture", + "-Wno-unused-variable", + "-Wno-unused-function", + "-Wno-switch", + "-Wno-unknown-pragmas", + "-Wno-invalid-offsetof", + "-Wno-gnu-string-literal-operator-template", + "-Wshadow", + "-Wno-error=shadow", + "-Wundef", + "-gdwarf-4", + "-glldb", + "-fstandalone-debug", + "-O2", + "-fPIC", + "-ftls-model=local-dynamic", + "-fexceptions", + "-target", + "x86_64-unknown-linux-gnu", + "--sysroot=/home/jake/code/unreal/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu", + "-std=c++14" + ], + extra_hash_files: Vec::new(), + msvc_show_includes: false, + profile_generate: false, + }); + } } diff --git a/tests/ue_linux.rsp b/tests/ue_linux.rsp new file mode 100644 index 000000000..8ab5a3a90 --- /dev/null +++ b/tests/ue_linux.rsp @@ -0,0 +1 @@ + -c -pipe -nostdinc++ -IThirdParty/Linux/LibCxx/include/ -IThirdParty/Linux/LibCxx/include/c++/v1 -Wall -Werror -Wsequence-point -Wdelete-non-virtual-dtor -fno-math-errno -fno-rtti -fcolor-diagnostics -Wno-unused-private-field -Wno-tautological-compare -Wno-undefined-bool-conversion -Wno-unused-local-typedef -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-unused-lambda-capture -Wno-unused-variable -Wno-unused-function -Wno-switch -Wno-unknown-pragmas -Wno-invalid-offsetof -Wno-gnu-string-literal-operator-template -Wshadow -Wno-error=shadow -Wundef -gdwarf-4 -glldb -fstandalone-debug -O2 -fPIC -ftls-model=local-dynamic -fexceptions -DPLATFORM_EXCEPTIONS_DISABLED=0 -D_LINUX64 -target x86_64-unknown-linux-gnu --sysroot="/home/jake/code/unreal/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu" -I"/home/jake/code/unreal/Engine/Source" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Private" -I"/home/jake/code/unreal/Engine/Source/Runtime" -I"/home/jake/code/unreal/Engine/Source/Runtime/Projects/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public/Linux" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Json/Public" -I"/home/jake/code/unreal/Engine/Source/Developer" -I"/home/jake/code/unreal/Engine/Source/Developer/TargetPlatform/Public" -I"/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Inc/CoreUObject" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Public" -I"/home/path that shouldnt exist because spaces are the devil/but shit happens" -x c++ -std=c++14 -include "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/PCH.CoreUObject.h" -o "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp.o" "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp" \ No newline at end of file From 00403cfe5c3981d9660df68d1e2f35d56fd56112 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:38:45 +0100 Subject: [PATCH 5/9] Fix macro to handle trailing commas --- src/test/utils.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/utils.rs b/src/test/utils.rs index 6a28936f9..7e0874fc8 100644 --- a/src/test/utils.rs +++ b/src/test/utils.rs @@ -37,7 +37,7 @@ macro_rules! stringvec { /// Return a `Vec` with each listed entry converted to an owned `OsString`. macro_rules! ovec { - ( $( $x:expr ),* ) => { + ( $( $x:expr ),* $(,)* ) => { vec!($( ::std::ffi::OsString::from($x), )*) }; } From 58b190ba9319b72bbabf18ead6bbba577b50d18f Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:39:27 +0100 Subject: [PATCH 6/9] Handle response files for msvc --- src/compiler/msvc.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/msvc.rs b/src/compiler/msvc.rs index f010c3c57..66e0e9637 100644 --- a/src/compiler/msvc.rs +++ b/src/compiler/msvc.rs @@ -258,8 +258,10 @@ pub fn parse_arguments(arguments: &[OsString], cwd: &Path, is_clang: bool) -> Co let mut show_includes = false; let mut xclangs: Vec = vec![]; + let expanded = gcc::ExpandIncludeFile::new(cwd, arguments); + // First convert all `/foo` arguments to `-foo` to accept both styles - let it = arguments.iter().map(|i| { + let it = expanded.map(|i| { if let Some(arg) = i.split_prefix("/") { let mut dash = OsString::from("-"); dash.push(&arg); From c8c8cc40becc99b6b51fab0fdbcb66f8b257b4af Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:39:44 +0100 Subject: [PATCH 7/9] Add msvc response file test --- src/compiler/msvc.rs | 229 ++++++++++++++++++++++ tests/Module.GraphEditor.cpp.obj.response | 201 +++++++++++++++++++ 2 files changed, 430 insertions(+) create mode 100644 tests/Module.GraphEditor.cpp.obj.response diff --git a/src/compiler/msvc.rs b/src/compiler/msvc.rs index 66e0e9637..d49cc9646 100644 --- a/src/compiler/msvc.rs +++ b/src/compiler/msvc.rs @@ -638,6 +638,7 @@ mod test { use futures_cpupool::CpuPool; use mock_command::*; use super::*; + use tempdir::TempDir; use test::utils::*; fn parse_arguments(arguments: &[OsString]) -> CompilerArguments { @@ -937,4 +938,232 @@ mod test { // Ensure that we ran all processes. assert_eq!(0, creator.lock().unwrap().children.len()); } + + #[test] + fn handle_response_file_with_quotes() { + use pretty_assertions::assert_eq; + + let td = TempDir::new("msvc_response_file").unwrap(); + let rsp_path = td.path().join("Module.GraphEditor.cpp.obj.response"); + + std::fs::copy("tests/Module.GraphEditor.cpp.obj.response", &rsp_path).unwrap(); + + let parsed = match parse_arguments(&ovec![format!("@{}", rsp_path.display())]) { + CompilerArguments::Ok(args) => args, + o @ _ => panic!("Got unexpected parse result: {:?}", o), + }; + + assert_eq!(parsed, ParsedArguments { + input: PathBuf::from(r#"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Module.GraphEditor.cpp"#), + language: Language::Cxx, + depfile: None, + outputs: vec![("obj", PathBuf::from(r#"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Module.GraphEditor.cpp.obj"#))].into_iter().collect(), + preprocessor_args: ovec![ + "-D_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1", + "-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1", + "-D_WINDLL", + "-I.", + "-IEditorGraphEditorPrivate", + "-IEditorGraphEditorPrivateKismetNodes", + "-IEditorGraphEditorPrivateKismetPins", + "-IEditorGraphEditorPrivateMaterialNodes", + "-IEditorGraphEditorPrivateMaterialPins", + "-IRuntime", + "-IRuntimeAppFrameworkPublic", + "-IRuntimeCorePublic", + "-I..IntermediateBuildWin64UE4EditorIncCoreUObject", + "-IRuntimeCoreUObjectPublic", + "-IRuntimeApplicationCorePublic", + "-IRuntimeRHIPublic", + "-I..IntermediateBuildWin64UE4EditorIncSlate", + "-IRuntimeSlatePublic", + "-I..IntermediateBuildWin64UE4EditorIncInputCore", + "-IRuntimeInputCoreClasses", + "-IRuntimeInputCorePublic", + "-IRuntimeJsonPublic", + "-I..IntermediateBuildWin64UE4EditorIncSlateCore", + "-IRuntimeSlateCorePublic", + "-IRuntimeImageWrapperPublic", + "-I..IntermediateBuildWin64UE4EditorIncEngine", + "-IRuntimeEngineClasses", + "-IRuntimeEnginePublic", + "-IRuntimeMessagingPublic", + "-IRuntimeMessagingCommonPublic", + "-IRuntimeRenderCorePublic", + "-IRuntimeShaderCorePublic", + "-IRuntimeUtilityShadersPublic", + "-I..IntermediateBuildWin64UE4EditorIncAssetRegistry", + "-IRuntimeAssetRegistryPublic", + "-I..IntermediateBuildWin64UE4EditorIncEngineMessages", + "-IRuntimeEngineMessagesPublic", + "-I..IntermediateBuildWin64UE4EditorIncEngineSettings", + "-IRuntimeEngineSettingsClasses", + "-IRuntimeEngineSettingsPublic", + "-IRuntimeSynthBenchmarkPublic", + "-I..IntermediateBuildWin64UE4EditorIncRenderer", + "-IRuntimeRendererPublic", + "-I..IntermediateBuildWin64UE4EditorIncGameplayTags", + "-IRuntimeGameplayTagsClasses", + "-IRuntimeGameplayTagsPublic", + "-IRuntimeDatabaseSupportPublic", + "-I..IntermediateBuildWin64UE4EditorIncPacketHandler", + "-IRuntimePacketHandlers", + "-IRuntimePacketHandlersPacketHandlerClasses", + "-IRuntimePacketHandlersPacketHandlerPublic", + "-IRuntimePacketHandlersReliabilityHandlerComponentPublic", + "-I..IntermediateBuildWin64UE4EditorIncAudioPlatformConfiguration", + "-IRuntimeAudioPlatformConfigurationPublic", + "-I..IntermediateBuildWin64UE4EditorIncMeshDescription", + "-IRuntimeMeshDescriptionPublic", + "-I..IntermediateBuildWin64UE4EditorIncUnrealEd", + "-IEditor", + "-IProgramsUnrealLightmassPublic", + "-IEditorUnrealEdClasses", + "-IEditorUnrealEdPublic", + "-IEditorBspModePublic", + "-IDeveloper", + "-IDeveloperDirectoryWatcherPublic", + "-IEditorDocumentationPublic", + "-IRuntimeProjectsPublic", + "-IRuntimeSandboxFilePublic", + "-I..IntermediateBuildWin64UE4EditorIncEditorStyle", + "-IEditorEditorStylePublic", + "-I..IntermediateBuildWin64UE4EditorIncSourceControl", + "-IDeveloperSourceControlPublic", + "-I..IntermediateBuildWin64UE4EditorIncUnrealEdMessages", + "-IEditorUnrealEdMessagesClasses", + "-IEditorUnrealEdMessagesPublic", + "-I..IntermediateBuildWin64UE4EditorIncGameplayDebugger", + "-IDeveloperGameplayDebuggerPublic", + "-I..IntermediateBuildWin64UE4EditorIncBlueprintGraph", + "-IEditorBlueprintGraphClasses", + "-IEditorBlueprintGraphPublic", + "-IRuntimeOnline", + "-IRuntimeOnlineHTTPPublic", + "-IRuntimeUnrealAudioPublic", + "-I..IntermediateBuildWin64UE4EditorIncFunctionalTesting", + "-IDeveloperFunctionalTestingClasses", + "-IDeveloperFunctionalTestingPublic", + "-I..IntermediateBuildWin64UE4EditorIncAutomationController", + "-IDeveloperAutomationControllerPublic", + "-I..IntermediateBuildWin64UE4EditorIncLocalization", + "-IDeveloperLocalizationPublic", + "-I..IntermediateBuildWin64UE4EditorIncAudioEditor", + "-IEditorAudioEditorClasses", + "-IEditorAudioEditorPublic", + "-IEditorLevelEditorPublic", + "-IDeveloperSettingsPublic", + "-I..IntermediateBuildWin64UE4EditorIncIntroTutorials", + "-IEditorIntroTutorialsPublic", + "-I..IntermediateBuildWin64UE4EditorIncHeadMountedDisplay", + "-IRuntimeHeadMountedDisplayPublic", + "-I..IntermediateBuildWin64UE4EditorIncVREditor", + "-IEditorVREditor", + "-IEditorVREditorPublic", + "-IEditorCommonMenuExtensionsPublic", + "-I..IntermediateBuildWin64UE4EditorIncLandscape", + "-IRuntimeLandscapeClasses", + "-IRuntimeLandscapePublic", + "-IEditorPropertyEditorPublic", + "-IEditorActorPickerModePublic", + "-IEditorSceneDepthPickerModePublic", + "-IEditorDetailCustomizationsPublic", + "-I..IntermediateBuildWin64UE4EditorIncClassViewer", + "-IEditorClassViewerPublic", + "-I..IntermediateBuildWin64UE4EditorIncGraphEditor", + "-IEditorGraphEditorPublic", + "-I..IntermediateBuildWin64UE4EditorIncContentBrowser", + "-IEditorContentBrowserPublic", + "-IRuntimeNetworkFileSystemPublic", + "-IRuntimeSocketsPublic", + "-I..IntermediateBuildWin64UE4EditorIncUMG", + "-IRuntimeUMGPublic", + "-I..IntermediateBuildWin64UE4EditorIncMovieScene", + "-IRuntimeMovieScenePublic", + "-I..IntermediateBuildWin64UE4EditorIncTimeManagement", + "-IRuntimeTimeManagementPublic", + "-I..IntermediateBuildWin64UE4EditorIncMovieSceneTracks", + "-IRuntimeMovieSceneTracksPublic", + "-I..IntermediateBuildWin64UE4EditorIncAnimationCore", + "-IRuntimeAnimationCorePublic", + "-I..IntermediateBuildWin64UE4EditorIncPropertyPath", + "-IRuntimePropertyPathPublic", + "-I..IntermediateBuildWin64UE4EditorIncNavigationSystem", + "-IRuntimeNavigationSystemPublic", + "-IDeveloperMeshBuilderPublic", + "-IRuntimeWindows", + "-IRuntimeWindowsXAudio2Public", + "-IRuntimeAudioMixerPublic", + "-IDeveloperCollectionManagerPublic", + "-I..IntermediateBuildWin64UE4EditorIncAddContentDialog", + "-IEditorAddContentDialogPublic", + "-IThirdPartyIntelEmbreeEmbree2140Win64include", + "-IDeveloperMeshUtilitiesPublic", + "-IDeveloperMeshMergeUtilitiesPublic", + "-IDeveloperHierarchicalLODUtilitiesPublic", + "-IDeveloperMeshReductionInterfacePublic", + "-I..IntermediateBuildWin64UE4EditorIncAssetTools", + "-IDeveloperAssetToolsPublic", + "-IEditorKismetCompilerPublic", + "-I..IntermediateBuildWin64UE4EditorIncGameplayTasks", + "-IRuntimeGameplayTasksClasses", + "-IRuntimeGameplayTasksPublic", + "-I..IntermediateBuildWin64UE4EditorIncAIModule", + "-IRuntimeAIModulePublic", + "-IRuntimeAIModuleClasses", + "-I..IntermediateBuildWin64UE4EditorIncKismet", + "-IEditorKismetClasses", + "-IEditorKismetPublic", + "-I..IntermediateBuildWin64UE4EditorIncClothingSystemRuntimeInterface", + "-IRuntimeClothingSystemRuntimeInterfacePublic", + "-IRuntimeNetworkReplayStreaming", + "-IRuntimeNetworkReplayStreamingNetworkReplayStreamingPublic", + "-I..IntermediateBuildWin64UE4EditorIncAudioMixer", + "-IRuntimeAudioMixerClasses", + "-IThirdParty", + "-IThirdPartylibSampleRatePublic", + "-IEditorEditorWidgetsPublic", + "-IEditorKismetWidgetsPublic", + r#"-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\INCLUDE"#, + r#"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um"#, + r#"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt"#, + r#"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared"#, + r#"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um"#, + r#"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt"#, + r#"-FIC:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UnrealEd\SharedPCH.UnrealEd.h"#, + r#"-FIC:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Definitions.GraphEditor.h"#, + ], + common_args: ovec![ + "-Zc:inline", + "-nologo", + "-Oi", + "-Gy", + "-Zm850", + "-wd4819", + "-source-charset:utf-8", + "-execution-charset:utf-8", + "-Ox", + "-Ot", + "-Ob2", + "-errorReport:prompt", + "-EHsc", + "-Z7", + "-MD", + "-bigobj", + "-fp:fast", + "-Zo", + "-Zp8", + "-wd4463", + "-wd4838", + "-we4668", + r#"-YuC:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UnrealEd\SharedPCH.UnrealEd.h"#, + "-TP", + "-GR-", + "-W4", + ], + extra_hash_files: Vec::new(), + msvc_show_includes: false, + profile_generate: false, + }); + } } diff --git a/tests/Module.GraphEditor.cpp.obj.response b/tests/Module.GraphEditor.cpp.obj.response new file mode 100644 index 000000000..9a38d5a64 --- /dev/null +++ b/tests/Module.GraphEditor.cpp.obj.response @@ -0,0 +1,201 @@ +/Zc:inline +/nologo +/Oi +/c +/Gy +/Zm850 +/wd4819 +/D_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1 +/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 +/D_WINDLL +/source-charset:utf-8 /execution-charset:utf-8 +/Ox +/Ot +/Ob2 +/errorReport:prompt +/EHsc +/Z7 +/MD +/bigobj +/fp:fast +/Zo +/Zp8 +/wd4463 +/wd4838 +/we4668 +/I . +/I Editor\GraphEditor\Private +/I Editor\GraphEditor\Private\KismetNodes +/I Editor\GraphEditor\Private\KismetPins +/I Editor\GraphEditor\Private\MaterialNodes +/I Editor\GraphEditor\Private\MaterialPins +/I Runtime +/I Runtime\AppFramework\Public +/I Runtime\Core\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\CoreUObject +/I Runtime\CoreUObject\Public +/I Runtime\ApplicationCore\Public +/I Runtime\RHI\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Slate +/I Runtime\Slate\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\InputCore +/I Runtime\InputCore\Classes +/I Runtime\InputCore\Public +/I Runtime\Json\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SlateCore +/I Runtime\SlateCore\Public +/I Runtime\ImageWrapper\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Engine +/I Runtime\Engine\Classes +/I Runtime\Engine\Public +/I Runtime\Messaging\Public +/I Runtime\MessagingCommon\Public +/I Runtime\RenderCore\Public +/I Runtime\ShaderCore\Public +/I Runtime\UtilityShaders\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetRegistry +/I Runtime\AssetRegistry\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineMessages +/I Runtime\EngineMessages\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineSettings +/I Runtime\EngineSettings\Classes +/I Runtime\EngineSettings\Public +/I Runtime\SynthBenchmark\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Renderer +/I Runtime\Renderer\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTags +/I Runtime\GameplayTags\Classes +/I Runtime\GameplayTags\Public +/I Runtime\DatabaseSupport\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PacketHandler +/I Runtime\PacketHandlers +/I Runtime\PacketHandlers\PacketHandler\Classes +/I Runtime\PacketHandlers\PacketHandler\Public +/I Runtime\PacketHandlers\ReliabilityHandlerComponent\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioPlatformConfiguration +/I Runtime\AudioPlatformConfiguration\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MeshDescription +/I Runtime\MeshDescription\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEd +/I Editor +/I Programs\UnrealLightmass\Public +/I Editor\UnrealEd\Classes +/I Editor\UnrealEd\Public +/I Editor\BspMode\Public +/I Developer +/I Developer\DirectoryWatcher\Public +/I Editor\Documentation\Public +/I Runtime\Projects\Public +/I Runtime\SandboxFile\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EditorStyle +/I Editor\EditorStyle\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SourceControl +/I Developer\SourceControl\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEdMessages +/I Editor\UnrealEdMessages\Classes +/I Editor\UnrealEdMessages\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayDebugger +/I Developer\GameplayDebugger\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\BlueprintGraph +/I Editor\BlueprintGraph\Classes +/I Editor\BlueprintGraph\Public +/I Runtime\Online +/I Runtime\Online\HTTP\Public +/I Runtime\UnrealAudio\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\FunctionalTesting +/I Developer\FunctionalTesting\Classes +/I Developer\FunctionalTesting\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AutomationController +/I Developer\AutomationController\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Localization +/I Developer\Localization\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioEditor +/I Editor\AudioEditor\Classes +/I Editor\AudioEditor\Public +/I Editor\LevelEditor\Public +/I Developer\Settings\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\IntroTutorials +/I Editor\IntroTutorials\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\HeadMountedDisplay +/I Runtime\HeadMountedDisplay\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\VREditor +/I Editor\VREditor +/I Editor\VREditor\Public +/I Editor\CommonMenuExtensions\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Landscape +/I Runtime\Landscape\Classes +/I Runtime\Landscape\Public +/I Editor\PropertyEditor\Public +/I Editor\ActorPickerMode\Public +/I Editor\SceneDepthPickerMode\Public +/I Editor\DetailCustomizations\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClassViewer +/I Editor\ClassViewer\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GraphEditor +/I Editor\GraphEditor\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ContentBrowser +/I Editor\ContentBrowser\Public +/I Runtime\NetworkFileSystem\Public +/I Runtime\Sockets\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UMG +/I Runtime\UMG\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieScene +/I Runtime\MovieScene\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\TimeManagement +/I Runtime\TimeManagement\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieSceneTracks +/I Runtime\MovieSceneTracks\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AnimationCore +/I Runtime\AnimationCore\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyPath +/I Runtime\PropertyPath\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\NavigationSystem +/I Runtime\NavigationSystem\Public +/I Developer\MeshBuilder\Public +/I Runtime\Windows +/I Runtime\Windows\XAudio2\Public +/I Runtime\AudioMixer\Public +/I Developer\CollectionManager\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AddContentDialog +/I Editor\AddContentDialog\Public +/I ThirdParty\IntelEmbree\Embree2140\Win64\include +/I Developer\MeshUtilities\Public +/I Developer\MeshMergeUtilities\Public +/I Developer\HierarchicalLODUtilities\Public +/I Developer\MeshReductionInterface\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetTools +/I Developer\AssetTools\Public +/I Editor\KismetCompiler\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTasks +/I Runtime\GameplayTasks\Classes +/I Runtime\GameplayTasks\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AIModule +/I Runtime\AIModule\Public +/I Runtime\AIModule\Classes +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Kismet +/I Editor\Kismet\Classes +/I Editor\Kismet\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClothingSystemRuntimeInterface +/I Runtime\ClothingSystemRuntimeInterface\Public +/I Runtime\NetworkReplayStreaming +/I Runtime\NetworkReplayStreaming\NetworkReplayStreaming\Public +/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioMixer +/I Runtime\AudioMixer\Classes +/I ThirdParty +/I ThirdParty\libSampleRate\Public +/I Editor\EditorWidgets\Public +/I Editor\KismetWidgets\Public +/I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\INCLUDE" +/I "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" +/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" +/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" +/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" +/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" +/FI"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UnrealEd\SharedPCH.UnrealEd.h" +/Yu"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UnrealEd\SharedPCH.UnrealEd.h" +"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Module.GraphEditor.cpp" +/FI"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Definitions.GraphEditor.h" +/Fo"C:\code\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\GraphEditor\Module.GraphEditor.cpp.obj" +/TP +/GR- +/W4 \ No newline at end of file From cc8877174d961bcb8d1295617fa81b05f763698b Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 20 Feb 2019 17:41:44 +0100 Subject: [PATCH 8/9] Fix unintentional edit --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 5d3e57b3c..acb42d88c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -102,6 +102,7 @@ escargot = "0.3" itertools = "0.7" predicates = "0.9.0" pretty_assertions = "0.5.1" +selenium-rs = "0.1" [target.'cfg(unix)'.dependencies] daemonize = "0.3" From 1febfd468a391f42f33564e45c67440ca82465bb Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Fri, 22 Feb 2019 12:33:42 +0100 Subject: [PATCH 9/9] Fix backslashes in paths --- src/compiler/args.rs | 2 +- src/compiler/clang.rs | 1 + src/compiler/msvc.rs | 322 +++++++++++++++++++++--------------------- tests/ue_linux.rsp | 2 +- 4 files changed, 164 insertions(+), 163 deletions(-) diff --git a/src/compiler/args.rs b/src/compiler/args.rs index 4c4a88da8..17b1b7ce5 100644 --- a/src/compiler/args.rs +++ b/src/compiler/args.rs @@ -757,7 +757,7 @@ pub fn split_response_contents(s: &str) -> Result>, ParseError> { DoubleQuoted } Some('\\') => { - cut!(ind, ranges); + //cut!(ind, ranges); UnquotedBackslash } Some(' ') | Some('\n') | Some('\r') | Some('\t') => { diff --git a/src/compiler/clang.rs b/src/compiler/clang.rs index 124f84171..475fd8842 100644 --- a/src/compiler/clang.rs +++ b/src/compiler/clang.rs @@ -223,6 +223,7 @@ mod test { outputs: vec![("obj", PathBuf::from("/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp.o"))].into_iter().collect(), preprocessor_args: ovec![ "-nostdinc++", + r#"-DFOO=\"Bar Value\""#, "-IThirdParty/Linux/LibCxx/include/", "-IThirdParty/Linux/LibCxx/include/c++/v1", "-DPLATFORM_EXCEPTIONS_DISABLED=0", diff --git a/src/compiler/msvc.rs b/src/compiler/msvc.rs index d49cc9646..fd24d5306 100644 --- a/src/compiler/msvc.rs +++ b/src/compiler/msvc.rs @@ -963,167 +963,167 @@ mod test { "-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1", "-D_WINDLL", "-I.", - "-IEditorGraphEditorPrivate", - "-IEditorGraphEditorPrivateKismetNodes", - "-IEditorGraphEditorPrivateKismetPins", - "-IEditorGraphEditorPrivateMaterialNodes", - "-IEditorGraphEditorPrivateMaterialPins", - "-IRuntime", - "-IRuntimeAppFrameworkPublic", - "-IRuntimeCorePublic", - "-I..IntermediateBuildWin64UE4EditorIncCoreUObject", - "-IRuntimeCoreUObjectPublic", - "-IRuntimeApplicationCorePublic", - "-IRuntimeRHIPublic", - "-I..IntermediateBuildWin64UE4EditorIncSlate", - "-IRuntimeSlatePublic", - "-I..IntermediateBuildWin64UE4EditorIncInputCore", - "-IRuntimeInputCoreClasses", - "-IRuntimeInputCorePublic", - "-IRuntimeJsonPublic", - "-I..IntermediateBuildWin64UE4EditorIncSlateCore", - "-IRuntimeSlateCorePublic", - "-IRuntimeImageWrapperPublic", - "-I..IntermediateBuildWin64UE4EditorIncEngine", - "-IRuntimeEngineClasses", - "-IRuntimeEnginePublic", - "-IRuntimeMessagingPublic", - "-IRuntimeMessagingCommonPublic", - "-IRuntimeRenderCorePublic", - "-IRuntimeShaderCorePublic", - "-IRuntimeUtilityShadersPublic", - "-I..IntermediateBuildWin64UE4EditorIncAssetRegistry", - "-IRuntimeAssetRegistryPublic", - "-I..IntermediateBuildWin64UE4EditorIncEngineMessages", - "-IRuntimeEngineMessagesPublic", - "-I..IntermediateBuildWin64UE4EditorIncEngineSettings", - "-IRuntimeEngineSettingsClasses", - "-IRuntimeEngineSettingsPublic", - "-IRuntimeSynthBenchmarkPublic", - "-I..IntermediateBuildWin64UE4EditorIncRenderer", - "-IRuntimeRendererPublic", - "-I..IntermediateBuildWin64UE4EditorIncGameplayTags", - "-IRuntimeGameplayTagsClasses", - "-IRuntimeGameplayTagsPublic", - "-IRuntimeDatabaseSupportPublic", - "-I..IntermediateBuildWin64UE4EditorIncPacketHandler", - "-IRuntimePacketHandlers", - "-IRuntimePacketHandlersPacketHandlerClasses", - "-IRuntimePacketHandlersPacketHandlerPublic", - "-IRuntimePacketHandlersReliabilityHandlerComponentPublic", - "-I..IntermediateBuildWin64UE4EditorIncAudioPlatformConfiguration", - "-IRuntimeAudioPlatformConfigurationPublic", - "-I..IntermediateBuildWin64UE4EditorIncMeshDescription", - "-IRuntimeMeshDescriptionPublic", - "-I..IntermediateBuildWin64UE4EditorIncUnrealEd", - "-IEditor", - "-IProgramsUnrealLightmassPublic", - "-IEditorUnrealEdClasses", - "-IEditorUnrealEdPublic", - "-IEditorBspModePublic", - "-IDeveloper", - "-IDeveloperDirectoryWatcherPublic", - "-IEditorDocumentationPublic", - "-IRuntimeProjectsPublic", - "-IRuntimeSandboxFilePublic", - "-I..IntermediateBuildWin64UE4EditorIncEditorStyle", - "-IEditorEditorStylePublic", - "-I..IntermediateBuildWin64UE4EditorIncSourceControl", - "-IDeveloperSourceControlPublic", - "-I..IntermediateBuildWin64UE4EditorIncUnrealEdMessages", - "-IEditorUnrealEdMessagesClasses", - "-IEditorUnrealEdMessagesPublic", - "-I..IntermediateBuildWin64UE4EditorIncGameplayDebugger", - "-IDeveloperGameplayDebuggerPublic", - "-I..IntermediateBuildWin64UE4EditorIncBlueprintGraph", - "-IEditorBlueprintGraphClasses", - "-IEditorBlueprintGraphPublic", - "-IRuntimeOnline", - "-IRuntimeOnlineHTTPPublic", - "-IRuntimeUnrealAudioPublic", - "-I..IntermediateBuildWin64UE4EditorIncFunctionalTesting", - "-IDeveloperFunctionalTestingClasses", - "-IDeveloperFunctionalTestingPublic", - "-I..IntermediateBuildWin64UE4EditorIncAutomationController", - "-IDeveloperAutomationControllerPublic", - "-I..IntermediateBuildWin64UE4EditorIncLocalization", - "-IDeveloperLocalizationPublic", - "-I..IntermediateBuildWin64UE4EditorIncAudioEditor", - "-IEditorAudioEditorClasses", - "-IEditorAudioEditorPublic", - "-IEditorLevelEditorPublic", - "-IDeveloperSettingsPublic", - "-I..IntermediateBuildWin64UE4EditorIncIntroTutorials", - "-IEditorIntroTutorialsPublic", - "-I..IntermediateBuildWin64UE4EditorIncHeadMountedDisplay", - "-IRuntimeHeadMountedDisplayPublic", - "-I..IntermediateBuildWin64UE4EditorIncVREditor", - "-IEditorVREditor", - "-IEditorVREditorPublic", - "-IEditorCommonMenuExtensionsPublic", - "-I..IntermediateBuildWin64UE4EditorIncLandscape", - "-IRuntimeLandscapeClasses", - "-IRuntimeLandscapePublic", - "-IEditorPropertyEditorPublic", - "-IEditorActorPickerModePublic", - "-IEditorSceneDepthPickerModePublic", - "-IEditorDetailCustomizationsPublic", - "-I..IntermediateBuildWin64UE4EditorIncClassViewer", - "-IEditorClassViewerPublic", - "-I..IntermediateBuildWin64UE4EditorIncGraphEditor", - "-IEditorGraphEditorPublic", - "-I..IntermediateBuildWin64UE4EditorIncContentBrowser", - "-IEditorContentBrowserPublic", - "-IRuntimeNetworkFileSystemPublic", - "-IRuntimeSocketsPublic", - "-I..IntermediateBuildWin64UE4EditorIncUMG", - "-IRuntimeUMGPublic", - "-I..IntermediateBuildWin64UE4EditorIncMovieScene", - "-IRuntimeMovieScenePublic", - "-I..IntermediateBuildWin64UE4EditorIncTimeManagement", - "-IRuntimeTimeManagementPublic", - "-I..IntermediateBuildWin64UE4EditorIncMovieSceneTracks", - "-IRuntimeMovieSceneTracksPublic", - "-I..IntermediateBuildWin64UE4EditorIncAnimationCore", - "-IRuntimeAnimationCorePublic", - "-I..IntermediateBuildWin64UE4EditorIncPropertyPath", - "-IRuntimePropertyPathPublic", - "-I..IntermediateBuildWin64UE4EditorIncNavigationSystem", - "-IRuntimeNavigationSystemPublic", - "-IDeveloperMeshBuilderPublic", - "-IRuntimeWindows", - "-IRuntimeWindowsXAudio2Public", - "-IRuntimeAudioMixerPublic", - "-IDeveloperCollectionManagerPublic", - "-I..IntermediateBuildWin64UE4EditorIncAddContentDialog", - "-IEditorAddContentDialogPublic", - "-IThirdPartyIntelEmbreeEmbree2140Win64include", - "-IDeveloperMeshUtilitiesPublic", - "-IDeveloperMeshMergeUtilitiesPublic", - "-IDeveloperHierarchicalLODUtilitiesPublic", - "-IDeveloperMeshReductionInterfacePublic", - "-I..IntermediateBuildWin64UE4EditorIncAssetTools", - "-IDeveloperAssetToolsPublic", - "-IEditorKismetCompilerPublic", - "-I..IntermediateBuildWin64UE4EditorIncGameplayTasks", - "-IRuntimeGameplayTasksClasses", - "-IRuntimeGameplayTasksPublic", - "-I..IntermediateBuildWin64UE4EditorIncAIModule", - "-IRuntimeAIModulePublic", - "-IRuntimeAIModuleClasses", - "-I..IntermediateBuildWin64UE4EditorIncKismet", - "-IEditorKismetClasses", - "-IEditorKismetPublic", - "-I..IntermediateBuildWin64UE4EditorIncClothingSystemRuntimeInterface", - "-IRuntimeClothingSystemRuntimeInterfacePublic", - "-IRuntimeNetworkReplayStreaming", - "-IRuntimeNetworkReplayStreamingNetworkReplayStreamingPublic", - "-I..IntermediateBuildWin64UE4EditorIncAudioMixer", - "-IRuntimeAudioMixerClasses", - "-IThirdParty", - "-IThirdPartylibSampleRatePublic", - "-IEditorEditorWidgetsPublic", - "-IEditorKismetWidgetsPublic", + r#"-IEditor\GraphEditor\Private"#, + r#"-IEditor\GraphEditor\Private\KismetNodes"#, + r#"-IEditor\GraphEditor\Private\KismetPins"#, + r#"-IEditor\GraphEditor\Private\MaterialNodes"#, + r#"-IEditor\GraphEditor\Private\MaterialPins"#, + r#"-IRuntime"#, + r#"-IRuntime\AppFramework\Public"#, + r#"-IRuntime\Core\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\CoreUObject"#, + r#"-IRuntime\CoreUObject\Public"#, + r#"-IRuntime\ApplicationCore\Public"#, + r#"-IRuntime\RHI\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Slate"#, + r#"-IRuntime\Slate\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\InputCore"#, + r#"-IRuntime\InputCore\Classes"#, + r#"-IRuntime\InputCore\Public"#, + r#"-IRuntime\Json\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\SlateCore"#, + r#"-IRuntime\SlateCore\Public"#, + r#"-IRuntime\ImageWrapper\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Engine"#, + r#"-IRuntime\Engine\Classes"#, + r#"-IRuntime\Engine\Public"#, + r#"-IRuntime\Messaging\Public"#, + r#"-IRuntime\MessagingCommon\Public"#, + r#"-IRuntime\RenderCore\Public"#, + r#"-IRuntime\ShaderCore\Public"#, + r#"-IRuntime\UtilityShaders\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AssetRegistry"#, + r#"-IRuntime\AssetRegistry\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\EngineMessages"#, + r#"-IRuntime\EngineMessages\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\EngineSettings"#, + r#"-IRuntime\EngineSettings\Classes"#, + r#"-IRuntime\EngineSettings\Public"#, + r#"-IRuntime\SynthBenchmark\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Renderer"#, + r#"-IRuntime\Renderer\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTags"#, + r#"-IRuntime\GameplayTags\Classes"#, + r#"-IRuntime\GameplayTags\Public"#, + r#"-IRuntime\DatabaseSupport\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\PacketHandler"#, + r#"-IRuntime\PacketHandlers"#, + r#"-IRuntime\PacketHandlers\PacketHandler\Classes"#, + r#"-IRuntime\PacketHandlers\PacketHandler\Public"#, + r#"-IRuntime\PacketHandlers\ReliabilityHandlerComponent\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AudioPlatformConfiguration"#, + r#"-IRuntime\AudioPlatformConfiguration\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\MeshDescription"#, + r#"-IRuntime\MeshDescription\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEd"#, + r#"-IEditor"#, + r#"-IPrograms\UnrealLightmass\Public"#, + r#"-IEditor\UnrealEd\Classes"#, + r#"-IEditor\UnrealEd\Public"#, + r#"-IEditor\BspMode\Public"#, + r#"-IDeveloper"#, + r#"-IDeveloper\DirectoryWatcher\Public"#, + r#"-IEditor\Documentation\Public"#, + r#"-IRuntime\Projects\Public"#, + r#"-IRuntime\SandboxFile\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\EditorStyle"#, + r#"-IEditor\EditorStyle\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\SourceControl"#, + r#"-IDeveloper\SourceControl\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEdMessages"#, + r#"-IEditor\UnrealEdMessages\Classes"#, + r#"-IEditor\UnrealEdMessages\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayDebugger"#, + r#"-IDeveloper\GameplayDebugger\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\BlueprintGraph"#, + r#"-IEditor\BlueprintGraph\Classes"#, + r#"-IEditor\BlueprintGraph\Public"#, + r#"-IRuntime\Online"#, + r#"-IRuntime\Online\HTTP\Public"#, + r#"-IRuntime\UnrealAudio\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\FunctionalTesting"#, + r#"-IDeveloper\FunctionalTesting\Classes"#, + r#"-IDeveloper\FunctionalTesting\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AutomationController"#, + r#"-IDeveloper\AutomationController\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Localization"#, + r#"-IDeveloper\Localization\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AudioEditor"#, + r#"-IEditor\AudioEditor\Classes"#, + r#"-IEditor\AudioEditor\Public"#, + r#"-IEditor\LevelEditor\Public"#, + r#"-IDeveloper\Settings\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\IntroTutorials"#, + r#"-IEditor\IntroTutorials\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\HeadMountedDisplay"#, + r#"-IRuntime\HeadMountedDisplay\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\VREditor"#, + r#"-IEditor\VREditor"#, + r#"-IEditor\VREditor\Public"#, + r#"-IEditor\CommonMenuExtensions\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Landscape"#, + r#"-IRuntime\Landscape\Classes"#, + r#"-IRuntime\Landscape\Public"#, + r#"-IEditor\PropertyEditor\Public"#, + r#"-IEditor\ActorPickerMode\Public"#, + r#"-IEditor\SceneDepthPickerMode\Public"#, + r#"-IEditor\DetailCustomizations\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\ClassViewer"#, + r#"-IEditor\ClassViewer\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\GraphEditor"#, + r#"-IEditor\GraphEditor\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\ContentBrowser"#, + r#"-IEditor\ContentBrowser\Public"#, + r#"-IRuntime\NetworkFileSystem\Public"#, + r#"-IRuntime\Sockets\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\UMG"#, + r#"-IRuntime\UMG\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\MovieScene"#, + r#"-IRuntime\MovieScene\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\TimeManagement"#, + r#"-IRuntime\TimeManagement\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\MovieSceneTracks"#, + r#"-IRuntime\MovieSceneTracks\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AnimationCore"#, + r#"-IRuntime\AnimationCore\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyPath"#, + r#"-IRuntime\PropertyPath\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\NavigationSystem"#, + r#"-IRuntime\NavigationSystem\Public"#, + r#"-IDeveloper\MeshBuilder\Public"#, + r#"-IRuntime\Windows"#, + r#"-IRuntime\Windows\XAudio2\Public"#, + r#"-IRuntime\AudioMixer\Public"#, + r#"-IDeveloper\CollectionManager\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AddContentDialog"#, + r#"-IEditor\AddContentDialog\Public"#, + r#"-IThirdParty\IntelEmbree\Embree2140\Win64\include"#, + r#"-IDeveloper\MeshUtilities\Public"#, + r#"-IDeveloper\MeshMergeUtilities\Public"#, + r#"-IDeveloper\HierarchicalLODUtilities\Public"#, + r#"-IDeveloper\MeshReductionInterface\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AssetTools"#, + r#"-IDeveloper\AssetTools\Public"#, + r#"-IEditor\KismetCompiler\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTasks"#, + r#"-IRuntime\GameplayTasks\Classes"#, + r#"-IRuntime\GameplayTasks\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AIModule"#, + r#"-IRuntime\AIModule\Public"#, + r#"-IRuntime\AIModule\Classes"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\Kismet"#, + r#"-IEditor\Kismet\Classes"#, + r#"-IEditor\Kismet\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\ClothingSystemRuntimeInterface"#, + r#"-IRuntime\ClothingSystemRuntimeInterface\Public"#, + r#"-IRuntime\NetworkReplayStreaming"#, + r#"-IRuntime\NetworkReplayStreaming\NetworkReplayStreaming\Public"#, + r#"-I..\Intermediate\Build\Win64\UE4Editor\Inc\AudioMixer"#, + r#"-IRuntime\AudioMixer\Classes"#, + r#"-IThirdParty"#, + r#"-IThirdParty\libSampleRate\Public"#, + r#"-IEditor\EditorWidgets\Public"#, + r#"-IEditor\KismetWidgets\Public"#, r#"-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\INCLUDE"#, r#"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um"#, r#"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt"#, diff --git a/tests/ue_linux.rsp b/tests/ue_linux.rsp index 8ab5a3a90..7e156e115 100644 --- a/tests/ue_linux.rsp +++ b/tests/ue_linux.rsp @@ -1 +1 @@ - -c -pipe -nostdinc++ -IThirdParty/Linux/LibCxx/include/ -IThirdParty/Linux/LibCxx/include/c++/v1 -Wall -Werror -Wsequence-point -Wdelete-non-virtual-dtor -fno-math-errno -fno-rtti -fcolor-diagnostics -Wno-unused-private-field -Wno-tautological-compare -Wno-undefined-bool-conversion -Wno-unused-local-typedef -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-unused-lambda-capture -Wno-unused-variable -Wno-unused-function -Wno-switch -Wno-unknown-pragmas -Wno-invalid-offsetof -Wno-gnu-string-literal-operator-template -Wshadow -Wno-error=shadow -Wundef -gdwarf-4 -glldb -fstandalone-debug -O2 -fPIC -ftls-model=local-dynamic -fexceptions -DPLATFORM_EXCEPTIONS_DISABLED=0 -D_LINUX64 -target x86_64-unknown-linux-gnu --sysroot="/home/jake/code/unreal/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu" -I"/home/jake/code/unreal/Engine/Source" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Private" -I"/home/jake/code/unreal/Engine/Source/Runtime" -I"/home/jake/code/unreal/Engine/Source/Runtime/Projects/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public/Linux" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Json/Public" -I"/home/jake/code/unreal/Engine/Source/Developer" -I"/home/jake/code/unreal/Engine/Source/Developer/TargetPlatform/Public" -I"/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Inc/CoreUObject" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Public" -I"/home/path that shouldnt exist because spaces are the devil/but shit happens" -x c++ -std=c++14 -include "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/PCH.CoreUObject.h" -o "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp.o" "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp" \ No newline at end of file + -c -pipe -nostdinc++ -DFOO="\"Bar Value\"" -IThirdParty/Linux/LibCxx/include/ -IThirdParty/Linux/LibCxx/include/c++/v1 -Wall -Werror -Wsequence-point -Wdelete-non-virtual-dtor -fno-math-errno -fno-rtti -fcolor-diagnostics -Wno-unused-private-field -Wno-tautological-compare -Wno-undefined-bool-conversion -Wno-unused-local-typedef -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-unused-lambda-capture -Wno-unused-variable -Wno-unused-function -Wno-switch -Wno-unknown-pragmas -Wno-invalid-offsetof -Wno-gnu-string-literal-operator-template -Wshadow -Wno-error=shadow -Wundef -gdwarf-4 -glldb -fstandalone-debug -O2 -fPIC -ftls-model=local-dynamic -fexceptions -DPLATFORM_EXCEPTIONS_DISABLED=0 -D_LINUX64 -target x86_64-unknown-linux-gnu --sysroot="/home/jake/code/unreal/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu" -I"/home/jake/code/unreal/Engine/Source" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Private" -I"/home/jake/code/unreal/Engine/Source/Runtime" -I"/home/jake/code/unreal/Engine/Source/Runtime/Projects/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public/Linux" -I"/home/jake/code/unreal/Engine/Source/Runtime/Core/Public" -I"/home/jake/code/unreal/Engine/Source/Runtime/Json/Public" -I"/home/jake/code/unreal/Engine/Source/Developer" -I"/home/jake/code/unreal/Engine/Source/Developer/TargetPlatform/Public" -I"/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Inc/CoreUObject" -I"/home/jake/code/unreal/Engine/Source/Runtime/CoreUObject/Public" -I"/home/path that shouldnt exist because spaces are the devil/but shit happens" -x c++ -std=c++14 -include "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/PCH.CoreUObject.h" -o "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp.o" "/home/jake/code/unreal/Engine/Intermediate/Build/Linux/B4D820EA/UnrealHeaderTool/Development/CoreUObject/Module.CoreUObject.5_of_6.cpp" \ No newline at end of file