@@ -273,19 +273,23 @@ $(BUILDDIR)/%.h.gen : $(SRCDIR)/%.d
273273 sed ' s/JULIA_/JL_PROBE_/' $@ > $@ .tmp
274274 mv $@ .tmp $@
275275
276+ # Generate `.inc` file that contains a list of `#define` macros to rename functions defined in `libjulia-internal`
277+ # to have a `ijl_` prefix instead of `jl_`, to denote that they are coming from `libjulia-internal`. This avoids
278+ # potential confusion with debugging tools, when inspecting a process that has both `libjulia` and `libjulia-internal`
279+ # loaded at the same time.
276280$(BUILDDIR ) /jl_internal_funcs.inc : $(SRCDIR ) /jl_exported_funcs.inc
277- # Generate `.inc` file that contains a list of `#define` macros to rename functions defined in `libjulia-internal`
278- # to have a `ijl_` prefix instead of `jl_`, to denote that they are coming from `libjulia-internal`. This avoids
279- # potential confusion with debugging tools, when inspecting a process that has both `libjulia` and `libjulia-internal`
280- # loaded at the same time.
281- grep ' XX(..*)' $< | sed -E ' s/.*XX\((.+)\).*/#define \1 i\1/g' > $@
281+ @TMPFILE=$$(mktemp $(abspath $@ .XXXXXX) ) ; \
282+ grep ' XX(..*)' $< | sed -E ' s/.*XX\((.+)\).*/#define \1 i\1/g' > $$ TMPFILE; \
283+ mv $$ TMPFILE $@
282284
285+ # Generate `.inc` file that contains a list of `#define` macros to access global data through struct instances
283286$(BUILDDIR ) /jl_data_globals_defs.inc : $(SRCDIR ) /jl_exported_data.inc
284- # Generate `.inc` file that contains a list of `#define` macros to access global data through struct instances
287+ @TMPFILE= $$( mktemp $( abspath $@ .XXXXXX) ) ; \
285288 { \
286289 grep ' XX(.*)' $< | sed -E ' s/.*XX\(([^,]+), .*\).*/#define jl_\1 (sysimg_global.\1)/g' ; \
287290 grep ' YY(.*)' $< | sed -E ' s/.*YY\(([^,]+), .*\).*/#define jl_\1 (const_globals.jl\1)/g' ; \
288- } > $@
291+ } > $$ TMPFILE; \
292+ mv $$ TMPFILE $@
289293
290294# source file rules
291295$(BUILDDIR ) /% .o : $(SRCDIR ) /% .c $(HEADERS ) | $(BUILDDIR )
@@ -352,13 +356,17 @@ $(build_shlibdir)/libllvmcalltest.$(SHLIB_EXT): $(SRCDIR)/llvmcalltest.cpp $(LLV
352356julia_flisp.boot.inc.phony : $(BUILDDIR ) /julia_flisp.boot.inc
353357
354358$(BUILDDIR ) /julia_flisp.boot.inc : $(BUILDDIR ) /julia_flisp.boot $(FLISP_EXECUTABLE_release )
355- @$(call PRINT_FLISP, $(call spawn,$(FLISP_EXECUTABLE_release ) ) $(call cygpath_w,$(SRCDIR ) /bin2hex.scm) < $< > $@ )
359+ @$(call PRINT_FLISP, TMPFILE=$$(mktemp $(abspath $@ .XXXXXX) ) ; \
360+ $(call spawn,$(FLISP_EXECUTABLE_release ) ) $(call cygpath_w,$(SRCDIR ) /bin2hex.scm) < $< > $$ TMPFILE; \
361+ mv $$ TMPFILE $@ )
356362
357363$(BUILDDIR ) /julia_flisp.boot : $(addprefix $(SRCDIR ) /,jlfrontend.scm flisp/aliases.scm flisp/profile.scm \
358364 julia-parser.scm julia-syntax.scm match.scm utils.scm ast.scm macroexpand.scm mk_julia_flisp_boot.scm) \
359365 $(FLISP_EXECUTABLE_release )
360- @$(call PRINT_FLISP, $(call spawn,$(FLISP_EXECUTABLE_release ) ) \
361- $(call cygpath_w,$(SRCDIR ) /mk_julia_flisp_boot.scm) $(call cygpath_w,$(dir $< ) ) $(notdir $< ) $(call cygpath_w,$@ ) )
366+ @$(call PRINT_FLISP, TMPFILE=$$(mktemp $(abspath $@ .XXXXXX) ) ; \
367+ $(call spawn,$(FLISP_EXECUTABLE_release ) ) \
368+ $(call cygpath_w,$(SRCDIR ) /mk_julia_flisp_boot.scm) $(call cygpath_w,$(dir $< ) ) $(notdir $< ) $(call cygpath_w,$$TMPFILE) ; \
369+ mv $$ TMPFILE $@ )
362370
363371# additional dependency links
364372$(BUILDDIR ) /codegen-stubs.o $(BUILDDIR ) /codegen-stubs.dbg.obj : $(addprefix $(SRCDIR ) /,intrinsics.h llvm-julia-passes.inc)
@@ -427,23 +435,28 @@ $(BUILDDIR)/flisp/libflisp-debug.a: $(addprefix $(SRCDIR)/,flisp/*.h flisp/*.c)
427435 $(MAKE ) -C $(SRCDIR ) /flisp debug BUILDDIR=' $(abspath $(BUILDDIR)/flisp)'
428436
429437$(BUILDDIR ) /julia_version.h : $(JULIAHOME ) /VERSION
430- @echo " // This is an autogenerated header file" > $@ .$(JULIA_BUILD_MODE ) .tmp
431- @echo " #ifndef JL_VERSION_H" >> $@ .$(JULIA_BUILD_MODE ) .tmp
432- @echo " #define JL_VERSION_H" >> $@ .$(JULIA_BUILD_MODE ) .tmp
433- @echo " #define JULIA_VERSION_STRING" \" $(JULIA_VERSION ) \" >> $@ .$(JULIA_BUILD_MODE ) .tmp
434- @echo $(JULIA_VERSION ) | awk ' BEGIN {FS="[.,+-]"} \
435- {print " #define JULIA_VERSION_MAJOR " $$ 1 " \n" \
436- " #define JULIA_VERSION_MINOR " $$ 2 " \n" \
437- " #define JULIA_VERSION_PATCH " $$ 3 ; \
438- if (NF< 4) print " #define JULIA_VERSION_IS_RELEASE 1" ; else print " #define JULIA_VERSION_IS_RELEASE 0" }' >> $@.$(JULIA_BUILD_MODE).tmp
439- @echo " #endif" >> $@ .$(JULIA_BUILD_MODE ) .tmp
440- mv $@ .$(JULIA_BUILD_MODE ) .tmp $@
438+ @TMPFILE=$$(mktemp $(abspath $@ .XXXXXX) ) ; \
439+ { \
440+ echo " // This is an autogenerated header file" ; \
441+ echo " #ifndef JL_VERSION_H" ; \
442+ echo " #define JL_VERSION_H" ; \
443+ echo " #define JULIA_VERSION_STRING" \" $(JULIA_VERSION ) \" ; \
444+ echo $(JULIA_VERSION ) | awk ' BEGIN {FS="[.,+-]"} \
445+ {print " #define JULIA_VERSION_MAJOR " $$ 1 " \n" \
446+ " #define JULIA_VERSION_MINOR " $$ 2 " \n" \
447+ " #define JULIA_VERSION_PATCH " $$ 3 ; \
448+ if (NF< 4) print " #define JULIA_VERSION_IS_RELEASE 1" ; else print " #define JULIA_VERSION_IS_RELEASE 0" }' ; \
449+ echo " #endif" ; \
450+ } > $$ TMPFILE; \
451+ mv $$ TMPFILE $@
441452
442453CXXLD = $(CXX ) -shared
443454
444455$(BUILDDIR ) /julia.expmap : $(SRCDIR ) /julia.expmap.in $(JULIAHOME ) /VERSION $(LLVM_CONFIG_ABSOLUTE )
445- sed < ' $<' > ' $@' -e " s/@JULIA_SHLIB_SYMBOL_VERSION@/JL_LIBJULIA_$( SOMAJOR) /" \
446- -e " s/@LLVM_SHLIB_SYMBOL_VERSION@/$( LLVM_SHLIB_SYMBOL_VERSION) /"
456+ @TMPFILE=$$(mktemp $(abspath $@ .XXXXXX) ) ; \
457+ sed < ' $<' > $$ TMPFILE -e " s/@JULIA_SHLIB_SYMBOL_VERSION@/JL_LIBJULIA_$( SOMAJOR) /" \
458+ -e " s/@LLVM_SHLIB_SYMBOL_VERSION@/$( LLVM_SHLIB_SYMBOL_VERSION) /" ; \
459+ mv $$ TMPFILE $@
447460
448461$(build_shlibdir ) /libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT ) : $(BUILDDIR ) /julia.expmap $(OBJS ) $(BUILDDIR ) /flisp/libflisp.a $(BUILDDIR ) /support/libsupport.a $(LIBUV )
449462 @$(call PRINT_LINK, $(CXXLD ) $(call IMPLIB_FLAGS,$@ ) $(SHIPFLAGS ) $(JCXXFLAGS ) $(CXXLDFLAGS ) $(OBJS ) $(RPATH_LIB ) -o $@ \
@@ -554,11 +567,11 @@ INCLUDED_CXX_FILES := \
554567clean :
555568 -rm -fr $(build_shlibdir ) /libjulia-internal* $(build_shlibdir ) /libjulia-codegen*
556569 -rm -rf $(build_shlibdir ) /libccalltest* $(build_shlibdir ) /libllvmcalltest* $(build_shlibdir ) /libccalllazyfoo* $(build_shlibdir ) /libccalllazybar*
557- -rm -f $(BUILDDIR ) /julia_flisp.boot $(BUILDDIR ) /julia_flisp.boot.inc $(BUILDDIR ) /jl_internal_funcs.inc $(BUILDDIR ) /jl_data_globals_defs.inc
570+ -rm -f $(BUILDDIR ) /julia_flisp.boot* $(BUILDDIR ) /julia_flisp.boot.inc* $(BUILDDIR ) /jl_internal_funcs.inc* $(BUILDDIR ) /jl_data_globals_defs.inc*
558571 -rm -f $(BUILDDIR ) /* .dbg.obj $(BUILDDIR ) /* .o $(BUILDDIR ) /* .dwo $(BUILDDIR ) /* .$(SHLIB_EXT ) $(BUILDDIR ) /* .a $(BUILDDIR ) /* .h.gen
559- -rm -f $(BUILDDIR ) /julia.expmap
572+ -rm -f $(BUILDDIR ) /julia.expmap*
560573 -rm -f $(BUILDDIR ) /julia_version.h
561- -rm -f $(BUILDDIR ) /compile_commands.json
574+ -rm -f $(BUILDDIR ) /compile_commands.json*
562575
563576clean-flisp :
564577 -$(MAKE ) -C $(SRCDIR ) /flisp clean BUILDDIR=' $(abspath $(BUILDDIR)/flisp)'
@@ -657,7 +670,7 @@ clean-analyzegc:
657670# Compilation database generation using existing clang infrastructure
658671.PHONY : regenerate-compile_commands
659672regenerate-compile_commands :
660- TMPFILE=$$(mktemp -p $(BUILDDIR ) compile_commands.json.XXXXXX ) ; \
673+ @ TMPFILE=$$(mktemp $( abspath $(BUILDDIR ) / compile_commands.json.XXXXXX) ) ; \
661674 { \
662675 CLANG_TOOLING_C_FLAGS=" $$ ($( JULIAHOME) /contrib/escape_json.sh clang $( CLANG_TOOLING_C_FLAGS) )" ; \
663676 CLANG_TOOLING_CXX_FLAGS=" $$ ($( JULIAHOME) /contrib/escape_json.sh clang $( CLANG_TOOLING_CXX_FLAGS) )" ; \
0 commit comments