Skip to content

Commit 5a3778f

Browse files
committed
Better link directories.
1 parent 059d4f2 commit 5a3778f

3 files changed

Lines changed: 15 additions & 13 deletions

File tree

src/common/project.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,8 +1466,7 @@ OptionsMap loadOptionsMap(const yaml &root)
14661466
add_opts_common(opt_level.second["compile_options"], option.compile_options, option.system_compile_options);
14671467
add_opts_common(opt_level.second["link_options"], option.link_options, option.system_link_options);
14681468
add_opts_common(opt_level.second["link_libraries"], option.link_libraries, option.system_link_libraries);
1469-
1470-
option.link_directories = get_sequence_set<String, String>(opt_level.second, "link_directories");
1469+
add_opts_common(opt_level.second["link_directories"], option.link_directories, option.system_link_directories);
14711470

14721471
option.bs_insertions.load(opt_level.second);
14731472
});
@@ -1497,15 +1496,14 @@ void saveOptionsMap(yaml &node, const OptionsMap &m)
14971496
ADD_OPT(compile_options);
14981497
ADD_OPT(link_options);
14991498
ADD_OPT(link_libraries);
1499+
ADD_OPT(link_directories);
15001500

15011501
ADD_OPT_SYS(definitions);
15021502
ADD_OPT_SYS(include_directories);
15031503
ADD_OPT_SYS(compile_options);
15041504
ADD_OPT_SYS(link_options);
15051505
ADD_OPT_SYS(link_libraries);
1506-
1507-
for (auto &v : o.link_directories)
1508-
root[ol.first]["link_directories"].push_back(v);
1506+
ADD_OPT_SYS(link_directories);
15091507

15101508
auto n = root[ol.first];
15111509
o.bs_insertions.save(n);
@@ -2011,6 +2009,7 @@ String Project::print_cpp2()
20112009
print_obj(g->second.compile_options, g->second.system_compile_options, print_def, "xxx");
20122010
print_obj(g->second.link_options, g->second.system_link_options, print_def, "xxx");
20132011
print_obj(g->second.link_libraries, g->second.system_link_libraries, print_def, "lib");
2012+
print_obj(g->second.link_directories, g->second.system_link_directories, print_def, "ld");
20142013
};
20152014

20162015
print_group("any");

src/common/project.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,27 +141,29 @@ struct Options
141141
using CompileOptions = ValueContainer;
142142
using LinkOptions = ValueContainer;
143143
using LinkLibraries = ValueContainer;
144+
using LinkDirectories = ValueContainer;
144145

145146
using SystemDefinitions = std::map<String, Definitions>;
146147
using SystemIncludeDirectories = std::map<String, IncludeDirectories>;
147148
using SystemCompileOptions = std::map<String, CompileOptions>;
148149
using SystemLinkOptions = std::map<String, LinkOptions>;
149150
using SystemLinkLibraries = std::map<String, LinkLibraries>;
151+
using SystemLinkDirectories = std::map<String, LinkDirectories>;
150152

151153
public:
152154
Definitions definitions;
153155
IncludeDirectories include_directories;
154156
CompileOptions compile_options;
155157
LinkOptions link_options;
156158
LinkLibraries link_libraries;
159+
LinkLibraries link_directories;
157160

158161
SystemDefinitions system_definitions;
159162
SystemIncludeDirectories system_include_directories;
160163
SystemCompileOptions system_compile_options;
161164
SystemLinkOptions system_link_options;
162165
SystemLinkLibraries system_link_libraries;
163-
164-
StringSet link_directories;
166+
SystemLinkDirectories system_link_directories;
165167

166168
BuildSystemConfigInsertions bs_insertions;
167169
};

src/printers/cmake.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,11 +1940,6 @@ void CMakePrinter::print_src_config_file(const path &fn) const
19401940

19411941
print_bs_insertion(ctx, p, "post sources", &BuildSystemConfigInsertions::post_sources);
19421942

1943-
for (auto &ol : p.options)
1944-
for (auto &ll : ol.second.link_directories)
1945-
ctx.addLine("link_directories(" + ll + ")");
1946-
ctx.emptyLines();
1947-
19481943
// do this right before target
19491944
if (!d.empty() && p.rc_enabled)
19501945
{
@@ -2355,6 +2350,10 @@ endif()
23552350
{
23562351
print_target_options(lopts, "link options", "target_link_libraries");
23572352
};
2353+
auto print_linker_dirs = [&print_target_options](const auto &lopts)
2354+
{
2355+
print_target_options(lopts, "link directories", "target_link_directories");
2356+
};
23582357
/*auto print_set = [&ctx, this](const auto &a, const String &s)
23592358
{
23602359
if (a.empty())
@@ -2374,13 +2373,14 @@ endif()
23742373
ctx.decreaseIndent(")");
23752374
ctx.addLine();
23762375
};*/
2377-
auto print_options = [&ctx, &ol, &print_defs, &print_compile_opts, &print_linker_opts, &print_include_dirs]
2376+
auto print_options = [&ctx, &ol, &print_defs, &print_compile_opts, &print_linker_opts, &print_linker_dirs, &print_include_dirs]
23782377
{
23792378
print_defs(ol.second.definitions);
23802379
print_include_dirs(ol.second.include_directories);
23812380
print_compile_opts(ol.second.compile_options);
23822381
print_linker_opts(ol.second.link_options);
23832382
print_linker_opts(ol.second.link_libraries);
2383+
print_linker_dirs(ol.second.link_directories);
23842384

23852385
auto print_system = [&ctx](const auto &a, auto f)
23862386
{
@@ -2398,6 +2398,7 @@ endif()
23982398
print_system(ol.second.system_compile_options, print_compile_opts);
23992399
print_system(ol.second.system_link_options, print_linker_opts);
24002400
print_system(ol.second.system_link_libraries, print_linker_opts);
2401+
print_system(ol.second.system_link_directories, print_linker_dirs);
24012402
};
24022403

24032404
if (ol.first == "any")

0 commit comments

Comments
 (0)