Skip to content

Commit 66f039a

Browse files
authored
Merge pull request #19002 from JuliaLang/tb/srcbuild_headers
Install public headers during build
2 parents 778d9f3 + 2a7b506 commit 66f039a

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

Makefile

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ default: $(JULIA_BUILD_MODE) # contains either "debug" or "release"
1919
all: debug release
2020

2121
# sort is used to remove potential duplicates
22-
DIRS := $(sort $(build_bindir) $(build_depsbindir) $(build_libdir) $(build_private_libdir) $(build_libexecdir) $(build_includedir) $(build_sysconfdir)/julia $(build_datarootdir)/julia $(build_man1dir))
22+
DIRS := $(sort $(build_bindir) $(build_depsbindir) $(build_libdir) $(build_private_libdir) $(build_libexecdir) $(build_includedir) $(build_includedir)/julia $(build_sysconfdir)/julia $(build_datarootdir)/julia $(build_man1dir))
2323
ifneq ($(BUILDROOT),$(JULIAHOME))
2424
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src ui doc deps test test/perf)
2525
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS))
@@ -80,7 +80,7 @@ endif
8080
julia-deps: | $(DIRS) $(build_datarootdir)/julia/base $(build_datarootdir)/julia/test
8181
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/deps
8282

83-
julia-base: julia-deps $(build_sysconfdir)/julia/juliarc.jl $(build_man1dir)/julia.1
83+
julia-base: julia-deps $(build_sysconfdir)/julia/juliarc.jl $(build_man1dir)/julia.1 $(build_datarootdir)/julia/julia-config.jl
8484
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/base
8585

8686
julia-libccalltest: julia-deps
@@ -177,6 +177,9 @@ ifeq ($(OS), WINNT)
177177
$(build_sysconfdir)/julia/juliarc.jl: $(JULIAHOME)/contrib/windows/juliarc.jl
178178
endif
179179

180+
$(build_datarootdir)/julia/julia-config.jl : $(JULIAHOME)/contrib/julia-config.jl | $(build_datarootdir)/julia
181+
$(INSTALL_M) $< $(dir $@)
182+
180183
$(build_private_libdir)/%.$(SHLIB_EXT): $(build_private_libdir)/%.o
181184
@$(call PRINT_LINK, $(CXX) $(LDFLAGS) -shared $(fPIC) -L$(build_private_libdir) -L$(build_libdir) -L$(build_shlibdir) -o $@ $< \
182185
$(if $(findstring -debug.$(SHLIB_EXT),$(notdir $@)),-ljulia-debug,-ljulia) \
@@ -363,22 +366,14 @@ endif
363366
done
364367
endif
365368

366-
ifeq ($(USE_SYSTEM_LIBUV),0)
367-
ifeq ($(OS),WINNT)
368-
$(INSTALL_F) $(build_includedir)/tree.h $(DESTDIR)$(includedir)/julia
369-
endif
370-
$(INSTALL_F) $(build_includedir)/uv* $(DESTDIR)$(includedir)/julia
371-
endif
372-
$(INSTALL_F) $(addprefix $(JULIAHOME)/,src/julia.h src/julia_threads.h src/support/*.h) $(DESTDIR)$(includedir)/julia
373-
$(INSTALL_F) $(BUILDROOT)/src/julia_version.h $(DESTDIR)$(includedir)/julia
369+
# Copy public headers
370+
cp -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
374371
# Copy system image
375372
-$(INSTALL_F) $(build_private_libdir)/sys.ji $(DESTDIR)$(private_libdir)
376373
$(INSTALL_M) $(build_private_libdir)/sys.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
377374
$(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
378375
# Copy in system image build script
379376
$(INSTALL_M) $(JULIAHOME)/contrib/build_sysimg.jl $(DESTDIR)$(datarootdir)/julia/
380-
# Copy in standalone julia-config script
381-
$(INSTALL_M) $(JULIAHOME)/contrib/julia-config.jl $(DESTDIR)$(datarootdir)/julia/
382377
# Copy in all .jl sources as well
383378
cp -R -L $(build_datarootdir)/julia $(DESTDIR)$(datarootdir)/
384379
# Copy documentation

src/Makefile

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,18 @@ SRCS += anticodegen
6363
LLVM_LIBS := support
6464
endif
6565

66-
HEADERS := $(addprefix $(SRCDIR)/,julia.h julia_threads.h julia_internal.h options.h timing.h) $(BUILDDIR)/julia_version.h $(wildcard $(SRCDIR)/support/*.h) $(LIBUV_INC)/uv.h
66+
# headers are used for dependency tracking, while public headers will be part of the dist
67+
HEADERS := $(BUILDDIR)/julia_version.h $(wildcard $(SRCDIR)/support/*.h) $(addprefix $(SRCDIR)/,julia.h julia_threads.h julia_internal.h options.h timing.h)
68+
PUBLIC_HEADERS := $(BUILDDIR)/julia_version.h $(wildcard $(SRCDIR)/support/*.h) $(addprefix $(SRCDIR)/,julia.h julia_threads.h)
69+
ifeq ($(USE_SYSTEM_LIBUV),0)
70+
ifeq ($(OS),WINNT)
71+
HEADERS += $(build_includedir)/tree.h
72+
PUBLIC_HEADERS += $(build_includedir)/tree.h
73+
endif
74+
HEADERS += $(LIBUV_INC)/uv.h
75+
PUBLIC_HEADERS += $(LIBUV_INC)/uv*
76+
endif
77+
PUBLIC_HEADER_TARGETS := $(addprefix $(build_includedir)/julia/,$(notdir $(PUBLIC_HEADERS)))
6778

6879
# In LLVM < 3.4, --ldflags includes both options and libraries, so use it both before and after --libs
6980
# In LLVM >= 3.4, --ldflags has only options, and --system-libs has the libraries.
@@ -123,6 +134,15 @@ $(BUILDDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/llvm-version.h $(HEADERS) $(LLVM_CONF
123134
$(BUILDDIR)/%.dbg.obj: $(SRCDIR)/%.cpp $(SRCDIR)/llvm-version.h $(HEADERS) $(LLVM_CONFIG_ABSOLUTE) | $(BUILDDIR)
124135
@$(call PRINT_CC, $(CXX) $(shell $(LLVM_CONFIG_HOST) --cxxflags) $(CPPFLAGS) $(CXXFLAGS) $(DEBUGFLAGS) -c $< -o $@)
125136

137+
# public header rules
138+
$(eval $(call dir_target,$(build_includedir)/julia))
139+
define public_header_target
140+
TARGET = $(build_includedir)/julia/$(notdir $(1))
141+
$$(TARGET): $(1) | $(build_includedir)/julia
142+
$(INSTALL_F) $$^ $(build_includedir)/julia/
143+
endef
144+
$(foreach HEADER,$(PUBLIC_HEADERS),$(eval $(call public_header_target,$(HEADER))))
145+
126146
libccalltest: $(build_shlibdir)/libccalltest.$(SHLIB_EXT)
127147

128148
ifeq ($(OS), Linux)
@@ -244,7 +264,7 @@ $(BUILDDIR)/libjulia-debug.a: $(SRCDIR)/julia.expmap $(DOBJS) $(BUILDDIR)/flisp/
244264
rm -f $@
245265
@$(call PRINT_LINK, ar -rcs $@ $(DOBJS))
246266

247-
libjulia-debug: $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)
267+
libjulia-debug: $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT) $(PUBLIC_HEADER_TARGETS)
248268

249269
$(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
250270
@$(call PRINT_LINK, $(CXXLD) $(CXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ $(LDFLAGS) $(JLIBLDFLAGS) $(RELEASE_LIBS) $(SONAME))
@@ -258,7 +278,7 @@ endif
258278
$(BUILDDIR)/libjulia.a: julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a
259279
rm -f $@
260280
@$(call PRINT_LINK, ar -rcs $@ $(OBJS))
261-
libjulia-release: $(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)
281+
libjulia-release: $(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT) $(PUBLIC_HEADER_TARGETS)
262282

263283
clean:
264284
-rm -fr $(build_shlibdir)/libjulia* $(build_shlibdir)/libccalltest*

0 commit comments

Comments
 (0)