mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-02 12:48:14 +00:00
Fix #2112
This commit is contained in:
+10
-30
@@ -1502,44 +1502,24 @@ bool init_build_paths(String init_filename) {
|
|||||||
} else {
|
} else {
|
||||||
Path output_path;
|
Path output_path;
|
||||||
|
|
||||||
if (str_eq(init_filename, str_lit("."))) {
|
// We must name the output file after the current directory.
|
||||||
// We must name the output file after the current directory.
|
debugf("Output name will be created from current base name %.*s.\n", LIT(bc->build_paths[BuildPath_Main_Package].basename));
|
||||||
debugf("Output name will be created from current base name %.*s.\n", LIT(bc->build_paths[BuildPath_Main_Package].basename));
|
String last_element = last_path_element(bc->build_paths[BuildPath_Main_Package].basename);
|
||||||
String last_element = last_path_element(bc->build_paths[BuildPath_Main_Package].basename);
|
|
||||||
|
|
||||||
if (last_element.len == 0) {
|
if (last_element.len == 0) {
|
||||||
gb_printf_err("The output name is created from the last path element. `%.*s` has none. Use `-out:output_name.ext` to set it.\n", LIT(bc->build_paths[BuildPath_Main_Package].basename));
|
gb_printf_err("The output name is created from the last path element. `%.*s` has none. Use `-out:output_name.ext` to set it.\n", LIT(bc->build_paths[BuildPath_Main_Package].basename));
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
output_path.basename = copy_string(ha, bc->build_paths[BuildPath_Main_Package].basename);
|
|
||||||
output_path.name = copy_string(ha, last_element);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// Init filename was not 'current path'.
|
|
||||||
// Contruct the output name from the path elements as usual.
|
|
||||||
String output_name = init_filename;
|
|
||||||
// If it ends with a trailing (back)slash, strip it before continuing.
|
|
||||||
while (output_name.len > 0 && (output_name[output_name.len-1] == '/' || output_name[output_name.len-1] == '\\')) {
|
|
||||||
output_name.len -= 1;
|
|
||||||
}
|
|
||||||
output_name = remove_directory_from_path(output_name);
|
|
||||||
output_name = remove_extension_from_path(output_name);
|
|
||||||
output_name = copy_string(ha, string_trim_whitespace(output_name));
|
|
||||||
output_path = path_from_string(ha, output_name);
|
|
||||||
|
|
||||||
// Replace extension.
|
|
||||||
if (output_path.ext.len > 0) {
|
|
||||||
gb_free(ha, output_path.ext.text);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
output_path.ext = copy_string(ha, output_extension);
|
output_path.basename = copy_string(ha, bc->build_paths[BuildPath_Main_Package].basename);
|
||||||
|
output_path.name = copy_string(ha, last_element);
|
||||||
|
output_path.ext = copy_string(ha, output_extension);
|
||||||
|
|
||||||
bc->build_paths[BuildPath_Output] = output_path;
|
bc->build_paths[BuildPath_Output] = output_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do we have an extension? We might not if the output filename was supplied.
|
// Do we have an extension? We might not if the output filename was supplied.
|
||||||
if (bc->build_paths[BuildPath_Output].ext.len == 0) {
|
if (bc->build_paths[BuildPath_Output].ext.len == 0) {
|
||||||
if (build_context.metrics.os == TargetOs_windows || build_context.build_mode != BuildMode_Executable) {
|
if (bc->metrics.os == TargetOs_windows || bc->build_mode != BuildMode_Executable) {
|
||||||
bc->build_paths[BuildPath_Output].ext = copy_string(ha, output_extension);
|
bc->build_paths[BuildPath_Output].ext = copy_string(ha, output_extension);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user