Some minor build fixes for sis-1.3.6 as it can be downloaded from
http://www-cad.eecs.berkeley.edu/~pchong/sis.html or
http://embedded.eecs.berkeley.edu/Alumni/pchong/sis.html

diff --git a/sis/io/read_kiss.c b/sis/io/read_kiss.c
index 814e526..c862892 100644
--- a/sis/io/read_kiss.c
+++ b/sis/io/read_kiss.c
@@ -10,7 +10,6 @@
 #ifdef SIS
 #include "sis.h"
 
-extern void read_error();
 extern int read_lineno;
 extern char *read_filename;
 
diff --git a/sis/pld/act_bdd.c b/sis/pld/act_bdd.c
index 4fb4415..a5cd74c 100644
--- a/sis/pld/act_bdd.c
+++ b/sis/pld/act_bdd.c
@@ -141,6 +141,8 @@ char *name;
     return p_vertex;
 }
 
+static int compare();
+
 /* Or 2 ACT's*/
 act_t *
 my_or_act_F(array_b,cover, array)
@@ -148,7 +150,6 @@ array_t *array_b;
 array_t *array;
 sm_row *cover;
 {
-    static int compare();
     int  i;
     act_t *up_vertex, *down_vertex, *vertex;
     sm_element *p;
diff --git a/sis/pld/act_ite.c b/sis/pld/act_ite.c
index a35f2fb..7b824df 100644
--- a/sis/pld/act_ite.c
+++ b/sis/pld/act_ite.c
@@ -125,6 +125,8 @@ node_t *fanin;
    and the minimum column cover variables in cover, generates an ite for the 
    original function. */
 
+static int compare();
+
 ite_vertex *
 my_or_ite_F(array_b, cover, array, network)
 array_t *array_b;
@@ -132,7 +134,6 @@ array_t *array;
 sm_row *cover;
 network_t *network;
 {
-    static int compare();
     int  i;
     ite_vertex *vertex;
     sm_element *p;
diff --git a/sis/pld/xln_merge.c b/sis/pld/xln_merge.c
index 075e6c5..16f4d61 100644
--- a/sis/pld/xln_merge.c
+++ b/sis/pld/xln_merge.c
@@ -284,6 +284,7 @@ array_t	        *match1_array, *match2_array;
 
 }
 
+static sm_row *xln_merge_find_neighbor_of_row1_with_minimum_neighbors();
 
 /*----------------------------------------------------------------------------------------------------
   An alternate to lindo option. Uses greedy merging. A node with minimum mergeable nodes is picked
@@ -296,7 +297,6 @@ xln_merge_nodes_without_lindo(coeff, cand_node_array, match1_array, match2_array
 { 
   node_t *n1, *n2;
   sm_row *row1, *row2;
-  static sm_row *xln_merge_find_neighbor_of_row1_with_minimum_neighbors();
 
   while (TRUE) {
       row1 = sm_shortest_row(coeff);
diff --git a/sis/pld/xln_part_dec.c b/sis/pld/xln_part_dec.c
index 1c856bd..b78828a 100644
--- a/sis/pld/xln_part_dec.c
+++ b/sis/pld/xln_part_dec.c
@@ -49,13 +49,14 @@ int size;
 
 
 
+static int kernel_value();
+
 int
 split_node(network, node, size) 
 network_t *network;
 node_t *node;
 int size;
 {
-    static int kernel_value();
     int i, value = 1;
     kern_node *sorted;
     divisor_t *div, *best_div;
diff --git a/xsis/Makefile.am b/xsis/Makefile.am
index 196d98b..686fdf4 100644
--- a/xsis/Makefile.am
+++ b/xsis/Makefile.am
@@ -1,8 +1,8 @@
 xsis_SOURCES_local = NetPlot.c NetPlot.h NetPlotP.h main.c xastg.c \
     xblif.c xcmd.c xhelp.c xsis.c xsis.h xutil.c \
     blif50.px ghost.px help50.px sis50.px
-AM_CPPFLAGS = -I../sis/include -I@SIS_X_INCLUDES@
-AM_LDFLAGS = -L@SIS_X_LIBRARIES@
+AM_CPPFLAGS = -I../sis/include
+AM_LDFLAGS =
 LDADD = ../sis/libsis.a -lXaw -lXmu -lXt -lXext -lX11 -lm
 
 if SIS_COND_X
