Index: ChangeLog
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/ChangeLog,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.4
diff -u -r1.1.1.1 -r1.1.1.1.2.4
--- ChangeLog	2000/07/28 02:01:40	1.1.1.1
+++ ChangeLog	2001/05/03 14:09:42	1.1.1.1.2.4
@@ -1,3 +1,28 @@
+Thu May  3 23:06:39 2001  Hiroshi IGARASHI  <iga@ruby-lang.org>
+
+	* Makefile.tail, compiler/Makefile: specify -L../runtime via
+	LD_LIBRARY_OPTIONS when compiler is compiled.
+
+Thu Oct 12 18:16:32 2000  Hiroshi IGARASHI  <iga@ruby-lang.org>
+
+	* Configure, Makefile.tail: specify runpath by ld option `-R'
+	for Solaris.
+
+Thu Oct 12 14:54:17 2000  Hiroshi IGARASHI  <iga@ruby-lang.org>
+
+	* Makefile.tail (clean): pass value of variable DLLIBS.
+
+Thu Oct 12 14:50:34 2000  Hiroshi IGARASHI  <iga@ruby-lang.org>
+
+	* runtime/trace.c (get_mte): should be independent of dynamic location
+	of functions.
+
+Mon Jul 31 05:04:10 2000  Hiroshi IGARASHI  <iga@ruby-lang.org>
+
+	* Configure, Makefile.tail, compiler/Makefile, disttest/Makefile,
+	runtime/Makefile.head, runtime/Makefile.tail, shmtest/Makefile,
+	test/Makefile: add shared library support(Linux/Solaris only).
+
 Sat Mar 27 11:14:18 1999  Sekita Daigo  <sekita@mri.co.jp>
 
 	* macro.kl1: fix the bug in replaceClase for the :- Dec form clause.
Index: Configure
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/Configure,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.3
diff -u -r1.1.1.1 -r1.1.1.1.2.3
--- Configure	2000/07/28 02:01:40	1.1.1.1
+++ Configure	2000/10/12 09:18:27	1.1.1.1.2.3
@@ -357,6 +357,7 @@
 
 if $CROSS; then
 ARCHIVES="libklicd.a"
+DLLIBS="libklicd\$(DLLEXT)"
 
 cat <<GAZONK
 # You specified to build the cross system.   To build the cross system,
@@ -386,6 +387,7 @@
 GAZONK
 
 ARCHIVES="libklic.a libklict.a"
+DLLIBS="libklic\$(DLLEXT) libklict\$(DLLEXT)"
 fi
 
 : ::: CPU Type
@@ -403,6 +405,7 @@
 if ask_yes_or_no no DEF_DISTSYSTEM; then
 DISTSYSTEM=true
 ARCHIVES="$ARCHIVES libklicd.a"
+DLLIBS="$DLLIBS libklicd\$(DLLEXT)"
 else
 disttype=pvm
 #INCLUDESH=runtime/config/$disttype/config.h.sh
@@ -461,6 +464,7 @@
   guess_arch
   if [ $CPU != "Unknown_cpu" ]; then
      ARCHIVES="$ARCHIVES libklics.a"
+     DLLIBS="$DLLIBS libklics$(DLLEXT)"
   else 
     cat <<GAZONK
 # I do not know this machine.
@@ -629,6 +633,37 @@
 fi
 echo ' '
 
+DLTYPE="linux"
+echo $n "May I build shared library too? "$c
+if ask_yes_or_no yes DEF_BUILD_DLL; then
+  ask_with_default "shared library type (linux,solaris)" DLTYPE
+  echo " "
+  case $DLTYPE in
+    linux)
+      EXTFLAGS="-fPIC"
+      KLICCFLAGS="$KLICCFLAGS -fPIC"
+      LDSHARED="gcc -shared"
+      DLLEXT=".so"
+      DLLTARGET="runtimedir-dll"
+      DLLINSTALLTARGET="install-runtime-dll";;
+    solaris)
+      EXTFLAGS="-fPIC"
+      KLICCFLAGS="$KLICCFLAGS -fPIC"
+      LDSHARED="gcc -Wl,-G"
+      DLLEXT=".so"
+      DLLTARGET="runtimedir-dll"
+      DLLINSTALLTARGET="install-runtime-dll";;
+    *)
+      echo "$DLTYPE is not supported type."
+      DLLTARGET=""
+      DLLINSTALLTARGET="";;
+  esac
+else
+  DLLTARGET=""
+  DLLINSTALLTARGET=""
+fi
+echo ' '
+
 if [ ! -z "$FORT" ]; then
   echo "May I use $FORT for linkage also "
   echo $n "when linking with Fortran code? "$c
@@ -738,6 +773,13 @@
 check_writable "library" KLICLIB
 check_writable "include file" KLICINCLUDE
 echo " "
+case $DLTYPE in
+    solaris)
+      XLDFLAGS="-R$KLICLIB";;
+    *)
+      XLDFLAGS="";;
+esac
+KLICLDFLAGS="$KLICLDFLAGS $XLDFLAGS"
 
 LIBPATH=""
 for dir in /lib /usr/lib /usr/local/lib; do
@@ -1247,6 +1289,15 @@
 
 # Library archive indexer
 RANLIB = $RANLIB
+
+# Shared Library
+XLDFLAGS = $XLDFLAGS
+EXTFLAGS = $EXTFLAGS
+LDSHARED = $LDSHARED
+DLLEXT = $DLLEXT
+DLLIBS = $DLLIBS
+DLLTARGET = $DLLTARGET
+DLLINSTALLTARGET = $DLLINSTALLTARGET
 
 # Make program
 MAKE = $MAKE
Index: Makefile.tail
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/Makefile.tail,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.5
diff -u -r1.1.1.1 -r1.1.1.1.2.5
--- Makefile.tail	2000/07/28 02:01:40	1.1.1.1
+++ Makefile.tail	2001/05/03 14:09:42	1.1.1.1.2.5
@@ -8,12 +8,12 @@
 # Site-specific definitions will be prepended to this
 # by the configuration script
 
-CFLAGS=$(OPTFLAGS) $(DEBUGFLAGS)
-LDFLAGS=$(LIBSWITCHES)
+CFLAGS=$(OPTFLAGS) $(DEBUGFLAGS) $(EXTFLAGS)
+LDFLAGS=$(LIBSWITCHES) $(XLDFLAGS)
 
-self:	version.sed compilerdir runtimedir
+self:	version.sed compilerdir runtimedir $(DLLTARGET)
 
-cross:	version.sed compilerdir.cross runtimedir
+cross:	version.sed compilerdir.cross runtimedir $(DLLTARGET)
 
 version.sed: version.sed.tmplt klic-version
 	sed -e "s%##TODAY%`date`%;s%##KLICVERSION%`cat klic-version`%" \
@@ -29,19 +29,41 @@
 
 runtimedir: klic klicdb
 	cd runtime; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		LDFLAGS="$(LDFLAGS)" KL1CMP="$(KL1CMP)" \
 		KLICOPT="$(KLICOPT)" \
 		ARCHIVES="$(ARCHIVES)" LN="$(LN)" DISTTYPE="$(DISTTYPE)"\
-		CC="$(CC)" LD="$(LD)" RANLIB=$(RANLIB) all
+		CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB=$(RANLIB) \
+		all
+
+runtimedir-dll: klic klicdb
+	cd runtime; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
+	$(MAKE) PARALLEL="$(PARALLEL)" \
+		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
+		LDFLAGS="$(LDFLAGS)" KL1CMP="$(KL1CMP)" \
+		KLICOPT="$(KLICOPT)" \
+		ARCHIVES="$(ARCHIVES)" LN="$(LN)" DISTTYPE="$(DISTTYPE)"\
+		CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" DLLIBS="$(DLLIBS)" \
+		LDSHARED="$(LDSHARED)" RANLIB=$(RANLIB) \
+		dll
 
 verify-runtime: klic klicdb
 	cd runtime; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" \
-		CC="$(CC)" LD="$(LD)" RANLIB=$(RANLIB) verify
+		CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB=$(RANLIB) \
+		verify
 
 compilerdist: runtimedist
 	cd compiler; \
@@ -49,28 +71,46 @@
 		CC="$(CC)" LD="$(LD)" \
 		KL1CMP="$(KL1CMP)" dist
 
-compilerdir: runtimedir
+compilerdir: runtimedir $(DLLTARGET)
 	cd compiler; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
+	KLIC_LD_OPTIONS="-L../runtime $(LDFLAGS)"; \
+	export KLIC_LD_OPTIONS; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
 		KLICOPT="$(KLICOPT)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" all
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" \
+		all
 
 compilerdir.cross:
 	cd compiler; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
+	KLIC_LD_OPTIONS="$(LDFLAGS)"; \
+	export KLIC_LD_OPTIONS; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
 		KLICOPT="$(KLICOPT)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" klicdb klic
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" \
+		klicdb klic
 verify-compiler:
 	cd compiler; \
+	LD_LIBRARY_PATH="../runtime:$(LD_LIBRARY_PATH)"; \
+	export LD_LIBRARY_PATH; \
+	KLIC_LD_OPTIONS="$(LDFLAGS)"; \
+	export KLIC_LD_OPTIONS; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
 		KLICOPT="$(KLICOPT)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" verify
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" \
+		verify
 
 #klic:
 #	cd compiler; \
@@ -82,15 +122,25 @@
 
 klic:
 	cd compiler; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
+	KLIC_LD_OPTIONS="$(LDFLAGS)"; \
+	export KLIC_LD_OPTIONS; \
 	$(MAKE) CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" klic
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" klic
 
 klicdb:
 	cd compiler; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
+	KLIC_LD_OPTIONS="$(LDFLAGS)"; \
+	export KLIC_LD_OPTIONS; \
 	$(MAKE) CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" klicdb
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" klicdb
 
 rmonitor:
 	cd rmon; \
@@ -98,48 +148,69 @@
 
 kl1pp:
 	cd compiler; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
-		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" kl1pp
+		LDFLAGS="$(LDFLAGS)" CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" kl1pp
 
 documentdist:
 	cd documents; $(MAKE) dist
 
-tests:	compilerdir runtimedir
+tests:	compilerdir runtimedir $(DLLTARGET)
 	echo 'Seq. impl.: NG' >tests.log
 	cd test; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) PARALLEL="$(PARALLEL)" \
 		distclean tests;
 	echo 'Seq. impl.: OK' >tests.log
 
-disttests:	compilerdir runtimedir
+disttests:	compilerdir runtimedir $(DLLTARGET)
 	echo 'Distributed mem. imp.: NG' >disttests.log
 	cd disttest; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) PARALLEL="$(PARALLEL)" KLICOPT="$(KLICOPT)" NODES="$(NODES)" \
 		distclean all-test;
 	echo 'Distributed mem. imp.: OK' >disttests.log
 
-shmtests:	compilerdir runtimedir
+shmtests:	compilerdir runtimedir $(DLLTARGET)
 	cd shmtest; \
+	LD_LIBRARY_PATH=../runtime:${LD_LIBRARY_PATH}; \
+	export LD_LIBRARY_PATH; \
 	$(MAKE) PARALLEL="$(PARALLEL)" KLICOPT="$(KLICOPT)" NODES="$(NODES)" \
 		distclean all-test
 
-install-basics: all install-compiler install-runtime install-include
+install-basics: all install-compiler install-runtime $(DLLINSTALLTARGET) install-include
 
 install-compiler: compilerdir
 	cd compiler; \
 	$(MAKE) install INSTALL="$(INSTALL)" INSTDIR="$(INSTDIR)" \
 		KL1CMP="$(KL1CMP)" KL1SELFCOMP="$(KL1SELFCOMP)" \
 		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)" \
-		KLICINCLUDE="$(KLICINCLUDE)"
+		KLICINCLUDE="$(KLICINCLUDE)" DLLEXT="$(DLLEXT)"
 
 install-runtime: runtimedir
 	cd runtime; \
 	$(MAKE) install INSTALL="$(INSTALL)" INSTDIR="$(INSTDIR)" \
 		KL1CMP="$(KL1CMP)" \
 		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)" \
+		ARCHIVES="$(ARCHIVES)" \
+		KLICINCLUDE="$(KLICINCLUDE)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB="$(RANLIB)"
+
+install-runtime-dll: runtimedir-dll
+	cd runtime; \
+	$(MAKE) install-dll INSTALL="$(INSTALL)" INSTDIR="$(INSTDIR)" \
+		KL1CMP="$(KL1CMP)" \
+		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)" \
 		ARCHIVES="$(ARCHIVES)" \
-		KLICINCLUDE="$(KLICINCLUDE)" RANLIB="$(RANLIB)"
+		KLICINCLUDE="$(KLICINCLUDE)" \
+		DLLEXT="$(DLLEXT)" DLLIBS="$(DLLIBS)" \
+		LDSHARED="$(LDSHARED)" RANLIB="$(RANLIB)" \
+		install-dll
 
 install-include:
 	cd include; \
@@ -154,7 +225,8 @@
 		INSTDIR="$(INSTDIR)" KL1CMP="$(KL1CMP)" \
 		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)" \
 		ARCHIVES="$(ARCHIVES)" \
-		KLICINCLUDE="$(KLICINCLUDE)" RANLIB="$(RANLIB)"
+		KLICINCLUDE="$(KLICINCLUDE)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB="$(RANLIB)"
 
 install-rmonitor: install-rmon_server rmonitor
 	cd rmon; \
@@ -166,7 +238,8 @@
 		KLICOPT="$(KLICOPT)" PVMDIR="$(PVM_ROOT)"\
 		ARCHIVES="$(ARCHIVES)" LN="$(LN)" \
 		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)" \
-		KLICINCLUDE="$(KLICINCLUDE)" RANLIB="$(RANLIB)"
+		KLICINCLUDE="$(KLICINCLUDE)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB="$(RANLIB)"
 	cd compiler; $(MAKE) depend CFLAGS="$(CFLAGS)" \
 		CC="$(CC)" LD="$(LD)" KLICINCLUDE="$(KLICINCLUDE)" \
 		KLICLIB="$(KLICLIB)" KLICBIN="$(KLICBIN)"
@@ -174,12 +247,13 @@
 		CFLAGS="$(CFLAGS)" OPTLEVEL="$(OPTLEVEL)" \
 		PVMDIR="$(PVM_ROOT)" PVMLIBDIR="$(PVMLIBDIR)" \
 		PVMLIB="$(PVMLIB)" LDFLAGS="$(LDFLAGS)"\
-		CC="$(CC)" LD="$(LD)" RANLIB=$(RANLIB)
+		CC="$(CC)" LD="$(LD)" \
+		DLLEXT="$(DLLEXT)" LDSHARED="$(LDSHARED)" RANLIB=$(RANLIB)
 
 clean:
 	cd compiler; $(MAKE) clean
 	cd include; $(MAKE) clean
-	cd runtime; $(MAKE) clean LN="$(LN)"
+	cd runtime; $(MAKE) clean LN="$(LN)" DLLIBS="$(DLLIBS)"
 	cd test; $(MAKE) clean
 	cd disttest; $(MAKE) clean
 	cd shmtest; $(MAKE) clean
Index: compiler/Makefile
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/compiler/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.3
diff -u -r1.1.1.1 -r1.1.1.1.2.3
--- compiler/Makefile	2000/07/28 02:01:40	1.1.1.1
+++ compiler/Makefile	2001/05/03 14:09:42	1.1.1.1.2.3
@@ -46,7 +46,7 @@
 KL1PPOBJS = kl1pp.o cmacro.o macropp.o \
 	msg.o macro.o extern.o obj.o util.o write.o
 
-KLIC = ../compiler/klic -P$(PARALLEL) $(KLICOPT) \
+KLIC =  ../compiler/klic -P$(PARALLEL) $(KLICOPT) \
 	-R -I../include -X. -D../compiler/klicdb -v 
 
 all: klicdb klic $(KL1SELFCOMP)
@@ -104,9 +104,10 @@
 predicates.c: klicdb $(EXT) libklic.db
 	./klicdb -X. $(EXT)
 
-kl1cmp: klic klicdb klicdb.init libklic.db $(KL1SRC) ../runtime/libklict.a
+kl1cmp: klic klicdb klicdb.init libklic.db $(KL1SRC) \
+	../runtime/libklict.a
 	./klic -P$(PARALLEL) -K $(KL1CMP) -D./klicdb -v \
-		-X. -I../include -L../runtime \
+		-X. -I../include \
 		$(KLICOPT) -o kl1cmp $(KL1SRC)
 
 klicdb.init: ../runtime/klic.db
@@ -135,7 +136,7 @@
 	  diff /tmp/$$file.old /tmp/$$file.new; \
 	  /bin/rm -f /tmp/$$file.old /tmp/$$file.new; \
 	done
-	
+
 depend:
 
 clean:
Index: disttest/Makefile
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/disttest/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1 -r1.1.1.1.2.2
--- disttest/Makefile	2000/07/28 02:01:40	1.1.1.1
+++ disttest/Makefile	2000/07/31 03:57:13	1.1.1.1.2.2
@@ -23,7 +23,7 @@
 PARALLEL = $(NODES)
 
 # KLIC compiler to compile test progs.
-KLIC=$(TOP)/compiler/klic -K$(TOP)/compiler/kl1cmp \
+KLIC= $(TOP)/compiler/klic -K$(TOP)/compiler/kl1cmp \
 	-D$(TOP)/compiler/klicdb -X. -I$(TOP)/include -L$(TOP)/runtime
 
 # options to compiler KLIC programs
Index: runtime/Makefile.head
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/runtime/Makefile.head,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -u -r1.1.1.1 -r1.1.1.1.2.1
--- runtime/Makefile.head	2000/07/28 02:01:41	1.1.1.1
+++ runtime/Makefile.head	2000/07/30 20:03:54	1.1.1.1.2.1
@@ -10,9 +10,9 @@
 .SUFFIXES: $(SUFFIXES) .kl1 .ext
 DISTTYPE = pvm
 PARALLEL = 0
-ARCHIVES= libklics.a libklicd.a libklic.a libklict.a
+ARCHIVES = libklics.a libklicd.a libklic.a libklict.a
 KLICDB= klic.db
-TARGETS = $(KLICDB) $(ARCHIVES) pipedio $(EXTENSION)
+TARGETS = $(KLICDB) $(ARCHIVES) $(DLLIBS) pipedio $(EXTENSION)
 COMPILEINC = ../include/klic
 EXTCOMPILEINC = ../include/klic
 EXTENSION =
Index: runtime/Makefile.tail
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/runtime/Makefile.tail,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1 -r1.1.1.1.2.2
--- runtime/Makefile.tail	2000/07/28 02:01:41	1.1.1.1
+++ runtime/Makefile.tail	2000/07/31 03:57:13	1.1.1.1.2.2
@@ -7,7 +7,7 @@
 
 SHMCFLAGS = $(CFLAGS) -DDEBUGLIB -DSHM -I../include
 DEFINITIONS=$(DISTCFLAGS) -I../include 
-KLIC = ../compiler/klic -P$(PARALLEL) $(KLICOPT) \
+KLIC =  ../compiler/klic -P$(PARALLEL) $(KLICOPT) \
 	-R -I../include -X. -K$(KL1CMP) -D../compiler/klicdb -v 
 
 HEADERS = $(COMPILEINC)/config.h $(COMPILEINC)/alloc.h \
@@ -157,6 +157,8 @@
 	cd ..;make runtimedir
 all: $(TARGETS) $(EXTENSION)
 
+dll: $(DLLIBS)
+
 dist: $(COMMONKL1CSRCS) $(KL1NODCSRCS) \
 	atom.h funct.h atom.c funct.c predicates.c version.c
 
@@ -174,11 +176,28 @@
 	$(DDEBUGOBJS) $(DOBJS) $(DISTOBJS)
 	ar rcv $@ $?
 	$(RANLIB) $@
+
 libklics.a: $(COMMONOBJS) $(KL1SOBJS) $(SDEBUGOBJS) \
 	$(GENERIC_SOBJS) $(SHMOBJS)
 	ar rcv $@ $?
 	$(RANLIB) $@
 
+libklic$(DLLEXT): $(COMMONOBJS) $(KL1NODOBJS) $(NODEBUGOBJS) \
+	$(NODNODEBUGOBJS) $(NODOBJS)
+	$(LDSHARED) -o $@ $?
+
+libklict$(DLLEXT): $(COMMONOBJS) $(KL1NODOBJS) $(DEBUGOBJS) \
+	$(NODDEBUGOBJS) $(NODOBJS)
+	$(LDSHARED) -o $@ $?
+
+libklicd$(DLLEXT): $(COMMONOBJS) $(KL1DOBJS) $(DEBUGOBJS) \
+	$(DDEBUGOBJS) $(DOBJS) $(DISTOBJS)
+	$(LDSHARED) -o $@ $?
+
+libklics$(DLLEXT): $(COMMONOBJS) $(KL1SOBJS) $(SDEBUGOBJS) \
+	$(GENERIC_SOBJS) $(SHMOBJS)
+	$(LDSHARED) -o $@ $?
+
 kmain-t.c: kmain.c
 	rm -f $@; $(LN) $? $@
 debug-t.c: debug.c
@@ -410,7 +429,7 @@
 clean:
 	/bin/rm -r -f verifydir core $(ALLOBJS) Makefile.bak \
 		atom.o funct.o predicates.o \
-		$(ARCHIVES) pipedio \
+		$(ARCHIVES) $(DLLIBS) pipedio \
 		rmon_server \
 		*-t.c *-d.c \
 		*~ \#*\#
@@ -447,7 +466,11 @@
 	/bin/cp -p pipedio $(KLICLIB)/klic/pipedio
 	/bin/cp -p klic.db $(KLICLIB)/klicdb.init
 	/bin/cp -p libklic.db $(KLICLIB)/libklic.db
-	cd $(KLICLIB); $(RANLIB) $(ARCHIVES)
+
+install-dll: all $(INSTALL_EXTENSION)
+	- $(INSTDIR) $(KLICLIB)
+	if (test `pwd` != $(KLICLIB)) then \
+		($(INSTALL) $(DLLIBS) $(KLICLIB)) fi
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 alloc.o: alloc.c \
Index: runtime/trace.c
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/runtime/trace.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -u -r1.1.1.1 -r1.1.1.1.2.1
--- runtime/trace.c	2000/07/28 02:01:41	1.1.1.1
+++ runtime/trace.c	2000/10/12 06:20:06	1.1.1.1.2.1
@@ -150,17 +150,13 @@
 {
   module mod = (module)pred->func;
   unsigned int low = 0, high = n_mod, mid;
-  while (low != high) {
-    mid = ((high+low) >> 1);
-    if ((module)mod_index[mid]->func == mod) {
-      return mod_index[mid];
-    } else if ((unsigned long)mod_index[mid]->func > (unsigned long)mod) {
-      high = mid;
-    } else {
-      low = mid + 1;
-    }
+  for (mid = low; mid < high; mid++) {
+    if ((module)mod_index[mid]->func == mod) break;
   }
-  return 0;
+  if (mid == high) {
+    fprintf(stderr, "get_mte(): not found(bug).\n");  /* for debug */
+    return 0;
+  } else return mod_index[mid];
 }
 
 static struct pred_hash_entry {
Index: shmtest/Makefile
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/shmtest/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1 -r1.1.1.1.2.2
Index: test/Makefile
===================================================================
RCS file: /home/igarashi/kl1/cvsroot/klic/test/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1 -r1.1.1.1.2.2
