Skip to content

Commit b2175db

Browse files
committed
makefile: use sed for version script generation
This changes the `.expmap` linker script generation to treat the source file as a template and uses `sed` to replace strings in that template. It also does a bit of re-naming, changing the template source to be `julia.expmap.in` and the output to be `julia.expmap` instead of `julia.generated.expmap`
1 parent dc42556 commit b2175db

File tree

7 files changed

+21
-25
lines changed

7 files changed

+21
-25
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/source-dist.tmp
1313
/source-dist.tmp1
1414

15-
*.generated.expmap
15+
*.expmap
1616
*.exe
1717
*.dll
1818
*.dwo

Make.inc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,7 @@ ifeq (supported, $(shell echo $(IFUNC_DETECT_SRC) | $(CC) -Werror -x c - -S -o /
12831283
JCPPFLAGS += -DJULIA_HAS_IFUNC_SUPPORT=1
12841284
endif
12851285
JLDFLAGS += -Wl,-Bdynamic
1286-
OSLIBS += -Wl,--version-script=$(BUILDROOT)/src/julia.generated.expmap
1286+
OSLIBS += -Wl,--version-script=$(BUILDROOT)/src/julia.expmap
12871287
ifneq ($(SANITIZE),1)
12881288
JLDFLAGS += -Wl,-no-undefined
12891289
endif
@@ -1308,7 +1308,7 @@ OSLIBS += -lelf -lkvm -lrt -lpthread -latomic
13081308
# See #21788
13091309
OSLIBS += -lgcc_s
13101310

1311-
OSLIBS += -Wl,--export-dynamic -Wl,--version-script=$(BUILDROOT)/src/julia.generated.expmap \
1311+
OSLIBS += -Wl,--export-dynamic -Wl,--version-script=$(BUILDROOT)/src/julia.expmap \
13121312
$(NO_WHOLE_ARCHIVE)
13131313
endif
13141314

@@ -1323,7 +1323,7 @@ endif
13231323

13241324
ifeq ($(OS), WINNT)
13251325
HAVE_SSP := 1
1326-
OSLIBS += -Wl,--export-all-symbols -Wl,--version-script=$(BUILDROOT)/src/julia.generated.expmap \
1326+
OSLIBS += -Wl,--export-all-symbols -Wl,--version-script=$(BUILDROOT)/src/julia.expmap \
13271327
$(NO_WHOLE_ARCHIVE) -lpsapi -lkernel32 -lws2_32 -liphlpapi -lwinmm -ldbghelp -luserenv -lsecur32 -latomic
13281328
JLDFLAGS += -Wl,--stack,8388608
13291329
ifeq ($(ARCH),i686)

cli/Makefile

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,15 @@ libjulia-release: $(build_shlibdir)/libjulia.$(SHLIB_EXT)
105105
libjulia-debug: $(build_shlibdir)/libjulia-debug.$(SHLIB_EXT)
106106

107107
ifneq (,$(filter $(OS), Linux FreeBSD))
108-
VERSIONSCRIPT := -Wl,--version-script=$(BUILDDIR)/julia.generated.expmap
108+
VERSIONSCRIPT := -Wl,--version-script=$(BUILDDIR)/julia.expmap
109109
endif
110110

111111
ifeq ($(OS),WINNT)
112112
# On Windows we need to strip out exported functions from the generated import library.
113113
STRIP_EXPORTED_FUNCS := $(shell $(CPP_STDOUT) -I$(JULIAHOME)/src $(SRCDIR)/list_strip_symbols.h)
114114
endif
115115

116-
$(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_OBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.generated.expmap | $(build_shlibdir) $(build_libdir)
116+
$(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_OBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.expmap | $(build_shlibdir) $(build_libdir)
117117
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -DLIBRARY_EXPORTS -shared $(SHIPFLAGS) $(LIB_OBJS) -o $@ \
118118
$(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(VERSIONSCRIPT) $(call SONAME_FLAGS,libjulia.$(JL_MAJOR_SHLIB_EXT)))
119119
@$(INSTALL_NAME_CMD)libjulia.$(JL_MAJOR_SHLIB_EXT) $@
@@ -124,7 +124,7 @@ ifeq ($(OS), WINNT)
124124
@$(call PRINT_ANALYZE, $(OBJCOPY) $(build_libdir)/$(notdir $@).tmp.a $(STRIP_EXPORTED_FUNCS) $(build_libdir)/$(notdir $@).a && rm $(build_libdir)/$(notdir $@).tmp.a)
125125
endif
126126

127-
$(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_DOBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.generated.expmap | $(build_shlibdir) $(build_libdir)
127+
$(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_DOBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.expmap | $(build_shlibdir) $(build_libdir)
128128
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -DLIBRARY_EXPORTS -shared $(DEBUGFLAGS) $(LIB_DOBJS) -o $@ \
129129
$(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(VERSIONSCRIPT) $(call SONAME_FLAGS,libjulia-debug.$(JL_MAJOR_SHLIB_EXT)))
130130
@$(INSTALL_NAME_CMD)libjulia-debug.$(JL_MAJOR_SHLIB_EXT) $@
@@ -148,14 +148,12 @@ $(build_bindir)/julia$(EXE): $(EXE_OBJS) $(build_shlibdir)/libjulia.$(SHLIB_EXT)
148148
$(build_bindir)/julia-debug$(EXE): $(EXE_DOBJS) $(build_shlibdir)/libjulia-debug.$(SHLIB_EXT) | $(build_bindir)
149149
@$(call PRINT_LINK, $(CC) $(LOADER_CFLAGS) $(DEBUGFLAGS) $(EXE_DOBJS) -o $@ $(LOADER_LDFLAGS) $(RPATH) -ljulia-debug)
150150

151-
$(BUILDDIR)/julia.generated.expmap: $(SRCDIR)/julia.expmap
152-
@echo "$(DEFAULT_SYMBOL_VERSION)" > $@.tmp
153-
@cat "$<" >> $@.tmp
154-
mv $@.tmp $@
151+
$(BUILDDIR)/julia.expmap: $(SRCDIR)/julia.expmap.in
152+
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/$(DEFAULT_SYMBOL_VERSION)/'
155153

156154
clean: | $(CLEAN_TARGETS)
157155
rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.dbg.obj
158156
rm -f $(build_bindir)/julia*
159-
rm -f $(BUILDDIR)/julia.generated.expmap
157+
rm -f $(BUILDDIR)/julia.expmap
160158

161159
.PHONY: clean release debug julia-release julia-debug

cli/julia.expmap

Lines changed: 0 additions & 1 deletion
This file was deleted.

cli/julia.expmap.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@JULIA_SHLIB_SYMBOL_VERSION@ { global: *; };

src/Makefile

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,10 @@ $(FLISP_EXECUTABLE_release): $(BUILDDIR)/flisp/libflisp.a
342342
$(FLISP_EXECUTABLE_debug): $(BUILDDIR)/flisp/libflisp-debug.a
343343
$(MAKE) -C $(BUILDDIR)/flisp $(subst $(abspath $(BUILDDIR)/flisp)/,,$(abspath $(FLISP_EXECUTABLE_debug)))
344344

345-
$(BUILDDIR)/flisp/libflisp.a: $(addprefix $(SRCDIR)/flisp/,*.h *.c) $(BUILDDIR)/support/libsupport.a $(BUILDDIR)/julia.generated.expmap
345+
$(BUILDDIR)/flisp/libflisp.a: $(addprefix $(SRCDIR)/flisp/,*.h *.c) $(BUILDDIR)/support/libsupport.a $(BUILDDIR)/julia.expmap
346346
$(MAKE) -C $(SRCDIR)/flisp BUILDDIR='$(abspath $(BUILDDIR)/flisp)'
347347

348-
$(BUILDDIR)/flisp/libflisp-debug.a: $(addprefix $(SRCDIR)/,flisp/*.h flisp/*.c) $(BUILDDIR)/support/libsupport-debug.a $(BUILDDIR)/julia.generated.expmap
348+
$(BUILDDIR)/flisp/libflisp-debug.a: $(addprefix $(SRCDIR)/,flisp/*.h flisp/*.c) $(BUILDDIR)/support/libsupport-debug.a $(BUILDDIR)/julia.expmap
349349
$(MAKE) -C $(SRCDIR)/flisp debug BUILDDIR='$(abspath $(BUILDDIR)/flisp)'
350350

351351
$(BUILDDIR)/julia_version.h: $(JULIAHOME)/VERSION
@@ -363,18 +363,16 @@ $(BUILDDIR)/julia_version.h: $(JULIAHOME)/VERSION
363363

364364
CXXLD = $(CXX) -shared
365365

366-
$(BUILDDIR)/julia.generated.expmap: $(SRCDIR)/julia.expmap
367-
@echo "$(DEFAULT_SYMBOL_VERSION)" > $@.tmp
368-
@cat "$<" >> $@.tmp
369-
mv $@.tmp $@
366+
$(BUILDDIR)/julia.expmap: $(SRCDIR)/julia.expmap.in
367+
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/$(DEFAULT_SYMBOL_VERSION)/'
370368

371-
$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.generated.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
369+
$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
372370
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ \
373371
$(JLDFLAGS) $(JLIBLDFLAGS) $(RT_RELEASE_LIBS) $(call SONAME_FLAGS,libjulia-internal.$(JL_MAJOR_SHLIB_EXT)))
374372
@$(INSTALL_NAME_CMD)libjulia-internal.$(SHLIB_EXT) $@
375373
$(DSYMUTIL) $@
376374

377-
$(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.generated.expmap $(DOBJS) $(BUILDDIR)/flisp/libflisp-debug.a $(BUILDDIR)/support/libsupport-debug.a $(LIBUV)
375+
$(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(DOBJS) $(BUILDDIR)/flisp/libflisp-debug.a $(BUILDDIR)/support/libsupport-debug.a $(LIBUV)
378376
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ \
379377
$(JLDFLAGS) $(JLIBLDFLAGS) $(RT_DEBUG_LIBS) $(call SONAME_FLAGS,libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT)))
380378
@$(INSTALL_NAME_CMD)libjulia-internal-debug.$(SHLIB_EXT) $@
@@ -396,13 +394,13 @@ libjulia-internal-release: $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_
396394
libjulia-internal-debug: $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)
397395
libjulia-internal-debug libjulia-internal-release: $(PUBLIC_HEADER_TARGETS)
398396

399-
$(build_shlibdir)/libjulia-codegen.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.generated.expmap $(CODEGEN_OBJS) $(BUILDDIR)/support/libsupport.a $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT)
397+
$(build_shlibdir)/libjulia-codegen.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(CODEGEN_OBJS) $(BUILDDIR)/support/libsupport.a $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT)
400398
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(CODEGEN_OBJS) $(RPATH_LIB) -o $@ \
401399
$(JLDFLAGS) $(JLIBLDFLAGS) $(CG_RELEASE_LIBS) $(call SONAME_FLAGS,libjulia-codegen.$(JL_MAJOR_SHLIB_EXT)))
402400
@$(INSTALL_NAME_CMD)libjulia-codegen.$(SHLIB_EXT) $@
403401
$(DSYMUTIL) $@
404402

405-
$(build_shlibdir)/libjulia-codegen-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.generated.expmap $(CODEGEN_DOBJS) $(BUILDDIR)/support/libsupport-debug.a $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)
403+
$(build_shlibdir)/libjulia-codegen-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(CODEGEN_DOBJS) $(BUILDDIR)/support/libsupport-debug.a $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)
406404
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(CODEGEN_DOBJS) $(RPATH_LIB) -o $@ \
407405
$(JLDFLAGS) $(JLIBLDFLAGS) $(CG_DEBUG_LIBS) $(call SONAME_FLAGS,libjulia-codegen-debug.$(JL_MAJOR_SHLIB_EXT)))
408406
@$(INSTALL_NAME_CMD)libjulia-codegen-debug.$(SHLIB_EXT) $@
@@ -426,7 +424,7 @@ clean:
426424
-rm -fr $(build_shlibdir)/libjulia-internal* $(build_shlibdir)/libjulia-codegen* $(build_shlibdir)/libccalltest* $(build_shlibdir)/libllvmcalltest*
427425
-rm -f $(BUILDDIR)/julia_flisp.boot $(BUILDDIR)/julia_flisp.boot.inc $(BUILDDIR)/jl_internal_funcs.inc
428426
-rm -f $(BUILDDIR)/*.dbg.obj $(BUILDDIR)/*.o $(BUILDDIR)/*.dwo $(BUILDDIR)/*.$(SHLIB_EXT) $(BUILDDIR)/*.a $(BUILDDIR)/*.h.gen
429-
-rm -f $(BUILDDIR)/julia.generated.expmap
427+
-rm -f $(BUILDDIR)/julia.expmap
430428
-rm -f $(BUILDDIR)/julia_version.h
431429

432430
clean-flisp:

src/julia.expmap renamed to src/julia.expmap.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{
1+
@JULIA_SHLIB_SYMBOL_VERSION@ {
22
global:
33
pthread*;
44
__stack_chk_guard;

0 commit comments

Comments
 (0)