mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 20:03:44 +00:00
Estimated hours taken: 20 Branch: main Improve the Morphine documentation. extras/morphine/source/forward_move.op: extras/morphine/source/current_arg.op: extras/morphine/source/current_slots.op: extras/morphine/source/event_attributes.op: extras/morphine/source/exec_control.op: extras/morphine/source/coprocess.op: extras/morphine/source/interactive_queries.op: extras/morphine/source/step_by_step.op: extras/morphine/source/display.op: extras/morphine/source/source.op: extras/morphine/source/collect.op: extras/morphine/source/collect.in: extras/morphine/source/make_scenario.pl: Make the documentation more homogeneous; in particular, wrap all predicates, variables, and atoms with quotes like this: `...'. Also make the help messages begin with a verb when possible for consistency. Fix a few typos. Fix quite a few grammatical errors.
137 lines
4.7 KiB
Prolog
137 lines
4.7 KiB
Prolog
%------------------------------------------------------------------------------%
|
|
% Copyright (C) 1999-2001 INRIA/INSA de Rennes/IFSIC.
|
|
% This file may only be copied under the terms of the GNU Library General
|
|
% Public License - see the file License in the Morphine distribution.
|
|
%
|
|
% Authors : Erwan Jahier <jahier@irisa.fr>,
|
|
% Mireille Ducassé <ducasse@irisa.fr>
|
|
%
|
|
% This file builds the Morphine files. It is loaded from the INSTALL-MORPHINE
|
|
% script.
|
|
|
|
:- module(morphine).
|
|
|
|
% We are using some files (the scenario handler) that are part of Eclipse.
|
|
% To avoid licensing issues, we did not include them in the Morphine distribution.
|
|
% But since we need to patch them, we copy them and then apply the patches.
|
|
|
|
patch_opium_files(FileName) :-
|
|
getenv('MERCURY_MORPHINE_DIR', MorphineDir),
|
|
append_strings(MorphineDir, "/source/", SourceDir),
|
|
atom_string(FileName, FileNameStr),
|
|
get_flag(installation_directory, InstallDir),
|
|
append_strings(InstallDir, "/lib_pd/opium_light/", OPIUM_LIGTH_DIR),
|
|
(
|
|
exists(OPIUM_LIGTH_DIR),
|
|
!
|
|
;
|
|
print("\n*** You need to install eclipse_misc.tgz."),
|
|
print("\n*** You can download it at http://www.icparc.ic.ac.uk/eclipse/"),
|
|
print("\n*** and then de-tar it in your eclipse directory.\n"),
|
|
print("\n*** If it still does not work, it probably means"),
|
|
print("\n*** that you need ECLiPSe 4.1 or later.\n"),
|
|
abort
|
|
),
|
|
concat_string([FileNameStr, ".op"], File),
|
|
append_strings("patch.", FileNameStr, PatchFile),
|
|
|
|
concat_string(["cp ", OPIUM_LIGTH_DIR, File, " ", SourceDir], Copy),
|
|
print(Copy),nl,
|
|
exec(Copy, []),
|
|
concat_string([SourceDir, File], AbsoluteFileName),
|
|
get_file_info(AbsoluteFileName, size, Size),
|
|
(
|
|
concat_string(["patch ", AbsoluteFileName, " ", SourceDir,
|
|
PatchFile], Patch),
|
|
print(Patch), nl,
|
|
exec(Patch, []),
|
|
% Make sure the patch was applied
|
|
not get_file_info(AbsoluteFileName, size, Size), !
|
|
;
|
|
% Not all the patch commands use the same options; some use
|
|
% "-i PatchFiles", some others don't...
|
|
% If the previous attempt to patch files fails, we try that:
|
|
concat_string(["patch -i ", SourceDir, PatchFile, " ",
|
|
AbsoluteFileName], Patch2),
|
|
print(Patch2), nl,
|
|
exec(Patch2, []),
|
|
not get_file_info(AbsoluteFileName, size, Size), !
|
|
;
|
|
print("\n*** Unable to use `patch' system command."),
|
|
print("Make sure that you have `patch' installed "),
|
|
print("and in your PATH. If you already have a "),
|
|
print("version of `patch' installed, and it is "),
|
|
print("not working, then try using the GNU version "),
|
|
print("of patch instead.\n"),
|
|
abort
|
|
).
|
|
|
|
patch_all_files :-
|
|
patch_opium_files(error),
|
|
patch_opium_files(autoload),
|
|
patch_opium_files(help),
|
|
patch_opium_files(interface),
|
|
patch_opium_files(make),
|
|
patch_opium_files(parameter),
|
|
patch_opium_files(scenario),
|
|
patch_opium_files(scenario_handler),
|
|
patch_opium_files(translate),
|
|
patch_opium_files(types).
|
|
|
|
|
|
:- patch_all_files.
|
|
|
|
:-
|
|
getenv('MERCURY_MORPHINE_DIR', MorphineDir),
|
|
append_strings(MorphineDir, "/source/", SourceStr),
|
|
atom_string(Source, SourceStr),
|
|
|
|
append_strings(SourceStr, "util.pl", Util),
|
|
compile(Util, morphine),
|
|
|
|
append_strings(MorphineDir, "/source/error.op", Error),
|
|
append_strings(MorphineDir, "/source/scenario_handler.op",
|
|
Scenario_handler),
|
|
append_strings(MorphineDir, "/source/make.op", Make),
|
|
append_strings(MorphineDir, "/source/scenario.op", Scenario),
|
|
append_strings(MorphineDir, "/source/translate.op", Translate),
|
|
append_strings(MorphineDir, "/source/types.op", Types),
|
|
append_strings(MorphineDir, "/source/parameter.op", Parameter),
|
|
append_strings(MorphineDir, "/source/autoload.op", Autoload),
|
|
append_strings(MorphineDir, "/source/interface.op", Interface),
|
|
compile(Scenario_handler, morphine),
|
|
compile(Error, morphine),
|
|
compile(Make, morphine),
|
|
compile(Parameter, morphine),
|
|
compile(Scenario, morphine),
|
|
compile(Autoload, morphine),
|
|
compile(Translate, morphine),
|
|
compile(Types, morphine),
|
|
compile(Interface, morphine),
|
|
|
|
build_obj_dir(OD),
|
|
make(scenario_handler, morphine, [active, traceable, global], Source, OD),
|
|
make('morphine_kernel', morphine, [active, traceable, global], Source, OD),
|
|
make('source', morphine, [active, traceable, global], Source, OD),
|
|
make('display', morphine, [active, traceable, global], Source, OD),
|
|
make('step_by_step', morphine, [active, traceable, global], Source, OD),
|
|
make(collect, morphine, [active, traceable, global], Source, OD),
|
|
make(control_flow, morphine, [active, traceable, global], Source, OD),
|
|
make(help, morphine, [active, traceable, global], Source, OD),
|
|
|
|
concat_string([
|
|
"\nThe installation of Morphine succeeded!\n",
|
|
"Don't forget to add ", MorphineDir,"\nand ",
|
|
MorphineDir, "/bin to your PATH.\n",
|
|
"Make sure that the executables mmc and eclipse are ",
|
|
"accessible from your PATH too.\n"], SuccessMsg),
|
|
print(SuccessMsg),
|
|
halt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|