diff --git a/lib/import/import-scip.mk b/lib/import/import-scip.mk new file mode 100644 index 0000000..7ca4871 --- /dev/null +++ b/lib/import/import-scip.mk @@ -0,0 +1 @@ +INC_DIR += $(call select_from_ports,scip)/include diff --git a/lib/mk/scip.mk b/lib/mk/scip.mk new file mode 100644 index 0000000..43535fb --- /dev/null +++ b/lib/mk/scip.mk @@ -0,0 +1,214 @@ +SCIP_DIR = $(call select_from_ports,scip)/src/lib/scip/src +LIBS += libc zlib +INC_DIR += $(SCIP_DIR) + +# plugin files +SRC_C = scip/branch_allfullstrong.c \ + scip/branch_cloud.c \ + scip/branch_fullstrong.c \ + scip/branch_inference.c \ + scip/branch_leastinf.c \ + scip/branch_mostinf.c \ + scip/branch_pscost.c \ + scip/branch_random.c \ + scip/branch_relpscost.c \ + scip/cons_abspower.c \ + scip/cons_and.c \ + scip/cons_bivariate.c \ + scip/cons_bounddisjunction.c \ + scip/cons_conjunction.c \ + scip/cons_countsols.c \ + scip/cons_cumulative.c \ + scip/cons_disjunction.c \ + scip/cons_indicator.c \ + scip/cons_integral.c \ + scip/cons_knapsack.c \ + scip/cons_linear.c \ + scip/cons_linking.c \ + scip/cons_logicor.c \ + scip/cons_nonlinear.c \ + scip/cons_or.c \ + scip/cons_orbitope.c \ + scip/cons_pseudoboolean.c \ + scip/cons_quadratic.c \ + scip/cons_setppc.c \ + scip/cons_soc.c \ + scip/cons_sos1.c \ + scip/cons_sos2.c \ + scip/cons_superindicator.c \ + scip/cons_varbound.c \ + scip/cons_xor.c \ + scip/dialog_default.c \ + scip/disp_default.c \ + scip/heur_actconsdiving.c \ + scip/heur_clique.c \ + scip/heur_coefdiving.c \ + scip/heur_crossover.c \ + scip/heur_dins.c \ + scip/heur_dualval.c \ + scip/heur_feaspump.c \ + scip/heur_fixandinfer.c \ + scip/heur_fracdiving.c \ + scip/heur_guideddiving.c \ + scip/heur_zeroobj.c \ + scip/heur_intdiving.c \ + scip/heur_intshifting.c \ + scip/heur_linesearchdiving.c \ + scip/heur_localbranching.c \ + scip/heur_mutation.c \ + scip/heur_nlpdiving.c \ + scip/heur_objpscostdiving.c \ + scip/heur_octane.c \ + scip/heur_oneopt.c \ + scip/heur_proximity.c \ + scip/heur_pscostdiving.c \ + scip/heur_rens.c \ + scip/heur_randrounding.c \ + scip/heur_rins.c \ + scip/heur_rootsoldiving.c \ + scip/heur_rounding.c \ + scip/heur_shiftandpropagate.c \ + scip/heur_shifting.c \ + scip/heur_simplerounding.c \ + scip/heur_subnlp.c \ + scip/heur_trivial.c \ + scip/heur_trysol.c \ + scip/heur_twoopt.c \ + scip/heur_undercover.c \ + scip/heur_vbounds.c \ + scip/heur_veclendiving.c \ + scip/heur_zirounding.c \ + scip/message_default.c \ + scip/nodesel_bfs.c \ + scip/nodesel_breadthfirst.c \ + scip/nodesel_dfs.c \ + scip/nodesel_estimate.c \ + scip/nodesel_hybridestim.c \ + scip/nodesel_restartdfs.c \ + scip/nodesel_uct.c \ + scip/presol_boundshift.c \ + scip/presol_components.c \ + scip/presol_convertinttobin.c \ + scip/presol_domcol.c\ + scip/presol_dualinfer.c\ + scip/presol_gateextraction.c \ + scip/presol_implics.c \ + scip/presol_inttobinary.c \ + scip/presol_trivial.c \ + scip/prop_dualfix.c \ + scip/prop_genvbounds.c \ + scip/prop_obbt.c \ + scip/prop_probing.c \ + scip/prop_pseudoobj.c \ + scip/prop_redcost.c \ + scip/prop_rootredcost.c \ + scip/prop_vbounds.c \ + scip/reader_bnd.c \ + scip/reader_ccg.c \ + scip/reader_cip.c \ + scip/reader_cnf.c \ + scip/reader_fix.c \ + scip/reader_fzn.c \ + scip/reader_gms.c \ + scip/reader_lp.c \ + scip/reader_mps.c \ + scip/reader_opb.c \ + scip/reader_osil.c \ + scip/reader_pip.c \ + scip/reader_ppm.c \ + scip/reader_pbm.c \ + scip/reader_rlp.c \ + scip/reader_sol.c \ + scip/reader_wbo.c \ + scip/reader_zpl.c \ + scip/sepa_cgmip.c \ + scip/sepa_clique.c \ + scip/sepa_closecuts.c \ + scip/sepa_cmir.c \ + scip/sepa_flowcover.c \ + scip/sepa_gomory.c \ + scip/sepa_impliedbounds.c \ + scip/sepa_intobj.c \ + scip/sepa_mcf.c \ + scip/sepa_oddcycle.c \ + scip/sepa_rapidlearning.c \ + scip/sepa_strongcg.c \ + scip/sepa_zerohalf.c + +# library files +SRC_C += scip/branch.c \ + scip/buffer.c \ + scip/clock.c \ + scip/conflict.c \ + scip/cons.c \ + scip/cutpool.c \ + scip/debug.c \ + scip/dialog.c \ + scip/disp.c \ + scip/event.c \ + scip/fileio.c \ + scip/heur.c \ + scip/history.c \ + scip/implics.c \ + scip/interrupt.c \ + scip/intervalarith.c \ + scip/lp.c \ + scip/mem.c \ + scip/misc.c \ + scip/nlp.c \ + scip/nodesel.c \ + scip/paramset.c \ + scip/presol.c \ + scip/presolve.c \ + scip/pricestore.c \ + scip/pricer.c \ + scip/primal.c \ + scip/prob.c \ + scip/prop.c \ + scip/reader.c \ + scip/relax.c \ + scip/retcode.c \ + scip/scip.c \ + scip/scipdefplugins.c \ + scip/scipgithash.c \ + scip/scipshell.c \ + scip/sepa.c \ + scip/sepastore.c \ + scip/set.c \ + scip/sol.c \ + scip/solve.c \ + scip/stat.c \ + scip/tree.c \ + scip/var.c \ + scip/vbc.c \ + tclique/tclique_branch.c \ + tclique/tclique_coloring.c \ + tclique/tclique_graph.c \ + dijkstra/dijkstra.c \ + xml/xmlparse.c + +# LP interface (soplex) +SOPLEX_DIR = $(call select_from_ports,soplex)/src/lib/soplex/src +INC_DIR += $(SOPLEX_DIR) +LIBS += stdcxx soplex +SRC_CC += lpi/lpi_spx2.cpp +SRC_C += scip/bitencode.c \ + blockmemshell/memory.c \ + scip/message.c + +# NLP Interface +SRC_C += nlpi/nlpi.c \ + nlpi/nlpioracle.c \ + nlpi/expr.c \ + scip/misc.c \ + scip/intervalarith.c \ + scip/interrupt.c \ + scip/message.c \ + blockmemshell/memory.c \ + nlpi/exprinterpret_none.c \ + nlpi/nlpi_ipopt_dummy.c + +vpath %.c $(SCIP_DIR) +vpath %.cpp $(SCIP_DIR) + +SHARED_LIB = yes diff --git a/lib/mk/soplex.mk b/lib/mk/soplex.mk new file mode 100644 index 0000000..4d77165 --- /dev/null +++ b/lib/mk/soplex.mk @@ -0,0 +1,64 @@ +SOPLEX_DIR = $(call select_from_ports,soplex)/src/lib/soplex/src/ +LIBS += libc zlib gmp stdcxx libm +INC_DIR += $(SOPLEX_DIR) +SRC_CC = changesoplex.cpp \ + clufactor.cpp \ + didxset.cpp \ + enter.cpp \ + gzstream.cpp \ + idxset.cpp \ + leave.cpp \ + mpsinput.cpp \ + nameset.cpp \ + rational.cpp \ + slufactor.cpp \ + solverational.cpp \ + solvereal.cpp \ + soplex.cpp \ + soplexlegacy.cpp \ + spxautopr.cpp \ + spxbasis.cpp \ + spxboundflippingrt.cpp \ + spxbounds.cpp \ + spxchangebasis.cpp \ + spxdantzigpr.cpp \ + spxdefaultrt.cpp \ + spxdefines.cpp \ + spxdesc.cpp \ + spxdevexpr.cpp \ + spxequilisc.cpp \ + spxfastrt.cpp \ + spxfileio.cpp \ + spxgeometsc.cpp \ + spxgithash.cpp \ + spxharrisrt.cpp \ + spxhybridpr.cpp \ + spxid.cpp \ + spxlpbase_rational.cpp \ + spxlpbase_real.cpp \ + spxmainsm.cpp \ + spxout.cpp \ + spxparmultpr.cpp \ + spxquality.cpp \ + spxscaler.cpp \ + spxshift.cpp \ + spxsolve.cpp \ + spxsolver.cpp \ + spxstarter.cpp \ + spxsteeppr.cpp \ + spxsumst.cpp \ + spxvecs.cpp \ + spxvectorst.cpp \ + spxweightpr.cpp \ + spxweightst.cpp \ + spxwritestate.cpp \ + statistics.cpp \ + timer.cpp \ + unitvector.cpp \ + updatevector.cpp + +CC_WARN = + +vpath %.cpp $(SOPLEX_DIR) + +SHARED_LIB = yes diff --git a/ports/scip.hash b/ports/scip.hash new file mode 100644 index 0000000..ac175e9 --- /dev/null +++ b/ports/scip.hash @@ -0,0 +1 @@ +f16e426eadd0e0a618c3ee769b011c06ec319b71 diff --git a/ports/scip.port b/ports/scip.port new file mode 100644 index 0000000..e1576ed --- /dev/null +++ b/ports/scip.port @@ -0,0 +1,46 @@ +LICENSE := ZIB Academic License +VERSION := 3.1.0 +DOWNLOADS := scip.archive + +URL(scip) := http://scip.zib.de/download/release/scip-$(VERSION).tgz +SHA(scip) := 6a5b3f26bfa978bc46978c702c27444ca0b16120 +DIR(scip) := src/lib/scip + +PATCHES := src/lib/scip/clock.patch + +DIRS := include/scip include/blockmemshell include/nlpi include/lpi + +DIR_CONTENT(include/scip) := $(addprefix src/lib/scip/src/scip/,scip.h \ + def.h \ + presolve.h \ + intervalarith.h \ + scipshell.h \ + scipdefplugins.h \ + disp.h \ + misc.h \ + vbc.h \ + type_*.h \ + pub_*.h \ + struct_*.h \ + branch_*.h \ + cons_*.h \ + disp_*.h \ + heur_*.h \ + nodesel_*.h \ + presol_*.h \ + prop_*.h \ + reader_*.h \ + sepa_*.h) + +DIR_CONTENT(include/blockmemshell) := src/lib/scip/src/blockmemshell/memory.h + +DIR_CONTENT(include/nlpi) := $(addprefix src/lib/scip/src/nlpi/,nlpi.h \ + intervalarithext.h \ + exprinterpret.h \ + nlpi_ipopt.h \ + nlpioracle.h \ + type_*.h \ + pub_*.h \ + struct*.h) + +DIR_CONTENT(include/lpi) := $(addprefix src/lib/scip/src/lpi/,lpi.h type_lpi.h) diff --git a/ports/soplex.hash b/ports/soplex.hash new file mode 100644 index 0000000..6ab4175 --- /dev/null +++ b/ports/soplex.hash @@ -0,0 +1 @@ +954a138ee6d6a4911d0277fa3663f6c4a9b526d5 diff --git a/ports/soplex.port b/ports/soplex.port new file mode 100644 index 0000000..7cc3341 --- /dev/null +++ b/ports/soplex.port @@ -0,0 +1,10 @@ +LICENSE := ZIB Academic License +VERSION := 2.0.0 +DOWNLOADS := soplex.archive + +URL(soplex) := http://soplex.zib.de/download/release/soplex-$(VERSION).tgz +SHA(soplex) := 054fd0b1e370b999babf9ad537a230965b66808a +DIR(soplex) := src/lib/soplex + +DIRS := include/soplex +DIR_CONTENT(include/soplex) := $(addprefix src/lib/soplex/src/,soplex.h) diff --git a/run/scip.run b/run/scip.run new file mode 100644 index 0000000..3a79605 --- /dev/null +++ b/run/scip.run @@ -0,0 +1,45 @@ +build "core init test/scip" + +create_boot_directory + +install_config { + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +build_boot_image { + core init test-scip + ld.lib.so libc.lib.so libm.lib.so + stdcxx.lib.so soplex.lib.so zlib.lib.so gmp.lib.so scip.lib.so +} + +append qemu_args " -nographic -m 64 " + +run_genode_until "child \"test-scip\" exited with exit value 0" 20 + diff --git a/run/soplex.run b/run/soplex.run new file mode 100644 index 0000000..f80b854 --- /dev/null +++ b/run/soplex.run @@ -0,0 +1,42 @@ +build "core init test/soplex" + +create_boot_directory + +install_config { + + + + + + + + + + + + + + + + + + + + + + + + + +} + +build_boot_image { + core init test-soplex + ld.lib.so libc.lib.so libm.lib.so + stdcxx.lib.so soplex.lib.so zlib.lib.so gmp.lib.so +} + +append qemu_args " -nographic -m 64 " + +run_genode_until "child \"test-soplex\" exited with exit value 0" 20 + diff --git a/src/lib/scip/clock.patch b/src/lib/scip/clock.patch new file mode 100644 index 0000000..df1bfdb --- /dev/null +++ b/src/lib/scip/clock.patch @@ -0,0 +1,11 @@ ++++ src/lib/scip/src/scip/clock.c 2014-03-21 14:00:59.966170346 +0100 +@@ -417,6 +417,9 @@ SCIP_Real SCIPclockGetTime( + SCIP_Real result; + assert(clck != NULL); + result = 0.0; ++ ++ /* FIXME adapt implementation for Genode */ ++ return result; + + SCIPdebugMessage("getting time of clock %p (type %d, usedefault=%u, nruns=%d)\n", + (void*)clck, clck->clocktype, clck->usedefault, clck->nruns); diff --git a/src/test/scip/target.mk b/src/test/scip/target.mk new file mode 100644 index 0000000..f8383a7 --- /dev/null +++ b/src/test/scip/target.mk @@ -0,0 +1,8 @@ +TARGET = test-scip +LIBS = libc scip stdcxx config_args +SCIP_DIR = $(call select_from_ports,scip)/src/lib/scip/ +EX_DIR = $(SCIP_DIR)/examples/Queens/src +INC_DIR += $(EX_DIR) +SRC_CC = queens.cpp queens_main.cpp + +vpath %.cpp $(EX_DIR) diff --git a/src/test/soplex/target.mk b/src/test/soplex/target.mk new file mode 100644 index 0000000..2824561 --- /dev/null +++ b/src/test/soplex/target.mk @@ -0,0 +1,6 @@ +TARGET = test-soplex +LIBS = soplex stdcxx +SOPLEX = $(call select_from_ports,soplex)/src/lib/soplex/src/ +SRC_CC = example.cpp + +vpath example.cpp $(SOPLEX)