Skip to content

Commit f83e8b7

Browse files
authored
Merge branch 'master' into canonicalize-Period
2 parents 3482c01 + 0a04f41 commit f83e8b7

File tree

756 files changed

+11321
-7659
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

756 files changed

+11321
-7659
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ Note: These instructions are for adding to or improving functionality in the bas
189189
190190
Add new code to Julia's base libraries as follows (this is the "basic" approach; see a more efficient approach in the next section):
191191
192-
1. Edit the appropriate file in the `base/` directory, or add new files if necessary. Create tests for your functionality and add them to files in the `test/` directory. If you're editing C or Scheme code, most likely it lives in `src/` or one of its subdirectories, although some aspects of Julia's REPL initialization live in `ui/`.
192+
1. Edit the appropriate file in the `base/` directory, or add new files if necessary. Create tests for your functionality and add them to files in the `test/` directory. If you're editing C or Scheme code, most likely it lives in `src/` or one of its subdirectories, although some aspects of Julia's REPL initialization live in `cli/`.
193193
194194
2. Add any new files to `sysimg.jl` in order to build them into the Julia system image.
195195

HISTORY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4860,7 +4860,7 @@ New language features
48604860
shell. For example:
48614861
48624862
julia> ;ls
4863-
CONTRIBUTING.md Makefile VERSION deps/ julia@ ui/
4863+
CONTRIBUTING.md Makefile VERSION cli/ deps/ julia@
48644864
DISTRIBUTING.md NEWS.md Windows.inc doc/ src/ usr/
48654865
LICENSE.md README.md base/ etc/ test/
48664866
Make.inc README.windows.md contrib/ examples/ tmp/

Make.inc

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ USE_SYSTEM_LIBUV:=0
4949
USE_SYSTEM_UTF8PROC:=0
5050
USE_SYSTEM_MBEDTLS:=0
5151
USE_SYSTEM_LIBSSH2:=0
52+
USE_SYSTEM_NGHTTP2:=0
5253
USE_SYSTEM_CURL:=0
5354
USE_SYSTEM_LIBGIT2:=0
5455
USE_SYSTEM_PATCHELF:=0
@@ -81,7 +82,7 @@ endif
8182
USE_OPROFILE_JITEVENTS ?= 0
8283

8384
# Set to 1 to enable profiling with perf
84-
USE_PERF_JITEVENTS ?= 0
85+
USE_PERF_JITEVENTS ?= 1
8586

8687
# assume we don't have LIBSSP support in our compiler, will enable later if likely true
8788
HAVE_SSP := 0
@@ -339,6 +340,9 @@ USE_POLLY_ACC := 0 # Enable GPU code-generation
339340
# Options to use MLIR
340341
USE_MLIR := 0
341342

343+
# Options to use RegionVectorizer
344+
USE_RV := 0
345+
342346
# Cross-compile
343347
#XC_HOST := i686-w64-mingw32
344348
#XC_HOST := x86_64-w64-mingw32
@@ -604,10 +608,29 @@ else
604608
endif
605609

606610
# On Windows, we want shared library files to end up in $(build_bindir), instead of $(build_libdir)
611+
# We also don't really have a private bindir on windows right now, due to lack of RPATH.
607612
ifeq ($(OS),WINNT)
608613
build_shlibdir := $(build_bindir)
614+
shlibdir := $(bindir)
615+
private_shlibdir := $(bindir)
609616
else
610617
build_shlibdir := $(build_libdir)
618+
shlibdir := $(libdir)
619+
private_shlibdir := $(private_libdir)
620+
endif
621+
622+
# If we're on windows, don't do versioned shared libraries. If we're on OSX,
623+
# put the version number before the .dylib. Otherwise, put it after.
624+
ifeq ($(OS), WINNT)
625+
JL_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT)
626+
else
627+
ifeq ($(OS), Darwin)
628+
JL_MAJOR_MINOR_SHLIB_EXT := $(SOMAJOR).$(SOMINOR).$(SHLIB_EXT)
629+
JL_MAJOR_SHLIB_EXT := $(SOMAJOR).$(SHLIB_EXT)
630+
else
631+
JL_MAJOR_MINOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR).$(SOMINOR)
632+
JL_MAJOR_SHLIB_EXT := $(SHLIB_EXT).$(SOMAJOR)
633+
endif
611634
endif
612635

613636
ifeq ($(OS), FreeBSD)
@@ -1099,7 +1122,7 @@ USE_BINARYBUILDER ?= 0
10991122
endif
11001123

11011124
# This is the set of projects that BinaryBuilder dependencies are hooked up for.
1102-
BB_PROJECTS := OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP
1125+
BB_PROJECTS := OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP
11031126
define SET_BB_DEFAULT
11041127
# First, check to see if BB is disabled on a global setting
11051128
ifeq ($$(USE_BINARYBUILDER),0)
@@ -1450,6 +1473,52 @@ JULIA_SYSIMG_debug := $(build_private_libdir)/sys-debug.$(SHLIB_EXT)
14501473
JULIA_SYSIMG_release := $(build_private_libdir)/sys.$(SHLIB_EXT)
14511474
JULIA_SYSIMG := $(JULIA_SYSIMG_$(JULIA_BUILD_MODE))
14521475

1476+
define dep_lib_path
1477+
$$($(PYTHON) $(call python_cygpath,$(JULIAHOME)/contrib/relative_path.py) $(1) $(2))
1478+
endef
1479+
1480+
LIBJULIA_BUILD_DEPLIB := $(call dep_lib_path,$(build_bindir),$(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT))
1481+
LIBJULIA_INSTALL_DEPLIB := $(call dep_lib_path,$(bindir),$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT))
1482+
1483+
LIBJULIA_DEBUG_BUILD_DEPLIB := $(call dep_lib_path,$(build_bindir),$(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT))
1484+
LIBJULIA_DEBUG_INSTALL_DEPLIB := $(call dep_lib_path,$(bindir),$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT))
1485+
1486+
ifeq ($(OS),WINNT)
1487+
ifeq ($(BINARY),32)
1488+
LIBGCC_NAME := libgcc_s_sjlj-1.$(SHLIB_EXT)
1489+
else
1490+
LIBGCC_NAME := libgcc_s_seh-1.$(SHLIB_EXT)
1491+
endif
1492+
LIBOPENLIBM_NAME := libopenlibm.$(SHLIB_EXT)
1493+
endif
1494+
ifeq ($(OS),Darwin)
1495+
LIBGCC_NAME := libgcc_s.1.$(SHLIB_EXT)
1496+
LIBOPENLIBM_NAME := libopenlibm.3.$(SHLIB_EXT)
1497+
endif
1498+
ifneq ($(findstring $(OS),Linux FreeBSD),)
1499+
LIBGCC_NAME := libgcc_s.$(SHLIB_EXT).1
1500+
LIBOPENLIBM_NAME := libopenlibm.$(SHLIB_EXT).3
1501+
endif
1502+
1503+
LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_bindir),$(build_shlibdir)/$(LIBGCC_NAME))
1504+
LIBGCC_INSTALL_DEPLIB := $(call dep_lib_path,$(bindir),$(private_shlibdir)/$(LIBGCC_NAME))
1505+
LIBOPENLIBM_BUILD_DEPLIB := $(call dep_lib_path,$(build_bindir),$(build_shlibdir)/$(LIBOPENLIBM_NAME))
1506+
LIBOPENLIBM_INSTALL_DEPLIB := $(call dep_lib_path,$(bindir),$(private_shlibdir)/$(LIBOPENLIBM_NAME))
1507+
1508+
# We list:
1509+
# * libgcc_s, because FreeBSD needs to load ours, not the system one.
1510+
# * libopenlibm, because Windows has an untrustworthy libm, and we want to use ours more than theirs
1511+
# * libjulia, which must always come last.
1512+
#
1513+
# We need these four separate variables because:
1514+
# * debug builds must link against libjuliadebug, not libjulia
1515+
# * install time relative paths are not equal to build time relative paths (../lib vs. ../lib/julia)
1516+
# That second point will no longer be true for most deps once they are placed within Artifacts directories.
1517+
LOADER_BUILD_DEP_LIBS = $(LIBGCC_BUILD_DEPLIB):$(LIBOPENLIBM_BUILD_DEPLIB):$(LIBJULIA_BUILD_DEPLIB)
1518+
LOADER_DEBUG_BUILD_DEP_LIBS = $(LIBGCC_BUILD_DEPLIB):$(LIBOPENLIBM_BUILD_DEPLIB):$(LIBJULIA_DEBUG_BUILD_DEPLIB)
1519+
LOADER_INSTALL_DEP_LIBS = $(LIBGCC_INSTALL_DEPLIB):$(LIBOPENLIBM_INSTALL_DEPLIB):$(LIBJULIA_INSTALL_DEPLIB)
1520+
LOADER_DEBUG_INSTALL_DEP_LIBS = $(LIBGCC_INSTALL_DEPLIB):$(LIBOPENLIBM_INSTALL_DEPLIB):$(LIBJULIA_DEBUG_INSTALL_DEPLIB)
1521+
14531522
# Colors for make
14541523
ifndef VERBOSE
14551524
VERBOSE := 0

Makefile

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ all: debug release
99
# sort is used to remove potential duplicates
1010
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_datarootdir)/julia/stdlib $(build_man1dir))
1111
ifneq ($(BUILDROOT),$(JULIAHOME))
12-
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa ui doc deps stdlib test test/embedding test/llvmpasses)
12+
BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/embedding test/llvmpasses)
1313
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk
1414
DIRS := $(DIRS) $(BUILDDIRS)
1515
$(BUILDDIRMAKE): | $(BUILDDIRS)
@@ -46,7 +46,7 @@ julia_flisp.boot.inc.phony: julia-deps
4646
$(BUILDROOT)/doc/_build/html/en/index.html: $(shell find $(BUILDROOT)/base $(BUILDROOT)/doc \( -path $(BUILDROOT)/doc/_build -o -path $(BUILDROOT)/doc/deps -o -name *_constants.jl -o -name *_h.jl -o -name version_git.jl \) -prune -o -type f -print)
4747
@$(MAKE) docs
4848

49-
julia-symlink: julia-ui-$(JULIA_BUILD_MODE)
49+
julia-symlink: julia-cli-$(JULIA_BUILD_MODE)
5050
ifeq ($(OS),WINNT)
5151
@echo '@"%~dp0"\'"$$(echo $(call rel_path,$(BUILDROOT),$(JULIA_EXECUTABLE)) | tr / '\\')" '%*' > $(BUILDROOT)/julia.bat
5252
chmod a+x $(BUILDROOT)/julia.bat
@@ -74,16 +74,16 @@ julia-libllvmcalltest: julia-deps
7474
julia-src-release julia-src-debug : julia-src-% : julia-deps julia_flisp.boot.inc.phony
7575
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/src libjulia-$*
7676

77-
julia-ui-release julia-ui-debug : julia-ui-% : julia-src-%
78-
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/ui julia-$*
77+
julia-cli-release julia-cli-debug : julia-cli-% : julia-src-%
78+
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT)/cli julia-$*
7979

80-
julia-sysimg-ji : julia-stdlib julia-base julia-ui-$(JULIA_BUILD_MODE) | $(build_private_libdir)
80+
julia-sysimg-ji : julia-stdlib julia-base julia-cli-$(JULIA_BUILD_MODE) | $(build_private_libdir)
8181
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-ji JULIA_EXECUTABLE='$(JULIA_EXECUTABLE)'
8282

83-
julia-sysimg-bc : julia-stdlib julia-base julia-ui-$(JULIA_BUILD_MODE) | $(build_private_libdir)
83+
julia-sysimg-bc : julia-stdlib julia-base julia-cli-$(JULIA_BUILD_MODE) | $(build_private_libdir)
8484
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-bc JULIA_EXECUTABLE='$(JULIA_EXECUTABLE)'
8585

86-
julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-sysimg-ji julia-ui-%
86+
julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-sysimg-ji julia-cli-%
8787
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-$*
8888

8989
julia-debug julia-release : julia-% : julia-sysimg-% julia-symlink julia-libccalltest julia-libllvmcalltest julia-base-cache
@@ -154,9 +154,9 @@ julia-base-cache: julia-sysimg-$(JULIA_BUILD_MODE) | $(DIRS) $(build_datarootdir
154154
$(call cygpath_w,$(build_datarootdir)/julia/base.cache))
155155

156156
# public libraries, that are installed in $(prefix)/lib
157-
JL_TARGETS := julia
157+
JL_TARGETS := julia julialoader
158158
ifeq ($(BUNDLE_DEBUG_LIBS),1)
159-
JL_TARGETS += julia-debug
159+
JL_TARGETS += julia-debug julialoader-debug
160160
endif
161161

162162
# private libraries, that are installed in $(prefix)/lib/julia
@@ -170,6 +170,7 @@ JL_PRIVATE_LIBS-$(USE_SYSTEM_DSFMT) += libdSFMT
170170
JL_PRIVATE_LIBS-$(USE_SYSTEM_GMP) += libgmp
171171
JL_PRIVATE_LIBS-$(USE_SYSTEM_MPFR) += libmpfr
172172
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSSH2) += libssh2
173+
JL_PRIVATE_LIBS-$(USE_SYSTEM_NGHTTP2) += libnghttp2
173174
JL_PRIVATE_LIBS-$(USE_SYSTEM_MBEDTLS) += libmbedtls libmbedcrypto libmbedx509
174175
JL_PRIVATE_LIBS-$(USE_SYSTEM_CURL) += libcurl
175176
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBGIT2) += libgit2
@@ -179,7 +180,7 @@ else
179180
JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
180181
endif
181182
ifeq ($(USE_LLVM_SHLIB),1)
182-
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-9jl
183+
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-10jl
183184
endif
184185
ifeq ($(OS),Darwin)
185186
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libosxunwind
@@ -267,7 +268,7 @@ endif
267268

268269

269270
define stringreplace
270-
$(build_depsbindir)/stringreplace $$(strings -t x - $1 | grep '$2' | awk '{print $$1;}') '$3' 255 "$(call cygpath_w,$1)"
271+
$(build_depsbindir)/stringreplace $$(strings -t x - $1 | grep $2 | awk '{print $$1;}') $3 255 "$(call cygpath_w,$1)"
271272
endef
272273

273274
# Run fixup-libgfortran on all platforms but Windows and FreeBSD. On FreeBSD we
@@ -412,8 +413,19 @@ endif
412413
if [ $(BUNDLE_DEBUG_LIBS) = 1 ]; then \
413414
$(call stringreplace,$${DEBUG_TARGET},sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT)); \
414415
fi;
416+
endif
417+
418+
ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS))
419+
# Next, overwrite relative path to libjulia in our loaders if $(LOADER_BUILD_DEP_LIBS) != $(LOADER_INSTALL_DEP_LIBS)
420+
$(call stringreplace,$(DESTDIR)$(bindir)/julia,$(LOADER_BUILD_DEP_LIBS)$$,$(LOADER_INSTALL_DEP_LIBS))
421+
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulialoader.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_BUILD_DEP_LIBS)$$,$(LOADER_INSTALL_DEP_LIBS))
415422

423+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
424+
$(call stringreplace,$(DESTDIR)$(bindir)/julia-debug,$(LOADER_DEBUG_BUILD_DEP_LIBS)$$,$(LOADER_DEBUG_INSTALL_DEP_LIBS))
425+
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulialoader-debug.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_DEBUG_BUILD_DEP_LIBS)$$,$(LOADER_DEBUG_INSTALL_DEP_LIBS))
416426
endif
427+
endif
428+
417429
# On FreeBSD, remove the build's libdir from each library's RPATH
418430
ifeq ($(OS),FreeBSD)
419431
$(JULIAHOME)/contrib/fixup-rpath.sh "$(PATCHELF)" $(DESTDIR)$(libdir) $(build_libdir)
@@ -434,6 +446,12 @@ endif
434446
ifeq ($(DARWIN_FRAMEWORK),1)
435447
$(MAKE) -C $(JULIAHOME)/contrib/mac/framework frameworknoinstall
436448
endif
449+
ifeq ($(OS),Linux)
450+
ifeq ($(prefix),$(abspath julia-$(JULIA_COMMIT)))
451+
# Only fixup libstdc++ if `prefix` is not set.
452+
-$(JULIAHOME)/contrib/fixup-libstdc++.sh $(DESTDIR)$(libdir) $(DESTDIR)$(private_libdir)
453+
endif
454+
endif
437455

438456
distclean:
439457
-rm -fr $(BUILDROOT)/julia-*.tar.gz $(BUILDROOT)/julia*.exe $(BUILDROOT)/julia-$(JULIA_COMMIT)
@@ -456,9 +474,7 @@ endif
456474
@$(MAKE) -C $(BUILDROOT) -f $(JULIAHOME)/Makefile install
457475
cp $(JULIAHOME)/LICENSE.md $(BUILDROOT)/julia-$(JULIA_COMMIT)
458476
ifeq ($(OS), Linux)
459-
-$(JULIAHOME)/contrib/fixup-libstdc++.sh $(DESTDIR)$(libdir) $(DESTDIR)$(private_libdir)
460-
461-
# Copy over any bundled ca certs we picked up from the system during buildi
477+
# Copy over any bundled ca certs we picked up from the system during build
462478
-cp $(build_datarootdir)/julia/cert.pem $(DESTDIR)$(datarootdir)/julia/
463479
endif
464480
ifeq ($(OS), WINNT)
@@ -530,7 +546,7 @@ clean: | $(CLEAN_TARGETS)
530546
@-$(MAKE) -C $(BUILDROOT)/base clean
531547
@-$(MAKE) -C $(BUILDROOT)/doc clean
532548
@-$(MAKE) -C $(BUILDROOT)/src clean
533-
@-$(MAKE) -C $(BUILDROOT)/ui clean
549+
@-$(MAKE) -C $(BUILDROOT)/cli clean
534550
@-$(MAKE) -C $(BUILDROOT)/test clean
535551
@-$(MAKE) -C $(BUILDROOT)/stdlib clean
536552
-rm -f $(BUILDROOT)/julia
@@ -554,7 +570,7 @@ distcleanall: cleanall
554570

555571
.PHONY: default debug release check-whitespace release-candidate \
556572
julia-debug julia-release julia-stdlib julia-deps julia-deps-libs \
557-
julia-ui-release julia-ui-debug julia-src-release julia-src-debug \
573+
julia-cli-release julia-cli-debug julia-src-release julia-src-debug \
558574
julia-symlink julia-base julia-sysimg julia-sysimg-ji julia-sysimg-release julia-sysimg-debug \
559575
test testall testall1 test test-* test-revise-* \
560576
clean distcleanall cleanall clean-* \

0 commit comments

Comments
 (0)