Skip to content

Commit b8191fc

Browse files
committed
Correctly preserve special config values on reload.
1 parent 6d43d30 commit b8191fc

3 files changed

Lines changed: 20 additions & 16 deletions

File tree

src/common/resolver.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -425,13 +425,17 @@ void Resolver::read_config(const DownloadDependency &d)
425425
{
426426
if (!fs::exists(d.getDirSrc()))
427427
return;
428-
if (rd.packages.find(d) != rd.packages.end())
429-
return;
428+
429+
// keep some set data for re-read configs
430+
auto oldi = rd.packages.find(d);
431+
// Config::created is needed for patching sources and other initialization stuff
432+
bool created = oldi != rd.packages.end() && oldi->second.config->created;
430433

431434
try
432435
{
433436
auto p = rd.config_store.insert(std::make_unique<Config>(d.getDirSrc()));
434-
rd.packages[d].config = p.first->get();
437+
auto ptr = rd.packages[d].config = p.first->get();
438+
ptr->created = created;
435439
}
436440
catch (DependencyNotResolved &)
437441
{

src/inserts/functions.cmake

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ endfunction(set_apple)
3939
########################################
4040

4141
function(add_src var)
42-
list(APPEND src "${SDIR}/${var}")
42+
list(APPEND src ${SDIR}/${var})
4343
set(src ${src} PARENT_SCOPE)
4444
endfunction(add_src)
4545

@@ -49,7 +49,7 @@ endfunction(add_src)
4949

5050
function(add_src_win32 var)
5151
if (WIN32)
52-
list(APPEND src "${SDIR}/${var}")
52+
list(APPEND src ${SDIR}/${var})
5353
set(src ${src} PARENT_SCOPE)
5454
endif()
5555
endfunction(add_src_win32)
@@ -60,7 +60,7 @@ endfunction(add_src_win32)
6060

6161
function(add_src_unix var)
6262
if (UNIX)
63-
list(APPEND src "${SDIR}/${var}")
63+
list(APPEND src ${SDIR}/${var})
6464
set(src ${src} PARENT_SCOPE)
6565
endif()
6666
endfunction(add_src_unix)
@@ -71,7 +71,7 @@ endfunction(add_src_unix)
7171

7272
function(add_src_unix_not_apple var)
7373
if (UNIX AND NOT APPLE)
74-
list(APPEND src "${SDIR}/${var}")
74+
list(APPEND src ${SDIR}/${var})
7575
set(src ${src} PARENT_SCOPE)
7676
endif()
7777
endfunction(add_src_unix_not_apple)
@@ -82,7 +82,7 @@ endfunction(add_src_unix_not_apple)
8282

8383
function(add_src_apple var)
8484
if (APPLE)
85-
list(APPEND src "${SDIR}/${var}")
85+
list(APPEND src ${SDIR}/${var})
8686
set(src ${src} PARENT_SCOPE)
8787
endif()
8888
endfunction(add_src_apple)
@@ -92,7 +92,7 @@ endfunction(add_src_apple)
9292
########################################
9393

9494
function(add_src_dir var)
95-
file(GLOB_RECURSE add "${SDIR}/${var}")
95+
file(GLOB_RECURSE add ${SDIR}/${var})
9696
if (add)
9797
set(src ${src} ${add} PARENT_SCOPE)
9898
endif()
@@ -103,7 +103,7 @@ endfunction(add_src_dir)
103103
########################################
104104

105105
function(remove_src var)
106-
list(REMOVE_ITEM src "${SDIR}/${var}")
106+
list(REMOVE_ITEM src ${SDIR}/${var})
107107
set(src ${src} PARENT_SCOPE)
108108
endfunction(remove_src)
109109

@@ -113,7 +113,7 @@ endfunction(remove_src)
113113

114114
function(remove_src_win32 var)
115115
if (WIN32)
116-
list(REMOVE_ITEM src "${SDIR}/${var}")
116+
list(REMOVE_ITEM src ${SDIR}/${var})
117117
set(src ${src} PARENT_SCOPE)
118118
endif()
119119
endfunction(remove_src_win32)
@@ -124,7 +124,7 @@ endfunction(remove_src_win32)
124124

125125
function(remove_src_unix var)
126126
if (UNIX)
127-
list(REMOVE_ITEM src "${SDIR}/${var}")
127+
list(REMOVE_ITEM src ${SDIR}/${var})
128128
set(src ${src} PARENT_SCOPE)
129129
endif()
130130
endfunction(remove_src_unix)
@@ -134,7 +134,7 @@ endfunction(remove_src_unix)
134134
########################################
135135

136136
function(remove_src_dir var)
137-
file(GLOB_RECURSE rm "${SDIR}/${var}")
137+
file(GLOB_RECURSE rm ${SDIR}/${var})
138138
if (rm)
139139
list(REMOVE_ITEM src ${rm})
140140
endif()

src/printers/cmake.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@ void CMakePrinter::print_src_config_file(const path &fn) const
10781078
ctx.addLine();
10791079

10801080
if (d.flags[pfLocalProject])
1081-
ctx.addLine("set(SDIR \"" + normalize_path(p.root_directory) + "\")");
1081+
ctx.addLine("set(SDIR " + normalize_path(p.root_directory) + ")");
10821082
else
10831083
ctx.addLine("set(SDIR ${CMAKE_CURRENT_SOURCE_DIR})");
10841084
ctx.addLine("set(BDIR ${CMAKE_CURRENT_BINARY_DIR})");
@@ -1636,7 +1636,7 @@ endif()
16361636
// common include directories
16371637
ctx.addLine("target_include_directories(${this}");
16381638
ctx.increaseIndent();
1639-
ctx.addLine(visibility + " ${SDIR}"); // why???
1639+
ctx.addLine(visibility + " ${SDIR}"); // why??? add an explanation
16401640
ctx.decreaseIndent();
16411641
ctx.addLine(")");
16421642
ctx.addLine();
@@ -2015,7 +2015,7 @@ void CMakePrinter::print_obj_generate_file(const path &fn) const
20152015
ctx.increaseIndent();
20162016
if (d.flags[pfLocalProject])
20172017
{
2018-
ctx.addLine("set(SDIR \"" + normalize_path(p.root_directory) + "\")");
2018+
ctx.addLine("set(SDIR " + normalize_path(p.root_directory) + ")");
20192019
print_local_project_files(ctx, p);
20202020
ctx.addLine("set(SDIR)");
20212021
}

0 commit comments

Comments
 (0)