configure: further improvements for NetBSD and OpenBSD

Enable ELF support for `racketcs` embedding, and add `paxctl +m`
build steps for NetBSD.
This commit is contained in:
Matthew Flatt 2019-06-22 06:12:41 -06:00
parent 7706b447a5
commit 6647d832bb
9 changed files with 32 additions and 8 deletions

View File

@ -691,6 +691,7 @@ x_libraries
x_includes x_includes
DYN_CFLAGS DYN_CFLAGS
PLAIN_CC PLAIN_CC
POST_LINKER
MZLINKER MZLINKER
REZ REZ
CC_FOR_BUILD CC_FOR_BUILD
@ -3366,6 +3367,8 @@ LIBRACKET_DEP=""
EXE_SUFFIX= EXE_SUFFIX=
SO_SUFFIX=.so SO_SUFFIX=.so
POST_LINKER="echo"
MMM=3m MMM=3m
MMM_INSTALLED= MMM_INSTALLED=
MMM_CAP_INSTALLED= MMM_CAP_INSTALLED=
@ -4803,6 +4806,7 @@ case "$host_os" in
;; ;;
netbsd*) netbsd*)
LIBS="$LIBS -rdynamic" LIBS="$LIBS -rdynamic"
POST_LINKER="paxctl +m"
;; ;;
irix*) irix*)
enable_cgcdefault="yes" enable_cgcdefault="yes"
@ -6994,6 +6998,7 @@ LIBS="$LIBS $EXTRALIBS"
mk_needed_dir() mk_needed_dir()

View File

@ -200,9 +200,11 @@ EMBED_DEPS = $(srcdir)/embed-boot.rkt
racketcs@NOT_OSX@@NOT_MINGW@: raw_racketcs petite-v.boot scheme-v.boot racket-v.boot $(EMBED_DEPS) racketcs@NOT_OSX@@NOT_MINGW@: raw_racketcs petite-v.boot scheme-v.boot racket-v.boot $(EMBED_DEPS)
$(BOOTSTRAP_RACKET) $(srcdir)/embed-boot.rkt @ELF_COMP@ @BOOT_COMPRESS_COMP@ raw_racketcs racketcs petite-v.boot scheme-v.boot racket-v.boot $(BOOTSTRAP_RACKET) $(srcdir)/embed-boot.rkt @ELF_COMP@ @BOOT_COMPRESS_COMP@ raw_racketcs racketcs petite-v.boot scheme-v.boot racket-v.boot
@POST_LINKER@ racketcs
gracketcs@NOT_OSX@@NOT_MINGW@: raw_gracketcs petite-v.boot scheme-v.boot racket-v.boot $(EMBED_DEPS) gracketcs@NOT_OSX@@NOT_MINGW@: raw_gracketcs petite-v.boot scheme-v.boot racket-v.boot $(EMBED_DEPS)
$(BOOTSTRAP_RACKET) $(srcdir)/embed-boot.rkt @ELF_COMP@ @BOOT_COMPRESS_COMP@ raw_gracketcs gracketcs petite-v.boot scheme-v.boot racket-v.boot $(BOOTSTRAP_RACKET) $(srcdir)/embed-boot.rkt @ELF_COMP@ @BOOT_COMPRESS_COMP@ raw_gracketcs gracketcs petite-v.boot scheme-v.boot racket-v.boot
@POST_LINKER@ gracketcs
SCHEME_LIBS = $(SCHEME_TARGET_INC)/libkernel.a \ SCHEME_LIBS = $(SCHEME_TARGET_INC)/libkernel.a \
$(SCHEME_TARGET_INC)/../../lz4/lib/liblz4.a \ $(SCHEME_TARGET_INC)/../../lz4/lib/liblz4.a \
@ -212,9 +214,11 @@ BOOT_OBJS = boot.o $(SCHEME_LIBS) rktio/librktio.a
raw_racketcs: main.o boot.o $(BOOT_OBJS) raw_racketcs: main.o boot.o $(BOOT_OBJS)
$(CC) $(CFLAGS) -o raw_racketcs main.o $(BOOT_OBJS) $(LDFLAGS) $(LIBS) $(CC) $(CFLAGS) -o raw_racketcs main.o $(BOOT_OBJS) $(LDFLAGS) $(LIBS)
@POST_LINKER@ raw_racketcs
raw_gracketcs: grmain.o boot.o $(BOOT_OBJS) raw_gracketcs: grmain.o boot.o $(BOOT_OBJS)
$(CC) $(CFLAGS) -o raw_gracketcs grmain.o $(BOOT_OBJS) $(LDFLAGS) $(LIBS) $(CC) $(CFLAGS) -o raw_gracketcs grmain.o $(BOOT_OBJS) $(LDFLAGS) $(LIBS)
@POST_LINKER@ raw_gracketcs
petite-v.boot: $(SCHEME_TARGET_INC)/petite.boot petite-v.boot: $(SCHEME_TARGET_INC)/petite.boot
$(SCHEME) --script $(srcdir)/to-vfasl.ss @BOOT_COMPRESS_COMP@ @TT_CROSS_MODE@ $(SCHEME_TARGET_INC)/petite.boot petite-v.boot $(SCHEME) --script $(srcdir)/to-vfasl.ss @BOOT_COMPRESS_COMP@ @TT_CROSS_MODE@ $(SCHEME_TARGET_INC)/petite.boot petite-v.boot

View File

@ -656,6 +656,7 @@ RACKET
RKTL_POST RKTL_POST
RKTL_PRE RKTL_PRE
INCLUDEDEP INCLUDEDEP
POST_LINKER
RKTLINKER RKTLINKER
STRIP_LIB_DEBUG STRIP_LIB_DEBUG
STRIP_DEBUG STRIP_DEBUG
@ -2839,6 +2840,7 @@ CONFIGURE_RACKET_SO_COMPILE=""
COMPRESS_COMP="" COMPRESS_COMP=""
BOOT_COMPRESS_COMP="" BOOT_COMPRESS_COMP=""
ELF_COMP="" ELF_COMP=""
POST_LINKER="echo"
FRAMEWORK_INSTALL_DIR='$(libpltdir)' FRAMEWORK_INSTALL_DIR='$(libpltdir)'
FRAMEWORK_PREFIX='@executable_path/../lib/' FRAMEWORK_PREFIX='@executable_path/../lib/'
@ -3910,8 +3912,8 @@ case "$host_os" in
CFLAGS="${CFLAGS} -I/usr/local/include" CFLAGS="${CFLAGS} -I/usr/local/include"
LIBS="${LIBS} -L/usr/local/lib -liconv -lm -lpthread -lossp-uuid" LIBS="${LIBS} -L/usr/local/lib -liconv -lm -lpthread -lossp-uuid"
LDFLAGS="${LDFLAGS} -Wl,-zwxneeded" LDFLAGS="${LDFLAGS} -Wl,-zwxneeded"
# Can't strip until ELF lookup added to startup CPPFLAGS="${CPPFLAGS} -DELF_FIND_BOOT_SECTION"
enable_strip=no ELF_COMP="--expect-elf"
;; ;;
bitrig*) bitrig*)
;; ;;
@ -3920,8 +3922,9 @@ case "$host_os" in
netbsd*) netbsd*)
MACH_OS=nb MACH_OS=nb
LIBS="${LIBS} /usr/lib/i18n/libiconv_std.a -lm -lpthread" LIBS="${LIBS} /usr/lib/i18n/libiconv_std.a -lm -lpthread"
# Can't strip until ELF lookup added to startup CPPFLAGS="${CPPFLAGS} -DELF_FIND_BOOT_SECTION"
enable_strip=no ELF_COMP="--expect-elf"
POST_LINKER="paxctl +m"
;; ;;
irix*) irix*)
;; ;;
@ -5044,6 +5047,7 @@ CPPFLAGS="$CPPFLAGS $PREFLAGS"
makefiles="Makefile" makefiles="Makefile"

View File

@ -125,6 +125,7 @@ CONFIGURE_RACKET_SO_COMPILE=""
COMPRESS_COMP="" COMPRESS_COMP=""
BOOT_COMPRESS_COMP="" BOOT_COMPRESS_COMP=""
ELF_COMP="" ELF_COMP=""
POST_LINKER="echo"
FRAMEWORK_INSTALL_DIR='$(libpltdir)' FRAMEWORK_INSTALL_DIR='$(libpltdir)'
FRAMEWORK_PREFIX='@executable_path/../lib/' FRAMEWORK_PREFIX='@executable_path/../lib/'
@ -191,8 +192,8 @@ case "$host_os" in
CFLAGS="${CFLAGS} -I/usr/local/include" CFLAGS="${CFLAGS} -I/usr/local/include"
LIBS="${LIBS} -L/usr/local/lib -liconv -lm -lpthread -lossp-uuid" LIBS="${LIBS} -L/usr/local/lib -liconv -lm -lpthread -lossp-uuid"
LDFLAGS="${LDFLAGS} -Wl,-zwxneeded" LDFLAGS="${LDFLAGS} -Wl,-zwxneeded"
# Can't strip until ELF lookup added to startup CPPFLAGS="${CPPFLAGS} -DELF_FIND_BOOT_SECTION"
enable_strip=no ELF_COMP="--expect-elf"
;; ;;
bitrig*) bitrig*)
;; ;;
@ -201,8 +202,9 @@ case "$host_os" in
netbsd*) netbsd*)
MACH_OS=nb MACH_OS=nb
LIBS="${LIBS} /usr/lib/i18n/libiconv_std.a -lm -lpthread" LIBS="${LIBS} /usr/lib/i18n/libiconv_std.a -lm -lpthread"
# Can't strip until ELF lookup added to startup CPPFLAGS="${CPPFLAGS} -DELF_FIND_BOOT_SECTION"
enable_strip=no ELF_COMP="--expect-elf"
POST_LINKER="paxctl +m"
;; ;;
irix*) irix*)
;; ;;
@ -629,6 +631,7 @@ AC_SUBST(ICP)
AC_SUBST(STRIP_DEBUG) AC_SUBST(STRIP_DEBUG)
AC_SUBST(STRIP_LIB_DEBUG) AC_SUBST(STRIP_LIB_DEBUG)
AC_SUBST(RKTLINKER) AC_SUBST(RKTLINKER)
AC_SUBST(POST_LINKER)
AC_SUBST(INCLUDEDEP) AC_SUBST(INCLUDEDEP)
AC_SUBST(RKTL_PRE) AC_SUBST(RKTL_PRE)
AC_SUBST(RKTL_POST) AC_SUBST(RKTL_POST)

View File

@ -110,6 +110,7 @@ both:
gracket@CGC@ : $(RACKETDEPS) grmain.@LTO@ $(GRACKETOBJECTS) $(MRSTATIC_STUB) $(GRACKETRESDEP) gracket@CGC@ : $(RACKETDEPS) grmain.@LTO@ $(GRACKETOBJECTS) $(MRSTATIC_STUB) $(GRACKETRESDEP)
$(GRACKETLINKER) $(GRACKETLDFLAGS) $(MRSTATIC) -o gracket@CGC@ $(GRACKETOBJECTS) $(GRACKETRES) $(GRACKETLDLIBS) $(MRSTATIC_STUB) $(GRACKETLINKER) $(GRACKETLDFLAGS) $(MRSTATIC) -o gracket@CGC@ $(GRACKETOBJECTS) $(GRACKETRES) $(GRACKETLDLIBS) $(MRSTATIC_STUB)
@POST_LINKER@ gracket@CGC@
gres.o : $(srcdir)/../worksp/gracket/gracket.rc gres.o : $(srcdir)/../worksp/gracket/gracket.rc
@WINDRES@ -i $(srcdir)/../worksp/gracket/gracket.rc -o gres.o @WINDRES@ -i $(srcdir)/../worksp/gracket/gracket.rc -o gres.o

View File

@ -104,6 +104,7 @@ GRACKETMZOBJS_la =
../gracket@MMM@@NOT_OSX@@NOT_MINGW@: grmain.@LTO@ ../../racket/libracket3m.@LIBSFX@ $(LIBRKTIO_@LIBSFX@) ../gracket@MMM@@NOT_OSX@@NOT_MINGW@: grmain.@LTO@ ../../racket/libracket3m.@LIBSFX@ $(LIBRKTIO_@LIBSFX@)
$(GRACKETLINKER) $(GRACKETLDFLAGS) -o ../gracket@MMM@ grmain.@LTO@ ../../racket/libracket3m.@LIBSFX@ $(GRACKETMZOBJS_@LIBSFX@) $(GRACKETLIBS_@LIBSFX@) $(GRACKETLINKER) $(GRACKETLDFLAGS) -o ../gracket@MMM@ grmain.@LTO@ ../../racket/libracket3m.@LIBSFX@ $(GRACKETMZOBJS_@LIBSFX@) $(GRACKETLIBS_@LIBSFX@)
@POST_LINKER@ ../gracket@MMM@
../gracket@MMM@@EXE_SUFFIX@@MINGW@: grmain.@LTO@ ../../racket/MemoryModule.@LTO@ ../../racket/gc2/libracket3m.dll.a ../gres.o ../gracket@MMM@@EXE_SUFFIX@@MINGW@: grmain.@LTO@ ../../racket/MemoryModule.@LTO@ ../../racket/gc2/libracket3m.dll.a ../gres.o
$(GRACKETLINKER) -mwindows $(GRACKETLDFLAGS) -o ../gracket@MMM@@EXE_SUFFIX@ grmain.@LTO@ ../../racket/MemoryModule.@LTO@ ../gres.o ../../racket/gc2/libracket3m.dll.a $(GRACKETMZOBJS_@LIBSFX@) $(GRACKETLIBS_@LIBSFX@) -l delayimp -static-libgcc $(GRACKETLINKER) -mwindows $(GRACKETLDFLAGS) -o ../gracket@MMM@@EXE_SUFFIX@ grmain.@LTO@ ../../racket/MemoryModule.@LTO@ ../gres.o ../../racket/gc2/libracket3m.dll.a $(GRACKETMZOBJS_@LIBSFX@) $(GRACKETLIBS_@LIBSFX@) -l delayimp -static-libgcc

View File

@ -203,6 +203,7 @@ sproc.@LTO@: @GCDIR@/sproc.@LTO@
racket@CGC@@NOT_OSX@@NOT_MINGW@: libracket.@LIBSFX@ libmzgc.@LIBSFX@ main.@LTO@ $(LIBRKTIO_FOR_LIB) $(SPECIALIZINGOBJECTS) racket@CGC@@NOT_OSX@@NOT_MINGW@: libracket.@LIBSFX@ libmzgc.@LIBSFX@ main.@LTO@ $(LIBRKTIO_FOR_LIB) $(SPECIALIZINGOBJECTS)
@MZLINKER@ -o racket@CGC@ main.@LTO@ $(SPECIALIZINGOBJECTS) libracket.@LIBSFX@ libmzgc.@LIBSFX@ $(LIBRKTIO_FOR_LIB) @LDFLAGS@ @LIBS@ @MZLINKER@ -o racket@CGC@ main.@LTO@ $(SPECIALIZINGOBJECTS) libracket.@LIBSFX@ libmzgc.@LIBSFX@ $(LIBRKTIO_FOR_LIB) @LDFLAGS@ @LIBS@
@POST_LINKER@ racket@CGC@
mzcom@CGC@@NOT_MINGW@: mzcom@CGC@@NOT_MINGW@:
$(NOOP) $(NOOP)

View File

@ -284,6 +284,8 @@ LIBRACKET_DEP=""
EXE_SUFFIX= EXE_SUFFIX=
SO_SUFFIX=.so SO_SUFFIX=.so
POST_LINKER="echo"
MMM=3m MMM=3m
MMM_INSTALLED= MMM_INSTALLED=
MMM_CAP_INSTALLED= MMM_CAP_INSTALLED=
@ -574,6 +576,7 @@ case "$host_os" in
;; ;;
netbsd*) netbsd*)
LIBS="$LIBS -rdynamic" LIBS="$LIBS -rdynamic"
POST_LINKER="paxctl +m"
;; ;;
irix*) irix*)
enable_cgcdefault="yes" enable_cgcdefault="yes"
@ -1437,6 +1440,7 @@ AC_SUBST(STRIP_LIB_DEBUG)
AC_SUBST(CC_FOR_BUILD) AC_SUBST(CC_FOR_BUILD)
AC_SUBST(REZ) AC_SUBST(REZ)
AC_SUBST(MZLINKER) AC_SUBST(MZLINKER)
AC_SUBST(POST_LINKER)
AC_SUBST(PLAIN_CC) AC_SUBST(PLAIN_CC)
AC_SUBST(DYN_CFLAGS) AC_SUBST(DYN_CFLAGS)

View File

@ -587,6 +587,7 @@ EXTRA_OBJS_L = $(EXTRA_GMP) ../src/unwind.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) $(L
../racket@MMM@@NOT_OSX@@NOT_MINGW@: main.@LTO@ ../libracket3m.@LIBSFX@ $(LIBRKTIO_FOR_LIB) ../racket@MMM@@NOT_OSX@@NOT_MINGW@: main.@LTO@ ../libracket3m.@LIBSFX@ $(LIBRKTIO_FOR_LIB)
cd ..; @MZLINKER@ -o racket@MMM@ @PROFFLAGS@ gc2/main.@LTO@ libracket3m.@LIBSFX@ $(LIBRKTIO_UP_FOR_LIB) @LDFLAGS@ $(LIBS) cd ..; @MZLINKER@ -o racket@MMM@ @PROFFLAGS@ gc2/main.@LTO@ libracket3m.@LIBSFX@ $(LIBRKTIO_UP_FOR_LIB) @LDFLAGS@ $(LIBS)
@POST_LINKER@ ../racket@MMM@
# The above "cd .." prevents a problem with libtool's generated script in --enable-shared mode, # The above "cd .." prevents a problem with libtool's generated script in --enable-shared mode,
# at least for Mac OS X. Beware of changing LIBS or LDFLAGS to inclucde something with a relative # at least for Mac OS X. Beware of changing LIBS or LDFLAGS to inclucde something with a relative