Skip to content

Commit 51da540

Browse files
authored
improve sysimage.mk more completely (#57758)
Add back support for -debug builds and define ability to use shared library builds more places in the file. Fix #57675
1 parent b39ad7b commit 51da540

File tree

2 files changed

+37
-23
lines changed

2 files changed

+37
-23
lines changed

Makefile

+1-7
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,7 @@ julia-src-release julia-src-debug : julia-src-% : julia-deps julia_flisp.boot.in
110110
julia-cli-release julia-cli-debug: julia-cli-% : julia-deps
111111
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/cli $*
112112

113-
julia-sysimg-ji : $(TOP_LEVEL_PKG_LINK_TARGETS) julia-stdlib julia-base julia-cli-$(JULIA_BUILD_MODE) julia-src-$(JULIA_BUILD_MODE) | $(build_private_libdir)
114-
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-ji JULIA_EXECUTABLE='$(JULIA_EXECUTABLE)'
115-
116-
julia-sysimg-bc : $(TOP_LEVEL_PKG_LINK_TARGETS) julia-stdlib julia-base julia-cli-$(JULIA_BUILD_MODE) julia-src-$(JULIA_BUILD_MODE) | $(build_private_libdir)
117-
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-bc JULIA_EXECUTABLE='$(JULIA_EXECUTABLE)'
118-
119-
julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-sysimg-ji julia-src-%
113+
julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-src-% $(TOP_LEVEL_PKG_LINK_TARGETS) julia-stdlib julia-base julia-cli-% julia-src-% | $(build_private_libdir)
120114
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-$*
121115

122116
julia-debug julia-release : julia-% : julia-sysimg-% julia-src-% julia-symlink julia-libccalltest \

sysimage.mk

+36-16
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ include $(JULIAHOME)/stdlib/stdlib.mk
77
default: sysimg-$(JULIA_BUILD_MODE) # contains either "debug" or "release"
88
all: sysimg-release sysimg-debug
99
basecompiler-ji: $(build_private_libdir)/basecompiler.ji
10-
sysimg-ji: $(build_private_libdir)/sys.ji
10+
sysimg-ji: $(build_private_libdir)/sysbase.ji
1111
sysimg-bc: $(build_private_libdir)/sys-bc.a
1212
sysimg-release: $(build_private_libdir)/sys.$(SHLIB_EXT)
1313
sysimg-debug: $(build_private_libdir)/sys-debug.$(SHLIB_EXT)
@@ -69,28 +69,45 @@ RELDATADIR := $(call rel_path,$(JULIAHOME)/base,$(build_datarootdir))/ # <-- mak
6969

7070
$(build_private_libdir)/basecompiler.ji: $(COMPILER_SRCS)
7171
@$(call PRINT_JULIA, cd $(JULIAHOME)/base && \
72-
JULIA_NUM_THREADS=1 $(call spawn,$(JULIA_EXECUTABLE)) -C "$(JULIA_CPU_TARGET)" $(HEAPLIM) --output-ji $(call cygpath_w,$@).tmp \
72+
JULIA_NUM_THREADS=1 $(call spawn,$(JULIA_EXECUTABLE)) $(HEAPLIM) --output-ji $(call cygpath_w,$@).tmp \
7373
--startup-file=no --warn-overwrite=yes -g$(BOOTSTRAP_DEBUG_LEVEL) -O1 Base_compiler.jl --buildroot $(RELBUILDROOT) --dataroot $(RELDATADIR))
7474
@mv $@.tmp $@
7575

76-
$(build_private_libdir)/basecompiler-o.a $(build_private_libdir)/basecompiler-bc.a: $(build_private_libdir)/basecompiler-%.a : $(COMPILER_SRCS)
77-
@$(call PRINT_JULIA, cd $(JULIAHOME)/base && \
78-
JULIA_NUM_THREADS=1 $(call spawn,$(JULIA_EXECUTABLE)) -C "$(JULIA_CPU_TARGET)" $(HEAPLIM) --output-$* $(call cygpath_w,$@).tmp \
79-
--startup-file=no --warn-overwrite=yes -g$(BOOTSTRAP_DEBUG_LEVEL) -O1 Base_compiler.jl --buildroot $(RELBUILDROOT) --dataroot $(RELDATADIR))
80-
@mv $@.tmp $@
81-
82-
$(build_private_libdir)/sys.ji: $(build_private_libdir)/basecompiler.$(SHLIB_EXT) $(JULIAHOME)/VERSION $(BASE_SRCS) $(STDLIB_SRCS)
83-
@$(call PRINT_JULIA, cd $(JULIAHOME)/base && \
84-
if ! JULIA_BINDIR=$(call cygpath_w,$(build_bindir)) WINEPATH="$(call cygpath_w,$(build_bindir));$$WINEPATH" \
85-
JULIA_NUM_THREADS=1 $(call spawn, $(JULIA_EXECUTABLE)) -g1 -O1 -C "$(JULIA_CPU_TARGET)" $(HEAPLIM) --output-ji $(call cygpath_w,$@).tmp $(JULIA_SYSIMG_BUILD_FLAGS) \
86-
--startup-file=no --warn-overwrite=yes --sysimage $(call cygpath_w,$<) sysimg.jl --buildroot $(RELBUILDROOT) --dataroot $(RELDATADIR); then \
87-
echo '*** This error might be fixed by running `make clean`. If the error persists$(COMMA) try `make cleanall`. ***'; \
76+
define base_builder
77+
$$(build_private_libdir)/basecompiler$1-o.a $$(build_private_libdir)/basecompiler$1-bc.a : $$(build_private_libdir)/basecompiler$1-%.a : $(COMPILER_SRCS)
78+
@$$(call PRINT_JULIA, cd $$(JULIAHOME)/base && \
79+
WINEPATH="$$(call cygpath_w,$$(build_bindir));$$$$WINEPATH" \
80+
JULIA_NUM_THREADS=1 \
81+
$$(call spawn, $3) $2 -C "$$(JULIA_CPU_TARGET)" $$(HEAPLIM) --output-$$* $$(call cygpath_w,$$@).tmp \
82+
--startup-file=no --warn-overwrite=yes -g$$(BOOTSTRAP_DEBUG_LEVEL) Base_compiler.jl --buildroot $$(RELBUILDROOT) --dataroot $$(RELDATADIR))
83+
@mv $$@.tmp $$@
84+
$$(build_private_libdir)/sysbase$1.ji: $$(build_private_libdir)/basecompiler$1.$$(SHLIB_EXT) $$(JULIAHOME)/VERSION $$(BASE_SRCS) $$(STDLIB_SRCS)
85+
@$$(call PRINT_JULIA, cd $$(JULIAHOME)/base && \
86+
if ! JULIA_BINDIR=$$(call cygpath_w,$$(build_bindir)) \
87+
WINEPATH="$$(call cygpath_w,$$(build_bindir));$$$$WINEPATH" \
88+
JULIA_NUM_THREADS=1 \
89+
$$(call spawn, $$(JULIA_EXECUTABLE)) -g1 $2 -C "$$(JULIA_CPU_TARGET)" $$(HEAPLIM) --output-ji $$(call cygpath_w,$$@).tmp $$(JULIA_SYSIMG_BUILD_FLAGS) \
90+
--startup-file=no --warn-overwrite=yes --sysimage $$(call cygpath_w,$$<) sysimg.jl --buildroot $$(RELBUILDROOT) --dataroot $$(RELDATADIR); then \
91+
echo '*** This error might be fixed by running `make clean`. If the error persists$$(COMMA) try `make cleanall`. ***'; \
8892
false; \
8993
fi )
90-
@mv $@.tmp $@
94+
@mv $$@.tmp $$@
95+
.SECONDARY: $$(build_private_libdir)/basecompiler$1-o.a $$(build_private_libdir)/basecompiler$1-bc.a $$(build_private_libdir)/sysbase$1.ji # request Make to keep these files around
96+
endef
9197

9298
define sysimg_builder
93-
$$(build_private_libdir)/sys$1-o.a $$(build_private_libdir)/sys$1-bc.a : $$(build_private_libdir)/sys$1-%.a : $$(build_private_libdir)/sys.ji $$(JULIAHOME)/contrib/generate_precompile.jl
99+
$$(build_private_libdir)/sysbase$1-o.a $$(build_private_libdir)/sysbase$1-bc.a : $$(build_private_libdir)/sysbase$1-%.a : $$(build_private_libdir)/basecompiler$1.$$(SHLIB_EXT) $$(JULIAHOME)/VERSION $$(BASE_SRCS) $$(STDLIB_SRCS)
100+
@$$(call PRINT_JULIA, cd $$(JULIAHOME)/base && \
101+
if ! JULIA_BINDIR=$$(call cygpath_w,$$(build_bindir)) \
102+
WINEPATH="$$(call cygpath_w,$$(build_bindir));$$$$WINEPATH" \
103+
JULIA_NUM_THREADS=1 \
104+
$$(call spawn, $$(JULIA_EXECUTABLE)) -g1 $2 -C "$$(JULIA_CPU_TARGET)" $$(HEAPLIM) --output-$$* $$(call cygpath_w,$$@).tmp $$(JULIA_SYSIMG_BUILD_FLAGS) \
105+
--startup-file=no --warn-overwrite=yes --sysimage $$(call cygpath_w,$$<) sysimg.jl --buildroot $$(RELBUILDROOT) --dataroot $$(RELDATADIR); then \
106+
echo '*** This error might be fixed by running `make clean`. If the error persists$$(COMMA) try `make cleanall`. ***'; \
107+
false; \
108+
fi )
109+
@mv $$@.tmp $$@
110+
$$(build_private_libdir)/sys$1-o.a $$(build_private_libdir)/sys$1-bc.a : $$(build_private_libdir)/sys$1-%.a : $$(build_private_libdir)/sysbase$1.$$(SHLIB_EXT) $$(JULIAHOME)/contrib/generate_precompile.jl
94111
@$$(call PRINT_JULIA, cd $$(JULIAHOME)/base && \
95112
if ! JULIA_BINDIR=$$(call cygpath_w,$(build_bindir)) \
96113
WINEPATH="$$(call cygpath_w,$$(build_bindir));$$$$WINEPATH" \
@@ -105,6 +122,9 @@ $$(build_private_libdir)/sys$1-o.a $$(build_private_libdir)/sys$1-bc.a : $$(buil
105122
fi )
106123
@mv $$@.tmp $$@
107124
.SECONDARY: $$(build_private_libdir)/sys$1-o.a $(build_private_libdir)/sys$1-bc.a # request Make to keep these files around
125+
.SECONDARY: $$(build_private_libdir)/sysbase$1-o.a $(build_private_libdir)/sysbase$1-bc.a # request Make to keep these files around
108126
endef
127+
$(eval $(call base_builder,,-O1,$(JULIA_EXECUTABLE_release)))
128+
$(eval $(call base_builder,-debug,-O0,$(JULIA_EXECUTABLE_debug)))
109129
$(eval $(call sysimg_builder,,-O3,$(JULIA_EXECUTABLE_release)))
110130
$(eval $(call sysimg_builder,-debug,-O0,$(JULIA_EXECUTABLE_debug)))

0 commit comments

Comments
 (0)