Commit Graph

21 Commits

Author SHA1 Message Date
Peter Wang
b0ae10248b Use --trans-opt-deps-spec option.
Use the recently added --trans-opt-deps-spec option to break cycles in
the trans-opt dependency graph for the standard library. This enables
more parallelism when making the .trans_opt files; it now takes about
half as long as before.

Ordering modules sensibly, so that .trans_opt files are created in a
logical order, also improves analysis results for many predicates and
functions. The only results which show a regression with this change are
for deprecated forwarding predicates/functions.

In future, we will probably be able to trim more dependencies to further
improve parallelism, without impacting analysis results.

configure.ac:
    Check that the bootstrap compiler supports --trans-opt-deps-spec.

library/mer_std.trans_opt_deps_spec:
    Add the spec file that adjusts dependencies in the trans-opt
    dependency graph.

library/INTER_FLAGS:
    Use the --trans-opt-deps-spec option when building with mmake.

scripts/prepare_install_dir.in:
tools/binary:
tools/bootcheck:
tools/unary:
    Copy mer_std.trans_opt_deps_spec when preparing a copy of the
    library directory.
2023-01-25 16:48:45 +11:00
Peter Wang
c4c840cb7e Delete Erlang backend from configure.
configure.ac:
m4/mercury.m4:
    Delete --enable-erlang-grade configure option.

    Don't search for erlang compiler and interpreter.

    Don't substitute @ERLC@ and @ERL@.

    Don't add erlang to libgrades.

    Don't generate erlang_conf.hrl

library/erlang_conf.hrl.in:
    Delete template file.

.dockerignore:
browser/MDB_FLAGS.in:
compiler/COMP_FLAGS.in:
deep_profiler/DEEP_FLAGS.in:
library/.gitignore:
library/Mmakefile:
library/library.m:
mdbcomp/MDBCOMP_FLAGS.in:
mfilterjavac/MFILTERJAVAC_FLAGS.in:
profiler/PROF_FLAGS.in:
scripts/Mercury.config*.in:
scripts/mercury_config.in:
scripts/prepare_install_dir.in:
ssdb/SSDB_FLAGS.in:
tools/bootcheck:
    Delete references to Erlang .hrl files.

    Delete references to @ERLC@ and @ERL@.
2020-10-27 11:10:11 +11:00
Julien Fischer
deb79feb2b Delete a leftover reference to getopt_template.
scripts/prepare_install_dir.in:
    As above.
2020-10-10 20:09:03 +11:00
Zoltan Somogyi
4f3c57e559 Copy getop_template to install dirs. 2020-09-19 08:22:16 +10:00
Zoltan Somogyi
a2def4bcc8 Bring the style of some scripts up to date ...
... by replacing tabs with spaces, adding modelines, replacing [ with test,
and fixing indentation.
2020-08-14 20:11:56 +10:00
Julien Fischer
7ce2ddd2b2 Update and fix copyright notices in the scripts directory.
scripts/*:
    As above.
2020-06-16 17:22:09 +10:00
Julien Fischer
3f2436c68a Update prepare_install_dir script.
scripts/prepare_install_dir.in:
    Do not copy over scripts from the boehm_gc directory that no
    longer exist.
2016-10-07 11:19:35 +11:00
Julien Fischer
112d1f1320 Copy all NT_MAKEFILE variants into stage 2 dir etc.
scripts/prepare_install_dir.in:
tools/bootcheck:
    Copy all of the MSVC makefiles variants for the Boehm GC into the
    grade build directory / stage 2 directory.
2016-03-20 00:12:17 +11:00
Paul Bone
bca1db24d1 Use nested submodules to include boehm_gc/libatomic_ops
Feedback of the upgrade of Boehm GC indicated that including the
libatomic_ops submodule in the top-level was inconvenient, and I agree.
This change, along with a corresponding change to the boehm_gc repository,
will instead included it as a nested submodule of boehm_gc.

.gitmodules:
libatomic_ops:
    Remove libatomic_ops submodule.

boehm_gc
    Update to the most recent revision that adds a libatomic_ops submodule.

prepare.sh:
    Update submodules recursively.

Mmakefile:
scripts/prepare_install_dir.in:
tools/bootcheck:
    Remove code in build tools that links or copies the libatomic_ops
    directory from Mercury's top-level,
2015-10-19 16:31:10 +11:00
Peter Wang
0207c5c0cf Do not copy *.il when preparing install dir.
scripts/prepare_install_dir.in:
	Do not copy runtime/*.il that no longer exist.
2015-10-07 12:45:08 +11:00
Paul Bone
2a0d3a5eff Fix the source distribution
tools/build_srcdist:
    De-initialise the git submodules prior to building the source
    distribution.  They are then setup again, with clean working
    directories, by the call to ./prepare.sh.

Mmakefile:
    Handle the the new location of libatomic_opss in the "tar" target.

scripts/prepare_install_dir.in:
    Handle both usage in the source distribution where
    boehm_gc/libatomic_ops is a directory, and usage in a development
    workspace where boehm_gc/libatomic_ops is a symlink.
2015-10-01 10:26:47 +10:00
Paul Bone
9327299975 Update Boehm GC to the leatest version on the release-7_4 branch
This is the 7.4.2 release plus some bug fixes, such as fixes for the TSX
bug.

.gitmodules:
    Update to the release-7_4 branch

boehm_gc:
libatomic_ops:
    Update submodules.

compiler/notes/upgrade_boehm_gc.html:
    Update documentation.

scripts/prepare_install_dir.in:
    Conform to changes in the boehm_gc repository.
2015-10-01 10:26:47 +10:00
Paul Bone
eed9cc75bd Make changes required to upgrade to Boehm GC 7.4.2
GC_stackbottom, GC_gc_no and GC_dont_gc are now deprecated.  These changes
use new options in the API where possible.

Update scripts to copy the boehm_gc and libatomic_ops directories correctly.

Pass Boehm GC the correct flags for thread support

Update documentation regarding the version of Boehm GC.

runtime/mercury_wrapper.c:
    Don't use the deprecated GC_dont_gc variable.

library/benchmarking.m:
    Use GC_get_stackbottom() to get the bottom of stack and GC_get_gc_no()
    to get the number of collections so far.

util/mkinit.c:
    Do not explicitly set GC_stackbottom anymore, except on AIX where it
    cannot be found automatically.

scripts/prepare_install_dir.in:
tools/bootcheck:
tools/build_srcdist:
    Add some missing files present in Boehm GC 7.4.2 that wern't present
    earlier and remove some old ones.

    Coby and link the libatomic_ops directory correctly.

.README.in:
bindist/bindist.README:
    Update documentation regarding the version of Boehm GC.

configure.ac:
    Something in Boehm GC's build system has changed and we must now pass
    -DGC_THREADS whenever building threadsafe versions of BOehm GC.  This is now
    done using the BOEHM_MISC_CFLAGS_FOR_THREADS autoconf variable, which has
    been renamed to BOEHM_CFLAGS_FOR_THREADS now that it is more generally used.

    Boehm GC no longer (or perhaps never did) require developers to specify the
    type of threading to use, eg -DGC_LINUX_THREADS rather than -DGC_THREADS.
    With the exception of win32-pthreads.  We now pass -DGC_THREADS whereever
    possible.

Mmake.common.in:
    Rename BOEHM_MISC_CFLAGS_FOR_THREADS.
2015-10-01 10:26:46 +10:00
Julien Fischer
cb28daa00a Make Mercury compile with Visual Studio 2013 (MSVC 12.0).
Fix some problems that were preventing the system from compiling properly with
MSVC.

(1) Visual Studio 2013 no longer includes the files NtWin32.Mak and Win32.Mak
which are required for building the Boehm GC with MSVC.  (This appears to be an
issue with upstream Boehm as well.)  The workaround here is to reference the
copies of this files included with the Windows 7 SDK.  (This appears to be the
official Microsoft workaround for dealing with this problem for now.)

(2) Disable support for `--c-debug' when using MSVC.  Using this option causes
MSVC to emit .pdb (Program Data Base), that contain the symbol information for
an object files.  This causes a variety of problems:

   (i) parallel builds are contending for the vc*.pdb file shared by all the
   object files in a directory causing compilation to abort.  (Compiling with
   the -FS option is another solution to this -- it causes the compiler to
   serialize access to the .pdb file -- but at the cost of slowing down
   compilation.)

   (ii) .pdb files are not cleaned up by realclean; compilation will abort
   if a pdb file generated by a different version of MSVC is encountered.

   (iii) we don't install the .pdb files alongside the libraries anyway.
   This can be a source of linker warnings.  (And shutting up the Microsoft
   linker seems to be very difficult indeed ...)

   (iv) compiling with -Zi (apparently) inhibits some C compiler optimizations.

Compiling with the older -Z7 (MSVC 7 style debugging info) option is another
alternative.  Using that option causes MSVC to include symbol information in
the object files, instead of in a separate file.

For now (i.e. the 14.01 release), disabling `--c-debug' for MSVC is the
simplest way of addressing the above issues.

README.MS-VisualC:
	Describe the problem with NtWin32.Mak and Visual Studio 2013 and
	provide two possible workarounds.

	Mention that `--c-debug' is not currently supported with MSVC and how
	to re-enable it.

	Simplify some of the instructions for setting up the build environment.

configure.ac:
scripts/mgnuc.in:
	Disable `--c-debug' with MSVC.

scripts/prepare_install_dir.in:
	Copy all makefile fragments for nmake into the boehm_gc directory for
	the library grade installation.  (This is in case the user copies
	NtWin32.Mak etc into the boehm_gc directory as per the second of
	the workarounds in README.MS-VisualC.)

slice/Mmakefile:
compiler/Mmakefile:
deep_profiler/Mmakefile:
mfilterjavac/Mmakefile:
profiler/Mmakefile:
slice/Mmakefile:
	Clean up any .pdb files.  Note that one is generated for each
	executable (regardless of whether -Zi is given to cl or not).
 	In addition, if -Zi is given to cl, there will be file named
	vc<version>.pdb generated (where <version> is the version of MSVC being
	used.)
2014-01-28 16:06:20 +11:00
Peter Ross
e73b87e77e Sign the all the assemblies in the csharp grade.
Estimated hours taken: 2
Branches: main, 12.08

Sign the all the assemblies in the csharp grade.

mercury.snk:
	The strong name key used for signing.

analysis/ANALYSIS_FLAGS.in:
browser/MDB_FLAGS.in:
compiler/COMP_FLAGS.in:
deep_profiler/DEEP_FLAGS.in:
library/LIB_FLAGS.in:
mdbcomp/MDBCOMP_FLAGS.in:
profiler/PROF_FLAGS.in:
slice/SLICE_FLAGS.in:
ssdb/SSDB_FLAGS.in:
	Pass the signing key to the c# compiler.

scripts/prepare_install_dir.in:
	Copy mercury.snk to the install dir.
2012-11-22 20:35:29 +00:00
Peter Ross
8fc6db856c Upgrade to version 7.2 of the boehm gc.
Estimated hours taken: 4
Branches: main

Upgrade to version 7.2 of the boehm gc.

This upgrade was done as 7.2 alpha 4 doesn't compile cleanly under Solaris 10.
2012-07-18 09:02:34 +00:00
Julien Fischer
32463ba134 Attempt to preserve file attributes in the boehm_gc/libatomic_ops
Branches: main

scripts/prepare_install_dir.in:
	Attempt to preserve file attributes in the boehm_gc/libatomic_ops
	directories.  This can prevent autoconf needing to re-invoked.

	Use "cp -R" rather than "cp -r".  The latter is not as portable.
2010-12-19 13:44:35 +00:00
Peter Wang
fd76da59ff Add support for the csharp' grade to mmc --make', and make it possible to
Branches: main

Add support for the `csharp' grade to `mmc --make', and make it possible to
install the `csharp' grade with `mmake install'.

Also some miscellaneous fixes.


configure.in:
        Require a recent enough bootstrap compiler that recognises C# as a
        language for `pragma foreign_type'.

Mmakefile:
        Use `mmc --make' to install the standard library in csharp grade.

aclocal.m4:
        Search for the Mono C# compiler `gmcs', which is required for generics
        at this time.  Prefer it over the DotGNU C# compiler, which I have not
        tested.

        Search for `mono'.  If found, it will be used in shell scripts to
        launch executables generated via the csharp backend.

        Remove "MS_" prefixes on the variables MS_CSC and MS_ILASM, which are
        not Microsoft-specific.  More importantly, it should be less likely to
        make the mistake of adding an extra underscore to CSCFLAGS and
        ILASMFLAGS.

README.DotNet:
        Conform to variable renamings.

compiler/compile_target_code.m:
        Add new linked target types `csharp_executable', `java_launcher' and
        `erlang_launcher', instead of overloading `executable'.

        Link with `mer_std.dll' and other libraries when generating C#
        executables.  There is no `mer_rt.dll'.

        Pass "/debug" to the C# compiler if `--target-debug' is set.

        Create a shell script to launch the executable if necessary.

        Delete an unused predicate `standard_library_directory_option'.

compiler/file_names.m:
        `.cs' and `.cs_date' are grade-dependent.

compiler/handle_options.m:
        Force `.exe' as the executable file extension in csharp grades.

        Make the `erlang' grade component imply the same options as MLDS
        grades.

compiler/make.m:
        Classify executable target types based on the compilation target.

compiler/make.module_target.m:
        Handle `mmc --grade csharp --make <target>.dll'.

compiler/make.program_target.m:
        Install library DLLs in csharp grades.

        Make clean targets remove files for csharp grades.

        Conform to changes.

compiler/make.util.m:
        Add a stub foreign type.

        Conform to changes.

compiler/module_cmds.m:
        Factor out code to generate the shell scripts which launch programs
        compiled in Java, Erlang and C# grades.

compiler/options.m:
        Add `cli_interpreter' option to remember the name of the program which
        should be used to run CLI (.NET) programs.

        Add C#-related options to the help message.

compiler/options_file.m:
        Remove "MS_" prefixes on MS_ILASM_FLAGS and MS_CSC_FLAGS, and remove
        the extra underscore before "FLAGS".  In all uses of the variables,
        they were spelt without the extra underscore.

doc/user_guide.texi:
        Document options and file types related to the C# grade.

library/Mmakefile:
        Pass `mercury_dotnet.cs' to the C# compiler when building the standard
        library.  Suppress some warnings.

        Allow stubs in this directory for csharp grade.

        Conform to variable renamings.

library/builtin.m:
        Uncomment foreign language pragmas for C#.

        Handle null values in C# implementation of `deep_copy'.

library/private_builtin.m:
library/string.m:
        Compare strings by ordinals in C#, instead of culture-specific rules.
        Although the latter is allowed according to the documentation, it is
        likely to slower, and cause confusion when porting between backends.

        Handle negative index in string.set_char.

library/rtti_implementation.m:
        Uncomment foreign language pragmas for C#.

        `System.Type.GetType' only searches the current executing assembly or
        in mscorlib for a type.  As we have to be able to find types in other
        assemblies (e.g. mer_std.dll or user DLLs), explicitly search through
        a list of assemblies.

library/thread.semaphore.m:
        Uncomment foreign language pragmas for C#.

        Fix missing class qualification.

library/array.m:
library/bitmap.m:
library/bool.m:
library/dir.m:
library/exception.m:
library/io.m:
library/mutvar.m:
library/par_builtin.m:
library/region_builtin.m:
library/store.m:
library/thread.m:
library/time.m:
library/univ.m:
library/version_array.m:
        Uncomment foreign language pragmas for C#.

mdbcomp/rtti_access.m:
        Add type and procedure stubs.

runtime/mercury_dotnet.cs.in:
        Override `Equals(object)' methods in `TypeCtorInfo_Struct' and
        `TypeInfo_Struct' classes.  This requires we override `GetHashCode' as
        well.

        Handle nulls arguments to `Equals' methods as is the expected behaviour.

        Override `ToString' in `TypeCtorInfo_Struct' to produce more useful
        output during debugging.

scripts/Mercury.config.in:
        Record the configured CLI_INTERPRETER and pass that to the compiler as
        a flag.

        Conform to variable renamings.

scripts/Mmake.vars.in:
        Pass value of CSCFLAGS from Mmake through to `mmc --make'.

        Conform to variable renamings.

scripts/Mercury.config.bootstrap.in:
scripts/Mmake.rules:
        Conform to variable renaming.

scripts/canonical_grade.sh-subr:
scripts/final_grade_options.sh-subr:
scripts/init_grade_options.sh-subr:
scripts/parse_grade_options.sh-subr:
        Canonicalise high-level code, high-level-data, C# target code to the
        `csharp' grade.

        Handle erlang grades like other grades.

scripts/prepare_install_dir.in:
        Copy `.cs' files from the runtime directory when preparing an install
        directory.

browser/Mmakefile:
compiler/Mmakefile:
deep_profiler/Mmakefile:
mdbcomp/Mmakefile:
profiler/Mmakefile:
runtime/Mmakefile:
slice/Mmakefile:
ssdb/Mmakefile:
trace/Mmakefile:
        Do as other non-C grades in this directory.

        Conform to variable renamings.

tests/hard_coded/foreign_enum_dummy.m:
tests/hard_coded/sub-modules/non_word_mutable.m:
tests/hard_coded/sub-modules/sm_exp_bug.m:
        Make these tests work in C#.

tests/mmc_make/Mmakefile:
        Update a regular expression to account for `mmc --make' writing
        "Making rebuild.exe" on platforms where the .exe suffix is not normally
        used.

tests/mmc_make/complex_test.exp2:
        Add alternative output (minor difference in floating point precision).

tests/debugger/Mmakefile:
tests/debugger/declarative/Mmakefile:
tests/general/structure_reuse/Mmakefile:
tests/hard_coded/Mmakefile:
tests/hard_coded/sub-modules/Mmakefile:
tests/par_conj/Mmakefile:
tests/stm/Mmakefile:
        Disable some tests in the csharp grade.

tests/invalid/Mmakefile:
        Disable some tests in the csharp grade.

        Enable a test which should work in java grades.

tests/valid/Mmakefile:
        Do as other non-C grades in this directory.

        When testing the csharp grade in this directory, produce only the C#
        target files for now.

tests/run_one_test:
        Don't compress a failing test case executable when the executable is
        actually only a shell script.
2010-09-30 07:23:36 +00:00
Julien Fischer
ccf113711a Upgrade to version 7.2alpha4 (slightly modified) of the Boehm collector. The
primary motivation for this is resolve various problems with Mac OS 10.6, such
as the parallel grades not building (bug #121).  The upgrade should also pave
the way for supporting a 64-bit version of Mercury on Mac OS 10.6.
(Unfortunately, the reg grades still do not work - bug #120.)

Reduce the number of merge conflicts we get when upgrading the collector by
(1) removing some local changes to support DLLs that were merged into the
official version of the collector sometime ago, and (2) removing our local copy
of the Makefile, and creating it from the file  Makefile.direct.  (We were
making local changes to the former, and the GC developers are now only updating
the latter - both files were out of sync with each other.)

boehm_gc/Makefile:
	Create Makefile from Makefile.direct and have the submake target
	depend upon it.  (Despite what the GC documentation says about
	Makefile.direct, if you use the direct method it has to be called
	Makefile because the object files are set to depend upon it by
	that name, i.e. using make's -f option won't work.)

scripts/prepare_install_dir.in:
tools/bootcheck:
.README.in:
bindist/bindist.README:
	Conform to the above changes.

NOTE: the slight modification referred to above is the following, backported from
the current head of the collector.  It is required for Mac OS 10.6.

--- gc_priv.h   2010-02-24 02:12:59.000000000 +1100
+++ ../../../../../gc_7_2b/ws-upgrade2/boehm_gc/include/private/gc_priv.h       2010-02-24 14:54:42.000000000 +1100
@@ -511,10 +511,7 @@
    The structure has changed its definition in different Darwin versions.
    This now defaults to the (older) names without __, thus hopefully,
    not breaking any existing Makefile.direct builds.  */
-#       if defined (HAS_PPC_THREAD_STATE___R0) \
-          || defined (HAS_PPC_THREAD_STATE64___R0) \
-          || defined (HAS_X86_THREAD_STATE32___EAX) \
-          || defined (HAS_X86_THREAD_STATE64___RAX)
+#       if __DARWIN_UNIX03
 #         define THREAD_FLD(x) __ ## x
 #       else
 #         define THREAD_FLD(x) x
@@ -2119,14 +2116,14 @@
        /* Linuxthreads itself uses SIGUSR1 and SIGUSR2.                 */
 #      define SIG_SUSPEND SIGPWR
 #    endif
-#   else  /* !GC_LINUX_THREADS */
+#   elif !defined(GC_OPENBSD_THREADS) && !defined(GC_DARWIN_THREADS)
 #     if defined(_SIGRTMIN)
 #       define SIG_SUSPEND _SIGRTMIN + 6
 #     else
 #       define SIG_SUSPEND SIGRTMIN + 6
 #     endif
 #   endif
-#  endif /* !SIG_SUSPEND */
+#  endif /* !SIG_SUSPEND */

 # endif
2010-02-24 07:04:43 +00:00
Peter Wang
41bf5ef5f1 Avoid problems with overlong command lines when making mer_std.jar.
Branches: main

library/Mmakefile:
	Avoid problems with overlong command lines when making mer_std.jar.

	Call `jar i' to add indices for jar files.

scripts/prepare_install_dir.in:
	Make a copy of the java/runtime directory for the java grade.
2009-06-01 10:29:01 +00:00
Zoltan Somogyi
a55a04097b Currently we prepare all grades for installation inside one directory, tmp_dir,
Estimated hours taken: 1
Branches: main

Currently we prepare all grades for installation inside one directory, tmp_dir,
so that once we are finished installing one grade, we have to delete it
to make room for the next. This diff prepares each grade in its own install
directory, so that we can *leave* all the install directories to be included
in a source distribution. (This diff does not do that last step.)

Mmakefile:
	Make the above change.

scripts/prepare_tmp_dir_fixed_part.in:
scripts/prepare_tmp_dir_grade_part:
	Delete these scripts, since there is no longer a "fixed part" of files
	in the shared tmp dir that is used for all grades.

scripts/prepare_install_dir.in:
	Replace them both with this script, which does both their jobs.

configure.log:
	Do substitutions in prepare_tmp_dir, not prepare_tmp_dir_fixed_part.

scripts/mercury_cleanup_install:
	This script has long been obsolete, so remove it.
2008-02-25 07:21:21 +00:00