From: Wolfram Kahl <kahl@diogenes.informatik.unibw-muenchen.de>
To: Basile.Starynkevitch@cea.fr
Cc: caml-list@inria.fr
Subject: Re: camltk with native code compiler ocamlopt?
Date: 13 Jun 1997 08:25:36 -0000 [thread overview]
Message-ID: <19970613082536.24606.qmail@diogenes.informatik.unibw-muenchen.de> (raw)
In-Reply-To: <199706121623.SAA26839@vega.serma.cea.fr> (message from Basile STARYNKEVITCH on Thu, 12 Jun 1997 18:23:48 +0200)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 22003 bytes --]
Basile STARYNKEVITCH writes:
> [[english]]
> Hello?
> Is there anywere a tiny patch (I expect only Makefile-s to change) to
> use the camltk41 interface to the Tk toolkit in native code (not
> bytecode) produced by the ocamlopt compiler (version 1.05, platform is
> PentiumPro with Linux)
> Thanks!
> [[french]]
> Je cherche un patch (probablement uniquement les Makefile-s à changer)
> pour utiliser l'interface camltk41 à la bibliothèque Tk en code natif,
> (pas le code octet) produit par le compilateur ocamlopt (version 1.05,
> sur Linux / PentiumPro)?
> Merci
I have a done this for 1.02 and it works perfectly;
for my application the speed doubles.
The only known problem is that I cannot compile lablbrowser
since it needs toplevel stuff.
For 1.04 a few things had to be changed
and I am not quite so sure of the results, although essentially it works;
also the patch is not so clean (probably a few absolute paths remain).
I haven't tried 1.5 yet.
Anyway, I include both patches below (take care to use only one of them!!!).
It would be brilliant if future releases of olabl supported this.
IMPORTANT: In order to compile tk.ml; at least on the SUN Sparc,
it is necessary to change all occurrences of 10000 in asmcomp/emit_*.mlp
for your machine to say 20000 before making the optimising compiler
(otherwise the assembler will fail). Perhaps that constant is somewhat
arbitrary and should therefore be given a name that simplifies changing
its value globally.
Another question in this vein:
Would it be possible to compile EVERYTHING, including the compilers,
to native code? Perhaps another Makefile target after ``make opt''
could be ``make optworld''?
[[short and bad french]]
Il y a deux patch pour les versions 1.02 et 1.04,
la pour 1.02 travail tres bien.
Importantement, il faut changer la constant ``10000'' a ``20000''
ens tous ses occurrence dans le fichier asmcomp/emit_*.mlp pour
l' ordinateur desire avant faire ``make opt''.
================
Many thanks to the makers of OCaml and OLabl!!!
Wolfram Kahl
==============================================================================
labltk41-1.04-opt.patch
==============================================================================
diff -r -c olabl-1.04/labltk41/Makefile ocaml-1.04/labltk41/Makefile
*** olabl-1.04/labltk41/Makefile Sat Feb 15 11:06:56 1997
--- ocaml-1.04/labltk41/Makefile Fri Mar 21 18:10:52 1997
***************
*** 8,13 ****
--- 8,19 ----
cd lib; $(MAKE) -f Makefile.gen; $(MAKE)
cd jpf; $(MAKE)
+ opt:
+ # cd libsupport; $(MAKE) opt
+ cd lib; $(MAKE) opt
+ cd jpf; $(MAKE) opt
+ # cd browser; $(MAKE) opt
+
Makefile.config:
@echo "You must configure first. Read INSTALL."
exit 1
***************
*** 38,43 ****
--- 44,54 ----
cd compiler; $(MAKE) install
cd jpf; $(MAKE) install
cd browser; $(MAKE) install
+
+ installopt:
+ cd lib; $(MAKE) installopt
+ cd jpf; $(MAKE) installopt
+ # cd browser; $(MAKE) installopt
clean :
-rm -f config.cache
diff -r -c olabl-1.04/labltk41/Makefile.config ocaml-1.04/labltk41/Makefile.config
*** olabl-1.04/labltk41/Makefile.config Fri Jun 13 10:05:03 1997
--- ocaml-1.04/labltk41/Makefile.config Fri Mar 21 17:38:14 1997
***************
*** 0 ****
--- 1,42 ----
+ # Generated automatically from Makefile.config.in by configure.
+ ## Where you installed Objective Label
+ LIBDIR=/opt/ocaml-1.04/lib/olabl
+
+ ## Where are the sources (for LablBrowser).
+ OLABLDIR=../..
+
+ ## Where you want to install LablTk41 libraries and binaries
+ INSTALLDIR=/opt/ocaml-1.04/lib/olabl/labltk41
+ INSTALLBINDIR=/opt/ocaml-1.04/bin
+
+ ### What to use to link with X
+ X11_LIBS=-ccopt " -L/global/X11R5sol2.3/lib -R /global/X11R5sol2.3/lib" -cclib " -lX11 -lnsl -lsocket"
+
+ ### What to use to compile and link with Tcl/Tk
+ TKINCLUDES=-ccopt "-I/opt/ocaml-1.04/include -I/global/X11R5sol2.3/include"
+ TKLIBS=-ccopt "-L/opt/ocaml-1.04/lib" -cclib "-ltk4.2 -ltcl7.6 -lsocket -lnsl -ldl -lm"
+
+ ### Making a library
+ RANLIB=:
+
+ ### Shouldn't need to change anything below
+ ## Tools from the Objective Label distribution
+ EXCRC=$(LIBDIR)/extract_crc
+ EXPUNGE=$(LIBDIR)/expunge
+
+ LABLC=olablc
+ LABLCOMP=$(LABLC) -c
+ CPP=/lib/cpp -P
+ LABLYACC=ocamlyacc -v
+ LABLLEX=ocamllex
+ LABLLIBR=$(LABLC) -a
+ LABLDEP=ocamldep
+ COMPFLAGS=
+ LINKFLAGS=
+ LABLOPTC=olablopt
+ LABLOPTCOMP=$(LABLOPTC) -c
+ LABLOPTLIBR=$(LABLOPTC) -a
+ #CAMLOPT=olablopt
+ #CAMLCOPT=olablopt -c
+
+ ## End of configuration section
diff -r -c olabl-1.04/labltk41/browser/Makefile ocaml-1.04/labltk41/browser/Makefile
*** olabl-1.04/labltk41/browser/Makefile Fri Feb 21 10:05:04 1997
--- ocaml-1.04/labltk41/browser/Makefile Fri Mar 21 18:10:20 1997
***************
*** 11,21 ****
--- 11,30 ----
fileselect.cmo searchid.cmo searchpos.cmo shell.cmo \
viewer.cmo typecheck.cmo editor.cmo main.cmo
+ OBJX = list2.cmx useunix.cmx setpath.cmx lexical.cmx \
+ fileselect.cmx searchid.cmx searchpos.cmx shell.cmx \
+ viewer.cmx typecheck.cmx editor.cmx main.cmx
+
JG = jg_tk.cmo jg_config.cmo jg_bind.cmo jg_completion.cmo \
jg_box.cmo \
jg_button.cmo jg_text.cmo jg_toplevel.cmo jg_message.cmo \
jg_menu.cmo jg_entry.cmo jg_multibox.cmo
+ JGX = jg_tk.cmx jg_config.cmx jg_bind.cmx jg_completion.cmx \
+ jg_box.cmx \
+ jg_button.cmx jg_text.cmx jg_toplevel.cmx jg_message.cmx \
+ jg_menu.cmx jg_entry.cmx jg_multibox.cmx
+
# Default rules
.SUFFIXES: .ml .mli .cmo .cmi .cmx
***************
*** 23,43 ****
--- 32,70 ----
.ml.cmo:
$(COMPILER) $(INCLUDES) $<
+ .ml.cmx:
+ $(LABLOPTCOMP) $(INCLUDES) $<
+
.mli.cmi:
$(COMPILER) $(INCLUDES) $<
all: lablbrowser
+ opt: lablbrowse
+
lablbrowser: jglib.cma $(OBJ)
$(LINKER) -o lablbrowser $(LABLTKLIB) toplevellib.cma \
unix.cma str.cma tk41.cma jglib.cma $(OBJ) \
-cclib -lstr -cclib -lunix $(SYSLIBS)
+ lablbrowse: jglib.cmxa $(OBJX)
+ labltkld -o lablbrowse \
+ #toplevellib.cmxa \
+ str.cmxa tk41.cmxa jglib.cmxa $(OBJX) \
+ -cclib -lstr
+ #-cclib -ltoplevel
+
jglib.cma: $(JG)
$(COMPILER) -a -o jglib.cma $(JG)
+ jglib.cmxa: $(JGX)
+ $(LABLOPTLIBR) -o jglib.cmxa $(JGX)
+
install:
if test -f lablbrowser; then : ; cp lablbrowser $(INSTALLBINDIR); fi
+
+ installopt:
+ if test -f lablbrowse; then : ; cp lablbrowse $(INSTALLBINDIR); fi
clean:
rm -f *.cm? lablbrowser *~ *.orig
diff -r -c olabl-1.04/labltk41/configure ocaml-1.04/labltk41/configure
*** olabl-1.04/labltk41/configure Fri Feb 14 19:04:20 1997
--- ocaml-1.04/labltk41/configure Thu Mar 20 12:04:21 1997
***************
*** 1178,1183 ****
--- 1178,1184 ----
else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
+ echo $ac_n "LIBS = '$LIBS'" 1>&6
cat > conftest.$ac_ext <<EOF
#line 1179 "configure"
#include "confdefs.h"
***************
*** 1221,1226 ****
--- 1222,1228 ----
else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
+ echo $ac_n "LIBS = '$LIBS'" 1>&6
cat > conftest.$ac_ext <<EOF
#line 1222 "configure"
#include "confdefs.h"
***************
*** 1287,1292 ****
--- 1289,1295 ----
echo "$ac_t""no" 1>&6
fi
+ echo $ac_n "LIBS = '$LIBS'" 1>&6
# Extract the first word of "cpp", so it can be a program name with args.
set dummy cpp; ac_word=$2
***************
*** 1362,1367 ****
--- 1365,1371 ----
echo "$ac_t""no" 1>&6
fi
+ LIBS="-lsocket -lnsl -ldl -lm"
### Check for Tcl7.5(7.6) and Tk4.1(4.2)
echo $ac_n "checking Tcl and Tk includes and libraries""... $ac_c" 1>&6
diff -r -c olabl-1.04/labltk41/example/Makefile ocaml-1.04/labltk41/example/Makefile
*** olabl-1.04/labltk41/example/Makefile Fri Mar 14 09:56:35 1997
--- ocaml-1.04/labltk41/example/Makefile Fri Mar 21 18:13:30 1997
***************
*** 11,16 ****
--- 11,18 ----
all: hello demo eyes calc tetris
+ opt: hellox demox eyesx calcx tetrisx
+
hello: hello.cmo
$(LABLC) -custom $(COMPFLAGS) -o hello tk41.cma hello.cmo $(TKLINKOPT)
diff -r -c olabl-1.04/labltk41/example/demo.ml ocaml-1.04/labltk41/example/demo.ml
*** olabl-1.04/labltk41/example/demo.ml Fri Feb 14 19:04:24 1997
--- ocaml-1.04/labltk41/example/demo.ml Fri Mar 21 18:32:10 1997
***************
*** 2,8 ****
(* First, open these modules for convenience *)
open Tk
! open Support
(* Dummy let *)
let _ =
--- 2,8 ----
(* First, open these modules for convenience *)
open Tk
! open Widget
(* Dummy let *)
let _ =
diff -r -c olabl-1.04/labltk41/jpf/Makefile ocaml-1.04/labltk41/jpf/Makefile
*** olabl-1.04/labltk41/jpf/Makefile Fri Feb 14 19:04:21 1997
--- ocaml-1.04/labltk41/jpf/Makefile Fri Mar 21 17:40:04 1997
***************
*** 3,8 ****
--- 3,9 ----
COMPFLAGS=-I ../lib -I ../support
OBJS= fileselect.cmo balloon.cmo
+ OBJSX= fileselect.cmx balloon.cmx
TKLINKOPT=$(STATIC) \
-ccopt -L../support -cclib -llabltk41 \
***************
*** 10,23 ****
all: libjpf.cma
test: balloontest
libjpf.cma: $(OBJS)
! $(LABLLIBR) -a -o libjpf.cma $(OBJS)
install: libjpf.cma
cp *.cmi *.mli libjpf.cma $(INSTALLDIR)
clean:
rm -f *.cm* *~ *test
--- 11,32 ----
all: libjpf.cma
+ opt: libjpf.cmxa
+
test: balloontest
libjpf.cma: $(OBJS)
! $(LABLLIBR) -o libjpf.cma $(OBJS)
!
! libjpf.cmxa: $(OBJSX)
! $(LABLOPTLIBR) -o libjpf.cmxa $(OBJSX)
install: libjpf.cma
cp *.cmi *.mli libjpf.cma $(INSTALLDIR)
+ installopt: libjpf.cmxa
+ cp *.cmi *.mli libjpf.a libjpf.cmxa $(LIBDIR)
+
clean:
rm -f *.cm* *~ *test
***************
*** 29,42 ****
balloontest.cmo : balloon.cmo libjpf.cma
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo
.mli.cmi:
$(LABLCOMP) $(COMPFLAGS) $<
.ml.cmo:
$(LABLCOMP) $(COMPFLAGS) $<
depend:
--- 38,60 ----
balloontest.cmo : balloon.cmo libjpf.cma
+ balloontestx: balloontest.cmx
+ $(LABLOPTC) -o balloontestx -I ../support -I ../lib \
+ -custom tk41.cmxa libjpf.cmxa balloontest.cmx $(TKLINKOPT)
+
+ balloontest.cmx : balloon.cmx libjpf.cmxa
+
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo .cmx
.mli.cmi:
$(LABLCOMP) $(COMPFLAGS) $<
.ml.cmo:
$(LABLCOMP) $(COMPFLAGS) $<
+
+ .ml.cmx:
+ $(LABLOPTCOMP) $(COMPFLAGS) $<
depend:
diff -r -c olabl-1.04/labltk41/labltklink ocaml-1.04/labltk41/labltklink
*** olabl-1.04/labltk41/labltklink Fri Jun 13 10:05:03 1997
--- ocaml-1.04/labltk41/labltklink Thu Mar 20 12:04:55 1997
***************
*** 0 ****
--- 1,8 ----
+ #!/bin/sh
+
+ # links with the tcl, tk and X11 libraries
+
+ exec olablc -custom -I /opt/ocaml-1.04/lib/olabl/labltk41 tk41.cma $* \
+ -ccopt -L/opt/ocaml-1.04/lib/olabl/labltk41 -cclib -llabltk41 \
+ -ccopt "-L/opt/ocaml-1.04/lib" -cclib "-ltk4.2 -ltcl7.6 -lsocket -lnsl -ldl -lm" \
+ -ccopt " -L/global/X11R5sol2.3/lib -R /global/X11R5sol2.3/lib" -cclib " -lX11 -lnsl -lsocket"
diff -r -c olabl-1.04/labltk41/lib/Makefile ocaml-1.04/labltk41/lib/Makefile
*** olabl-1.04/labltk41/lib/Makefile Fri Feb 14 19:04:21 1997
--- ocaml-1.04/labltk41/lib/Makefile Fri Mar 21 18:14:53 1997
***************
*** 12,24 ****
--- 12,38 ----
../support/textvariable.cmo ../support/timer.cmo \
../support/fileevent.cmo
+ SUPPORTX=../support/hashtblc.cmx \
+ ../support/support.cmx ../support/widget.cmx ../support/protocol.cmx \
+ ../support/textvariable.cmx ../support/timer.cmx \
+ ../support/fileevent.cmx
+
all : tk41.cma labltktop
+ opt : tk41.cmxa
+
include ./modules
+ include ./modulesx
+
tk41.cma : $(SUPPORT) $(WIDGETOBJS) tk.cmo
$(LABLLIBR) -o tk41.cma $(SUPPORT) tk.cmo $(WIDGETOBJS)
+ widx: $(WIDGETOBJSX)
+
+ tk41.cmxa : $(SUPPORTX) $(WIDGETOBJSX) tk.cmx
+ $(LABLOPTLIBR) -o tk41.cmxa $(SUPPORTX) tk.cmx $(WIDGETOBJSX)
+
## Until olabltktop is fixed (next release), we in-line it
## (otherwise our trick with -ccopt is broken)
***************
*** 38,50 ****
chmod 755 $(INSTALLBINDIR)/labltktop
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo .mlp
.mli.cmi:
$(LABLCOMP) $(COMPFLAGS) $<
.ml.cmo:
$(LABLCOMP) $(COMPFLAGS) $<
include .depend
--- 52,75 ----
chmod 755 $(INSTALLBINDIR)/labltktop
+ installopt: tk41.cmxa
+ cp *.cmi tk41.cmxa tk41.a $(INSTALLDIR)
+ cp labltkld $(INSTALLBINDIR)
+ chmod 755 $(INSTALLBINDIR)/labltkld
+ cd $(LIBDIR); ln -s tk41.a liboltk.a; ln -s tk41.a libtk41.a
+ # chmod 644 $(INSTALLDIR)/*.cmi
+ chmod 644 $(INSTALLDIR)/tk41.cmxa tk41.a
+
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo .cmx .mlp
.mli.cmi:
$(LABLCOMP) $(COMPFLAGS) $<
.ml.cmo:
$(LABLCOMP) $(COMPFLAGS) $<
+
+ .ml.cmx:
+ $(LABLOPTCOMP) $(COMPFLAGS) $<
include .depend
==============================================================================
labltk4-1.02-opt.patch
==============================================================================
diff -c -N -r labltk4/Makefile labltk4-opt/Makefile
*** labltk4/Makefile Thu May 23 10:42:45 1996
--- labltk4-opt/Makefile Tue Oct 15 09:53:22 1996
***************
*** 6,11 ****
--- 6,16 ----
cd lib; $(MAKE)
cd jpf; $(MAKE)
+ opt:
+ # cd libsupport; $(MAKE) opt
+ cd lib; $(MAKE) opt
+ cd jpf; $(MAKE) opt
+
EXDIRS= example lablbrowser
browser:
***************
*** 28,35 ****
--- 33,46 ----
cd libsupport; $(MAKE) install
# We don't want to install tkcompiler.
# cd compiler; $(MAKE) install
+ cd jpf; $(MAKE) install
cd lablbrowser; $(MAKE) install
+ installopt:
+ cd lib; $(MAKE) installopt
+ cd jpf; $(MAKE) installopt
+ # cd lablbrowser; $(MAKE) installopt
+
SUBDIRS=compiler libsupport lib jpf $(EXDIRS)
clean :
diff -c -N -r labltk4/Makefile.config labltk4-opt/Makefile.config
*** labltk4/Makefile.config Tue Oct 1 07:29:53 1996
--- labltk4-opt/Makefile.config Tue Oct 15 09:55:06 1996
***************
*** 1,15 ****
# This is from your Objective Label installation
# Where you installed O'Labl
! LIBDIR=/usr/local/lib/olabl
# Where you want to install labltklink, labltktop and browser
! BINDIR=/usr/local/bin/lang
#Where is your compiled distribution
#This is for lablbrowser: add ../ if relative to this directory
OLABLDIR=../..
### Which C compiler to use for the native-code compiler.
### cc is better than gcc on the Mips and Alpha.
#NATIVECC=cc
--- 1,19 ----
# This is from your Objective Label installation
+ prefix=/opt/hops
# Where you installed O'Labl
! LIBDIR=$(prefix)/lib/olabl
# Where you want to install labltklink, labltktop and browser
! BINDIR=$(prefix)/bin
#Where is your compiled distribution
#This is for lablbrowser: add ../ if relative to this directory
OLABLDIR=../..
+ CAMLOPT=olablopt
+ CAMLCOPT=olablopt -c
+
### Which C compiler to use for the native-code compiler.
### cc is better than gcc on the Mips and Alpha.
#NATIVECC=cc
***************
*** 17,40 ****
### How to invoke ranlib
# BSD-style:
! RANLIB=ranlib
# System V-style:
#RANLIB=ar -rs
# If ranlib is not needed at all:
! #RANLIB=true
### X Windows, Tcl, Tk
! X11_INCLUDES=/usr/X11R6/include
! X11_LIB=/usr/X11R6/lib
! TCLINCLDIR=/usr/local/lib/tcl7.5/include
! TKINCLDIR=/usr/local/lib/tk4.1/include
! TCLLIBDIR=/usr/local/lib/tcl7.5/lib
! TKLIBDIR=/usr/local/lib/tk4.1/lib
! TKLIBS=-cclib -ltk -cclib -ltcl -cclib -lX11
### Which version of Tcl/Tk you are using
! #TKVER = -DTK40 # for Tcl7.4/Tk4.0
! TKVER = -DTK41 # for Tcl7.5/Tk4.1
# Add this definition if needed
#STATIC=-ccopt -static
--- 21,44 ----
### How to invoke ranlib
# BSD-style:
! #RANLIB=ranlib
# System V-style:
#RANLIB=ar -rs
# If ranlib is not needed at all:
! RANLIB=true
### X Windows, Tcl, Tk
! X11_INCLUDES=/usr/openwin/include
! X11_LIB=/usr/openwin/lib
! TCLINCLDIR=/opt/hops/include
! TKINCLDIR=/opt/hops/include
! TCLLIBDIR=/opt/hops/lib
! TKLIBDIR=/opt/hops/lib
! TKLIBS=-cclib -ltk4.0 -cclib -ltcl7.4 -cclib -lX11
### Which version of Tcl/Tk you are using
! TKVER = -DTK40 # for Tcl7.4/Tk4.0
! #TKVER = -DTK41 # for Tcl7.5/Tk4.1
# Add this definition if needed
#STATIC=-ccopt -static
diff -c -N -r labltk4/jpf/Makefile labltk4-opt/jpf/Makefile
*** labltk4/jpf/Makefile Thu May 23 10:42:39 1996
--- labltk4-opt/jpf/Makefile Tue Oct 15 09:54:08 1996
***************
*** 1,5 ****
! CAMLC=olablc
! CAMLCOMP=$(CAMLC) -c
CAMLDEP=ocamldep
--- 1,4 ----
! include ../Makefile.config
CAMLDEP=ocamldep
***************
*** 7,22 ****
OBJS= fileselect.cmo
all: libjpf.cma
libjpf.cma: $(OBJS)
olablc -a -o libjpf.cma $(OBJS)
clean:
rm -f *.cm* *~
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo
.mli.cmi:
$(CAMLCOMP) $(COMPFLAGS) $<
--- 6,34 ----
OBJS= fileselect.cmo
+ OBJSX= fileselect.cmx
+
all: libjpf.cma
+ opt: libjpf.cmxa
+
+ install: libjpf.cma
+ cp *.cmi libjpf.cma $(LIBDIR)
+
+ installopt: libjpf.cmxa
+ cp *.cmi libjpf.a libjpf.cmxa $(LIBDIR)
+
libjpf.cma: $(OBJS)
olablc -a -o libjpf.cma $(OBJS)
+ libjpf.cmxa: $(OBJSX)
+ $(CAMLOPT) -a -o libjpf.cmxa $(OBJSX)
+
clean:
rm -f *.cm* *~
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmx .cmo
.mli.cmi:
$(CAMLCOMP) $(COMPFLAGS) $<
***************
*** 24,29 ****
--- 36,44 ----
.ml.cmo:
$(CAMLCOMP) $(COMPFLAGS) $<
+ .ml.cmx:
+ $(CAMLCOPT) $(COMPFLAGS) $<
+
depend:
mv Makefile Makefile.bak
diff -c -N -r labltk4/lablbrowser/Makefile labltk4-opt/lablbrowser/Makefile
*** labltk4/lablbrowser/Makefile Sun Sep 29 17:03:14 1996
--- labltk4-opt/lablbrowser/Makefile Wed Oct 9 12:59:02 1996
***************
*** 10,19 ****
--- 10,27 ----
fileselect.cmo searchid.cmo searchpos.cmo viewer.cmo \
typecheck.cmo editor.cmo main.cmo
+ OBJX = list2.cmx useunix.cmx setpath.cmx lexical.cmx \
+ fileselect.cmx searchid.cmx searchpos.cmx viewer.cmx \
+ typecheck.cmx editor.cmx main.cmx
+
JG = jg_tk.cmo jg_config.cmo jg_bind.cmo jg_box.cmo \
jg_button.cmo jg_text.cmo jg_toplevel.cmo jg_message.cmo \
jg_menu.cmo jg_entry.cmo
+ JGX = jg_tk.cmx jg_config.cmx jg_bind.cmx jg_box.cmx \
+ jg_button.cmx jg_text.cmx jg_toplevel.cmx jg_message.cmx \
+ jg_menu.cmx jg_entry.cmx
+
# Default rules
.SUFFIXES: .ml .mli .cmo .cmi .cmx
***************
*** 21,26 ****
--- 29,37 ----
.ml.cmo:
$(COMPILER) $(INCLUDES) $<
+ .ml.cmx:
+ $(CAMLCOPT) $(INCLUDES) $<
+
.mli.cmi:
$(COMPILER) $(INCLUDES) $<
***************
*** 31,42 ****
--- 42,66 ----
unix.cma str.cma tklib.cma jglib.cma $(OBJ) \
-cclib -lstr -cclib -lunix $(CAMLTKLIB)
+ lablbrowse: jglib.cmxa $(OBJX)
+ labltkld -o lablbrowse \
+ #toplevellib.cmxa \
+ str.cmxa tklib.cmxa jglib.cmxa $(OBJX) \
+ -cclib -lstr
+ #-cclib -ltoplevel
+
jglib.cma: $(JG)
$(COMPILER) -a -o jglib.cma $(JG)
+ jglib.cmxa: $(JGX)
+ $(CAMLOPT) -a -o jglib.cmxa $(JGX)
+
install:
if test -f lablbrowser; then : ; cp lablbrowser $(BINDIR); fi
+ installopt:
+ if test -f lablbrowse; then : ; cp lablbrowse $(BINDIR); fi
+
clean:
rm -f *.cm? lablbrowser *~ *.orig
diff -c -N -r labltk4/lib/Makefile labltk4-opt/lib/Makefile
*** labltk4/lib/Makefile Wed Sep 25 12:48:59 1996
--- labltk4-opt/lib/Makefile Tue Oct 15 09:52:12 1996
***************
*** 22,33 ****
--- 22,46 ----
EXTRAS= ../libsupport/optionmenu.cmo \
../libsupport/dialog.cmo
+ SUPPORTX=../libsupport/hashtblc.cmx \
+ ../libsupport/support.cmx ../libsupport/protocol.cmx \
+ ../libsupport/textvariable.cmx
+
+ EXTRASX= ../libsupport/optionmenu.cmx \
+ ../libsupport/dialog.cmx
+
all : tklib.cma toplevels
+ opt : tklib.cmxa toplevels
+
toplevels: labltktop
include ./modules
+ WIDGETOBJSX=place.cmx wm.cmx canvas.cmx button.cmx text.cmx scrollbar.cmx entry.cmx listbox.cmx pack.cmx clipboard.cmx radiobutton.cmx tkwait.cmx grab.cmx scale.cmx checkbutton.cmx bell.cmx resource.cmx imagephoto.cmx label.cmx palette.cmx message.cmx menu.cmx focus.cmx menubutton.cmx toplevel.cmx frame.cmx imagebitmap.cmx selection.cmx winfo.cmx
+
+ widx: $(WIDGETOBJSX)
+
tkgen.ml tkigen.ml tkfgen.ml: ../Widgets.src
cd ..; compiler/tkcompiler
***************
*** 60,65 ****
--- 73,82 ----
$(CAMLC) -a -o tklib.cma $(SUPPORT) tk.cmo $(WIDGETOBJS)\
$(EXTRAS)
+ tklib.cmxa : tk.cmx $(SUPPORTX) $(WIDGETOBJSX) $(EXTRASX)
+ $(CAMLOPT) -a -o tklib.cmxa $(SUPPORTX) tk.cmx $(WIDGETOBJSX)\
+ $(EXTRASX)
+
labltktop : $(WIDGETOBJS) $(SUPPORT)
$(CAMLC) -linkall toplevellib.cma -o labltktop -I $(SUPPORTDIR) \
$(PROFILING) -custom $(SUPPORT) tk.cmo \
***************
*** 76,83 ****
#chmod 644 $(LIBDIR)/tklib.cma
#chmod 755 $(LIBDIR)/labltktop
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo .mlp
.mli.cmi:
$(CAMLCOMP) $(COMPFLAGS) $<
--- 93,109 ----
#chmod 644 $(LIBDIR)/tklib.cma
#chmod 755 $(LIBDIR)/labltktop
+ installopt: tklib.cmxa
+ if test -d $(LIBDIR); then : ; else mkdir $(LIBDIR); fi
+ cp *.cmi tklib.a tklib.cmxa $(LIBDIR)
+ cd $(LIBDIR); ln -s tklib.a liboltk.a; ln -s tklib.a libtk.a; ln -s tklib.cmxa tk.cmxa
+ #cp labltktop $(BINDIR)
+ #chmod 644 $(LIBDIR)/*.cmi
+ #chmod 644 $(LIBDIR)/tklib.cma
+ #chmod 755 $(LIBDIR)/labltktop
+
.SUFFIXES :
! .SUFFIXES : .mli .ml .cmi .cmo .cmx .mlp
.mli.cmi:
$(CAMLCOMP) $(COMPFLAGS) $<
***************
*** 85,90 ****
--- 111,119 ----
.ml.cmo:
$(CAMLCOMP) $(COMPFLAGS) $<
+ .ml.cmx:
+ $(CAMLCOPT) $(COMPFLAGS) $<
+
depend: tk.ml
$(CAMLDEP) *.mli *.ml > .depend
diff -c -N -r labltk4/lib/labltkld labltk4-opt/lib/labltkld
*** labltk4/lib/labltkld
--- labltk4-opt/lib/labltkld Tue Oct 15 09:55:22 1996
***************
*** 0 ****
--- 1,7 ----
+ #!/bin/sh
+
+ # links native code with the tcl, tk and X11 libraries
+ # and also with the unix, str and fileselect libraries
+
+ exec olablopt str.cmxa unix.cmxa tklib.cmxa libjpf.cmxa $* -ccopt -L/opt/hops/lib -ccopt -L/usr/openwin/lib -cclib -lstr -cclib -lunix -cclib -llabltk4 -cclib -loltk -cclib -ljpf -cclib -ltk4.0 -cclib -ltcl7.4 -cclib -lX11
+
next prev parent reply other threads:[~1997-06-13 13:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-06-12 16:23 Basile STARYNKEVITCH
1997-06-13 8:25 ` Wolfram Kahl [this message]
1997-06-16 15:00 ` Thorsten Ohl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=19970613082536.24606.qmail@diogenes.informatik.unibw-muenchen.de \
--to=kahl@diogenes.informatik.unibw-muenchen.de \
--cc=Basile.Starynkevitch@cea.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).