From 250f3793039f349128097bd459b13f61f45455db Mon Sep 17 00:00:00 2001 From: shym Date: Thu, 4 Jul 2024 18:01:17 +0200 Subject: [PATCH 01/17] Fix two small issues with preprocessor directives (#13281) * Add missing `defined` in preprocessor test When `HAS_CLOCK_GETTIME_NSEC_NP` is not defined, `#elif HAS_CLOCK_GETTIME_NSEC_NP` triggers a warning * Include `caml/config.h` before `HAS_GETTIMEOFDAY` is tested Also remove a duplicate `errno.h` --- runtime/unix.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/runtime/unix.c b/runtime/unix.c index b5fd4de17b9c..c0677e09ace0 100644 --- a/runtime/unix.c +++ b/runtime/unix.c @@ -27,13 +27,12 @@ #include #include #include +#include "caml/config.h" #ifdef HAS_GETTIMEOFDAY #include #endif #include #include -#include -#include "caml/config.h" #if defined(SUPPORT_DYNAMIC_LINKING) && !defined(BUILDING_LIBCAMLRUNS) #define WITH_DYNAMIC_LINKING #ifdef __CYGWIN__ @@ -47,7 +46,7 @@ #endif #ifdef HAS_POSIX_MONOTONIC_CLOCK #include -#elif HAS_CLOCK_GETTIME_NSEC_NP +#elif defined(HAS_CLOCK_GETTIME_NSEC_NP) #include #endif #ifdef HAS_DIRENT From 689fba403ebf8cc394efb74a3a83d511dafbfc31 Mon Sep 17 00:00:00 2001 From: shym Date: Wed, 17 Jul 2024 19:44:20 +0200 Subject: [PATCH 02/17] Add a missing `$(EXE)` extension (#13312) The extension was unintentionally overwritten in cherry-pick commit 46c7122888c5f57b45d75098ca95f159a14420b8 --- otherlibs/Makefile.otherlibs.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otherlibs/Makefile.otherlibs.common b/otherlibs/Makefile.otherlibs.common index 53667c795488..31bbb9a52ee6 100644 --- a/otherlibs/Makefile.otherlibs.common +++ b/otherlibs/Makefile.otherlibs.common @@ -34,7 +34,7 @@ COMPFLAGS=-absname -w +a-4-9-41-42-44-45-48 -warn-error +A -bin-annot -g \ ifeq "$(FLAMBDA)" "true" OPTCOMPFLAGS += -O3 endif -MKLIB=$(OCAMLRUN) $(ROOTDIR)/tools/ocamlmklib +MKLIB=$(OCAMLRUN) $(ROOTDIR)/tools/ocamlmklib$(EXE) # Variables that must be defined by individual libraries: # LIBNAME From ee6896e761b756a3d2ee78026cbf9642bcfefb56 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 5 Jul 2024 12:42:36 +0200 Subject: [PATCH 03/17] Use the `strip` command detected by libtool Instead of using `strip` unconditionally to build `tmpheader.exe`, use the `strip` command detected by `libtool` during configure so that it is replaced with `:` when the command is absent and it becomes easy to override it if need be --- Makefile.config.in | 1 + stdlib/Makefile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.config.in b/Makefile.config.in index 559738f6ed05..a72c1ce061fe 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -181,6 +181,7 @@ OCAMLOPT_CFLAGS=@ocamlc_cflags@ OCAMLOPT_CPPFLAGS=@ocamlc_cppflags@ NATIVECCLIBS=@cclibs@ SYSTHREAD_SUPPORT=@systhread_support@ +STRIP=@STRIP@ PACKLD=@PACKLD@$(EMPTY) CCOMPTYPE=@ccomptype@ TOOLCHAIN=@toolchain@ diff --git a/stdlib/Makefile b/stdlib/Makefile index 50f825a1b322..b6286920f26d 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -98,7 +98,7 @@ tmpheader.exe: $(HEADERPROGRAM).$(O) $(V_MKEXE)$(call MKEXE_VIA_CC,$@,$^) # FIXME This is wrong - mingw could invoke strip; MSVC equivalent? ifneq "$(UNIX_OR_WIN32)" "win32" - strip $@ + $(STRIP) $@ endif stdlib.cma: $(OBJS) From 4efcf06b4a44abdabe2d02cad86b3d172f64eadc Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 5 Jul 2024 12:58:58 +0200 Subject: [PATCH 04/17] Strip tmpheader.exe also on Windows GNU strip can be called safely on binaries generated by cl as well as by MinGW GCC (even if it doesn't produce a smaller executable for cl-generated binaries) so invoke strip also on Windows so that MinGW binaries are properly stripped Tested with GNU strip 2.42 --- stdlib/Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/stdlib/Makefile b/stdlib/Makefile index b6286920f26d..a7f2e60a7aa0 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -96,10 +96,7 @@ endif .INTERMEDIATE: tmpheader.exe tmpheader.exe: $(HEADERPROGRAM).$(O) $(V_MKEXE)$(call MKEXE_VIA_CC,$@,$^) -# FIXME This is wrong - mingw could invoke strip; MSVC equivalent? -ifneq "$(UNIX_OR_WIN32)" "win32" $(STRIP) $@ -endif stdlib.cma: $(OBJS) $(V_LINKC)$(CAMLC) -a -o $@ $^ From 029977be1fa733b047fdbb08b5bbdabff438598f Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Thu, 22 Feb 2024 13:37:28 +0100 Subject: [PATCH 05/17] Use `target` instead of `host` to detect the C toolchain Recall that the only currently officially supported configurations are when `build` ~ `host` = `target`, where '~' means that the code generated for `host` runs on `build` even when they differ (such as when `build` is `x86_64-pc-cygwin` and `host` is `x86_64-pc-windows` (MSVC) or `x86_64-w64-mingw32`). Even though this is not officially supported yet, many projects (such as Mirage and the opam-cross-* repositories) use OCaml cross compilers. All those projects generate a cross compiler by assuming a non-cross OCaml compiler is available in `PATH` (where non-cross means generating code that will run on `host`). For that they need a C compiler and binutils for `target` in order to build the runtime. (Note that the non-cross compiler will link its own (`build`/`host`) runtime into the generated `.opt` cross compilers rather than the just-compiled target runtime.) Indeed, in that setup the runtime will run (only) on the `target` so: - set `cross_compiling` by comparing `build` to `target` (rather than to `host`), as this variable will be used later - use `target` to set up the tool prefix, - as the libtool configuration will configure a `build` to `host` toolchain, temporarily assign `host*` values to `target*` values. Note that all these changes are transparent when `host` = `target`. --- configure | 264 +++++++++++++++++++++++++++------------------------ configure.ac | 23 +++++ 2 files changed, 164 insertions(+), 123 deletions(-) diff --git a/configure b/configure index 6dc7cc751737..18ff3ed69ef1 100755 --- a/configure +++ b/configure @@ -3660,6 +3660,19 @@ test -n "$target_alias" && NONENONEs,x,x, && program_prefix=${target_alias}- +# Override cross_compiling and ac_tool_prefix variables since the C toolchain is +# used to generate target code when building a cross compiler +if test x"$build" = x"$target" +then : + cross_compiling=no +else $as_nop + cross_compiling=yes +fi +if test -n "$target_alias" +then : + ac_tool_prefix=$target_alias- +fi + # Ensure that AC_CONFIG_LINKS will either create symlinks which are compatible # with native Windows (i.e. NTFS symlinks, not WSL or Cygwin-emulated ones) or # use its fallback mechanisms. Native Windows versions of ocamlc/ocamlopt cannot @@ -4283,14 +4296,19 @@ esac fi fi +# libtool will detect a build-to-host C toolchain but when building an OCaml +# cross compiler we need the C toolchain to build the target runtime so we +# temporarily define host* values as macros for target* values so that the +# proper toolchain is configured. Note that host=target unless we are building a +# cross compiler so this is transparent for the usual use case. # libtool expects host_os=mingw for native Windows # Also, it has been observed that, on some platforms (e.g. msvc) LT_INIT # alters the CFLAGS variable, so we save its value before calling the macro # and restore it after the call -old_host_os=$host_os -if test x"$host_os" = "xwindows" +old_host_os=$target_os +if test x"$target_os" = "xwindows" then : - host_os=mingw + target_os=mingw fi saved_CFLAGS="$CFLAGS" @@ -4495,8 +4513,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4715,8 +4733,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4817,8 +4835,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5052,7 +5070,7 @@ printf "%s\n" "$ac_try_echo"; } >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. +If you meant to cross compile, use \`--target'. See \`config.log' for more details" "$LINENO" 5; } fi fi @@ -5720,7 +5738,7 @@ if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } - case $host in + case $target in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; @@ -5832,7 +5850,7 @@ else $as_nop lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + if test -n "$ac_tool_prefix" && test "$build" = "$target"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do @@ -5987,8 +6005,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN @@ -6232,13 +6250,13 @@ esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -printf %s "checking how to convert $build file names to $host format... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $target format" >&5 +printf %s "checking how to convert $build file names to $target format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop - case $host in + case $target in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys @@ -6288,7 +6306,7 @@ then : else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in +case $target in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys @@ -6324,7 +6342,7 @@ case $reload_flag in *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in +case $target_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false @@ -6439,8 +6457,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -6479,7 +6497,7 @@ lt_cv_deplibs_check_method='unknown' # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. -case $host_os in +case $target_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; @@ -6526,7 +6544,7 @@ darwin* | rhapsody*) freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in + case $target_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. @@ -6546,7 +6564,7 @@ haiku*) hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in + case $target_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so @@ -6625,7 +6643,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ;; sysv4 | sysv4.3*) - case $host_vendor in + case $target_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` @@ -6665,8 +6683,8 @@ printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in +if test "$build" = "$target"; then + case $target_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes @@ -6794,8 +6812,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -6823,7 +6841,7 @@ then : else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' -case $host_os in +case $target_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL @@ -6957,8 +6975,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -7130,8 +7148,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -7239,8 +7257,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -7262,7 +7280,7 @@ old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then - case $host_os in + case $target_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; @@ -7273,7 +7291,7 @@ if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi -case $host_os in +case $target_os in darwin*) lock_old_archive_extraction=yes ;; *) @@ -7393,7 +7411,7 @@ symcode='[BCDEGRST]' sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. -case $host_os in +case $target_os in aix*) symcode='[BCDT]' ;; @@ -7401,7 +7419,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then symcode='[ABCDEGRST]' fi ;; @@ -7816,7 +7834,7 @@ func_cc_basename () *) break;; esac done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$target_alias-%%"` } # Check whether --enable-libtool-lock was given. @@ -7829,7 +7847,7 @@ test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. -case $host in +case $target in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. @@ -7940,7 +7958,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) - case $host in + case $target in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; @@ -7969,7 +7987,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) esac ;; *64-bit*) - case $host in + case $target in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; @@ -8057,7 +8075,7 @@ printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } *64-bit*) case $lt_cv_prog_gnu_ld in yes*) - case $host in + case $target in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; @@ -8177,8 +8195,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL @@ -8214,7 +8232,7 @@ fi - case $host_os in + case $target_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. @@ -8308,8 +8326,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -8410,8 +8428,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -8512,8 +8530,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -8614,8 +8632,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -8716,8 +8734,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with target triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with target triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -8859,7 +8877,7 @@ _LT_EOF fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } - case $host_os in + case $target_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) @@ -8868,7 +8886,7 @@ printf "%s\n" "$lt_cv_ld_force_load" >&6; } # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$target in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) @@ -9107,7 +9125,7 @@ fi shared_archive_member_spec= -case $host,$enable_shared in +case $target,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } @@ -9246,7 +9264,7 @@ printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h -case $host_os in +case $target_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems @@ -9558,10 +9576,10 @@ lt_prog_compiler_static= lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' - case $host_os in + case $target_os in aix*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi @@ -9569,7 +9587,7 @@ lt_prog_compiler_static= ;; amigaos*) - case $host_cpu in + case $target_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' @@ -9593,7 +9611,7 @@ lt_prog_compiler_static= # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in + case $target_os in os2*) lt_prog_compiler_static='$wl-static' ;; @@ -9616,7 +9634,7 @@ lt_prog_compiler_static= # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. - case $host_cpu in + case $target_cpu in hppa*64*) # +Z the default ;; @@ -9665,10 +9683,10 @@ lt_prog_compiler_static= esac else # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in + case $target_os in aix*) lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -9694,7 +9712,7 @@ lt_prog_compiler_static= # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in + case $target_os in os2*) lt_prog_compiler_static='$wl-static' ;; @@ -9705,7 +9723,7 @@ lt_prog_compiler_static= lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case $host_cpu in + case $target_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -9881,7 +9899,7 @@ lt_prog_compiler_static= esac fi -case $host_os in +case $target_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= @@ -10196,7 +10214,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= - case $host_os in + case $target_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using @@ -10223,7 +10241,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then - case $host_os in + case $target_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld @@ -10271,10 +10289,10 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries esac # See if GNU ld supports shared libraries. - case $host_os in + case $target_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then + if test ia64 != "$target_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -10290,7 +10308,7 @@ _LT_EOF ;; amigaos*) - case $host_cpu in + case $target_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' @@ -10392,7 +10410,7 @@ _LT_EOF gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test linux-dietlibc = "$host_os"; then + if test linux-dietlibc = "$target_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac @@ -10402,7 +10420,7 @@ _LT_EOF then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in + case $cc_basename,$target_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' @@ -10556,7 +10574,7 @@ _LT_EOF fi else # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in + case $target_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes @@ -10572,7 +10590,7 @@ _LT_EOF ;; aix[4-9]*) - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no @@ -10609,7 +10627,7 @@ _LT_EOF # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + case $target_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes @@ -10652,7 +10670,7 @@ _LT_EOF esac if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) + case $target_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` @@ -10684,7 +10702,7 @@ _LT_EOF shared_flag_svr4='-shared $wl-G' else # not using gcc - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' @@ -10757,7 +10775,7 @@ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" @@ -10841,7 +10859,7 @@ fi ;; amigaos*) - case $host_cpu in + case $target_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' @@ -11026,7 +11044,7 @@ fi hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in + case $target_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; @@ -11038,7 +11056,7 @@ fi ;; esac else - case $host_cpu in + case $target_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; @@ -11094,7 +11112,7 @@ fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: - case $host_cpu in + case $target_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no @@ -11119,8 +11137,8 @@ fi # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $target_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $target_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 @@ -11293,7 +11311,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no - case $host_os in + case $target_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, @@ -11311,7 +11329,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } ;; sunos4*) - if test sequent = "$host_vendor"; then + if test sequent = "$target_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' @@ -11325,7 +11343,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } ;; sysv4) - case $host_vendor in + case $target_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? @@ -11414,8 +11432,8 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } ;; esac - if test sni = "$host_vendor"; then - case $host in + if test sni = "$target_vendor"; then + case $target in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; @@ -11668,11 +11686,11 @@ esac printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then - case $host_os in + case $target_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac - case $host_os in + case $target_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac @@ -11730,7 +11748,7 @@ BEGIN {RS = " "; FS = "/|\n";} { }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. - case $host_os in + case $target_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac @@ -11749,7 +11767,7 @@ finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none -dynamic_linker="$host_os ld.so" +dynamic_linker="$target_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no @@ -11760,7 +11778,7 @@ need_version=unknown -case $host_os in +case $target_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' @@ -11775,7 +11793,7 @@ aix[4-9]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + if test ia64 = "$target_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH @@ -11785,7 +11803,7 @@ aix[4-9]*) # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. - case $host_os in + case $target_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' @@ -11865,7 +11883,7 @@ aix[4-9]*) ;; amigaos*) - case $host_cpu in + case $target_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. @@ -11881,7 +11899,7 @@ amigaos*) beos*) library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" + dynamic_linker="$target_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -11924,7 +11942,7 @@ cygwin* | mingw* | pw32* | cegcc*) $RM \$dlpath' shlibpath_overrides_runpath=yes - case $host_os in + case $target_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' @@ -12010,7 +12028,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; darwin* | rhapsody*) - dynamic_linker="$host_os dyld" + dynamic_linker="$target_os dyld" version_type=darwin need_lib_prefix=no need_version=no @@ -12039,7 +12057,7 @@ freebsd* | dragonfly*) if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else - case $host_os in + case $target_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac @@ -12058,7 +12076,7 @@ freebsd* | dragonfly*) ;; esac shlibpath_var=LD_LIBRARY_PATH - case $host_os in + case $target_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; @@ -12082,7 +12100,7 @@ haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - dynamic_linker="$host_os runtime_loader" + dynamic_linker="$target_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH @@ -12097,11 +12115,11 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case $host_cpu in + case $target_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" + dynamic_linker="$target_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' @@ -12117,7 +12135,7 @@ hpux9* | hpux10* | hpux11*) hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" + dynamic_linker="$target_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' @@ -12127,7 +12145,7 @@ hpux9* | hpux10* | hpux11*) ;; *) shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" + dynamic_linker="$target_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' @@ -12153,7 +12171,7 @@ interix[3-9]*) ;; irix5* | irix6* | nonstopux*) - case $host_os in + case $target_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then @@ -12166,7 +12184,7 @@ irix5* | irix6* | nonstopux*) need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in + case $target_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; @@ -12426,7 +12444,7 @@ sysv4 | sysv4.3*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in + case $target_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no @@ -12466,7 +12484,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in + case $target_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; @@ -12670,7 +12688,7 @@ else lt_cv_dlopen=no lt_cv_dlopen_libs= - case $host_os in + case $target_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= @@ -13205,7 +13223,7 @@ if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough - case $host_os in + case $target_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" @@ -13247,7 +13265,7 @@ printf %s "checking whether to build shared libraries... " >&6; } # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. - case $host_os in + case $target_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then @@ -13257,7 +13275,7 @@ printf %s "checking whether to build shared libraries... " >&6; } ;; aix[4-9]*) - if test ia64 != "$host_cpu"; then + if test ia64 != "$target_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only @@ -13311,7 +13329,7 @@ CC=$lt_save_CC CFLAGS="$saved_CFLAGS" -host_os=$old_host_os +target_os=$old_host_os case $host in #( sparc-sun-solaris*) : diff --git a/configure.ac b/configure.ac index 0c9d63859a96..6fc37fe7a562 100644 --- a/configure.ac +++ b/configure.ac @@ -288,6 +288,14 @@ AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_CANONICAL_TARGET +# Override cross_compiling and ac_tool_prefix variables since the C toolchain is +# used to generate target code when building a cross compiler +AS_IF([test x"$build" = x"$target"], + [cross_compiling=no], + [cross_compiling=yes]) +AS_IF([test -n "$target_alias"], + [ac_tool_prefix=$target_alias-]) + # Ensure that AC_CONFIG_LINKS will either create symlinks which are compatible # with native Windows (i.e. NTFS symlinks, not WSL or Cygwin-emulated ones) or # use its fallback mechanisms. Native Windows versions of ocamlc/ocamlopt cannot @@ -590,6 +598,16 @@ AS_IF([test x"$enable_ocamldoc" = "xno"], # Allow the MSVC linker to be found even if ld isn't installed. # User-specified LD still takes precedence. AC_CHECK_TOOLS([LD],[ld link]) +# libtool will detect a build-to-host C toolchain but when building an OCaml +# cross compiler we need the C toolchain to build the target runtime so we +# temporarily define host* values as macros for target* values so that the +# proper toolchain is configured. Note that host=target unless we are building a +# cross compiler so this is transparent for the usual use case. +pushdef([host], target)dnl +pushdef([host_alias], target_alias)dnl +pushdef([host_cpu], target_cpu)dnl +pushdef([host_vendor], target_vendor)dnl +pushdef([host_os], target_os)dnl # libtool expects host_os=mingw for native Windows # Also, it has been observed that, on some platforms (e.g. msvc) LT_INIT # alters the CFLAGS variable, so we save its value before calling the macro @@ -600,6 +618,11 @@ saved_CFLAGS="$CFLAGS" LT_INIT CFLAGS="$saved_CFLAGS" host_os=$old_host_os +popdef([host_os])dnl +popdef([host_vendor])dnl +popdef([host_cpu])dnl +popdef([host_alias])dnl +popdef([host])dnl AS_CASE([$host], [sparc-sun-solaris*], From 8686ce89c874390ef6b830b85bbcd31bfb4647b6 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Tue, 9 Jul 2024 19:17:14 +0200 Subject: [PATCH 06/17] Use `target` instead of `host` when relevant in configuration As the C toolchain used being configured is generating code for `target`, use `target` in every test that is done according to the toolchain. Note that all these changes are transparent when `host` = `target`. --- aclocal.m4 | 12 ++-- configure | 198 +++++++++++++++++++++++---------------------------- configure.ac | 115 +++++++++++++++--------------- 3 files changed, 155 insertions(+), 170 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index cb73385dda20..32683d48b76d 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -414,27 +414,27 @@ EOF OCAML_CC_RESTORE_VARIABLES ]) -AC_DEFUN([OCAML_HOST_IS_EXECUTABLE], [ - AC_MSG_CHECKING([whether host executables can be run in the build]) +AC_DEFUN([OCAML_TARGET_IS_EXECUTABLE], [ + AC_MSG_CHECKING([whether target executables can be run in the build]) old_cross_compiling="$cross_compiling" cross_compiling='no' AC_RUN_IFELSE( [AC_LANG_SOURCE([[int main (void) {return 0;}]])], [AC_MSG_RESULT([yes]) - host_runnable=true], + target_runnable=true], [AC_MSG_RESULT([no]) - host_runnable=false], + target_runnable=false], # autoconf displays a warning if this parameter is missing, but # cross-compilation mode was disabled above. [assert=false]) cross_compiling="$old_cross_compiling" ]) -# This is AC_RUN_IFELSE but taking $host_runnable into account (i.e. if the +# This is AC_RUN_IFELSE but taking $target_runnable into account (i.e. if the # program can be run, then it is run) AC_DEFUN([OCAML_RUN_IFELSE], [ old_cross_compiling="$cross_compiling" - AS_IF([test "x$host_runnable" = 'xtrue'], [cross_compiling='no']) + AS_IF([test "x$target_runnable" = 'xtrue'], [cross_compiling='no']) AC_RUN_IFELSE([$1],[$2],[$3],[$4]) cross_compiling="$old_cross_compiling" ]) diff --git a/configure b/configure index 18ff3ed69ef1..068ce7e87313 100755 --- a/configure +++ b/configure @@ -3687,7 +3687,7 @@ esac # Systems that are known not to work, even in bytecode only. -case $host in #( +case $target in #( *-pc-windows) : as_fn_error 69 "the MSVC compiler is not supported currently" "$LINENO" 5 ;; #( i386-*-solaris*) : @@ -3700,7 +3700,7 @@ esac # MSVC special case -case $host in #( +case $target in #( *-pc-windows) : CC=cl ccomptype=msvc @@ -4186,11 +4186,10 @@ fi # Initialization of libtool # Allow the MSVC linker to be found even if ld isn't installed. # User-specified LD still takes precedence. -if test -n "$ac_tool_prefix"; then - for ac_prog in ld link - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +for ac_prog in ld link +do + # Extract the first word of "$target_alias-$ac_prog", so it can be a program name with args. +set dummy $target_alias-$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LD+y} @@ -4211,7 +4210,7 @@ do esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_LD="$ac_tool_prefix$ac_prog" + ac_cv_prog_LD="$target_alias-$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -4231,12 +4230,12 @@ printf "%s\n" "no" >&6; } fi - test -n "$LD" && break - done -fi + test -n "$LD" && break +done if test -z "$LD"; then - ac_ct_LD=$LD - for ac_prog in ld link + if test "$build" = "$target"; then + ac_ct_LD=$LD + for ac_prog in ld link do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4283,16 +4282,9 @@ fi test -n "$ac_ct_LD" && break done - if test "x$ac_ct_LD" = x; then - LD="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac LD=$ac_ct_LD + else + LD="" fi fi @@ -13473,7 +13465,7 @@ else $as_nop fi ;; esac -case $host in #( +case $target in #( # In config/Makefile.mingw*, we had: # TARGET=i686-w64-mingw32 and x86_64-w64-mingw32 # TOOLPREF=$(TARGET)- @@ -13485,7 +13477,7 @@ case $host in #( mkexe_via_cc_extra_cmd=' && $(call MERGEMANIFESTEXE,$(1))' libext=lib AR="" - if test "$host_cpu" = "x86_64" + if test "$target_cpu" = "x86_64" then : machine="-machine:AMD64 " else $as_nop @@ -13696,8 +13688,8 @@ printf "%s\n" "$ocaml_cc_vendor" >&6; } ## In cross-compilation mode, can we run executables produced? # At the moment, it's required, but the fact is used in C99 function detection - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether host executables can be run in the build" >&5 -printf %s "checking whether host executables can be run in the build... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether target executables can be run in the build" >&5 +printf %s "checking whether target executables can be run in the build... " >&6; } old_cross_compiling="$cross_compiling" cross_compiling='no' if test "$cross_compiling" = yes @@ -13714,11 +13706,11 @@ if ac_fn_c_try_run "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - host_runnable=true + target_runnable=true else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - host_runnable=false + target_runnable=false fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -13777,23 +13769,28 @@ case lt_cv_ar_at_file in #( ar_supports_response_files=true ;; esac -# Libraries to build depending on the host +# Libraries to build depending on the target case $host in #( *-*-mingw32*|*-pc-windows) : - unix_or_win32="win32" ln='cp -pf' + ocamlsrcdir="$(LC_ALL=C.UTF-8 cygpath -w -- "$ocamlsrcdir")" ;; #( + *) : + ln='ln -sf' ;; +esac + +case $target in #( + *-*-mingw32*|*-pc-windows) : + unix_or_win32="win32" # or should it be tested against host? ocamltest_libunix="Some false" - ocamlsrcdir="$(LC_ALL=C.UTF-8 cygpath -w -- "$ocamlsrcdir")" ocamlyacc_wstr_module="yacc/wstr" ;; #( *) : unix_or_win32="unix" - ln='ln -sf' ocamltest_libunix="Some true" ocamlyacc_wstr_module="" ;; esac -case $host in #( +case $target in #( *-*-cygwin*|*-*-mingw32*|*-pc-windows) : exeext=".exe" ;; #( *) : @@ -13858,7 +13855,7 @@ shebangscripts=false launch_method='exe' if test "x$interpval" = "xyes" then : - case $host in #( + case $target in #( *-cygwin) : # Cygwin supports shebangs, which we use for the compiler itself, but # partially for legacy, and partially so that executables can be easily @@ -14046,7 +14043,7 @@ fi esac # Enable SSE2 on x86 mingw to avoid using 80-bit registers. -case $host in #( +case $target in #( i686-*-mingw32*) : internal_cflags="$internal_cflags -mfpmath=sse -msse2" ;; #( *) : @@ -14056,7 +14053,7 @@ esac # Use 64-bit file offset if possible # See also AC_SYS_LARGEFILE # Problem: flags are added to CC rather than CPPFLAGS -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : ;; #( *) : @@ -14074,7 +14071,7 @@ esac if test x"$enable_shared" = "xno" then : supports_shared_libraries=false - case $host in #( + case $target in #( *-pc-windows|*-w64-mingw32*) : as_fn_error $? "Cannot build native Win32 with --disable-shared" "$LINENO" 5 ;; #( *) : @@ -14086,7 +14083,7 @@ fi # Define flexlink chain and flags correctly for the different Windows ports flexlink_flags='' -case $host in #( +case $target in #( i686-*-cygwin) : flexdll_chain='cygwin' flexlink_flags='-merge-manifest -stack 16777216' ;; #( @@ -14413,7 +14410,7 @@ fi fi -case $have_flexdll_h,$supports_shared_libraries,$host in #( +case $have_flexdll_h,$supports_shared_libraries,$target in #( no,true,*-*-cygwin*) : supports_shared_libraries=false { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: flexdll.h not found: shared library support disabled." >&5 @@ -14424,7 +14421,7 @@ printf "%s\n" "$as_me: WARNING: flexdll.h not found: shared library support disa ;; esac -case $flexdll_source_dir,$supports_shared_libraries,$flexlink,$host in #( +case $flexdll_source_dir,$supports_shared_libraries,$flexlink,$target in #( ,true,,*-*-cygwin*) : supports_shared_libraries=false { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: flexlink not found: shared library support disabled." >&5 @@ -14437,7 +14434,7 @@ esac mkexe_cmd_exp="$CC" -case $ocaml_cc_vendor,$host in #( +case $ocaml_cc_vendor,$target in #( *,x86_64-*-darwin*) : oc_ldflags='-Wl,-no_compact_unwind'; printf "%s\n" "#define HAS_ARCH_CODE32 1" >>confdefs.h @@ -14460,7 +14457,7 @@ else $as_nop fi ostype="Cygwin" ;; #( *,*-*-mingw32*) : - case $host in #( + case $target in #( i686-*-*) : oc_dll_ldflags="-static-libgcc" ;; #( *) : @@ -14673,7 +14670,7 @@ fi # Checks for header files # Don't check for unistd.h on Windows -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : ;; #( *) : @@ -15383,7 +15380,7 @@ fi # Full support for thread local storage # macOS and MinGW-w64 have problems with thread local storage accessed from DLLs -case $host in #( +case $target in #( *-apple-darwin*|*-mingw32*) : ;; #( *) : @@ -15404,7 +15401,7 @@ natdynlinkopts="" if test x"$enable_shared" != "xno" then : mkdll='' - case $host in #( + case $target in #( x86_64-apple-darwin*) : mkdll_flags=\ '-shared -undefined dynamic_lookup -Wl,-no_compact_unwind -Wl,-w' @@ -15435,7 +15432,7 @@ esac ;; #( *-*-linux*|*-*-freebsd[3-9]*|*-*-freebsd[1-9][0-9]*\ |*-*-openbsd*|*-*-netbsd*|*-*-dragonfly*|*-*-gnu*|*-*-haiku*) : sharedlib_cflags="-fPIC" - case $ocaml_cc_vendor,$host in #( + case $ocaml_cc_vendor,$target in #( gcc-*,powerpc-*-linux*) : mkdll_flags='-shared -mbss-plt' ;; #( *,i[3456]86-*) : @@ -15445,7 +15442,7 @@ esac ;; #( *) : mkdll_flags='-shared' ;; esac - case $host in #( + case $target in #( *-*-openbsd7.[3-9]|*-*-openbsd[89].*) : mkdll_flags="${mkdll_flags} -Wl,--no-execute-only" ;; #( *) : @@ -15475,7 +15472,7 @@ fi # Make sure code sections in OCaml-generated executables are readable # (required for marshaling of function closures) -case $host in #( +case $target in #( *-*-openbsd7.[3-9]|*-*-openbsd[89].*) : oc_ldflags="$oc_ldflags -Wl,--no-execute-only" natdynlinkopts="$natdynlinkopts -Wl,--no-execute-only" ;; #( @@ -15485,7 +15482,7 @@ esac # Disable control flow integrity -case $host in #( +case $target in #( *-*-openbsd7.[4-9]|*-*-openbsd[89].*) : oc_ldflags="$oc_ldflags -Wl,-z,nobtcfi" natdynlinkopts="$natdynlinkopts -Wl,-z,nobtcfi" ;; #( @@ -15500,7 +15497,7 @@ natdynlink=false if test x"$supports_shared_libraries" = 'xtrue' then : - case "$host" in #( + case "$target" in #( *-*-cygwin*) : natdynlink=true ;; #( *-*-mingw32*) : @@ -15578,7 +15575,7 @@ case $enable_native_toplevel,$natdynlink in #( esac # Try to work around the Skylake/Kaby Lake processor bug. -case "$ocaml_cc_vendor,$host" in #( +case "$ocaml_cc_vendor,$target" in #( *gcc*,x86_64-*|*gcc*,i686-*) : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler supports -fno-tree-vrp" >&5 @@ -15666,7 +15663,7 @@ system=unknown # preserving $arch = 'none' <=> $system = 'unknown' has_native_backend=no native_ldflags="" -case $host in #( +case $target in #( i[3456]86-*-linux*) : arch=i386; system=linux ;; #( i[3456]86-*-freebsd*) : @@ -15832,9 +15829,8 @@ fi printf "%s\n" "#define OCAML_OS_TYPE \"$ostype\"" >>confdefs.h -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. -set dummy ${ac_tool_prefix}ld; ac_word=$2 +# Extract the first word of "$target_alias-ld", so it can be a program name with args. +set dummy $target_alias-ld; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DIRECT_LD+y} @@ -15855,7 +15851,7 @@ do esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_DIRECT_LD="${ac_tool_prefix}ld" + ac_cv_prog_DIRECT_LD="$target_alias-ld" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -15875,10 +15871,10 @@ printf "%s\n" "no" >&6; } fi -fi if test -z "$ac_cv_prog_DIRECT_LD"; then - ac_ct_DIRECT_LD=$DIRECT_LD - # Extract the first word of "ld", so it can be a program name with args. + if test "$build" = "$target"; then + ac_ct_DIRECT_LD=$DIRECT_LD + # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } @@ -15919,16 +15915,9 @@ else printf "%s\n" "no" >&6; } fi - if test "x$ac_ct_DIRECT_LD" = x; then - DIRECT_LD="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac DIRECT_LD=$ac_ct_DIRECT_LD + else + DIRECT_LD="" fi else DIRECT_LD="$ac_cv_prog_DIRECT_LD" @@ -15936,7 +15925,7 @@ fi if test -z "$PARTIALLD" then : - case "$host,$ocaml_cc_vendor" in #( + case "$target,$ocaml_cc_vendor" in #( x86_64-*-darwin*,gcc-*) : PACKLD_FLAGS=' -arch x86_64' ;; #( powerpc64le*-*-linux*,gcc-*) : @@ -15983,7 +15972,7 @@ case $arch in #( # ocamlopt generates PIC code or doesn't generate code at all ;; #( *) : - case $host in #( + case $target in #( # expected to match "*-linux-musl" as well as "*-linux-musleabi*" *-linux-musl*) : # Alpine and other musl-based Linux distributions @@ -16186,7 +16175,7 @@ then : printf %s "checking whether round works... " >&6; } old_cross_compiling="$cross_compiling" - if test "x$host_runnable" = 'xtrue' + if test "x$target_runnable" = 'xtrue' then : cross_compiling='no' fi @@ -16254,7 +16243,7 @@ fi printf %s "checking whether fma works... " >&6; } old_cross_compiling="$cross_compiling" - if test "x$host_runnable" = 'xtrue' + if test "x$target_runnable" = 'xtrue' then : cross_compiling='no' fi @@ -16525,7 +16514,7 @@ fi ## On MacOS clock_gettime's CLOCK_MONOTONIC flag is not actually monotonic. ## mach_timebase_info and mach_absolute_time are used instead. -case $host in #( +case $target in #( *-*-windows) : has_monotonic_clock=true ;; #( *-apple-darwin*) : @@ -16585,7 +16574,7 @@ esac if test "x$enable_instrumented_runtime" != "xno" then : - case $host in #( + case $target in #( sparc-sun-solaris*) : instrumented_runtime=false ;; #( *-*-windows) : @@ -16970,7 +16959,7 @@ fi sockets=true -case $host in #( +case $target in #( *-*-mingw32*) : cclibs="$cclibs -lws2_32" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 @@ -17318,7 +17307,7 @@ fi ## socklen_t -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include " @@ -17349,7 +17338,7 @@ fi ## Unix domain sockets support on Windows -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : for ac_header in afunix.h do : @@ -17371,7 +17360,7 @@ esac ipv6=true -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "#include " @@ -17491,7 +17480,7 @@ fi ## Note: this was defined in config/s-nt.h but the autoconf macros do not # seem to detect it properly on Windows so we hardcode the definition # of HAS_UTIME on Windows but this will probably need to be clarified -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : printf "%s\n" "#define HAS_UTIME 1" >>confdefs.h ;; #( @@ -17709,7 +17698,7 @@ fi ## gethostname # Note: detection fails on Windows so hardcoding the result # (should be debugged later) -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : printf "%s\n" "#define HAS_GETHOSTNAME 1" >>confdefs.h ;; #( @@ -17765,7 +17754,7 @@ fi ## setsid -case $host in #( +case $target in #( *-cygwin|*-*-mingw32*|*-pc-windows) : ;; #( *) : @@ -17806,7 +17795,7 @@ fi ## newlocale() and # Note: the detection fails on msvc so we hardcode the result # (should be debugged later) -case $host in #( +case $target in #( *-pc-windows) : printf "%s\n" "#define HAS_LOCALE_H 1" >>confdefs.h ;; #( @@ -17861,7 +17850,7 @@ fi ## strtod_l # Note: not detected on MSVC so hardcoding the result # (should be debugged later) -case $host in #( +case $target in #( *-pc-windows) : printf "%s\n" "#define HAS_STRTOD_L 1" >>confdefs.h ;; #( @@ -17878,7 +17867,7 @@ esac ## shared library support if $supports_shared_libraries then : - case $host in #( + case $target in #( *-*-mingw32*|*-pc-windows|*-*-cygwin*) : DLLIBS="" ;; #( *) : @@ -17978,7 +17967,7 @@ fi ## -fdebug-prefix-map support by the C compiler -case $ocaml_cc_vendor,$host in #( +case $ocaml_cc_vendor,$target in #( *,*-*-mingw32*) : cc_has_debug_prefix_map=false ;; #( *,*-pc-windows) : @@ -18589,9 +18578,8 @@ fi fi -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +# Extract the first word of "$target_alias-pkg-config", so it can be a program name with args. +set dummy $target_alias-pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} @@ -18635,10 +18623,10 @@ printf "%s\n" "no" >&6; } fi -fi if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. + if test "$build" = "$target"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } @@ -18670,6 +18658,7 @@ done done IFS=$as_save_IFS + test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="false" ;; esac fi @@ -18682,16 +18671,9 @@ else printf "%s\n" "no" >&6; } fi - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac PKG_CONFIG=$ac_pt_PKG_CONFIG + else + PKG_CONFIG="false" fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" @@ -18778,9 +18760,9 @@ fi # library available, but not have the DLL in PATH. This then causes the build to # fail as soon as ocamlrun is first executed. This check avoids automatically # enabling zstd when the resulting executable doesn't actually work. -case $host in #( +case $target in #( *-w64-mingw32*|*-pc-windows) : - check_zstd_runs=$host_runnable ;; #( + check_zstd_runs=$target_runnable ;; #( *) : check_zstd_runs=false ;; esac @@ -18914,7 +18896,7 @@ esac ## Determine how to link with the POSIX threads library -case $host in #( +case $target in #( *-*-mingw32*) : PTHREAD_LIBS="-l:libpthread.a -lgcc_eh" ;; #( *-pc-windows) : @@ -19782,7 +19764,7 @@ as_has_debug_prefix_map=false asm_cfi_supported=false if $native_compiler then : - case $host in #( + case $target in #( *-*-mingw32*|*-pc-windows) : ;; #( *) : @@ -19955,7 +19937,7 @@ fi if test x"$enable_frame_pointers" = "xyes" then : - case "$host,$ocaml_cc_vendor" in #( + case "$target,$ocaml_cc_vendor" in #( x86_64-*-linux*,gcc-*|x86_64-*-linux*,clang-*) : common_cflags="$common_cflags -g -fno-omit-frame-pointer" frame_pointers=true @@ -20369,7 +20351,7 @@ oc_cppflags="$common_cppflags $internal_cppflags" ocamlc_cflags="$ocamlc_cflags $common_cflags $sharedlib_cflags $CFLAGS" ocamlc_cppflags="$common_cppflags $CPPFLAGS" -case $host in #( +case $target in #( *-*-mingw32*) : cclibs="$cclibs -lole32 -luuid -lversion" ;; #( *-pc-windows) : @@ -20397,7 +20379,7 @@ then : mandir='${prefix}/man' fi -case $host in #( +case $target in #( *-*-mingw32*|*-pc-windows) : case $WINDOWS_UNICODE_MODE in #( ansi) : @@ -20442,7 +20424,7 @@ fi # Define a few macros that were defined in config/m-nt.h # but whose value is not guessed properly by configure # (all this should be understood and fixed) -case $host in #( +case $target in #( *-*-mingw32*) : printf "%s\n" "#define HAS_BROKEN_PRINTF 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index 6fc37fe7a562..4e753cc3d0a4 100644 --- a/configure.ac +++ b/configure.ac @@ -308,7 +308,7 @@ AS_CASE([$host], # Systems that are known not to work, even in bytecode only. -AS_CASE([$host], +AS_CASE([$target], [*-pc-windows], [AC_MSG_ERROR([the MSVC compiler is not supported currently], 69)], [i386-*-solaris*], @@ -318,7 +318,7 @@ If your host is 64 bits, you can try with './configure CC="gcc -m64"' \ # MSVC special case -AS_CASE([$host], +AS_CASE([$target], [*-pc-windows], [CC=cl ccomptype=msvc @@ -597,7 +597,7 @@ AS_IF([test x"$enable_ocamldoc" = "xno"], # Initialization of libtool # Allow the MSVC linker to be found even if ld isn't installed. # User-specified LD still takes precedence. -AC_CHECK_TOOLS([LD],[ld link]) +AC_CHECK_TARGET_TOOLS([LD],[ld link]) # libtool will detect a build-to-host C toolchain but when building an OCaml # cross compiler we need the C toolchain to build the target runtime so we # temporarily define host* values as macros for target* values so that the @@ -647,7 +647,7 @@ AS_CASE([$enable_dependency_generation], [compute_deps=true])], [compute_deps=false])]) -AS_CASE([$host], +AS_CASE([$target], # In config/Makefile.mingw*, we had: # TARGET=i686-w64-mingw32 and x86_64-w64-mingw32 # TOOLPREF=$(TARGET)- @@ -659,7 +659,7 @@ AS_CASE([$host], mkexe_via_cc_extra_cmd=' && $(call MERGEMANIFESTEXE,$(1))' libext=lib AR="" - AS_IF([test "$host_cpu" = "x86_64" ], + AS_IF([test "$target_cpu" = "x86_64" ], [machine="-machine:AMD64 "], [machine=""]) mklib="link -lib -nologo $machine /out:\$(1) \$(2)" @@ -673,7 +673,7 @@ OCAML_CC_VENDOR ## In cross-compilation mode, can we run executables produced? # At the moment, it's required, but the fact is used in C99 function detection -OCAML_HOST_IS_EXECUTABLE +OCAML_TARGET_IS_EXECUTABLE # Determine how to call the C preprocessor directly. # Most of the time, calling the C preprocessor through the C compiler is @@ -720,21 +720,24 @@ AS_CASE([lt_cv_ar_at_file], [no], [ar_supports_response_files=false], [ar_supports_response_files=true]) -# Libraries to build depending on the host +# Libraries to build depending on the target AS_CASE([$host], [*-*-mingw32*|*-pc-windows], - [unix_or_win32="win32" - ln='cp -pf' + [ln='cp -pf' + ocamlsrcdir="$(LC_ALL=C.UTF-8 cygpath -w -- "$ocamlsrcdir")"], + [ln='ln -sf']) + +AS_CASE([$target], + [*-*-mingw32*|*-pc-windows], + [unix_or_win32="win32" # or should it be tested against host? ocamltest_libunix="Some false" - ocamlsrcdir="$(LC_ALL=C.UTF-8 cygpath -w -- "$ocamlsrcdir")" ocamlyacc_wstr_module="yacc/wstr"], [unix_or_win32="unix" - ln='ln -sf' ocamltest_libunix="Some true" ocamlyacc_wstr_module=""]) -AS_CASE([$host], +AS_CASE([$target], [*-*-cygwin*|*-*-mingw32*|*-pc-windows], [exeext=".exe"], [exeext='']) @@ -769,7 +772,7 @@ AC_SYS_INTERPRETER shebangscripts=false launch_method='exe' AS_IF([test "x$interpval" = "xyes"], - [AS_CASE([$host], + [AS_CASE([$target], [*-cygwin], [# Cygwin supports shebangs, which we use for the compiler itself, but # partially for legacy, and partially so that executables can be easily @@ -893,14 +896,14 @@ AS_CASE([$ocaml_cc_vendor], [common_cflags="-O"]) # Enable SSE2 on x86 mingw to avoid using 80-bit registers. -AS_CASE([$host], +AS_CASE([$target], [i686-*-mingw32*], [internal_cflags="$internal_cflags -mfpmath=sse -msse2"]) # Use 64-bit file offset if possible # See also AC_SYS_LARGEFILE # Problem: flags are added to CC rather than CPPFLAGS -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [], [common_cppflags="$common_cppflags -D_FILE_OFFSET_BITS=64"]) @@ -914,14 +917,14 @@ AS_CASE([$host], AS_IF([test x"$enable_shared" = "xno"], [supports_shared_libraries=false - AS_CASE([$host], + AS_CASE([$target], [*-pc-windows|*-w64-mingw32*], [AC_MSG_ERROR([Cannot build native Win32 with --disable-shared])])], [supports_shared_libraries=true]) # Define flexlink chain and flags correctly for the different Windows ports flexlink_flags='' -AS_CASE([$host], +AS_CASE([$target], [i686-*-cygwin], [flexdll_chain='cygwin' flexlink_flags='-merge-manifest -stack 16777216'], @@ -1010,14 +1013,14 @@ AS_IF([test x"$supports_shared_libraries" != 'xfalse'], [ ]) ]) -AS_CASE([$have_flexdll_h,$supports_shared_libraries,$host], +AS_CASE([$have_flexdll_h,$supports_shared_libraries,$target], [no,true,*-*-cygwin*], [supports_shared_libraries=false AC_MSG_WARN([flexdll.h not found: shared library support disabled.])], [no,*,*-w64-mingw32*|no,*,*-pc-windows], [AC_MSG_ERROR([flexdll.h is required for native Win32])]) -AS_CASE([$flexdll_source_dir,$supports_shared_libraries,$flexlink,$host], +AS_CASE([$flexdll_source_dir,$supports_shared_libraries,$flexlink,$target], [,true,,*-*-cygwin*], [supports_shared_libraries=false AC_MSG_WARN([flexlink not found: shared library support disabled.])], @@ -1026,7 +1029,7 @@ AS_CASE([$flexdll_source_dir,$supports_shared_libraries,$flexlink,$host], mkexe_cmd_exp="$CC" -AS_CASE([$ocaml_cc_vendor,$host], +AS_CASE([$ocaml_cc_vendor,$target], [*,x86_64-*-darwin*], [oc_ldflags='-Wl,-no_compact_unwind'; AC_DEFINE([HAS_ARCH_CODE32], [1])], @@ -1044,7 +1047,7 @@ AS_CASE([$ocaml_cc_vendor,$host], ) ostype="Cygwin"], [*,*-*-mingw32*], - [AS_CASE([$host], + [AS_CASE([$target], [i686-*-*], [oc_dll_ldflags="-static-libgcc"]) ostype="Win32" toolchain="mingw" @@ -1089,7 +1092,7 @@ AC_SEARCH_LIBS([cos], [m], # Checks for header files # Don't check for unistd.h on Windows -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [], [AC_CHECK_HEADERS([unistd.h],[AC_DEFINE([HAS_UNISTD])])]) @@ -1188,7 +1191,7 @@ AS_IF([! $cc_supports_atomic], # Full support for thread local storage # macOS and MinGW-w64 have problems with thread local storage accessed from DLLs -AS_CASE([$host], +AS_CASE([$target], [*-apple-darwin*|*-mingw32*], [], [AC_DEFINE([HAS_FULL_THREAD_VARIABLES])] ) @@ -1204,7 +1207,7 @@ natdynlinkopts="" AS_IF([test x"$enable_shared" != "xno"], [mkdll='' - AS_CASE([$host], + AS_CASE([$target], [x86_64-apple-darwin*], [mkdll_flags=\ '-shared -undefined dynamic_lookup -Wl,-no_compact_unwind -Wl,-w' @@ -1232,7 +1235,7 @@ AS_IF([test x"$enable_shared" != "xno"], [[*-*-linux*|*-*-freebsd[3-9]*|*-*-freebsd[1-9][0-9]*\ |*-*-openbsd*|*-*-netbsd*|*-*-dragonfly*|*-*-gnu*|*-*-haiku*]], [sharedlib_cflags="-fPIC" - AS_CASE([$ocaml_cc_vendor,$host], + AS_CASE([$ocaml_cc_vendor,$target], [gcc-*,powerpc-*-linux*], [mkdll_flags='-shared -mbss-plt'], [[*,i[3456]86-*]], @@ -1240,7 +1243,7 @@ AS_IF([test x"$enable_shared" != "xno"], # See https://github.com/ocaml/ocaml/issues/9800 [mkdll_flags='-shared -Wl,-z,notext'], [mkdll_flags='-shared']) - AS_CASE([$host], + AS_CASE([$target], [[*-*-openbsd7.[3-9]|*-*-openbsd[89].*]], [mkdll_flags="${mkdll_flags} -Wl,--no-execute-only"]) oc_ldflags="$oc_ldflags -Wl,-E" @@ -1260,14 +1263,14 @@ AS_IF([test -z "$mkmaindll"], # Make sure code sections in OCaml-generated executables are readable # (required for marshaling of function closures) -AS_CASE([$host], +AS_CASE([$target], [[*-*-openbsd7.[3-9]|*-*-openbsd[89].*]], [oc_ldflags="$oc_ldflags -Wl,--no-execute-only" natdynlinkopts="$natdynlinkopts -Wl,--no-execute-only"]) # Disable control flow integrity -AS_CASE([$host], +AS_CASE([$target], [[*-*-openbsd7.[4-9]|*-*-openbsd[89].*]], [oc_ldflags="$oc_ldflags -Wl,-z,nobtcfi" natdynlinkopts="$natdynlinkopts -Wl,-z,nobtcfi"]) @@ -1278,7 +1281,7 @@ AS_CASE([$host], natdynlink=false AS_IF([test x"$supports_shared_libraries" = 'xtrue'], - [AS_CASE(["$host"], + [AS_CASE(["$target"], [*-*-cygwin*], [natdynlink=true], [*-*-mingw32*], [natdynlink=true], [*-pc-windows], [natdynlink=true], @@ -1320,7 +1323,7 @@ AS_CASE([$enable_native_toplevel,$natdynlink], [install_ocamlnat=false]) # Try to work around the Skylake/Kaby Lake processor bug. -AS_CASE(["$ocaml_cc_vendor,$host"], +AS_CASE(["$ocaml_cc_vendor,$target"], [*gcc*,x86_64-*|*gcc*,i686-*], [OCAML_CC_HAS_FNO_TREE_VRP AS_IF([$cc_has_fno_tree_vrp], @@ -1341,7 +1344,7 @@ system=unknown # preserving $arch = 'none' <=> $system = 'unknown' has_native_backend=no native_ldflags="" -AS_CASE([$host], +AS_CASE([$target], [[i[3456]86-*-linux*]], [arch=i386; system=linux], [[i[3456]86-*-freebsd*]], @@ -1478,9 +1481,9 @@ AS_IF([$natdynlink], AC_DEFINE_UNQUOTED([OCAML_OS_TYPE], ["$ostype"]) -AC_CHECK_TOOL([DIRECT_LD],[ld]) +AC_CHECK_TARGET_TOOL([DIRECT_LD],[ld]) AS_IF([test -z "$PARTIALLD"], - [AS_CASE(["$host,$ocaml_cc_vendor"], + [AS_CASE(["$target,$ocaml_cc_vendor"], [x86_64-*-darwin*,gcc-*], [PACKLD_FLAGS=' -arch x86_64'], [powerpc64le*-*-linux*,gcc-*], [PACKLD_FLAGS=' -m elf64lppc'], [powerpc*-*-linux*,gcc-*], @@ -1515,7 +1518,7 @@ AS_CASE([$arch], [amd64|arm64|s390x|none], # ocamlopt generates PIC code or doesn't generate code at all [], - [AS_CASE([$host], + [AS_CASE([$target], # expected to match "*-linux-musl" as well as "*-linux-musleabi*" [*-linux-musl*], # Alpine and other musl-based Linux distributions @@ -1649,7 +1652,7 @@ AC_CHECK_FUNC([issetugid], [AC_DEFINE([HAS_ISSETUGID])]) ## On MacOS clock_gettime's CLOCK_MONOTONIC flag is not actually monotonic. ## mach_timebase_info and mach_absolute_time are used instead. -AS_CASE([$host], +AS_CASE([$target], [*-*-windows], [has_monotonic_clock=true], [*-apple-darwin*], [ @@ -1685,7 +1688,7 @@ AS_CASE([$host], # clock source is missing. AS_IF([test "x$enable_instrumented_runtime" != "xno" ], [ - AS_CASE([$host], + AS_CASE([$target], [sparc-sun-solaris*], [instrumented_runtime=false], [*-*-windows], @@ -1875,7 +1878,7 @@ AS_IF([$tsan], sockets=true -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*], [cclibs="$cclibs -lws2_32" AC_SEARCH_LIBS([socket], [ws2_32]) @@ -1903,7 +1906,7 @@ AS_IF([$sockets], [AC_DEFINE([HAS_SOCKETS])]) ## socklen_t -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AC_CHECK_TYPE([socklen_t], [AC_DEFINE([HAS_SOCKLEN_T])], [], [#include ])], @@ -1914,7 +1917,7 @@ AC_CHECK_FUNC([inet_aton], [AC_DEFINE([HAS_INET_ATON])]) ## Unix domain sockets support on Windows -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AC_CHECK_HEADERS([afunix.h], [AC_DEFINE([HAS_AFUNIX_H])], [], [#include ])]) @@ -1923,7 +1926,7 @@ AS_CASE([$host], ipv6=true -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AC_CHECK_TYPE( [struct sockaddr_in6], [], [ipv6=false], [#include ])], @@ -1963,7 +1966,7 @@ AC_CHECK_DECL([system], [AC_DEFINE([HAS_SYSTEM])], [], [[#include ]]) ## Note: this was defined in config/s-nt.h but the autoconf macros do not # seem to detect it properly on Windows so we hardcode the definition # of HAS_UTIME on Windows but this will probably need to be clarified -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AC_DEFINE([HAS_UTIME])], [AC_CHECK_HEADER([sys/types.h], [AC_CHECK_HEADER([utime.h], @@ -2040,7 +2043,7 @@ AC_CHECK_FUNC([setitimer], ## gethostname # Note: detection fails on Windows so hardcoding the result # (should be debugged later) -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AC_DEFINE([HAS_GETHOSTNAME])], [AC_CHECK_FUNC([gethostname], [AC_DEFINE([HAS_GETHOSTNAME])])]) @@ -2064,7 +2067,7 @@ AC_CHECK_FUNC([mktime], [AC_DEFINE([HAS_MKTIME])]) ## setsid -AS_CASE([$host], +AS_CASE([$target], [*-cygwin|*-*-mingw32*|*-pc-windows], [], [AC_CHECK_FUNC([setsid], [AC_DEFINE([HAS_SETSID])])]) @@ -2080,7 +2083,7 @@ AC_CHECK_FUNC([setenv], ## newlocale() and # Note: the detection fails on msvc so we hardcode the result # (should be debugged later) -AS_CASE([$host], +AS_CASE([$target], [*-pc-windows], [AC_DEFINE([HAS_LOCALE_H])], [AC_CHECK_HEADER([locale.h], [AC_CHECK_FUNC([newlocale], @@ -2095,13 +2098,13 @@ AC_CHECK_HEADER([xlocale.h], ## strtod_l # Note: not detected on MSVC so hardcoding the result # (should be debugged later) -AS_CASE([$host], +AS_CASE([$target], [*-pc-windows], [AC_DEFINE([HAS_STRTOD_L])], [AC_CHECK_FUNC([strtod_l], [AC_DEFINE([HAS_STRTOD_L])])]) ## shared library support AS_IF([$supports_shared_libraries], - [AS_CASE([$host], + [AS_CASE([$target], [*-*-mingw32*|*-pc-windows|*-*-cygwin*], [DLLIBS=""], [AC_CHECK_FUNC([dlopen], @@ -2127,7 +2130,7 @@ AC_CHECK_HEADER([sys/mman.h], AC_CHECK_FUNC([pwrite], [AC_DEFINE([HAS_PWRITE])]) ## -fdebug-prefix-map support by the C compiler -AS_CASE([$ocaml_cc_vendor,$host], +AS_CASE([$ocaml_cc_vendor,$target], [*,*-*-mingw32*], [cc_has_debug_prefix_map=false], [*,*-pc-windows], [cc_has_debug_prefix_map=false], [xlc*,powerpc-ibm-aix*], [cc_has_debug_prefix_map=false], @@ -2230,7 +2233,7 @@ AC_CHECK_HEADER([spawn.h], [AC_CHECK_FUNC([posix_spawn], [AC_CHECK_FUNC([posix_spawnp], [AC_DEFINE([HAS_POSIX_SPAWN])])])]) -AC_PATH_TOOL([PKG_CONFIG], [pkg-config], [false]) +AC_PATH_TARGET_TOOL([PKG_CONFIG], [pkg-config], [false]) ## ZSTD compression library @@ -2261,9 +2264,9 @@ AS_IF([test x"$with_zstd" != "xno"], # library available, but not have the DLL in PATH. This then causes the build to # fail as soon as ocamlrun is first executed. This check avoids automatically # enabling zstd when the resulting executable doesn't actually work. -AS_CASE([$host], +AS_CASE([$target], [*-w64-mingw32*|*-pc-windows], - [check_zstd_runs=$host_runnable], + [check_zstd_runs=$target_runnable], [check_zstd_runs=false]) AS_IF([test x"$zstd_status" = "xok"],[ @@ -2331,7 +2334,7 @@ AS_CASE([$enable_debug_runtime], ## Determine how to link with the POSIX threads library -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*], [PTHREAD_LIBS="-l:libpthread.a -lgcc_eh"], [*-pc-windows], @@ -2396,7 +2399,7 @@ AS_CASE([$enable_systhreads,$enable_unix_lib], as_has_debug_prefix_map=false asm_cfi_supported=false AS_IF([$native_compiler], - [AS_CASE([$host], + [AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [], [OCAML_AS_HAS_DEBUG_PREFIX_MAP OCAML_AS_HAS_CFI_DIRECTIVES])]) @@ -2404,7 +2407,7 @@ AS_IF([$native_compiler], ## Frame pointers AS_IF([test x"$enable_frame_pointers" = "xyes"], - [AS_CASE(["$host,$ocaml_cc_vendor"], + [AS_CASE(["$target,$ocaml_cc_vendor"], [x86_64-*-linux*,gcc-*|x86_64-*-linux*,clang-*], [common_cflags="$common_cflags -g -fno-omit-frame-pointer" frame_pointers=true @@ -2567,7 +2570,7 @@ oc_cppflags="$common_cppflags $internal_cppflags" ocamlc_cflags="$ocamlc_cflags $common_cflags $sharedlib_cflags $CFLAGS" ocamlc_cppflags="$common_cppflags $CPPFLAGS" -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*], [cclibs="$cclibs -lole32 -luuid -lversion"], [*-pc-windows], @@ -2586,7 +2589,7 @@ AS_IF([test x"$libdir" = x'${exec_prefix}/lib'], AS_IF([test x"$mandir" = x'${datarootdir}/man'], [mandir='${prefix}/man']) -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*|*-pc-windows], [AS_CASE([$WINDOWS_UNICODE_MODE], [ansi], @@ -2611,7 +2614,7 @@ AS_IF([test x"$prefix" = "xNONE"], # Define a few macros that were defined in config/m-nt.h # but whose value is not guessed properly by configure # (all this should be understood and fixed) -AS_CASE([$host], +AS_CASE([$target], [*-*-mingw32*], [AC_DEFINE([HAS_BROKEN_PRINTF]) AC_DEFINE([HAS_STRERROR]) From b6b27cadc571607150bbd9d099ccc15cf6cff2e8 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Wed, 21 Feb 2024 18:47:12 +0100 Subject: [PATCH 07/17] Detect and use `{CC,...}_FOR_BUILD` to build `sak` Import `ax_prog_cc_for_build` from the Autoconf Macro Archive to detect the C toolchain for the build machine when (and only when) we are generating a cross compiler, namely when code generated for the target doesn't run on the build machine Use this build C toolchain by default to compile and link `sak` Link `sak` by calling directly `SAK_CC` instead of `MKEXE_VIA_CC` to use by default the same compiler to link than to compile `sak`, instead of always requiring both to be overridden; this assumes that the full set of flags that end up in `MKEXE_VIA_CC` are not really necessary to link `sak` since it is a really simple program --- Makefile | 9 +- Makefile.config.in | 4 + aclocal.m4 | 1 + build-aux/ax_prog_cc_for_build.m4 | 155 ++++ configure | 1182 +++++++++++++++++++++++++++++ configure.ac | 9 + 6 files changed, 1355 insertions(+), 5 deletions(-) create mode 100644 build-aux/ax_prog_cc_for_build.m4 diff --git a/Makefile b/Makefile index 71d41cd2d65a..5d19bcea1ff7 100644 --- a/Makefile +++ b/Makefile @@ -1284,11 +1284,10 @@ runtime/caml/jumptbl.h : runtime/caml/instruct.h sed -n -e '/^ /s/ \([A-Z]\)/ \&\&lbl_\1/gp' \ -e '/^}/q' > $@ -# These are provided as a temporary shim to allow cross-compilation systems -# to supply a host C compiler and different flags and a linking macro. -SAK_CC ?= $(CC) -SAK_CFLAGS ?= $(OC_CFLAGS) $(CFLAGS) $(OC_CPPFLAGS) $(CPPFLAGS) -SAK_LINK ?= $(MKEXE_VIA_CC) +SAK_CC ?= $(CC_FOR_BUILD) +SAK_CFLAGS ?=\ + $(OC_CFLAGS) $(CFLAGS_FOR_BUILD) $(OC_CPPFLAGS) $(CPPFLAGS_FOR_BUILD) +SAK_LINK ?= $(SAK_CC) $(SAK_CFLAGS) $(OUTPUTEXE)$(1) $(2) $(SAK): runtime/sak.$(O) $(V_MKEXE)$(call SAK_LINK,$@,$^) diff --git a/Makefile.config.in b/Makefile.config.in index a72c1ce061fe..b91634efb696 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -65,11 +65,13 @@ LIBTOOL = $(TOP_BUILDDIR)/libtool ### Which C compiler to use TOOLPREF=@ac_tool_prefix@ CC=@CC@ +CC_FOR_BUILD=@CC_FOR_BUILD@ CC_HAS_DEBUG_PREFIX_MAP=@cc_has_debug_prefix_map@ AS_HAS_DEBUG_PREFIX_MAP=@as_has_debug_prefix_map@ LDFLAGS?=@LDFLAGS@ +LDFLAGS_FOR_BUILD=@LDFLAGS_FOR_BUILD@ ### How to invoke the C preprocessor through the C compiler CPP=@CPP@ @@ -160,7 +162,9 @@ UNIX_OR_WIN32=@unix_or_win32@ INSTALL_SOURCE_ARTIFACTS=@install_source_artifacts@ CFLAGS=@CFLAGS@ +CFLAGS_FOR_BUILD=@CFLAGS_FOR_BUILD@ CPPFLAGS=@CPPFLAGS@ +CPPFLAGS_FOR_BUILD=@CPPFLAGS_FOR_BUILD@ OCAMLC_CFLAGS=@ocamlc_cflags@ OCAMLC_CPPFLAGS=@ocamlc_cppflags@ diff --git a/aclocal.m4 b/aclocal.m4 index 32683d48b76d..caafaa63c777 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -30,6 +30,7 @@ m4_include([build-aux/ax_check_compile_flag.m4]) # Macros from the autoconf macro archive m4_include([build-aux/ax_func_which_gethostbyname_r.m4]) +m4_include([build-aux/ax_prog_cc_for_build.m4]) m4_include([build-aux/ax_pthread.m4]) # OCaml version diff --git a/build-aux/ax_prog_cc_for_build.m4 b/build-aux/ax_prog_cc_for_build.m4 new file mode 100644 index 000000000000..1db8d73f9667 --- /dev/null +++ b/build-aux/ax_prog_cc_for_build.m4 @@ -0,0 +1,155 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PROG_CC_FOR_BUILD +# +# DESCRIPTION +# +# This macro searches for a C compiler that generates native executables, +# that is a C compiler that surely is not a cross-compiler. This can be +# useful if you have to generate source code at compile-time like for +# example GCC does. +# +# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything +# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). +# The value of these variables can be overridden by the user by specifying +# a compiler with an environment variable (like you do for standard CC). +# +# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object +# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if +# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are +# substituted in the Makefile. +# +# LICENSE +# +# Copyright (c) 2008 Paolo Bonzini +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 21 + +AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) +AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_CPP])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl + +dnl Use the standard macros, but make them use other variable names +dnl +pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl +pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl +pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl +pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl +pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl +pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl +pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl +pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl +pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl +pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl +pushdef([ac_cv_objext], ac_cv_build_objext)dnl +pushdef([ac_exeext], ac_build_exeext)dnl +pushdef([ac_objext], ac_build_objext)dnl +pushdef([CC], CC_FOR_BUILD)dnl +pushdef([CPP], CPP_FOR_BUILD)dnl +pushdef([GCC], GCC_FOR_BUILD)dnl +pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl +pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl +pushdef([EXEEXT], BUILD_EXEEXT)dnl +pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl +pushdef([OBJEXT], BUILD_OBJEXT)dnl +pushdef([host], build)dnl +pushdef([host_alias], build_alias)dnl +pushdef([host_cpu], build_cpu)dnl +pushdef([host_vendor], build_vendor)dnl +pushdef([host_os], build_os)dnl +pushdef([ac_cv_host], ac_cv_build)dnl +pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl +pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl +pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl +pushdef([ac_cv_host_os], ac_cv_build_os)dnl +pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl +pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl +pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl +pushdef([cross_compiling], cross_compiling_build)dnl + +cross_compiling_build=no + +ac_build_tool_prefix= +AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"], + [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"]) + +AC_LANG_PUSH([C]) + +dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover +dnl the use of this variable in _AC_LANG_COMPILER_GNU called by +dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround. +was_set_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y} +AS_IF([test ${was_set_c_compiler_gnu}], + [saved_c_compiler_gnu=$[ac_cv_c_compiler_gnu] + AS_UNSET([[ac_cv_c_compiler_gnu]])]) + +AC_PROG_CC + +dnl Restore ac_cv_c_compiler_gnu +AS_IF([test ${was_set_c_compiler_gnu}], + [[ac_cv_c_compiler_gnu]=$[saved_c_compiler_gnu]]) + +_AC_COMPILER_EXEEXT +_AC_COMPILER_OBJEXT +AC_PROG_CPP + +dnl Restore the old definitions +dnl +popdef([cross_compiling])dnl +popdef([am_cv_prog_cc_c_o])dnl +popdef([am_cv_CC_dependencies_compiler_type])dnl +popdef([ac_tool_prefix])dnl +popdef([ac_cv_host_os])dnl +popdef([ac_cv_host_vendor])dnl +popdef([ac_cv_host_cpu])dnl +popdef([ac_cv_host_alias])dnl +popdef([ac_cv_host])dnl +popdef([host_os])dnl +popdef([host_vendor])dnl +popdef([host_cpu])dnl +popdef([host_alias])dnl +popdef([host])dnl +popdef([OBJEXT])dnl +popdef([LDFLAGS])dnl +popdef([EXEEXT])dnl +popdef([CPPFLAGS])dnl +popdef([CFLAGS])dnl +popdef([GCC])dnl +popdef([CPP])dnl +popdef([CC])dnl +popdef([ac_objext])dnl +popdef([ac_exeext])dnl +popdef([ac_cv_objext])dnl +popdef([ac_cv_exeext])dnl +popdef([ac_cv_c_compiler_gnu])dnl +popdef([ac_cv_prog_cc_g])dnl +popdef([ac_cv_prog_cc_cross])dnl +popdef([ac_cv_prog_cc_works])dnl +popdef([ac_cv_prog_cc_c89])dnl +popdef([ac_cv_prog_gcc])dnl +popdef([ac_cv_prog_CPP])dnl + +dnl restore global variables ac_ext, ac_cpp, ac_compile, +dnl ac_link, ac_compiler_gnu (dependant on the current +dnl language after popping): +AC_LANG_POP([C]) + +dnl Finally, set Makefile variables +dnl +AC_SUBST(BUILD_EXEEXT)dnl +AC_SUBST(BUILD_OBJEXT)dnl +AC_SUBST([CFLAGS_FOR_BUILD])dnl +AC_SUBST([CPPFLAGS_FOR_BUILD])dnl +AC_SUBST([LDFLAGS_FOR_BUILD])dnl +]) diff --git a/configure b/configure index 068ce7e87313..0a5dc794cbdd 100755 --- a/configure +++ b/configure @@ -730,6 +730,14 @@ INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM flexlink +LDFLAGS_FOR_BUILD +CPPFLAGS_FOR_BUILD +CFLAGS_FOR_BUILD +BUILD_OBJEXT +BUILD_EXEEXT +CPP_FOR_BUILD +ac_ct_CC_FOR_BUILD +CC_FOR_BUILD CPP ac_ct_DEP_CC DEP_CC @@ -13890,6 +13898,1180 @@ then : cross_compiler=false else $as_nop cross_compiler=true +fi + +if test x"$build" = x"$target" -o x"$target_runnable" = xtrue +then : + CC_FOR_BUILD='$(CC)' + CFLAGS_FOR_BUILD='$(CFLAGS)' + CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' + LDFLAGS_FOR_BUILD='$(LDFLAGS)' +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detecting the C toolchain for build" >&5 +printf "%s\n" "$as_me: detecting the C toolchain for build" >&6;} + + +cross_compiling_build=no + +ac_build_tool_prefix= +if test -n "$build" +then : + ac_build_tool_prefix="$build-" +elif test -n "$build_alias" +then : + ac_build_tool_prefix="$build_alias-" +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + +was_set_c_compiler_gnu=${ac_cv_c_compiler_gnu+y} +if test ${was_set_c_compiler_gnu} +then : + saved_c_compiler_gnu=$ac_cv_c_compiler_gnu + { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +else + CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD" +fi + +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC_FOR_BUILD"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC_FOR_BUILD="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC_FOR_BUILD + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC_FOR_BUILD to just the basename; use the full file name. + shift + ac_cv_prog_CC_FOR_BUILD="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_build_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="$ac_build_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC_FOR_BUILD" && break + done +fi +if test -z "$CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC_FOR_BUILD" && break +done + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +fi + +fi +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +else + CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD" +fi + +fi + + +test -z "$CC_FOR_BUILD" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC_FOR_BUILD=yes +else + GCC_FOR_BUILD= +fi +ac_test_CFLAGS=${CFLAGS_FOR_BUILD+y} +ac_save_CFLAGS=$CFLAGS_FOR_BUILD +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5 +printf %s "checking whether $CC_FOR_BUILD accepts -g... " >&6; } +if test ${ac_cv_build_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_build_prog_cc_g=no + CFLAGS_FOR_BUILD="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_g=yes +else $as_nop + CFLAGS_FOR_BUILD="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS_FOR_BUILD="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS_FOR_BUILD=$ac_save_CFLAGS +elif test $ac_cv_build_prog_cc_g = yes; then + if test "$GCC_FOR_BUILD" = yes; then + CFLAGS_FOR_BUILD="-g -O2" + else + CFLAGS_FOR_BUILD="-g" + fi +else + if test "$GCC_FOR_BUILD" = yes; then + CFLAGS_FOR_BUILD="-O2" + else + CFLAGS_FOR_BUILD= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C11 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C11 features... " >&6; } +if test ${ac_cv_build_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c11=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c11" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C99 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C99 features... " >&6; } +if test ${ac_cv_build_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c99=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c99" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C89 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C89 features... " >&6; } +if test ${ac_cv_build_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c89=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c89" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + +if test ${was_set_c_compiler_gnu} +then : + ac_cv_c_compiler_gnu=$saved_c_compiler_gnu +fi + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_build_exeext+y} && test "$ac_cv_build_exeext" != no; + then :; else + ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_build_exeext" = no && ac_cv_build_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_build_exeext=$ac_cv_build_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_build_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_build_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_exeext" >&5 +printf "%s\n" "$ac_cv_build_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_build_exeext +ac_build_exeext=$BUILD_EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling_build" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_build_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling_build=no + else + if test "$cross_compiling_build" = maybe; then + cross_compiling_build=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--build'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5 +printf "%s\n" "$cross_compiling_build" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_build_exeext conftest.out +ac_clean_files=$ac_clean_files_save + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_build_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_build_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_build_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_objext" >&5 +printf "%s\n" "$ac_cv_build_objext" >&6; } +OBJEXT=$ac_cv_build_objext +ac_build_objext=$BUILD_OBJEXT + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then + CPP_FOR_BUILD= +fi +if test -z "$CPP_FOR_BUILD"; then + if test ${ac_cv_build_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_build_prog_CPP=$CPP_FOR_BUILD + +fi + CPP_FOR_BUILD=$ac_cv_build_prog_CPP +else + ac_cv_build_prog_CPP=$CPP_FOR_BUILD +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5 +printf "%s\n" "$CPP_FOR_BUILD" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + fi # Checks for programs diff --git a/configure.ac b/configure.ac index 4e753cc3d0a4..64a158495758 100644 --- a/configure.ac +++ b/configure.ac @@ -813,6 +813,15 @@ AS_IF( [cross_compiler=false], [cross_compiler=true]) +AS_IF( + [test x"$build" = x"$target" -o x"$target_runnable" = xtrue], + [CC_FOR_BUILD='$(CC)' + CFLAGS_FOR_BUILD='$(CFLAGS)' + CPPFLAGS_FOR_BUILD='$(CPPFLAGS)' + LDFLAGS_FOR_BUILD='$(LDFLAGS)'], + [AC_MSG_NOTICE([detecting the C toolchain for build]) + AX_PROG_CC_FOR_BUILD]) + # Checks for programs ## Check for the C compiler: done by libtool From e6c50382a6d14f909d4dfb8a8cb73fad7d0a91c7 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Tue, 16 Jul 2024 19:44:28 +0200 Subject: [PATCH 08/17] Check that the OCaml versions are compatible for a cross compiler When building a cross compiler using an already built non-cross compiler, check that they are of the same version as a sanity check, as the cross compiler will be linked using the OCaml code in the source tree and the C runtime from the non-cross compiler --- configure | 11 +++++++++++ configure.ac | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 0a5dc794cbdd..338f1a765223 100755 --- a/configure +++ b/configure @@ -13898,6 +13898,17 @@ then : cross_compiler=false else $as_nop cross_compiler=true + # We require a non-cross-compiler of the same version + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the version of the installed OCaml compiler" >&5 +printf %s "checking the version of the installed OCaml compiler... " >&6; } + already_installed_version=`ocamlc -vnum` + if test x"5.2.0" = x"$already_installed_version" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: compatible (5.2.0)" >&5 +printf "%s\n" "compatible (5.2.0)" >&6; } +else $as_nop + as_fn_error $? "incompatible (5.2.0 vs $already_installed_version)" "$LINENO" 5 +fi fi if test x"$build" = x"$target" -o x"$target_runnable" = xtrue diff --git a/configure.ac b/configure.ac index 64a158495758..21cb7e622ee8 100644 --- a/configure.ac +++ b/configure.ac @@ -811,7 +811,14 @@ dnl nefarious single quotes which may appear in any of the strings. AS_IF( [test x"$host" = x"$target"], [cross_compiler=false], - [cross_compiler=true]) + [cross_compiler=true + # We require a non-cross-compiler of the same version + AC_MSG_CHECKING([the version of the installed OCaml compiler]) + already_installed_version=`ocamlc -vnum` + AS_IF([test x"AC_PACKAGE_VERSION" = x"$already_installed_version"], + [AC_MSG_RESULT([compatible (AC_PACKAGE_VERSION)])], + [AC_MSG_ERROR(m4_normalize([incompatible (AC_PACKAGE_VERSION vs + $already_installed_version)]))])]) AS_IF( [test x"$build" = x"$target" -o x"$target_runnable" = xtrue], From 457097a6ad398f28efec0a79dd618b13c3475c22 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 19 Jul 2024 11:33:29 +0200 Subject: [PATCH 09/17] Define `Config.target_os_type` to implement native `%ostype_X` primitives --- .depend | 2 ++ configure | 3 +++ configure.ac | 2 ++ middle_end/closure/closure.ml | 6 +++--- utils/config.common.ml.in | 2 +- utils/config.fixed.ml | 2 ++ utils/config.generated.ml.in | 1 + utils/config.mli | 6 ++++++ 8 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.depend b/.depend index 2e7da09b25e7..1a177e29bc9e 100644 --- a/.depend +++ b/.depend @@ -4189,6 +4189,7 @@ middle_end/closure/closure.cmo : \ typing/env.cmi \ lambda/debuginfo.cmi \ middle_end/convert_primitives.cmi \ + utils/config.cmi \ middle_end/compilenv.cmi \ utils/clflags.cmi \ middle_end/clambda_primitives.cmi \ @@ -4211,6 +4212,7 @@ middle_end/closure/closure.cmx : \ typing/env.cmx \ lambda/debuginfo.cmx \ middle_end/convert_primitives.cmx \ + utils/config.cmx \ middle_end/compilenv.cmx \ utils/clflags.cmx \ middle_end/clambda_primitives.cmx \ diff --git a/configure b/configure index 338f1a765223..ced409876ab1 100755 --- a/configure +++ b/configure @@ -898,6 +898,7 @@ ocamlsrcdir systhread_support native_cppflags native_cflags +target_os_type system model arch64 @@ -3444,6 +3445,7 @@ LINEAR_MAGIC_NUMBER=Caml1999L034 + # TODO: rename this variable @@ -17021,6 +17023,7 @@ fi printf "%s\n" "#define OCAML_OS_TYPE \"$ostype\"" >>confdefs.h +target_os_type="$ostype" # Extract the first word of "$target_alias-ld", so it can be a program name with args. set dummy $target_alias-ld; ac_word=$2 diff --git a/configure.ac b/configure.ac index 21cb7e622ee8..95a55a108c80 100644 --- a/configure.ac +++ b/configure.ac @@ -140,6 +140,7 @@ AC_SUBST([arch_specific_SOURCES]) AC_SUBST([arch64]) AC_SUBST([model]) AC_SUBST([system]) +AC_SUBST([target_os_type]) AC_SUBST([native_cflags]) AC_SUBST([native_cppflags]) AC_SUBST([systhread_support]) @@ -1496,6 +1497,7 @@ AS_IF([$natdynlink], [natdynlink_archive=""]) AC_DEFINE_UNQUOTED([OCAML_OS_TYPE], ["$ostype"]) +target_os_type="$ostype" AC_CHECK_TARGET_TOOL([DIRECT_LD],[ld]) AS_IF([test -z "$PARTIALLD"], diff --git a/middle_end/closure/closure.ml b/middle_end/closure/closure.ml index 880773fbac09..b78feab118c9 100644 --- a/middle_end/closure/closure.ml +++ b/middle_end/closure/closure.ml @@ -1058,9 +1058,9 @@ let rec close ({ backend; fenv; cenv ; mutable_vars } as env) lam = | Word_size -> make_const_int (8*B.size_int) | Int_size -> make_const_int (8*B.size_int - 1) | Max_wosize -> make_const_int ((1 lsl ((8*B.size_int) - 10)) - 1 ) - | Ostype_unix -> make_const_bool (Sys.os_type = "Unix") - | Ostype_win32 -> make_const_bool (Sys.os_type = "Win32") - | Ostype_cygwin -> make_const_bool (Sys.os_type = "Cygwin") + | Ostype_unix -> make_const_bool (Config.target_os_type = "Unix") + | Ostype_win32 -> make_const_bool (Config.target_os_type = "Win32") + | Ostype_cygwin -> make_const_bool (Config.target_os_type = "Cygwin") | Backend_type -> make_const_int 0 (* tag 0 is the same as Native here *) in diff --git a/utils/config.common.ml.in b/utils/config.common.ml.in index 15043dae8432..ef9f4da4d9fa 100644 --- a/utils/config.common.ml.in +++ b/utils/config.common.ml.in @@ -101,7 +101,7 @@ let configuration_variables () = p "ext_asm" ext_asm; p "ext_lib" ext_lib; p "ext_dll" ext_dll; - p "os_type" Sys.os_type; + p "os_type" target_os_type; p "default_executable_name" default_executable_name; p_bool "systhread_supported" systhread_supported; p "host" host; diff --git a/utils/config.fixed.ml b/utils/config.fixed.ml index 9374f4464acc..99396610d67f 100644 --- a/utils/config.fixed.ml +++ b/utils/config.fixed.ml @@ -57,6 +57,8 @@ let tsan = false let architecture = "none" let model = "default" let system = "unknown" +let target_os_type = + "The boot compiler should not be using Config.target_os_type" let asm = boot_cannot_call "the assembler" let asm_cfi_supported = false let with_frame_pointers = false diff --git a/utils/config.generated.ml.in b/utils/config.generated.ml.in index 1d22c1d7f619..0dfa638270a3 100644 --- a/utils/config.generated.ml.in +++ b/utils/config.generated.ml.in @@ -71,6 +71,7 @@ let native_compiler = @native_compiler@ let architecture = {@QS@|@arch@|@QS@} let model = {@QS@|@model@|@QS@} let system = {@QS@|@system@|@QS@} +let target_os_type = {@QS@|@target_os_type@|@QS@} let asm = {@QS@|@AS@|@QS@} let asm_cfi_supported = @asm_cfi_supported@ diff --git a/utils/config.mli b/utils/config.mli index f1e1d04bd439..000d18b88f1c 100644 --- a/utils/config.mli +++ b/utils/config.mli @@ -167,6 +167,12 @@ val model: string val system: string (** Name of operating system for the native-code compiler *) +val target_os_type: string +(** Operating system targetted by the native-code compiler. One of +- ["Unix"] (for all Unix versions, including Linux and Mac OS X), +- ["Win32"] (for MS-Windows, OCaml compiled with MSVC++ or MinGW-w64), +- ["Cygwin"] (for MS-Windows, OCaml compiled with Cygwin). *) + val asm: string (** The assembler (and flags) to use for assembling ocamlopt-generated code. *) From 42c791cda7035f5e5f5f710541f86710662091ab Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 19 Jul 2024 12:39:51 +0200 Subject: [PATCH 10/17] Bootstrap --- boot/ocamlc | Bin 3233094 -> 3233175 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/boot/ocamlc b/boot/ocamlc index ee406942e06db62cbc59a8cc88a35c863475176d..aa35ace69ea6e4bbe961e3c7d1f75d82439eca4b 100755 GIT binary patch delta 189600 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

)2Ze1yQs4qtX?TpA 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 Tc}{|9oBQ4pQOI-5FKC75B&G~tjB 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 From 002ddaf585cbe049a111b3572ff9323d63aa21e1 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 23 Feb 2024 16:56:07 +0100 Subject: [PATCH 11/17] WIP Add a Makefile.cross for recipes to build a cross-compiler Define cross.opt and cross-install targets WIP: 1. is there a better way to find the flags to link the cross-compilers with `zstd` when they should be? 2. cross-install target should be tested again, it should probably use installopt instead of install 3. revise the RUNTIME_BUILD_OVERRIDES, move them to a different commit if still required --- Makefile | 5 ++++ Makefile.cross | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 Makefile.cross diff --git a/Makefile b/Makefile index 5d19bcea1ff7..fbb36a496c29 100644 --- a/Makefile +++ b/Makefile @@ -2732,6 +2732,11 @@ endif include .depend +# Include the cross-compiler recipes only when relevant +ifneq "$(HOST)" "$(TARGET)" +include Makefile.cross +endif + Makefile.config Makefile.build_config: config.status config.status: @echo "Please refer to the installation instructions:" diff --git a/Makefile.cross b/Makefile.cross new file mode 100644 index 000000000000..227dabf7753e --- /dev/null +++ b/Makefile.cross @@ -0,0 +1,74 @@ +#************************************************************************** +#* * +#* OCaml * +#* * +#* Samuel Hym, Tarides * +#* * +#* Copyright 2024 Tarides * +#* * +#* All rights reserved. This file is distributed under the terms of * +#* the GNU Lesser General Public License version 2.1, with the * +#* special exception on linking described in the file LICENSE. * +#* * +#************************************************************************** + +# Recipes to build a cross-compiler (_not_ cross-compiling the compiler), aka +# generating code that will run on `target`, assuming that a non-cross OCaml +# compiler (so targetting our build machine) of the same version is available in +# $PATH + +# We assume no zstd for the cross-compiler (ie no requirement on zstd for the +# target) +# Still the cross-compiler will run on host, not target. And as a consequence of +# the rules linking it, the cross-compilers will be linked with the _build_ +# version of libcomprmarsh, so we still must discover the flags to link with +# libzstd if it was set up in the non-cross compiler, so we rely on the +# pkg-config command to get the linking flags for zstd +PKG_CONFIG := pkg-config +# This is used only once, so it doesn't have to be much lazier +NATIVE_ZSTD_LIBS=ZSTD_LIBS="$(shell $(PKG_CONFIG) --libs libzstd)" +# As the libcomprmarsh built by the C cross compiler will not be linked in, we +# can build an empty one +NO_ZSTD=libcomprmarsh_OBJECTS= + +CROSS_OVERRIDES=OCAMLRUN=ocamlrun NEW_OCAMLRUN=ocamlrun \ + BOOT_OCAMLLEX=ocamllex OCAMLYACC=ocamlyacc +CROSS_COMPILER_OVERRIDES=$(CROSS_OVERRIDES) CAMLC=ocamlc CAMLOPT=ocamlopt \ + BEST_OCAMLC=ocamlc BEST_OCAMLOPT=ocamlopt BEST_OCAMLLEX=ocamllex + +INSTALL_OVERRIDES=build_ocamldoc=false WITH_DEBUGGER= + +# Freestanding target custom options +ifeq "$(SYSTEM)" "none" +RUNTIME_BUILD_OVERRIDES=runtime_PROGRAMS= +INSTALL_OVERRIDES += runtime_PROGRAMS=`which ocamlrun` \ + runtime_BYTECODE_STATIC_LIBRARIES=runtime/ld.conf +else +RUNTIME_BUILD_OVERRIDES= +endif + +cross.opt: + $(MAKE) runtime-all $(NO_ZSTD) $(RUNTIME_BUILD_OVERRIDES) + $(MAKE) ocamlc tools/ocamlmklib$(EXE) $(CROSS_COMPILER_OVERRIDES) + $(MAKE) runtimeopt $(NO_ZSTD) + $(MAKE) ocamlc.opt ocamlopt.opt $(TOOLS_NATIVE_TARGETS) \ + $(NO_ZSTD) $(CROSS_COMPILER_OVERRIDES) $(NATIVE_ZSTD_LIBS) + $(MAKE) libraryopt $(NO_ZSTD) $(CROSS_OVERRIDES) + $(MAKE) otherlibrariesopt ocamltoolsopt $(NO_ZSTD) $(CROSS_OVERRIDES) + $(MAKE) tools-allopt.opt $(NO_ZSTD) $(CROSS_COMPILER_OVERRIDES) + +.PHONY: cross-install +cross-install: + # dummy files + touch \ + $(addprefix toplevel/, \ + $(foreach ext,cmi cmt cmti cmx, native/nat__dummy__.$(ext)) \ + all__dummy__.cmx topstart.o native/tophooks.cmi) + $(LN) `which ocamlyacc` yacc/ocamlyacc.opt$(EXE) + $(LN) `which ocamllex` lex/ocamllex.opt$(EXE) +ifeq "$(SYSTEM)" "none" + $(LN) `which ocamlyacc` yacc/ocamlyacc$(EXE) + $(LN) `which ocamllex` lex/ocamllex$(EXE) +endif + # Real installation + $(MAKE) install $(INSTALL_OVERRIDES) OCAMLRUN=ocamlrun From 57b27eb6de8a0d738976a25d2a5c0ee4a512f275 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Mon, 26 Feb 2024 19:35:26 +0100 Subject: [PATCH 12/17] Add native freestanding targets to supported configurations Accept `*-none` and `*-elf*` triplets for all the architectures with a native backend to describe the corresponding freestanding target --- configure | 14 +++++++++++++- configure.ac | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/configure b/configure index ced409876ab1..e2711777d600 100755 --- a/configure +++ b/configure @@ -16958,7 +16958,19 @@ fi ;; #( x86_64-*-cygwin*) : has_native_backend=yes; arch=amd64; system=cygwin ;; #( riscv64-*-linux*) : - has_native_backend=yes; arch=riscv; model=riscv64; system=linux + has_native_backend=yes; arch=riscv; model=riscv64; system=linux ;; #( + aarch64-*-none|arm64-*-none|aarch64-*-elf*|arm64-*-elf*) : + has_native_backend=yes; arch=arm64; system=none ;; #( + powerpc64le*-*-none|powerpc64le*-*-elf*) : + has_native_backend=yes; arch=power; model=ppc64le; system=none ;; #( + powerpc64*-*-none|powerpc64*-*-elf*) : + has_native_backend=yes; arch=power; model=ppc64; system=none ;; #( + riscv64-*-none|riscv64-*-elf*) : + has_native_backend=yes; arch=riscv; model=riscv64; system=none ;; #( + s390x*-*-none|s390x*-*-elf*) : + has_native_backend=yes; arch=s390x; model=z10; system=none ;; #( + x86_64-*-none|x86_64-*-elf*) : + has_native_backend=yes; arch=amd64; system=none ;; #( *) : ;; diff --git a/configure.ac b/configure.ac index 95a55a108c80..d243c1e8aa60 100644 --- a/configure.ac +++ b/configure.ac @@ -1458,7 +1458,19 @@ AS_CASE([$target], [x86_64-*-cygwin*], [has_native_backend=yes; arch=amd64; system=cygwin], [riscv64-*-linux*], - [has_native_backend=yes; arch=riscv; model=riscv64; system=linux] + [has_native_backend=yes; arch=riscv; model=riscv64; system=linux], + [aarch64-*-none|arm64-*-none|aarch64-*-elf*|arm64-*-elf*], + [has_native_backend=yes; arch=arm64; system=none], + [powerpc64le*-*-none|powerpc64le*-*-elf*], + [has_native_backend=yes; arch=power; model=ppc64le; system=none], + [powerpc64*-*-none|powerpc64*-*-elf*], + [has_native_backend=yes; arch=power; model=ppc64; system=none], + [riscv64-*-none|riscv64-*-elf*], + [has_native_backend=yes; arch=riscv; model=riscv64; system=none], + [s390x*-*-none|s390x*-*-elf*], + [has_native_backend=yes; arch=s390x; model=z10; system=none], + [x86_64-*-none|x86_64-*-elf*], + [has_native_backend=yes; arch=amd64; system=none] ) AS_CASE([$arch], From da462306c37ab891f9331948ed76a066d7024ab8 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Mon, 26 Feb 2024 12:06:45 +0100 Subject: [PATCH 13/17] Define OS type to `"None"` for freestanding targets --- configure | 2 ++ configure.ac | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/configure b/configure index e2711777d600..ca36ee622ce6 100755 --- a/configure +++ b/configure @@ -15687,6 +15687,8 @@ esac ;; #( gcc-*,powerpc-*-linux*) : oc_ldflags="-mbss-plt" ;; #( + *,*-*-none|*,*-*-elf*) : + ostype="None" ;; #( *) : ;; esac diff --git a/configure.ac b/configure.ac index d243c1e8aa60..fc35a014fa45 100644 --- a/configure.ac +++ b/configure.ac @@ -1092,7 +1092,9 @@ AS_CASE([$ocaml_cc_vendor,$target], [oc_ldflags='-brtl -bexpfull' AC_DEFINE([HAS_ARCH_CODE32], [1])], [gcc-*,powerpc-*-linux*], - [oc_ldflags="-mbss-plt"]) + [oc_ldflags="-mbss-plt"], + [*,*-*-none|*,*-*-elf*], + [ostype="None"]) ## Program to use to install files AC_PROG_INSTALL From 8afcf82050a1b312fe22b7861f04af00dbadb1e3 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Wed, 17 Jul 2024 19:05:54 +0200 Subject: [PATCH 14/17] Accept "none" as valid system in the x86 backend --- asmcomp/x86_proc.ml | 2 ++ asmcomp/x86_proc.mli | 1 + 2 files changed, 3 insertions(+) diff --git a/asmcomp/x86_proc.ml b/asmcomp/x86_proc.ml index b7abe4d3d1ca..540ee4864c18 100644 --- a/asmcomp/x86_proc.ml +++ b/asmcomp/x86_proc.ml @@ -27,6 +27,7 @@ type system = | S_freebsd | S_netbsd | S_openbsd + | S_none | S_unknown @@ -43,6 +44,7 @@ let system = match Config.system with | "freebsd" -> S_freebsd | "netbsd" -> S_netbsd | "openbsd" -> S_openbsd + | "none" -> S_none | _ -> S_unknown diff --git a/asmcomp/x86_proc.mli b/asmcomp/x86_proc.mli index c7f9a5e59e13..002efff96878 100644 --- a/asmcomp/x86_proc.mli +++ b/asmcomp/x86_proc.mli @@ -69,6 +69,7 @@ type system = | S_freebsd | S_netbsd | S_openbsd + | S_none | S_unknown From 4cdb21da2dae3afe5b8853a7e91a18d23b40f4e6 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Mon, 29 Apr 2024 18:21:24 +0200 Subject: [PATCH 15/17] Set stack as non-executable on freestanding targets --- asmcomp/amd64/emit.mlp | 2 +- asmcomp/arm64/emit.mlp | 2 +- runtime/amd64.S | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index 619ce9c3c595..19f896c1ac51 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -1079,7 +1079,7 @@ let end_assembly() = D.size frametable (ConstSub (ConstThis, ConstLabel frametable)) end; - if system = S_linux then + if system = S_linux || system = S_unknown then (* Mark stack as non-executable, PR#4564 *) D.section [".note.GNU-stack"] (Some "") [ "%progbits" ]; diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index 1816f8c34537..41769e4f9347 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -1217,7 +1217,7 @@ let end_assembly () = emit_symbol_type emit_symbol lbl "object"; emit_symbol_size lbl; begin match Config.system with - | "linux" -> + | "linux" | "none" -> (* Mark stack as non-executable *) ` .section .note.GNU-stack,\"\",%progbits\n` | _ -> () diff --git a/runtime/amd64.S b/runtime/amd64.S index 49c712b16753..be0856a72b2a 100644 --- a/runtime/amd64.S +++ b/runtime/amd64.S @@ -1386,7 +1386,7 @@ G(caml_negf_mask): G(caml_absf_mask): .quad 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF -#if defined(SYS_linux) +#if defined(SYS_linux) || defined(SYS_none) /* Mark stack as non-executable, PR#4564 */ .section .note.GNU-stack,"",%progbits #endif From 7df18c29a9c0f291efba282a526acb6227c84540 Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Mon, 26 Feb 2024 11:51:11 +0100 Subject: [PATCH 16/17] Allow `ocaml` as a target OS to configure freestanding cross-compilers Allow the use of *-*-ocaml or *-*-*-ocaml target triplets to stand for freestanding cross compilers by temporarily rewriting the target OS to `none` when generating the canonical target This allows to use *-*-ocaml and *-*-*-ocaml prefixes for cross-compiler specific toolchains, so that all the specific tools (for instance aarch64-solo5-ocaml-gcc, etc.) can be discovered automatically by `configure` --- configure | 20 ++++++++++++++++++++ configure.ac | 17 +++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/configure b/configure index ca36ee622ce6..8ca1b2fe2cce 100755 --- a/configure +++ b/configure @@ -3629,6 +3629,25 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac +# Allow "ocaml" as target OS for freestanding compiler by temporarily rewriting +# the target OS to "none" to generate the canonical target +real_target_alias="$target_alias" +case $target_alias in #( + *-*-*-ocaml) : + ac_save_IFS=$IFS + IFS='-' + set x $target_alias + target_alias="$2-$3-none" + IFS=$ac_save_IFS ;; #( + *-*-ocaml) : + ac_save_IFS=$IFS + IFS='-' + set x $target_alias + target_alias="$2-none" + IFS=$ac_save_IFS ;; #( + *) : + ;; +esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} @@ -3669,6 +3688,7 @@ test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- +target_alias="$real_target_alias" # Override cross_compiling and ac_tool_prefix variables since the C toolchain is # used to generate target code when building a cross compiler diff --git a/configure.ac b/configure.ac index fc35a014fa45..2a1cc9995fa8 100644 --- a/configure.ac +++ b/configure.ac @@ -287,7 +287,24 @@ AC_CONFIG_COMMANDS_PRE(OCAML_QUOTED_STRING_ID) AC_CANONICAL_BUILD AC_CANONICAL_HOST +# Allow "ocaml" as target OS for freestanding compiler by temporarily rewriting +# the target OS to "none" to generate the canonical target +real_target_alias="$target_alias" +AS_CASE([$target_alias], + [*-*-*-ocaml], + [ac_save_IFS=$IFS + IFS='-' + set x $target_alias + target_alias="$2-$3-none" + IFS=$ac_save_IFS], + [*-*-ocaml], + [ac_save_IFS=$IFS + IFS='-' + set x $target_alias + target_alias="$2-none" + IFS=$ac_save_IFS]) AC_CANONICAL_TARGET +target_alias="$real_target_alias" # Override cross_compiling and ac_tool_prefix variables since the C toolchain is # used to generate target code when building a cross compiler From 75db83d1090f86026ad15e10d90463983804e5cf Mon Sep 17 00:00:00 2001 From: Samuel Hym Date: Fri, 19 Jul 2024 18:17:51 +0200 Subject: [PATCH 17/17] Revert "Minify the preliminary steps for cross.opt" This reverts commit 46c4a43aae5b858d1a26fa05bdc0f0cad413e43e. This allows the installation to proceed --- Makefile.cross | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile.cross b/Makefile.cross index 227dabf7753e..b993783d2fc9 100644 --- a/Makefile.cross +++ b/Makefile.cross @@ -49,7 +49,16 @@ endif cross.opt: $(MAKE) runtime-all $(NO_ZSTD) $(RUNTIME_BUILD_OVERRIDES) - $(MAKE) ocamlc tools/ocamlmklib$(EXE) $(CROSS_COMPILER_OVERRIDES) + $(MAKE) ocamlc ocamlopt $(TOOLS_BYTECODE_TARGETS) expunge \ + $(CROSS_COMPILER_OVERRIDES) + $(MAKE) library $(CROSS_OVERRIDES) +ifneq "$(SYSTEM)" "none" + $(MAKE) ocamlyacc $(CROSS_OVERRIDES) + $(MAKE) ocamllex $(CROSS_COMPILER_OVERRIDES) +endif + $(MAKE) ocaml $(CROSS_COMPILER_OVERRIDES) + $(MAKE) -C otherlibs all $(CROSS_OVERRIDES) + # Opt $(MAKE) runtimeopt $(NO_ZSTD) $(MAKE) ocamlc.opt ocamlopt.opt $(TOOLS_NATIVE_TARGETS) \ $(NO_ZSTD) $(CROSS_COMPILER_OVERRIDES) $(NATIVE_ZSTD_LIBS)