diff --git a/GMLMIP-0.1/onestep.cpp b/GMLMIP-0.1/onestep.cpp
index 21f59af2e76846c70a468f6e85fc6b0b3d40b11b..0df8e83ef39648d694247300b99d572f2b4ee747 100644
--- a/GMLMIP-0.1/onestep.cpp
+++ b/GMLMIP-0.1/onestep.cpp
@@ -13,6 +13,7 @@
 
 using namespace std;
 
+vector<SatisfyingAssignment> sat_ass_stack;
 
 /* Error handler for running out of BDD nodes */
 void error_handler(int errorcode){
diff --git a/Makefile b/Makefile
index 0a51470c9df812c5fd41c40ca20767972cf4ea54..6d3c0e9cdb0c2591ea7ae68e9639ab3f68b7720b 100644
--- a/Makefile
+++ b/Makefile
@@ -22,11 +22,29 @@ CHECKDEP := 1
 # The projects which will be compiled if "make all" is used.
 PROGS := coalg coalgcompare
 
+GMLFOBJS = \
+GMLMIP-0.1/formulas/formula.o \
+GMLMIP-0.1/formulas/GML_formula.o \
+GMLMIP-0.1/formulas/PML_formula.o \
+GMLMIP-0.1/formulas/rational.o \
+GMLMIP-0.1/formulas/satisfyingassignment.o
+
+GMLROBJS = \
+GMLMIP-0.1/rules/premise.o \
+GMLMIP-0.1/rules/GML_premise.o \
+GMLMIP-0.1/rules/PML_premise.o \
+GMLMIP-0.1/rules/valuation.o \
+GMLMIP-0.1/rules/setofconclusions.o \
+GMLMIP-0.1/rules/sizefunctions.o \
+GMLMIP-0.1/rules/radixtree.o
+
+GMLOBJS = $(GMLROBJS) $(GMLFOBJS) GMLMIP-0.1/onestep.o
+
 LIBS := unix str graph
 SOURCESMLI := $(wildcard *.mli)
 SOURCESML := $(wildcard *.ml)
 INCS ?= -I/usr/include -I/usr/lib/ocaml -I/usr/local/lib/ocaml -I.
-CXXFLAGS += -Wall -Werror $(INCS)
+CXXFLAGS += -Wall $(INCS)
 LDXX ?= g++
 
 OCAMLC := ocamlc.opt
@@ -57,6 +75,11 @@ LIBSML := $(patsubst %.ml,%$(SUFFIX),$(SOURCESML))
 .PHONY: all
 all: $(PROGS) gmlmip
 
+.PHONY: phony
+# don't do anything here
+phony:
+	@:
+
 .PHONY: gmlmip
 gmlmip:
 	make -C GMLMIP-0.1
@@ -67,8 +90,17 @@ minisat.cma: minisat.cmo minisat_stub.o
 minisat.cmxa: minisat.cmx minisat_stub.o
 	$(OCAMLOPT) -a -o minisat.cmxa minisat.cmx minisat_stub.o -cclib -lminisat
 
+GMLMIP-0.1/onestep.o: phony
+	make -C GMLMIP-0.1 onestep.o
+
+gmlmip.cma: gmlmip.cmo gmlmip_stub.o $(GMLOBJS)
+	$(OCAMLC) -a -o $@ $^ -custom -cclib -lbdd -cclib -lm -cclib -lglpk
+
+gmlmip.cmxa: gmlmip.cmx gmlmip_stub.o $(GMLOBJS)
+	$(OCAMLOPT) -a -o $@ $^ -cclib -lbdd -cclib -lm -cclib -lglpk
+
 # Object files... sorted topologically by their dependency...
-COALG_OBJS := minisat$(SUFFIXLIB) \
+COALG_OBJS := minisat$(SUFFIXLIB) gmlmip$(SUFFIXLIB) \
               genAndComp$(SUFFIX) MiscSolver$(SUFFIX) altGenlex$(SUFFIX) HashConsing$(SUFFIX) \
               ALCFormula$(SUFFIX) ALCMisc$(SUFFIX) ALCGraph$(SUFFIX) \
               CoAlgFormula$(SUFFIX) \