Skip to content

Commit fd655e5

Browse files
Merge pull request #52 from Neko-Box-Coder/PreferredProfileMap
Adding platform map to PreferredProfile in user config
2 parents 3692864 + fd4ac4c commit fd655e5

File tree

11 files changed

+474
-62
lines changed

11 files changed

+474
-62
lines changed

CMakeLists.txt

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -124,40 +124,40 @@ if(RUNCPP2_UPDATE_DEFAULT_YAMLS OR EMBEDDED_FILE_SIZE LESS 1024)
124124
endif()
125125

126126
# =========================================================================
127-
# runcpp2
127+
# runcpp2 library
128128
# =========================================================================
129129

130-
add_library(runcpp2 STATIC
131-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/Profile.cpp"
132-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencyInfo.cpp"
133-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencyLinkProperty.cpp"
134-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencySource.cpp"
135-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/GitSource.cpp"
136-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/LocalSource.cpp"
137-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FileProperties.cpp"
138-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FlagsOverrideInfo.cpp"
139-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesCommands.cpp"
140-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesFlagsOverride.cpp"
141-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ScriptInfo.cpp"
142-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesProcessPaths.cpp"
143-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FilesTypesInfo.cpp"
144-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/StageInfo.cpp"
145-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesDefines.cpp"
146-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FilesToCopyInfo.cpp"
147-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/BuildTypeHelper.cpp"
148-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ProfileHelper.cpp"
149-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/CompilingLinking.cpp"
150-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ConfigParsing.cpp"
151-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/DefaultYAMLs.c"
152-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/DependenciesHelper.cpp"
153-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ParseUtil.cpp"
154-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/PlatformUtil.cpp"
155-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/StringUtil.cpp"
156-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/runcpp2.cpp"
157-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/BuildsManager.cpp"
158-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/PipelineSteps.cpp"
159-
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/IncludeManager.cpp"
160-
)
130+
set(RUNCPP2_SOURCE_FILES "${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/Profile.cpp"
131+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencyInfo.cpp"
132+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencyLinkProperty.cpp"
133+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/DependencySource.cpp"
134+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/GitSource.cpp"
135+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/LocalSource.cpp"
136+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FileProperties.cpp"
137+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FlagsOverrideInfo.cpp"
138+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesCommands.cpp"
139+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesFlagsOverride.cpp"
140+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ScriptInfo.cpp"
141+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesProcessPaths.cpp"
142+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FilesTypesInfo.cpp"
143+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/StageInfo.cpp"
144+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/ProfilesDefines.cpp"
145+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/FilesToCopyInfo.cpp"
146+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/Data/BuildTypeHelper.cpp"
147+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ProfileHelper.cpp"
148+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/CompilingLinking.cpp"
149+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ConfigParsing.cpp"
150+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/DefaultYAMLs.c"
151+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/DependenciesHelper.cpp"
152+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/ParseUtil.cpp"
153+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/PlatformUtil.cpp"
154+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/StringUtil.cpp"
155+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/runcpp2.cpp"
156+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/BuildsManager.cpp"
157+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/PipelineSteps.cpp"
158+
"${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/IncludeManager.cpp")
159+
160+
add_library(runcpp2 STATIC ${RUNCPP2_SOURCE_FILES})
161161

162162
target_include_directories(runcpp2 PUBLIC "${CMAKE_CURRENT_LIST_DIR}/Include")
163163
target_link_libraries(runcpp2 PRIVATE ssLogger System2 CppOverride dylib)
@@ -192,11 +192,26 @@ target_compile_options(runcpp2 PRIVATE "${RUNCPP2_STANDARD_COMPILE_FLAGS}")
192192
# Define the version macro
193193
target_compile_definitions(runcpp2 PUBLIC RUNCPP2_VERSION="${RUNCPP2_PROJECT_VERSION}")
194194

195+
# =========================================================================
196+
# runcpp2 executable
197+
# =========================================================================
198+
195199
add_executable(runcpp2_main "${CMAKE_CURRENT_LIST_DIR}/Src/runcpp2/main.cpp")
196200
target_compile_options(runcpp2_main PRIVATE "${RUNCPP2_STANDARD_COMPILE_FLAGS}")
197201
target_link_libraries(runcpp2_main PRIVATE runcpp2 ssLogger ghc_filesystem)
198202
set_target_properties(runcpp2_main PROPERTIES OUTPUT_NAME "runcpp2")
199203

204+
# =========================================================================
205+
# runcpp2 library override
206+
# =========================================================================
207+
208+
add_library(runcpp2_override STATIC ${RUNCPP2_SOURCE_FILES})
209+
target_include_directories(runcpp2_override PUBLIC "${CMAKE_CURRENT_LIST_DIR}/Include")
210+
target_link_libraries(runcpp2_override PRIVATE ssLogger System2 CppOverride dylib)
211+
target_link_libraries(runcpp2_override PUBLIC ghc_filesystem ryml::ryml mpark_variant)
212+
target_compile_options(runcpp2_override PRIVATE "${RUNCPP2_STANDARD_COMPILE_FLAGS}")
213+
target_compile_definitions(runcpp2_override PUBLIC RUNCPP2_VERSION="${RUNCPP2_PROJECT_VERSION}"
214+
INTERNAL_RUNCPP2_UNIT_TESTS=1)
200215
if(RUNCPP2_BUILD_TESTS)
201216
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Src/Tests")
202217
endif()

DefaultYAMLs/DefaultUserConfig.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,10 @@ Templates:
101101
# Exercise caution when using variables or user-provided input in your build commands
102102
# to prevent potential security vulnerabilities.
103103

104-
# TODO(NOW): Make it auto? Or DefaultProfile?
105104
# A profile to be used if not specified while running the build script
106-
PreferredProfile: "g++"
105+
PreferredProfile:
106+
DefaultPlatform: "g++"
107+
Windows: "msvc"
107108

108109
# List of compiler/linker profiles that instruct how to compile/link
109110
Profiles:
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#ifndef RUNCPP2_UNIT_TESTS_CONFIG_PARSING_MOCK_COMPONENTS_HPP
2+
#define RUNCPP2_UNIT_TESTS_CONFIG_PARSING_MOCK_COMPONENTS_HPP
3+
4+
#if !defined(NOMINMAX)
5+
#define NOMINMAX 1
6+
#endif
7+
#include "ghc/filesystem.hpp"
8+
#include "CppOverride.hpp"
9+
10+
#include <sstream>
11+
#include <type_traits>
12+
13+
extern CO_DECLARE_INSTANCE(OverrideInstance);
14+
15+
namespace ghc
16+
{
17+
namespace filesystem
18+
{
19+
CO_OVERRIDE_METHOD( OverrideInstance,
20+
bool,
21+
Mock_exists,
22+
(const std::string&, std::error_code&),
23+
/* no prepend */,
24+
noexcept)
25+
26+
CO_OVERRIDE_METHOD( OverrideInstance,
27+
bool,
28+
Mock_is_directory,
29+
(const std::string&, std::error_code&),
30+
/* no prepend */,
31+
noexcept)
32+
}
33+
}
34+
35+
namespace std
36+
{
37+
class Mock_ifstream
38+
{
39+
public:
40+
CO_OVERRIDE_MEMBER_METHOD_CTOR( OverrideInstance,
41+
Mock_ifstream,
42+
const ghc::filesystem::path&)
43+
CO_OVERRIDE_MEMBER_METHOD(OverrideInstance, bool, operator!, ())
44+
CO_OVERRIDE_MEMBER_METHOD(OverrideInstance, std::string, rdbuf, ())
45+
CO_OVERRIDE_METHOD( OverrideInstance,
46+
Mock_ifstream&,
47+
operator<<,
48+
(Mock_ifstream&, T const&),
49+
template<typename T> friend)
50+
};
51+
}
52+
53+
#define exists Mock_exists
54+
#define is_directory Mock_is_directory
55+
#define ifstream Mock_ifstream
56+
57+
#if INTERNAL_RUNCPP2_UNDEF_MOCKS
58+
#undef exists
59+
#undef is_directory
60+
#undef ifstream
61+
#endif
62+
63+
#endif

Src/Tests/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,19 @@ target_compile_options(IncludeManagerTest PRIVATE "${RUNCPP2_STANDARD_COMPILE_FL
1515
target_link_libraries(IncludeManagerTest PRIVATE ghc_filesystem CppOverride ssTest ssLogger)
1616
target_compile_definitions(IncludeManagerTest PRIVATE INTERNAL_RUNCPP2_UNIT_TESTS=1)
1717

18+
19+
add_executable(ConfigParsingTest "${CMAKE_CURRENT_LIST_DIR}/ConfigParsingTest.cpp")
20+
target_include_directories(ConfigParsingTest PRIVATE "${CMAKE_CURRENT_LIST_DIR}/../../Include")
21+
target_compile_options(ConfigParsingTest PRIVATE "${RUNCPP2_STANDARD_COMPILE_FLAGS}")
22+
target_link_libraries(ConfigParsingTest PRIVATE ghc_filesystem CppOverride ssTest ssLogger runcpp2_override)
23+
target_compile_definitions(ConfigParsingTest PRIVATE INTERNAL_RUNCPP2_UNIT_TESTS=1)
24+
25+
1826
function(create_data_test TEST_NAME)
1927
add_executable("${TEST_NAME}" "${CMAKE_CURRENT_LIST_DIR}/Data/${TEST_NAME}.cpp")
2028
target_compile_options("${TEST_NAME}" PRIVATE "${RUNCPP2_STANDARD_COMPILE_FLAGS}")
2129
target_compile_definitions("${TEST_NAME}" PRIVATE INTERNAL_RUNCPP2_UNIT_TESTS=1 TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES=1)
2230
target_link_libraries("${TEST_NAME}" PUBLIC runcpp2 ssTest)
23-
2431
endfunction()
2532

2633
create_data_test(FilePropertiesTest)

0 commit comments

Comments
 (0)