summaryrefslogtreecommitdiff
path: root/emcc
diff options
context:
space:
mode:
Diffstat (limited to 'emcc')
-rwxr-xr-xemcc16
1 files changed, 13 insertions, 3 deletions
diff --git a/emcc b/emcc
index 008468a1..029d60a1 100755
--- a/emcc
+++ b/emcc
@@ -53,8 +53,9 @@ from tools import shared, jsrun
from tools.shared import Compression, execute, suffix, unsuffixed, unsuffixed_basename, WINDOWS
from tools.response_file import read_response_file
-CXX_SUFFIXES = ('.cpp', '.cxx', '.cc')
-SOURCE_SUFFIXES = ('.c', '.cpp', '.cxx', '.cc', '.m', '.mm')
+C_SUFFIXES = ('.c', '.C')
+CXX_SUFFIXES = ('.cpp', '.cxx', '.cc', '.CPP', '.CXX', '.CC')
+SOURCE_SUFFIXES = C_SUFFIXES + CXX_SUFFIXES + ('.m', '.mm')
BITCODE_SUFFIXES = ('.bc', '.o', '.obj')
DYNAMICLIB_SUFFIXES = ('.dylib', '.so', '.dll')
STATICLIB_SUFFIXES = ('.a',)
@@ -1274,7 +1275,16 @@ try:
shutil.move(in_temp(unsuffixed(uniquename(input_file)) + '.o'), unsuffixed_basename(input_file) + '.' + final_suffix)
else:
if len(input_files) == 1:
- shutil.move(in_temp(unsuffixed(uniquename(input_files[0])) + '.o'), specified_target)
+ temp_output_base = in_temp(unsuffixed(uniquename(input_files[0])))
+ shutil.move(temp_output_base + '.o', specified_target)
+ if os.path.exists(temp_output_base + '.d'):
+ # There was a .d file generated, from -MD or -MMD and friends, save a copy of it to where the output resides,
+ # adjusting the target name away from the temporary file name to the specified target.
+ # It will be deleted with the rest of the temporary directory.
+ deps = open(temp_output_base + '.d').read()
+ deps = deps.replace(temp_output_base + '.o', specified_target)
+ with open(os.path.join(os.path.dirname(specified_target), os.path.basename(unsuffixed(input_files[0]) + '.d')), "w") as out_dep:
+ out_dep.write(deps)
else:
assert len(original_input_files) == 1 or not has_dash_c, 'fatal error: cannot specify -o with -c with multiple files' + str(sys.argv) + ':' + str(original_input_files)
# We have a specified target (-o <target>), which is not JavaScript or HTML, and