package glpk

  1. Overview
  2. Docs
On This Page
  1. Error log

glpk 0.1.6

Error log

The package failed to build. The error log from opam follows.

Opam plugin "depext" may require upgrading/reinstalling. Reinstall the plugin on the current switch? [Y/n] y
The following actions will be performed:
  - recompile opam-depext 1.2.1-1

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved opam-depext.1.2.1-1  (cached)
-> removed   opam-depext.1.2.1-1
-> installed opam-depext.1.2.1-1
Done.

<><> opam-depext.1.2.1-1 installed successfully <><><><><><><><><><><><><><><><>
=> opam-depext is unnecessary when used with opam >= 2.1. Please use opam install directly instead
# Run eval $(opam env) to update the current shell environment

<><> Carrying on to "opam depext -viy glpk.0.1.6 ocamlfind.1.9.6" <><><><><><><>

You are using opam 2.1+, where external dependency handling has been integrated: consider calling opam directly, the 'depext' plugin interface is provided for backwards compatibility only
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# The following system packages are needed:
libglpk-dev
[NOTE] Package ocamlfind is already installed (current version is 1.9.6).
The following actions will be performed:
  - install glpk 0.1.6

The following system packages will first need to be installed:
    libglpk-dev

<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>
Let opam run your package manager to install the required system packages?
(answer 'n' for other options) [Y/n] y
+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "libglpk-dev"
- debconf: delaying package configuration, since apt-utils is not installed
- Selecting previously unselected package libsuitesparseconfig5:amd64.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 18774 files and directories currently installed.)
- Preparing to unpack .../00-libsuitesparseconfig5_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libsuitesparseconfig5:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libamd2:amd64.
- Preparing to unpack .../01-libamd2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libamd2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libblas3:amd64.
- Preparing to unpack .../02-libblas3_3.11.0-2_amd64.deb ...
- Unpacking libblas3:amd64 (3.11.0-2) ...
- Selecting previously unselected package libblas-dev:amd64.
- Preparing to unpack .../03-libblas-dev_3.11.0-2_amd64.deb ...
- Unpacking libblas-dev:amd64 (3.11.0-2) ...
- Selecting previously unselected package libbtf1:amd64.
- Preparing to unpack .../04-libbtf1_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libbtf1:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libcamd2:amd64.
- Preparing to unpack .../05-libcamd2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libcamd2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libccolamd2:amd64.
- Preparing to unpack .../06-libccolamd2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libccolamd2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libcolamd2:amd64.
- Preparing to unpack .../07-libcolamd2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libcolamd2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libgfortran5:amd64.
- Preparing to unpack .../08-libgfortran5_12.2.0-14_amd64.deb ...
- Unpacking libgfortran5:amd64 (12.2.0-14) ...
- Selecting previously unselected package liblapack3:amd64.
- Preparing to unpack .../09-liblapack3_3.11.0-2_amd64.deb ...
- Unpacking liblapack3:amd64 (3.11.0-2) ...
- Selecting previously unselected package libmetis5:amd64.
- Preparing to unpack .../10-libmetis5_5.1.0.dfsg-7_amd64.deb ...
- Unpacking libmetis5:amd64 (5.1.0.dfsg-7) ...
- Selecting previously unselected package libcholmod3:amd64.
- Preparing to unpack .../11-libcholmod3_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libcholmod3:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libcxsparse3:amd64.
- Preparing to unpack .../12-libcxsparse3_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libcxsparse3:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libltdl7:amd64.
- Preparing to unpack .../13-libltdl7_2.4.7-5_amd64.deb ...
- Unpacking libltdl7:amd64 (2.4.7-5) ...
- Selecting previously unselected package libglpk40:amd64.
- Preparing to unpack .../14-libglpk40_5.0-1_amd64.deb ...
- Unpacking libglpk40:amd64 (5.0-1) ...
- Selecting previously unselected package libgmpxx4ldbl:amd64.
- Preparing to unpack .../15-libgmpxx4ldbl_2%3a6.2.1+dfsg1-1.1_amd64.deb ...
- Unpacking libgmpxx4ldbl:amd64 (2:6.2.1+dfsg1-1.1) ...
- Selecting previously unselected package libgmp-dev:amd64.
- Preparing to unpack .../16-libgmp-dev_2%3a6.2.1+dfsg1-1.1_amd64.deb ...
- Unpacking libgmp-dev:amd64 (2:6.2.1+dfsg1-1.1) ...
- Selecting previously unselected package zlib1g-dev:amd64.
- Preparing to unpack .../17-zlib1g-dev_1%3a1.2.13.dfsg-1_amd64.deb ...
- Unpacking zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ...
- Selecting previously unselected package libklu1:amd64.
- Preparing to unpack .../18-libklu1_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libklu1:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libldl2:amd64.
- Preparing to unpack .../19-libldl2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libldl2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libmongoose2:amd64.
- Preparing to unpack .../20-libmongoose2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libmongoose2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libumfpack5:amd64.
- Preparing to unpack .../21-libumfpack5_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libumfpack5:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package librbio2:amd64.
- Preparing to unpack .../22-librbio2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking librbio2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libspqr2:amd64.
- Preparing to unpack .../23-libspqr2_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libspqr2:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libsliplu1:amd64.
- Preparing to unpack .../24-libsliplu1_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libsliplu1:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package liblapack-dev:amd64.
- Preparing to unpack .../25-liblapack-dev_3.11.0-2_amd64.deb ...
- Unpacking liblapack-dev:amd64 (3.11.0-2) ...
- Selecting previously unselected package libsuitesparse-dev:amd64.
- Preparing to unpack .../26-libsuitesparse-dev_1%3a5.12.0+dfsg-2_amd64.deb ...
- Unpacking libsuitesparse-dev:amd64 (1:5.12.0+dfsg-2) ...
- Selecting previously unselected package libglpk-dev:amd64.
- Preparing to unpack .../27-libglpk-dev_5.0-1_amd64.deb ...
- Unpacking libglpk-dev:amd64 (5.0-1) ...
- Selecting previously unselected package libgraphblas7:amd64.
- Preparing to unpack .../28-libgraphblas7_7.4.0+dfsg-1_amd64.deb ...
- Unpacking libgraphblas7:amd64 (7.4.0+dfsg-1) ...
- Selecting previously unselected package libgraphblas-dev:amd64.
- Preparing to unpack .../29-libgraphblas-dev_7.4.0+dfsg-1_amd64.deb ...
- Unpacking libgraphblas-dev:amd64 (7.4.0+dfsg-1) ...
- Setting up libldl2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libgraphblas7:amd64 (7.4.0+dfsg-1) ...
- Setting up libmetis5:amd64 (5.1.0.dfsg-7) ...
- Setting up libbtf1:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libgraphblas-dev:amd64 (7.4.0+dfsg-1) ...
- Setting up libblas3:amd64 (3.11.0-2) ...
- update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode
- Setting up libgmpxx4ldbl:amd64 (2:6.2.1+dfsg1-1.1) ...
- Setting up libltdl7:amd64 (2.4.7-5) ...
- Setting up libgfortran5:amd64 (12.2.0-14) ...
- Setting up zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ...
- Setting up libcxsparse3:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libsuitesparseconfig5:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libblas-dev:amd64 (3.11.0-2) ...
- update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so to provide /usr/lib/x86_64-linux-gnu/libblas.so (libblas.so-x86_64-linux-gnu) in auto mode
- Setting up librbio2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libamd2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up liblapack3:amd64 (3.11.0-2) ...
- update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode
- Setting up libgmp-dev:amd64 (2:6.2.1+dfsg1-1.1) ...
- Setting up libcolamd2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libsliplu1:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libcamd2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libmongoose2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libglpk40:amd64 (5.0-1) ...
- Setting up liblapack-dev:amd64 (3.11.0-2) ...
- update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so to provide /usr/lib/x86_64-linux-gnu/liblapack.so (liblapack.so-x86_64-linux-gnu) in auto mode
- Setting up libklu1:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libccolamd2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libcholmod3:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libspqr2:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libumfpack5:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libsuitesparse-dev:amd64 (1:5.12.0+dfsg-2) ...
- Setting up libglpk-dev:amd64 (5.0-1) ...
- Processing triggers for libc-bin (2.36-9+deb12u3) ...

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/3:
-> retrieved glpk.0.1.6  (cached)
Processing  2/3: [glpk: make byte]
+ /usr/bin/make "byte" "opt" (CWD=/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6)
- make -C src byte
- make[1]: Entering directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
- make[2]: Entering directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
- making ._bcdi/glpk.di from glpk.mli
- making ._d/glpk.d from glpk.ml
- ocamlc -c -cc "cc" -ccopt "-fPIC -Wall -ansi -DCAML_NAME_SPACE -g \
- 			-DPIC   \
- 			    -o glpk_stubs.o " glpk_stubs.c 
- In file included from /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:20,
-                  from glpk_stubs.c:23:
- /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:324:13: error: expected ';' before 'int'
-   324 | Caml_inline int caml_uadd_overflow(uintnat a, uintnat b, uintnat * res)
-       |             ^~~
- /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:335:13: error: expected ';' before 'int'
-   335 | Caml_inline int caml_usub_overflow(uintnat a, uintnat b, uintnat * res)
-       |             ^~~
- /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:347:13: error: expected ';' before 'int'
-   347 | Caml_inline int caml_umul_overflow(uintnat a, uintnat b, uintnat * res)
-       |             ^~~
- In file included from /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:21:
- /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
-    44 | #define Caml_inline static inline
-       |                            ^~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:263:1: note: in expansion of macro 'Caml_inline'
-   263 | Caml_inline value Val_ptr(void* p)
-       | ^~~~~~~~~~~
- In file included from /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:21:
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:263:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Val_ptr'
-   263 | Caml_inline value Val_ptr(void* p)
-       |                   ^~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:268:13: error: expected ';' before 'void'
-   268 | Caml_inline void* Ptr_val(value val)
-       |             ^~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
-    44 | #define Caml_inline static inline
-       |                            ^~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:75:1: note: in expansion of macro 'Caml_inline'
-    75 | Caml_inline value caml_alloc_unboxed (value arg) { return arg; }
-       | ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:75:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_alloc_unboxed'
-    75 | Caml_inline value caml_alloc_unboxed (value arg) { return arg; }
-       |                   ^~~~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
-    44 | #define Caml_inline static inline
-       |                            ^~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:76:1: note: in expansion of macro 'Caml_inline'
-    76 | Caml_inline value caml_alloc_boxed (value arg) {
-       | ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:76:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_alloc_boxed'
-    76 | Caml_inline value caml_alloc_boxed (value arg) {
-       |                   ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
-    44 | #define Caml_inline static inline
-       |                            ^~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:81:1: note: in expansion of macro 'Caml_inline'
-    81 | Caml_inline value caml_field_unboxed (value arg) { return arg; }
-       | ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:81:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_field_unboxed'
-    81 | Caml_inline value caml_field_unboxed (value arg) { return arg; }
-       |                   ^~~~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
-    44 | #define Caml_inline static inline
-       |                            ^~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:82:1: note: in expansion of macro 'Caml_inline'
-    82 | Caml_inline value caml_field_boxed (value arg) { return Field (arg, 0); }
-       | ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:82:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_field_boxed'
-    82 | Caml_inline value caml_field_boxed (value arg) { return Field (arg, 0); }
-       |                   ^~~~~~~~~~~~~~~~
- glpk_stubs.c: In function 'raise_on_error':
- glpk_stubs.c:40:10: error: 'LPX_E_OK' undeclared (first use in this function)
-    40 |     case LPX_E_OK:
-       |          ^~~~~~~~
- glpk_stubs.c:40:10: note: each undeclared identifier is reported only once for each function it appears in
- glpk_stubs.c:43:10: error: 'LPX_E_FAULT' undeclared (first use in this function)
-    43 |     case LPX_E_FAULT:
-       |          ^~~~~~~~~~~
- glpk_stubs.c:46:10: error: 'LPX_E_OBJLL' undeclared (first use in this function); did you mean 'GLP_EOBJLL'?
-    46 |     case LPX_E_OBJLL:
-       |          ^~~~~~~~~~~
-       |          GLP_EOBJLL
- glpk_stubs.c:49:10: error: 'LPX_E_OBJUL' undeclared (first use in this function); did you mean 'GLP_EOBJUL'?
-    49 |     case LPX_E_OBJUL:
-       |          ^~~~~~~~~~~
-       |          GLP_EOBJUL
- glpk_stubs.c:52:10: error: 'LPX_E_NOPFS' undeclared (first use in this function); did you mean 'GLP_ENOPFS'?
-    52 |     case LPX_E_NOPFS:
-       |          ^~~~~~~~~~~
-       |          GLP_ENOPFS
- glpk_stubs.c:55:10: error: 'LPX_E_NODFS' undeclared (first use in this function); did you mean 'GLP_ENODFS'?
-    55 |     case LPX_E_NODFS:
-       |          ^~~~~~~~~~~
-       |          GLP_ENODFS
- glpk_stubs.c:58:10: error: 'LPX_E_ITLIM' undeclared (first use in this function); did you mean 'GLP_EITLIM'?
-    58 |     case LPX_E_ITLIM:
-       |          ^~~~~~~~~~~
-       |          GLP_EITLIM
- glpk_stubs.c:61:10: error: 'LPX_E_TMLIM' undeclared (first use in this function); did you mean 'GLP_ETMLIM'?
-    61 |     case LPX_E_TMLIM:
-       |          ^~~~~~~~~~~
-       |          GLP_ETMLIM
- glpk_stubs.c:64:10: error: 'LPX_E_SING' undeclared (first use in this function); did you mean 'GLP_ESING'?
-    64 |     case LPX_E_SING:
-       |          ^~~~~~~~~~
-       |          GLP_ESING
- glpk_stubs.c:67:10: error: 'LPX_E_EMPTY' undeclared (first use in this function)
-    67 |     case LPX_E_EMPTY:
-       |          ^~~~~~~~~~~
- glpk_stubs.c:70:10: error: 'LPX_E_BADB' undeclared (first use in this function); did you mean 'GLP_EBADB'?
-    70 |     case LPX_E_BADB:
-       |          ^~~~~~~~~~
-       |          GLP_EBADB
- glpk_stubs.c:73:10: error: 'LPX_E_NOCONV' undeclared (first use in this function)
-    73 |     case LPX_E_NOCONV:
-       |          ^~~~~~~~~~~~
- glpk_stubs.c: In function 'finalize_lpx':
- glpk_stubs.c:86:3: warning: implicit declaration of function 'lpx_delete_prob'; did you mean 'glp_delete_prob'? [-Wimplicit-function-declaration]
-    86 |   lpx_delete_prob(Lpx_val(block));
-       |   ^~~~~~~~~~~~~~~
-       |   glp_delete_prob
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:86:19: note: in expansion of macro 'Lpx_val'
-    86 |   lpx_delete_prob(Lpx_val(block));
-       |                   ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:86:19: note: in expansion of macro 'Lpx_val'
-    86 |   lpx_delete_prob(Lpx_val(block));
-       |                   ^~~~~~~
- glpk_stubs.c: At top level:
- glpk_stubs.c:99:22: error: unknown type name 'LPX'
-    99 | static value new_blp(LPX* lp)
-       |                      ^~~
- glpk_stubs.c: In function 'ocaml_glpk_new_prob':
- glpk_stubs.c:108:3: error: unknown type name 'LPX'
-   108 |   LPX *lp = lpx_create_prob();
-       |   ^~~
- glpk_stubs.c:108:13: warning: implicit declaration of function 'lpx_create_prob'; did you mean 'glp_create_prob'? [-Wimplicit-function-declaration]
-   108 |   LPX *lp = lpx_create_prob();
-       |             ^~~~~~~~~~~~~~~
-       |             glp_create_prob
- glpk_stubs.c:108:13: warning: initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
- glpk_stubs.c:109:10: warning: implicit declaration of function 'new_blp' [-Wimplicit-function-declaration]
-   109 |   return new_blp(lp);
-       |          ^~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_prob_name':
- glpk_stubs.c:114:3: error: unknown type name 'LPX'
-   114 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:114:13: note: in expansion of macro 'Lpx_val'
-   114 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:114:13: note: in expansion of macro 'Lpx_val'
-   114 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:115:3: warning: implicit declaration of function 'lpx_set_prob_name'; did you mean 'glp_set_prob_name'? [-Wimplicit-function-declaration]
-   115 |   lpx_set_prob_name(lp, String_val(name));
-       |   ^~~~~~~~~~~~~~~~~
-       |   glp_set_prob_name
- glpk_stubs.c: In function 'ocaml_glpk_get_prob_name':
- glpk_stubs.c:122:3: error: unknown type name 'LPX'
-   122 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:122:13: note: in expansion of macro 'Lpx_val'
-   122 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:122:13: note: in expansion of macro 'Lpx_val'
-   122 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- In file included from /home/opam/.opam/5.1/lib/ocaml/caml/callback.h:22,
-                  from glpk_stubs.c:24:
- glpk_stubs.c:123:31: warning: implicit declaration of function 'lpx_get_prob_name'; did you mean 'glp_get_prob_name'? [-Wimplicit-function-declaration]
-   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
-       |                               ^~~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:123:3: note: in expansion of macro 'CAMLreturn'
-   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
-       |   ^~~~~~~~~~
- glpk_stubs.c:123:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
-   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
-       |                               ^~~~~~~~~~~~~~~~~~~~~
-       |                               |
-       |                               int
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:123:3: note: in expansion of macro 'CAMLreturn'
-   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
-       |   ^~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
-    51 | CAMLextern value caml_copy_string (char const *);
-       |                                    ^~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_obj_name':
- glpk_stubs.c:128:3: error: unknown type name 'LPX'
-   128 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:128:13: note: in expansion of macro 'Lpx_val'
-   128 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:128:13: note: in expansion of macro 'Lpx_val'
-   128 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:129:3: warning: implicit declaration of function 'lpx_set_obj_name'; did you mean 'glp_set_obj_name'? [-Wimplicit-function-declaration]
-   129 |   lpx_set_obj_name(lp, String_val(name));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_obj_name
- glpk_stubs.c: In function 'ocaml_glpk_get_obj_name':
- glpk_stubs.c:136:3: error: unknown type name 'LPX'
-   136 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:136:13: note: in expansion of macro 'Lpx_val'
-   136 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:136:13: note: in expansion of macro 'Lpx_val'
-   136 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:137:31: warning: implicit declaration of function 'lpx_get_obj_name'; did you mean 'glp_get_obj_name'? [-Wimplicit-function-declaration]
-   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
-       |                               ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:137:3: note: in expansion of macro 'CAMLreturn'
-   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
-       |   ^~~~~~~~~~
- glpk_stubs.c:137:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
-   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
-       |                               ^~~~~~~~~~~~~~~~~~~~
-       |                               |
-       |                               int
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:137:3: note: in expansion of macro 'CAMLreturn'
-   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
-       |   ^~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
-    51 | CAMLextern value caml_copy_string (char const *);
-       |                                    ^~~~~~~~~~~~
- glpk_stubs.c: At top level:
- glpk_stubs.c:140:33: error: 'LPX_MIN' undeclared here (not in a function); did you mean 'GLP_MIN'?
-   140 | static int direction_table[] = {LPX_MIN, LPX_MAX};
-       |                                 ^~~~~~~
-       |                                 GLP_MIN
- glpk_stubs.c:140:42: error: 'LPX_MAX' undeclared here (not in a function); did you mean 'GLP_MAX'?
-   140 | static int direction_table[] = {LPX_MIN, LPX_MAX};
-       |                                          ^~~~~~~
-       |                                          GLP_MAX
- glpk_stubs.c: In function 'ocaml_glpk_set_direction':
- glpk_stubs.c:144:3: error: unknown type name 'LPX'
-   144 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:144:13: note: in expansion of macro 'Lpx_val'
-   144 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:144:13: note: in expansion of macro 'Lpx_val'
-   144 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:145:3: warning: implicit declaration of function 'lpx_set_obj_dir'; did you mean 'glp_set_obj_dir'? [-Wimplicit-function-declaration]
-   145 |   lpx_set_obj_dir(lp, direction_table[Int_val(direction)]);
-       |   ^~~~~~~~~~~~~~~
-       |   glp_set_obj_dir
- glpk_stubs.c: In function 'ocaml_glpk_get_direction':
- glpk_stubs.c:151:3: error: unknown type name 'LPX'
-   151 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:151:13: note: in expansion of macro 'Lpx_val'
-   151 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:151:13: note: in expansion of macro 'Lpx_val'
-   151 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:152:10: warning: implicit declaration of function 'lpx_get_obj_dir'; did you mean 'glp_get_obj_dir'? [-Wimplicit-function-declaration]
-   152 |   switch(lpx_get_obj_dir(lp))
-       |          ^~~~~~~~~~~~~~~
-       |          glp_get_obj_dir
- glpk_stubs.c: In function 'ocaml_glpk_add_rows':
- glpk_stubs.c:167:3: error: unknown type name 'LPX'
-   167 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:167:13: note: in expansion of macro 'Lpx_val'
-   167 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:167:13: note: in expansion of macro 'Lpx_val'
-   167 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:168:3: warning: implicit declaration of function 'lpx_add_rows'; did you mean 'glp_add_rows'? [-Wimplicit-function-declaration]
-   168 |   lpx_add_rows(lp, Int_val(n));
-       |   ^~~~~~~~~~~~
-       |   glp_add_rows
- glpk_stubs.c: In function 'ocaml_glpk_set_row_name':
- glpk_stubs.c:174:3: error: unknown type name 'LPX'
-   174 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:174:13: note: in expansion of macro 'Lpx_val'
-   174 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:174:13: note: in expansion of macro 'Lpx_val'
-   174 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:175:3: warning: implicit declaration of function 'lpx_set_row_name'; did you mean 'glp_set_row_name'? [-Wimplicit-function-declaration]
-   175 |   lpx_set_row_name(lp, Int_val(n) + 1, String_val(name));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_row_name
- glpk_stubs.c: In function 'ocaml_glpk_get_row_name':
- glpk_stubs.c:182:3: error: unknown type name 'LPX'
-   182 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:182:13: note: in expansion of macro 'Lpx_val'
-   182 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:182:13: note: in expansion of macro 'Lpx_val'
-   182 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:183:31: warning: implicit declaration of function 'lpx_get_row_name'; did you mean 'glp_get_row_name'? [-Wimplicit-function-declaration]
-   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
-       |                               ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:183:3: note: in expansion of macro 'CAMLreturn'
-   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
-       |   ^~~~~~~~~~
- glpk_stubs.c:183:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
-   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
-       |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-       |                               |
-       |                               int
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:183:3: note: in expansion of macro 'CAMLreturn'
-   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
-       |   ^~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
-    51 | CAMLextern value caml_copy_string (char const *);
-       |                                    ^~~~~~~~~~~~
- glpk_stubs.c: At top level:
- glpk_stubs.c:186:34: error: 'LPX_FR' undeclared here (not in a function); did you mean 'GLP_FR'?
-   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
-       |                                  ^~~~~~
-       |                                  GLP_FR
- glpk_stubs.c:186:42: error: 'LPX_LO' undeclared here (not in a function); did you mean 'GLP_LO'?
-   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
-       |                                          ^~~~~~
-       |                                          GLP_LO
- glpk_stubs.c:186:50: error: 'LPX_UP' undeclared here (not in a function); did you mean 'GLP_UP'?
-   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
-       |                                                  ^~~~~~
-       |                                                  GLP_UP
- glpk_stubs.c:186:58: error: 'LPX_DB' undeclared here (not in a function); did you mean 'GLP_DB'?
-   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
-       |                                                          ^~~~~~
-       |                                                          GLP_DB
- glpk_stubs.c:186:66: error: 'LPX_FX' undeclared here (not in a function); did you mean 'GLP_FX'?
-   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
-       |                                                                  ^~~~~~
-       |                                                                  GLP_FX
- glpk_stubs.c: In function 'ocaml_glpk_set_row_bounds':
- glpk_stubs.c:190:3: error: unknown type name 'LPX'
-   190 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:190:13: note: in expansion of macro 'Lpx_val'
-   190 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:190:13: note: in expansion of macro 'Lpx_val'
-   190 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:191:3: warning: implicit declaration of function 'lpx_set_row_bnds'; did you mean 'glp_set_row_bnds'? [-Wimplicit-function-declaration]
-   191 |   lpx_set_row_bnds(lp, Int_val(n) + 1, auxvartype_table[Int_val(type)], Double_val(lb), Double_val(ub));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_row_bnds
- glpk_stubs.c: In function 'ocaml_glpk_add_cols':
- glpk_stubs.c:197:3: error: unknown type name 'LPX'
-   197 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:197:13: note: in expansion of macro 'Lpx_val'
-   197 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:197:13: note: in expansion of macro 'Lpx_val'
-   197 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:198:3: warning: implicit declaration of function 'lpx_add_cols'; did you mean 'glp_add_cols'? [-Wimplicit-function-declaration]
-   198 |   lpx_add_cols(lp, Int_val(n));
-       |   ^~~~~~~~~~~~
-       |   glp_add_cols
- glpk_stubs.c: In function 'ocaml_glpk_set_col_name':
- glpk_stubs.c:204:3: error: unknown type name 'LPX'
-   204 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:204:13: note: in expansion of macro 'Lpx_val'
-   204 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:204:13: note: in expansion of macro 'Lpx_val'
-   204 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:205:3: warning: implicit declaration of function 'lpx_set_col_name'; did you mean 'glp_set_col_name'? [-Wimplicit-function-declaration]
-   205 |   lpx_set_col_name(lp, Int_val(n) + 1, String_val(name));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_col_name
- glpk_stubs.c: In function 'ocaml_glpk_get_col_name':
- glpk_stubs.c:212:3: error: unknown type name 'LPX'
-   212 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:212:13: note: in expansion of macro 'Lpx_val'
-   212 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:212:13: note: in expansion of macro 'Lpx_val'
-   212 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:213:31: warning: implicit declaration of function 'lpx_get_col_name'; did you mean 'glp_get_col_name'? [-Wimplicit-function-declaration]
-   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
-       |                               ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:213:3: note: in expansion of macro 'CAMLreturn'
-   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
-       |   ^~~~~~~~~~
- glpk_stubs.c:213:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
-   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
-       |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-       |                               |
-       |                               int
- /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
-   415 |   type caml__temp_result = (result); \
-       |                             ^~~~~~
- glpk_stubs.c:213:3: note: in expansion of macro 'CAMLreturn'
-   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
-       |   ^~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
-    51 | CAMLextern value caml_copy_string (char const *);
-       |                                    ^~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_col_bounds':
- glpk_stubs.c:218:3: error: unknown type name 'LPX'
-   218 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:218:13: note: in expansion of macro 'Lpx_val'
-   218 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:218:13: note: in expansion of macro 'Lpx_val'
-   218 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:219:3: warning: implicit declaration of function 'lpx_set_col_bnds'; did you mean 'glp_set_col_bnds'? [-Wimplicit-function-declaration]
-   219 |   lpx_set_col_bnds(lp, Int_val(n) + 1, auxvartype_table[Int_val(type)], Double_val(lb), Double_val(ub));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_col_bnds
- glpk_stubs.c: In function 'ocaml_glpk_set_obj_coef':
- glpk_stubs.c:225:3: error: unknown type name 'LPX'
-   225 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:225:13: note: in expansion of macro 'Lpx_val'
-   225 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:225:13: note: in expansion of macro 'Lpx_val'
-   225 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:226:3: warning: implicit declaration of function 'lpx_set_obj_coef'; did you mean 'glp_set_obj_coef'? [-Wimplicit-function-declaration]
-   226 |   lpx_set_obj_coef(lp, Int_val(n) + 1, Double_val(coef));
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_obj_coef
- glpk_stubs.c: In function 'ocaml_glpk_load_matrix':
- glpk_stubs.c:232:3: error: unknown type name 'LPX'
-   232 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:232:13: note: in expansion of macro 'Lpx_val'
-   232 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:232:13: note: in expansion of macro 'Lpx_val'
-   232 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:265:3: warning: implicit declaration of function 'lpx_load_matrix'; did you mean 'glp_load_matrix'? [-Wimplicit-function-declaration]
-   265 |   lpx_load_matrix(lp, n - 1, ia, ja, ar);
-       |   ^~~~~~~~~~~~~~~
-       |   glp_load_matrix
- glpk_stubs.c: In function 'ocaml_glpk_load_sparse_matrix':
- glpk_stubs.c:276:3: error: unknown type name 'LPX'
-   276 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:276:13: note: in expansion of macro 'Lpx_val'
-   276 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:276:13: note: in expansion of macro 'Lpx_val'
-   276 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_simplex':
- glpk_stubs.c:306:3: error: unknown type name 'LPX'
-   306 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:306:13: note: in expansion of macro 'Lpx_val'
-   306 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:306:13: note: in expansion of macro 'Lpx_val'
-   306 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:310:9: warning: implicit declaration of function 'lpx_simplex'; did you mean 'glp_simplex'? [-Wimplicit-function-declaration]
-   310 |   ret = lpx_simplex(lp);
-       |         ^~~~~~~~~~~
-       |         glp_simplex
- glpk_stubs.c: In function 'ocaml_glpk_get_obj_val':
- glpk_stubs.c:319:3: error: unknown type name 'LPX'
-   319 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:319:13: note: in expansion of macro 'Lpx_val'
-   319 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:319:13: note: in expansion of macro 'Lpx_val'
-   319 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:321:7: warning: implicit declaration of function 'lpx_get_class' [-Wimplicit-function-declaration]
-   321 |   if (lpx_get_class(lp) == LPX_MIP)
-       |       ^~~~~~~~~~~~~
- glpk_stubs.c:321:28: error: 'LPX_MIP' undeclared (first use in this function); did you mean 'GLP_MIP'?
-   321 |   if (lpx_get_class(lp) == LPX_MIP)
-       |                            ^~~~~~~
-       |                            GLP_MIP
- glpk_stubs.c:322:11: warning: implicit declaration of function 'lpx_mip_obj_val'; did you mean 'glp_mip_obj_val'? [-Wimplicit-function-declaration]
-   322 |     ans = lpx_mip_obj_val(lp);
-       |           ^~~~~~~~~~~~~~~
-       |           glp_mip_obj_val
- glpk_stubs.c:324:11: warning: implicit declaration of function 'lpx_get_obj_val'; did you mean 'glp_get_obj_val'? [-Wimplicit-function-declaration]
-   324 |     ans = lpx_get_obj_val(lp);
-       |           ^~~~~~~~~~~~~~~
-       |           glp_get_obj_val
- glpk_stubs.c: In function 'ocaml_glpk_get_col_prim':
- glpk_stubs.c:330:3: error: unknown type name 'LPX'
-   330 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:330:13: note: in expansion of macro 'Lpx_val'
-   330 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:330:13: note: in expansion of macro 'Lpx_val'
-   330 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:333:28: error: 'LPX_MIP' undeclared (first use in this function); did you mean 'GLP_MIP'?
-   333 |   if (lpx_get_class(lp) == LPX_MIP)
-       |                            ^~~~~~~
-       |                            GLP_MIP
- glpk_stubs.c:334:11: warning: implicit declaration of function 'lpx_mip_col_val'; did you mean 'glp_mip_col_val'? [-Wimplicit-function-declaration]
-   334 |     ans = lpx_mip_col_val(lp, Int_val(n) + 1);
-       |           ^~~~~~~~~~~~~~~
-       |           glp_mip_col_val
- glpk_stubs.c:336:11: warning: implicit declaration of function 'lpx_get_col_prim'; did you mean 'glp_get_col_prim'? [-Wimplicit-function-declaration]
-   336 |     ans = lpx_get_col_prim(lp, Int_val(n) + 1);
-       |           ^~~~~~~~~~~~~~~~
-       |           glp_get_col_prim
- glpk_stubs.c: In function 'ocaml_glpk_get_row_prim':
- glpk_stubs.c:342:3: error: unknown type name 'LPX'
-   342 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:342:13: note: in expansion of macro 'Lpx_val'
-   342 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:342:13: note: in expansion of macro 'Lpx_val'
-   342 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:343:27: warning: implicit declaration of function 'lpx_get_row_prim'; did you mean 'glp_get_row_prim'? [-Wimplicit-function-declaration]
-   343 |   return caml_copy_double(lpx_get_row_prim(lp, Int_val(n) + 1));
-       |                           ^~~~~~~~~~~~~~~~
-       |                           glp_get_row_prim
- glpk_stubs.c: In function 'ocaml_glpk_get_row_dual':
- glpk_stubs.c:348:3: error: unknown type name 'LPX'
-   348 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:348:13: note: in expansion of macro 'Lpx_val'
-   348 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:348:13: note: in expansion of macro 'Lpx_val'
-   348 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:349:27: warning: implicit declaration of function 'lpx_get_row_dual'; did you mean 'glp_get_row_dual'? [-Wimplicit-function-declaration]
-   349 |   return caml_copy_double(lpx_get_row_dual(lp, Int_val(n) + 1));
-       |                           ^~~~~~~~~~~~~~~~
-       |                           glp_get_row_dual
- glpk_stubs.c: In function 'ocaml_glpk_get_num_rows':
- glpk_stubs.c:354:3: error: unknown type name 'LPX'
-   354 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:354:13: note: in expansion of macro 'Lpx_val'
-   354 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:354:13: note: in expansion of macro 'Lpx_val'
-   354 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:355:18: warning: implicit declaration of function 'lpx_get_num_rows'; did you mean 'glp_get_num_rows'? [-Wimplicit-function-declaration]
-   355 |   return Val_int(lpx_get_num_rows(lp));
-       |                  ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:355:10: note: in expansion of macro 'Val_int'
-   355 |   return Val_int(lpx_get_num_rows(lp));
-       |          ^~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_num_cols':
- glpk_stubs.c:360:3: error: unknown type name 'LPX'
-   360 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:360:13: note: in expansion of macro 'Lpx_val'
-   360 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:360:13: note: in expansion of macro 'Lpx_val'
-   360 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:361:18: warning: implicit declaration of function 'lpx_get_num_cols'; did you mean 'glp_get_num_cols'? [-Wimplicit-function-declaration]
-   361 |   return Val_int(lpx_get_num_cols(lp));
-       |                  ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:361:10: note: in expansion of macro 'Val_int'
-   361 |   return Val_int(lpx_get_num_cols(lp));
-       |          ^~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_scale_problem':
- glpk_stubs.c:366:3: error: unknown type name 'LPX'
-   366 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:366:13: note: in expansion of macro 'Lpx_val'
-   366 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:366:13: note: in expansion of macro 'Lpx_val'
-   366 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:367:3: warning: implicit declaration of function 'lpx_scale_prob'; did you mean 'glp_scale_prob'? [-Wimplicit-function-declaration]
-   367 |   lpx_scale_prob(lp);
-       |   ^~~~~~~~~~~~~~
-       |   glp_scale_prob
- glpk_stubs.c: In function 'ocaml_glpk_unscale_problem':
- glpk_stubs.c:373:3: error: unknown type name 'LPX'
-   373 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:373:13: note: in expansion of macro 'Lpx_val'
-   373 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:373:13: note: in expansion of macro 'Lpx_val'
-   373 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:374:3: warning: implicit declaration of function 'lpx_unscale_prob'; did you mean 'glp_unscale_prob'? [-Wimplicit-function-declaration]
-   374 |   lpx_unscale_prob(lp);
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_unscale_prob
- glpk_stubs.c: In function 'ocaml_glpk_interior':
- glpk_stubs.c:389:3: error: unknown type name 'LPX'
-   389 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:389:13: note: in expansion of macro 'Lpx_val'
-   389 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:389:13: note: in expansion of macro 'Lpx_val'
-   389 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:393:9: warning: implicit declaration of function 'lpx_interior'; did you mean 'glp_interior'? [-Wimplicit-function-declaration]
-   393 |   ret = lpx_interior(lp);
-       |         ^~~~~~~~~~~~
-       |         glp_interior
- glpk_stubs.c: At top level:
- glpk_stubs.c:400:29: error: 'LPX_LP' undeclared here (not in a function)
-   400 | static int class_table[] = {LPX_LP, LPX_MIP};
-       |                             ^~~~~~
- glpk_stubs.c:400:37: error: 'LPX_MIP' undeclared here (not in a function); did you mean 'GLP_MIP'?
-   400 | static int class_table[] = {LPX_LP, LPX_MIP};
-       |                                     ^~~~~~~
-       |                                     GLP_MIP
- glpk_stubs.c: In function 'ocaml_glpk_set_class':
- glpk_stubs.c:404:3: error: unknown type name 'LPX'
-   404 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:404:13: note: in expansion of macro 'Lpx_val'
-   404 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:404:13: note: in expansion of macro 'Lpx_val'
-   404 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:405:3: warning: implicit declaration of function 'lpx_set_class' [-Wimplicit-function-declaration]
-   405 |   lpx_set_class(lp, class_table[Int_val(class)]);
-       |   ^~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_class':
- glpk_stubs.c:411:3: error: unknown type name 'LPX'
-   411 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:411:13: note: in expansion of macro 'Lpx_val'
-   411 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:411:13: note: in expansion of macro 'Lpx_val'
-   411 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c: At top level:
- glpk_stubs.c:425:28: error: 'LPX_CV' undeclared here (not in a function); did you mean 'GLP_CV'?
-   425 | static int kind_table[] = {LPX_CV, LPX_IV};
-       |                            ^~~~~~
-       |                            GLP_CV
- glpk_stubs.c:425:36: error: 'LPX_IV' undeclared here (not in a function); did you mean 'GLP_IV'?
-   425 | static int kind_table[] = {LPX_CV, LPX_IV};
-       |                                    ^~~~~~
-       |                                    GLP_IV
- glpk_stubs.c: In function 'ocaml_glpk_set_col_kind':
- glpk_stubs.c:429:3: error: unknown type name 'LPX'
-   429 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:429:13: note: in expansion of macro 'Lpx_val'
-   429 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:429:13: note: in expansion of macro 'Lpx_val'
-   429 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:430:3: warning: implicit declaration of function 'lpx_set_col_kind'; did you mean 'glp_set_col_kind'? [-Wimplicit-function-declaration]
-   430 |   lpx_set_col_kind(lp, Int_val(n) + 1, kind_table[Int_val(kind)]);
-       |   ^~~~~~~~~~~~~~~~
-       |   glp_set_col_kind
- glpk_stubs.c: In function 'ocaml_glpk_integer':
- glpk_stubs.c:437:3: error: unknown type name 'LPX'
-   437 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:437:13: note: in expansion of macro 'Lpx_val'
-   437 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:437:13: note: in expansion of macro 'Lpx_val'
-   437 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:441:9: warning: implicit declaration of function 'lpx_integer' [-Wimplicit-function-declaration]
-   441 |   ret = lpx_integer(lp);
-       |         ^~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_intopt':
- glpk_stubs.c:451:3: error: unknown type name 'LPX'
-   451 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:451:13: note: in expansion of macro 'Lpx_val'
-   451 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:451:13: note: in expansion of macro 'Lpx_val'
-   451 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:455:9: warning: implicit declaration of function 'lpx_intopt'; did you mean 'glp_intopt'? [-Wimplicit-function-declaration]
-   455 |   ret = lpx_intopt(lp);
-       |         ^~~~~~~~~~
-       |         glp_intopt
- glpk_stubs.c: In function 'ocaml_glpk_warm_up':
- glpk_stubs.c:464:3: error: unknown type name 'LPX'
-   464 |   LPX *lp = Lpx_val(blp);
-       |   ^~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:464:13: note: in expansion of macro 'Lpx_val'
-   464 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:464:13: note: in expansion of macro 'Lpx_val'
-   464 |   LPX *lp = Lpx_val(blp);
-       |             ^~~~~~~
- glpk_stubs.c:465:18: warning: implicit declaration of function 'lpx_warm_up'; did you mean 'glp_warm_up'? [-Wimplicit-function-declaration]
-   465 |   raise_on_error(lpx_warm_up(lp));
-       |                  ^~~~~~~~~~~
-       |                  glp_warm_up
- glpk_stubs.c: In function 'ocaml_glpk_get_message_level':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:473:18: warning: implicit declaration of function 'lpx_get_int_parm' [-Wimplicit-function-declaration]
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |                  ^~~~~~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:496:31: error: 'LPX_K_MSGLEV' undeclared (first use in this function)
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       |                               ^~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_message_level':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:478:3: warning: implicit declaration of function 'lpx_set_int_parm' [-Wimplicit-function-declaration]
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |   ^~~~~~~~~~~~~~~~
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:496:31: error: 'LPX_K_MSGLEV' undeclared (first use in this function)
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       |                               ^~~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_scaling':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:497:25: error: 'LPX_K_SCALE' undeclared (first use in this function)
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       |                         ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_scaling':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:497:25: error: 'LPX_K_SCALE' undeclared (first use in this function)
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       |                         ^~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_use_dual_simplex':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:498:34: error: 'LPX_K_DUAL' undeclared (first use in this function); did you mean 'GLP_DUAL'?
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       |                                  ^~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_use_dual_simplex':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:498:34: error: 'LPX_K_DUAL' undeclared (first use in this function); did you mean 'GLP_DUAL'?
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       |                                  ^~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_pricing':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:499:25: error: 'LPX_K_PRICE' undeclared (first use in this function)
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       |                         ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_pricing':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:499:25: error: 'LPX_K_PRICE' undeclared (first use in this function)
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       |                         ^~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_relaxation':
- glpk_stubs.c:485:3: error: unknown type name 'LPX'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:486:16: warning: implicit declaration of function 'lpx_get_real_parm' [-Wimplicit-function-declaration]
-   486 |   double ans = lpx_get_real_parm(lp, param); \
-       |                ^~~~~~~~~~~~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:500:29: error: 'LPX_K_RELAX' undeclared (first use in this function)
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       |                             ^~~~~~~~~~~
- glpk_stubs.c:486:38: note: in definition of macro 'BIND_REAL_PARAM'
-   486 |   double ans = lpx_get_real_parm(lp, param); \
-       |                                      ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_relaxation':
- glpk_stubs.c:491:3: error: unknown type name 'LPX'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:492:3: warning: implicit declaration of function 'lpx_set_real_parm' [-Wimplicit-function-declaration]
-   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
-       |   ^~~~~~~~~~~~~~~~~
- glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:500:29: error: 'LPX_K_RELAX' undeclared (first use in this function)
-   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
-       |                             ^~~~~~~~~~~
- glpk_stubs.c:492:25: note: in definition of macro 'BIND_REAL_PARAM'
-   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
-       |                         ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_solution_rounding':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:505:35: error: 'LPX_K_ROUND' undeclared (first use in this function)
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       |                                   ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_solution_rounding':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:505:35: error: 'LPX_K_ROUND' undeclared (first use in this function)
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       |                                   ^~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_iteration_limit':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:506:33: error: 'LPX_K_ITLIM' undeclared (first use in this function)
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       |                                 ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_iteration_limit':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:506:33: error: 'LPX_K_ITLIM' undeclared (first use in this function)
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       |                                 ^~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_iteration_count':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:507:33: error: 'LPX_K_ITCNT' undeclared (first use in this function)
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       |                                 ^~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_iteration_count':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:507:33: error: 'LPX_K_ITCNT' undeclared (first use in this function)
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       |                                 ^~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_time_limit':
- glpk_stubs.c:485:3: error: unknown type name 'LPX'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
-   485 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:508:29: error: 'LPX_K_TMLIM' undeclared (first use in this function)
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       |                             ^~~~~~~~~~~
- glpk_stubs.c:486:38: note: in definition of macro 'BIND_REAL_PARAM'
-   486 |   double ans = lpx_get_real_parm(lp, param); \
-       |                                      ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_time_limit':
- glpk_stubs.c:491:3: error: unknown type name 'LPX'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
-   491 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       | ^~~~~~~~~~~~~~~
- glpk_stubs.c:508:29: error: 'LPX_K_TMLIM' undeclared (first use in this function)
-   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
-       |                             ^~~~~~~~~~~
- glpk_stubs.c:492:25: note: in definition of macro 'BIND_REAL_PARAM'
-   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
-       |                         ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_branching_heuristic':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:509:37: error: 'LPX_K_BRANCH' undeclared (first use in this function); did you mean 'GLP_IBRANCH'?
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       |                                     ^~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_branching_heuristic':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:509:37: error: 'LPX_K_BRANCH' undeclared (first use in this function); did you mean 'GLP_IBRANCH'?
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       |                                     ^~~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_backtracking_heuristic':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:510:40: error: 'LPX_K_BTRACK' undeclared (first use in this function)
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       |                                        ^~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_backtracking_heuristic':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:510:40: error: 'LPX_K_BTRACK' undeclared (first use in this function)
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       |                                        ^~~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_use_presolver':
- glpk_stubs.c:472:3: error: unknown type name 'LPX'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
-   472 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:511:31: error: 'LPX_K_PRESOL' undeclared (first use in this function)
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       |                               ^~~~~~~~~~~~
- /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
-    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
-       |                                               ^
- glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
-   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
-       |          ^~~~~~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_set_use_presolver':
- glpk_stubs.c:477:3: error: unknown type name 'LPX'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |   ^~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
-   477 |   LPX *lp = Lpx_val(blp); \
-       |             ^~~~~~~
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c:511:31: error: 'LPX_K_PRESOL' undeclared (first use in this function)
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       |                               ^~~~~~~~~~~~
- glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
-   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
-       |                        ^~~~~
- glpk_stubs.c: In function 'ocaml_glpk_read_cplex':
- glpk_stubs.c:515:3: error: unknown type name 'LPX'
-   515 |   LPX *lp = lpx_read_cpxlp(String_val(fname));
-       |   ^~~
- glpk_stubs.c:515:13: warning: implicit declaration of function 'lpx_read_cpxlp'; did you mean 'glp_read_lp'? [-Wimplicit-function-declaration]
-   515 |   LPX *lp = lpx_read_cpxlp(String_val(fname));
-       |             ^~~~~~~~~~~~~~
-       |             glp_read_lp
- glpk_stubs.c:515:13: warning: initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
- glpk_stubs.c: In function 'ocaml_glpk_write_cplex':
- glpk_stubs.c:523:7: warning: implicit declaration of function 'lpx_write_cpxlp'; did you mean 'glp_write_lp'? [-Wimplicit-function-declaration]
-   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
-       |       ^~~~~~~~~~~~~~~
-       |       glp_write_lp
- glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                        ^~~
- glpk_stubs.c:523:23: note: in expansion of macro 'Lpx_val'
-   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
-       |                       ^~~~~~~
- glpk_stubs.c:82:29: error: expected expression before ')' token
-    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
-       |                             ^
- glpk_stubs.c:523:23: note: in expansion of macro 'Lpx_val'
-   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
-       |                       ^~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_message_level':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
-   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_scaling':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
-   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_use_dual_simplex':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
-   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_pricing':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
-   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_solution_rounding':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
-   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_iteration_limit':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
-   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_iteration_count':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
-   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_branching_heuristic':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
-   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_backtracking_heuristic':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
-   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: In function 'ocaml_glpk_get_use_presolver':
- glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
-   474 | } \
-       | ^
- glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
-   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
-       | ^~~~~~~~~~~~~~
- glpk_stubs.c: At top level:
- glpk_stubs.c:89:33: warning: 'lpx_ops' defined but not used [-Wunused-variable]
-    89 | static struct custom_operations lpx_ops =
-       |                                 ^~~~~~~
- make[2]: *** [OCamlMakefile:1013: glpk_stubs.o] Error 2
- make[2]: Leaving directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
- make[1]: *** [OCamlMakefile:716: byte-code-library] Error 2
- make[1]: Leaving directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
- make: *** [Makefile:13: byte] Error 2
[ERROR] The compilation of glpk.0.1.6 failed at "make byte opt".

#=== ERROR while compiling glpk.0.1.6 =========================================#
# context              2.1.5 | linux/x86_64 | ocaml-base-compiler.5.1.1 | file:///src
# path                 ~/.opam/5.1/.opam-switch/build/glpk.0.1.6
# command              /usr/bin/make byte opt
# exit-code            2
# env-file             ~/.opam/log/glpk-113-aad95c.env
# output-file          ~/.opam/log/glpk-113-aad95c.out
### output ###
# make -C src byte
# make[1]: Entering directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
# make[2]: Entering directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
# making ._bcdi/glpk.di from glpk.mli
# making ._d/glpk.d from glpk.ml
# ocamlc -c -cc "cc" -ccopt "-fPIC -Wall -ansi -DCAML_NAME_SPACE -g \
# 			-DPIC   \
# 			    -o glpk_stubs.o " glpk_stubs.c 
# In file included from /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:20,
#                  from glpk_stubs.c:23:
# /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:324:13: error: expected ';' before 'int'
#   324 | Caml_inline int caml_uadd_overflow(uintnat a, uintnat b, uintnat * res)
#       |             ^~~
# /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:335:13: error: expected ';' before 'int'
#   335 | Caml_inline int caml_usub_overflow(uintnat a, uintnat b, uintnat * res)
#       |             ^~~
# /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:347:13: error: expected ';' before 'int'
#   347 | Caml_inline int caml_umul_overflow(uintnat a, uintnat b, uintnat * res)
#       |             ^~~
# In file included from /home/opam/.opam/5.1/lib/ocaml/caml/misc.h:21:
# /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
#    44 | #define Caml_inline static inline
#       |                            ^~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:263:1: note: in expansion of macro 'Caml_inline'
#   263 | Caml_inline value Val_ptr(void* p)
#       | ^~~~~~~~~~~
# In file included from /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:21:
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:263:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Val_ptr'
#   263 | Caml_inline value Val_ptr(void* p)
#       |                   ^~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:268:13: error: expected ';' before 'void'
#   268 | Caml_inline void* Ptr_val(value val)
#       |             ^~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
#    44 | #define Caml_inline static inline
#       |                            ^~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:75:1: note: in expansion of macro 'Caml_inline'
#    75 | Caml_inline value caml_alloc_unboxed (value arg) { return arg; }
#       | ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:75:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_alloc_unboxed'
#    75 | Caml_inline value caml_alloc_unboxed (value arg) { return arg; }
#       |                   ^~~~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
#    44 | #define Caml_inline static inline
#       |                            ^~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:76:1: note: in expansion of macro 'Caml_inline'
#    76 | Caml_inline value caml_alloc_boxed (value arg) {
#       | ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:76:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_alloc_boxed'
#    76 | Caml_inline value caml_alloc_boxed (value arg) {
#       |                   ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
#    44 | #define Caml_inline static inline
#       |                            ^~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:81:1: note: in expansion of macro 'Caml_inline'
#    81 | Caml_inline value caml_field_unboxed (value arg) { return arg; }
#       | ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:81:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_field_unboxed'
#    81 | Caml_inline value caml_field_unboxed (value arg) { return arg; }
#       |                   ^~~~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/config.h:44:28: error: unknown type name 'inline'
#    44 | #define Caml_inline static inline
#       |                            ^~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:82:1: note: in expansion of macro 'Caml_inline'
#    82 | Caml_inline value caml_field_boxed (value arg) { return Field (arg, 0); }
#       | ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:82:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'caml_field_boxed'
#    82 | Caml_inline value caml_field_boxed (value arg) { return Field (arg, 0); }
#       |                   ^~~~~~~~~~~~~~~~
# glpk_stubs.c: In function 'raise_on_error':
# glpk_stubs.c:40:10: error: 'LPX_E_OK' undeclared (first use in this function)
#    40 |     case LPX_E_OK:
#       |          ^~~~~~~~
# glpk_stubs.c:40:10: note: each undeclared identifier is reported only once for each function it appears in
# glpk_stubs.c:43:10: error: 'LPX_E_FAULT' undeclared (first use in this function)
#    43 |     case LPX_E_FAULT:
#       |          ^~~~~~~~~~~
# glpk_stubs.c:46:10: error: 'LPX_E_OBJLL' undeclared (first use in this function); did you mean 'GLP_EOBJLL'?
#    46 |     case LPX_E_OBJLL:
#       |          ^~~~~~~~~~~
#       |          GLP_EOBJLL
# glpk_stubs.c:49:10: error: 'LPX_E_OBJUL' undeclared (first use in this function); did you mean 'GLP_EOBJUL'?
#    49 |     case LPX_E_OBJUL:
#       |          ^~~~~~~~~~~
#       |          GLP_EOBJUL
# glpk_stubs.c:52:10: error: 'LPX_E_NOPFS' undeclared (first use in this function); did you mean 'GLP_ENOPFS'?
#    52 |     case LPX_E_NOPFS:
#       |          ^~~~~~~~~~~
#       |          GLP_ENOPFS
# glpk_stubs.c:55:10: error: 'LPX_E_NODFS' undeclared (first use in this function); did you mean 'GLP_ENODFS'?
#    55 |     case LPX_E_NODFS:
#       |          ^~~~~~~~~~~
#       |          GLP_ENODFS
# glpk_stubs.c:58:10: error: 'LPX_E_ITLIM' undeclared (first use in this function); did you mean 'GLP_EITLIM'?
#    58 |     case LPX_E_ITLIM:
#       |          ^~~~~~~~~~~
#       |          GLP_EITLIM
# glpk_stubs.c:61:10: error: 'LPX_E_TMLIM' undeclared (first use in this function); did you mean 'GLP_ETMLIM'?
#    61 |     case LPX_E_TMLIM:
#       |          ^~~~~~~~~~~
#       |          GLP_ETMLIM
# glpk_stubs.c:64:10: error: 'LPX_E_SING' undeclared (first use in this function); did you mean 'GLP_ESING'?
#    64 |     case LPX_E_SING:
#       |          ^~~~~~~~~~
#       |          GLP_ESING
# glpk_stubs.c:67:10: error: 'LPX_E_EMPTY' undeclared (first use in this function)
#    67 |     case LPX_E_EMPTY:
#       |          ^~~~~~~~~~~
# glpk_stubs.c:70:10: error: 'LPX_E_BADB' undeclared (first use in this function); did you mean 'GLP_EBADB'?
#    70 |     case LPX_E_BADB:
#       |          ^~~~~~~~~~
#       |          GLP_EBADB
# glpk_stubs.c:73:10: error: 'LPX_E_NOCONV' undeclared (first use in this function)
#    73 |     case LPX_E_NOCONV:
#       |          ^~~~~~~~~~~~
# glpk_stubs.c: In function 'finalize_lpx':
# glpk_stubs.c:86:3: warning: implicit declaration of function 'lpx_delete_prob'; did you mean 'glp_delete_prob'? [-Wimplicit-function-declaration]
#    86 |   lpx_delete_prob(Lpx_val(block));
#       |   ^~~~~~~~~~~~~~~
#       |   glp_delete_prob
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:86:19: note: in expansion of macro 'Lpx_val'
#    86 |   lpx_delete_prob(Lpx_val(block));
#       |                   ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:86:19: note: in expansion of macro 'Lpx_val'
#    86 |   lpx_delete_prob(Lpx_val(block));
#       |                   ^~~~~~~
# glpk_stubs.c: At top level:
# glpk_stubs.c:99:22: error: unknown type name 'LPX'
#    99 | static value new_blp(LPX* lp)
#       |                      ^~~
# glpk_stubs.c: In function 'ocaml_glpk_new_prob':
# glpk_stubs.c:108:3: error: unknown type name 'LPX'
#   108 |   LPX *lp = lpx_create_prob();
#       |   ^~~
# glpk_stubs.c:108:13: warning: implicit declaration of function 'lpx_create_prob'; did you mean 'glp_create_prob'? [-Wimplicit-function-declaration]
#   108 |   LPX *lp = lpx_create_prob();
#       |             ^~~~~~~~~~~~~~~
#       |             glp_create_prob
# glpk_stubs.c:108:13: warning: initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
# glpk_stubs.c:109:10: warning: implicit declaration of function 'new_blp' [-Wimplicit-function-declaration]
#   109 |   return new_blp(lp);
#       |          ^~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_prob_name':
# glpk_stubs.c:114:3: error: unknown type name 'LPX'
#   114 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:114:13: note: in expansion of macro 'Lpx_val'
#   114 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:114:13: note: in expansion of macro 'Lpx_val'
#   114 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:115:3: warning: implicit declaration of function 'lpx_set_prob_name'; did you mean 'glp_set_prob_name'? [-Wimplicit-function-declaration]
#   115 |   lpx_set_prob_name(lp, String_val(name));
#       |   ^~~~~~~~~~~~~~~~~
#       |   glp_set_prob_name
# glpk_stubs.c: In function 'ocaml_glpk_get_prob_name':
# glpk_stubs.c:122:3: error: unknown type name 'LPX'
#   122 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:122:13: note: in expansion of macro 'Lpx_val'
#   122 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:122:13: note: in expansion of macro 'Lpx_val'
#   122 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# In file included from /home/opam/.opam/5.1/lib/ocaml/caml/callback.h:22,
#                  from glpk_stubs.c:24:
# glpk_stubs.c:123:31: warning: implicit declaration of function 'lpx_get_prob_name'; did you mean 'glp_get_prob_name'? [-Wimplicit-function-declaration]
#   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
#       |                               ^~~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:123:3: note: in expansion of macro 'CAMLreturn'
#   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
#       |   ^~~~~~~~~~
# glpk_stubs.c:123:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
#   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
#       |                               ^~~~~~~~~~~~~~~~~~~~~
#       |                               |
#       |                               int
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:123:3: note: in expansion of macro 'CAMLreturn'
#   123 |   CAMLreturn(caml_copy_string(lpx_get_prob_name(lp)));
#       |   ^~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
#    51 | CAMLextern value caml_copy_string (char const *);
#       |                                    ^~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_obj_name':
# glpk_stubs.c:128:3: error: unknown type name 'LPX'
#   128 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:128:13: note: in expansion of macro 'Lpx_val'
#   128 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:128:13: note: in expansion of macro 'Lpx_val'
#   128 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:129:3: warning: implicit declaration of function 'lpx_set_obj_name'; did you mean 'glp_set_obj_name'? [-Wimplicit-function-declaration]
#   129 |   lpx_set_obj_name(lp, String_val(name));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_obj_name
# glpk_stubs.c: In function 'ocaml_glpk_get_obj_name':
# glpk_stubs.c:136:3: error: unknown type name 'LPX'
#   136 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:136:13: note: in expansion of macro 'Lpx_val'
#   136 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:136:13: note: in expansion of macro 'Lpx_val'
#   136 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:137:31: warning: implicit declaration of function 'lpx_get_obj_name'; did you mean 'glp_get_obj_name'? [-Wimplicit-function-declaration]
#   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
#       |                               ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:137:3: note: in expansion of macro 'CAMLreturn'
#   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
#       |   ^~~~~~~~~~
# glpk_stubs.c:137:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
#   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
#       |                               ^~~~~~~~~~~~~~~~~~~~
#       |                               |
#       |                               int
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:137:3: note: in expansion of macro 'CAMLreturn'
#   137 |   CAMLreturn(caml_copy_string(lpx_get_obj_name(lp)));
#       |   ^~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
#    51 | CAMLextern value caml_copy_string (char const *);
#       |                                    ^~~~~~~~~~~~
# glpk_stubs.c: At top level:
# glpk_stubs.c:140:33: error: 'LPX_MIN' undeclared here (not in a function); did you mean 'GLP_MIN'?
#   140 | static int direction_table[] = {LPX_MIN, LPX_MAX};
#       |                                 ^~~~~~~
#       |                                 GLP_MIN
# glpk_stubs.c:140:42: error: 'LPX_MAX' undeclared here (not in a function); did you mean 'GLP_MAX'?
#   140 | static int direction_table[] = {LPX_MIN, LPX_MAX};
#       |                                          ^~~~~~~
#       |                                          GLP_MAX
# glpk_stubs.c: In function 'ocaml_glpk_set_direction':
# glpk_stubs.c:144:3: error: unknown type name 'LPX'
#   144 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:144:13: note: in expansion of macro 'Lpx_val'
#   144 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:144:13: note: in expansion of macro 'Lpx_val'
#   144 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:145:3: warning: implicit declaration of function 'lpx_set_obj_dir'; did you mean 'glp_set_obj_dir'? [-Wimplicit-function-declaration]
#   145 |   lpx_set_obj_dir(lp, direction_table[Int_val(direction)]);
#       |   ^~~~~~~~~~~~~~~
#       |   glp_set_obj_dir
# glpk_stubs.c: In function 'ocaml_glpk_get_direction':
# glpk_stubs.c:151:3: error: unknown type name 'LPX'
#   151 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:151:13: note: in expansion of macro 'Lpx_val'
#   151 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:151:13: note: in expansion of macro 'Lpx_val'
#   151 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:152:10: warning: implicit declaration of function 'lpx_get_obj_dir'; did you mean 'glp_get_obj_dir'? [-Wimplicit-function-declaration]
#   152 |   switch(lpx_get_obj_dir(lp))
#       |          ^~~~~~~~~~~~~~~
#       |          glp_get_obj_dir
# glpk_stubs.c: In function 'ocaml_glpk_add_rows':
# glpk_stubs.c:167:3: error: unknown type name 'LPX'
#   167 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:167:13: note: in expansion of macro 'Lpx_val'
#   167 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:167:13: note: in expansion of macro 'Lpx_val'
#   167 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:168:3: warning: implicit declaration of function 'lpx_add_rows'; did you mean 'glp_add_rows'? [-Wimplicit-function-declaration]
#   168 |   lpx_add_rows(lp, Int_val(n));
#       |   ^~~~~~~~~~~~
#       |   glp_add_rows
# glpk_stubs.c: In function 'ocaml_glpk_set_row_name':
# glpk_stubs.c:174:3: error: unknown type name 'LPX'
#   174 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:174:13: note: in expansion of macro 'Lpx_val'
#   174 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:174:13: note: in expansion of macro 'Lpx_val'
#   174 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:175:3: warning: implicit declaration of function 'lpx_set_row_name'; did you mean 'glp_set_row_name'? [-Wimplicit-function-declaration]
#   175 |   lpx_set_row_name(lp, Int_val(n) + 1, String_val(name));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_row_name
# glpk_stubs.c: In function 'ocaml_glpk_get_row_name':
# glpk_stubs.c:182:3: error: unknown type name 'LPX'
#   182 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:182:13: note: in expansion of macro 'Lpx_val'
#   182 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:182:13: note: in expansion of macro 'Lpx_val'
#   182 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:183:31: warning: implicit declaration of function 'lpx_get_row_name'; did you mean 'glp_get_row_name'? [-Wimplicit-function-declaration]
#   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
#       |                               ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:183:3: note: in expansion of macro 'CAMLreturn'
#   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
#       |   ^~~~~~~~~~
# glpk_stubs.c:183:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
#   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
#       |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#       |                               |
#       |                               int
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:183:3: note: in expansion of macro 'CAMLreturn'
#   183 |   CAMLreturn(caml_copy_string(lpx_get_row_name(lp, Int_val(n) + 1)));
#       |   ^~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
#    51 | CAMLextern value caml_copy_string (char const *);
#       |                                    ^~~~~~~~~~~~
# glpk_stubs.c: At top level:
# glpk_stubs.c:186:34: error: 'LPX_FR' undeclared here (not in a function); did you mean 'GLP_FR'?
#   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
#       |                                  ^~~~~~
#       |                                  GLP_FR
# glpk_stubs.c:186:42: error: 'LPX_LO' undeclared here (not in a function); did you mean 'GLP_LO'?
#   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
#       |                                          ^~~~~~
#       |                                          GLP_LO
# glpk_stubs.c:186:50: error: 'LPX_UP' undeclared here (not in a function); did you mean 'GLP_UP'?
#   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
#       |                                                  ^~~~~~
#       |                                                  GLP_UP
# glpk_stubs.c:186:58: error: 'LPX_DB' undeclared here (not in a function); did you mean 'GLP_DB'?
#   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
#       |                                                          ^~~~~~
#       |                                                          GLP_DB
# glpk_stubs.c:186:66: error: 'LPX_FX' undeclared here (not in a function); did you mean 'GLP_FX'?
#   186 | static int auxvartype_table[] = {LPX_FR, LPX_LO, LPX_UP, LPX_DB, LPX_FX};
#       |                                                                  ^~~~~~
#       |                                                                  GLP_FX
# glpk_stubs.c: In function 'ocaml_glpk_set_row_bounds':
# glpk_stubs.c:190:3: error: unknown type name 'LPX'
#   190 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:190:13: note: in expansion of macro 'Lpx_val'
#   190 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:190:13: note: in expansion of macro 'Lpx_val'
#   190 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:191:3: warning: implicit declaration of function 'lpx_set_row_bnds'; did you mean 'glp_set_row_bnds'? [-Wimplicit-function-declaration]
#   191 |   lpx_set_row_bnds(lp, Int_val(n) + 1, auxvartype_table[Int_val(type)], Double_val(lb), Double_val(ub));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_row_bnds
# glpk_stubs.c: In function 'ocaml_glpk_add_cols':
# glpk_stubs.c:197:3: error: unknown type name 'LPX'
#   197 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:197:13: note: in expansion of macro 'Lpx_val'
#   197 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:197:13: note: in expansion of macro 'Lpx_val'
#   197 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:198:3: warning: implicit declaration of function 'lpx_add_cols'; did you mean 'glp_add_cols'? [-Wimplicit-function-declaration]
#   198 |   lpx_add_cols(lp, Int_val(n));
#       |   ^~~~~~~~~~~~
#       |   glp_add_cols
# glpk_stubs.c: In function 'ocaml_glpk_set_col_name':
# glpk_stubs.c:204:3: error: unknown type name 'LPX'
#   204 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:204:13: note: in expansion of macro 'Lpx_val'
#   204 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:204:13: note: in expansion of macro 'Lpx_val'
#   204 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:205:3: warning: implicit declaration of function 'lpx_set_col_name'; did you mean 'glp_set_col_name'? [-Wimplicit-function-declaration]
#   205 |   lpx_set_col_name(lp, Int_val(n) + 1, String_val(name));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_col_name
# glpk_stubs.c: In function 'ocaml_glpk_get_col_name':
# glpk_stubs.c:212:3: error: unknown type name 'LPX'
#   212 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:212:13: note: in expansion of macro 'Lpx_val'
#   212 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:212:13: note: in expansion of macro 'Lpx_val'
#   212 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:213:31: warning: implicit declaration of function 'lpx_get_col_name'; did you mean 'glp_get_col_name'? [-Wimplicit-function-declaration]
#   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
#       |                               ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:213:3: note: in expansion of macro 'CAMLreturn'
#   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
#       |   ^~~~~~~~~~
# glpk_stubs.c:213:31: warning: passing argument 1 of 'caml_copy_string' makes pointer from integer without a cast [-Wint-conversion]
#   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
#       |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#       |                               |
#       |                               int
# /home/opam/.opam/5.1/lib/ocaml/caml/memory.h:415:29: note: in definition of macro 'CAMLreturnT'
#   415 |   type caml__temp_result = (result); \
#       |                             ^~~~~~
# glpk_stubs.c:213:3: note: in expansion of macro 'CAMLreturn'
#   213 |   CAMLreturn(caml_copy_string(lpx_get_col_name(lp, Int_val(n) + 1)));
#       |   ^~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/alloc.h:51:36: note: expected 'const char *' but argument is of type 'int'
#    51 | CAMLextern value caml_copy_string (char const *);
#       |                                    ^~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_col_bounds':
# glpk_stubs.c:218:3: error: unknown type name 'LPX'
#   218 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:218:13: note: in expansion of macro 'Lpx_val'
#   218 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:218:13: note: in expansion of macro 'Lpx_val'
#   218 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:219:3: warning: implicit declaration of function 'lpx_set_col_bnds'; did you mean 'glp_set_col_bnds'? [-Wimplicit-function-declaration]
#   219 |   lpx_set_col_bnds(lp, Int_val(n) + 1, auxvartype_table[Int_val(type)], Double_val(lb), Double_val(ub));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_col_bnds
# glpk_stubs.c: In function 'ocaml_glpk_set_obj_coef':
# glpk_stubs.c:225:3: error: unknown type name 'LPX'
#   225 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:225:13: note: in expansion of macro 'Lpx_val'
#   225 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:225:13: note: in expansion of macro 'Lpx_val'
#   225 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:226:3: warning: implicit declaration of function 'lpx_set_obj_coef'; did you mean 'glp_set_obj_coef'? [-Wimplicit-function-declaration]
#   226 |   lpx_set_obj_coef(lp, Int_val(n) + 1, Double_val(coef));
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_obj_coef
# glpk_stubs.c: In function 'ocaml_glpk_load_matrix':
# glpk_stubs.c:232:3: error: unknown type name 'LPX'
#   232 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:232:13: note: in expansion of macro 'Lpx_val'
#   232 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:232:13: note: in expansion of macro 'Lpx_val'
#   232 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:265:3: warning: implicit declaration of function 'lpx_load_matrix'; did you mean 'glp_load_matrix'? [-Wimplicit-function-declaration]
#   265 |   lpx_load_matrix(lp, n - 1, ia, ja, ar);
#       |   ^~~~~~~~~~~~~~~
#       |   glp_load_matrix
# glpk_stubs.c: In function 'ocaml_glpk_load_sparse_matrix':
# glpk_stubs.c:276:3: error: unknown type name 'LPX'
#   276 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:276:13: note: in expansion of macro 'Lpx_val'
#   276 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:276:13: note: in expansion of macro 'Lpx_val'
#   276 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_simplex':
# glpk_stubs.c:306:3: error: unknown type name 'LPX'
#   306 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:306:13: note: in expansion of macro 'Lpx_val'
#   306 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:306:13: note: in expansion of macro 'Lpx_val'
#   306 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:310:9: warning: implicit declaration of function 'lpx_simplex'; did you mean 'glp_simplex'? [-Wimplicit-function-declaration]
#   310 |   ret = lpx_simplex(lp);
#       |         ^~~~~~~~~~~
#       |         glp_simplex
# glpk_stubs.c: In function 'ocaml_glpk_get_obj_val':
# glpk_stubs.c:319:3: error: unknown type name 'LPX'
#   319 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:319:13: note: in expansion of macro 'Lpx_val'
#   319 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:319:13: note: in expansion of macro 'Lpx_val'
#   319 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:321:7: warning: implicit declaration of function 'lpx_get_class' [-Wimplicit-function-declaration]
#   321 |   if (lpx_get_class(lp) == LPX_MIP)
#       |       ^~~~~~~~~~~~~
# glpk_stubs.c:321:28: error: 'LPX_MIP' undeclared (first use in this function); did you mean 'GLP_MIP'?
#   321 |   if (lpx_get_class(lp) == LPX_MIP)
#       |                            ^~~~~~~
#       |                            GLP_MIP
# glpk_stubs.c:322:11: warning: implicit declaration of function 'lpx_mip_obj_val'; did you mean 'glp_mip_obj_val'? [-Wimplicit-function-declaration]
#   322 |     ans = lpx_mip_obj_val(lp);
#       |           ^~~~~~~~~~~~~~~
#       |           glp_mip_obj_val
# glpk_stubs.c:324:11: warning: implicit declaration of function 'lpx_get_obj_val'; did you mean 'glp_get_obj_val'? [-Wimplicit-function-declaration]
#   324 |     ans = lpx_get_obj_val(lp);
#       |           ^~~~~~~~~~~~~~~
#       |           glp_get_obj_val
# glpk_stubs.c: In function 'ocaml_glpk_get_col_prim':
# glpk_stubs.c:330:3: error: unknown type name 'LPX'
#   330 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:330:13: note: in expansion of macro 'Lpx_val'
#   330 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:330:13: note: in expansion of macro 'Lpx_val'
#   330 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:333:28: error: 'LPX_MIP' undeclared (first use in this function); did you mean 'GLP_MIP'?
#   333 |   if (lpx_get_class(lp) == LPX_MIP)
#       |                            ^~~~~~~
#       |                            GLP_MIP
# glpk_stubs.c:334:11: warning: implicit declaration of function 'lpx_mip_col_val'; did you mean 'glp_mip_col_val'? [-Wimplicit-function-declaration]
#   334 |     ans = lpx_mip_col_val(lp, Int_val(n) + 1);
#       |           ^~~~~~~~~~~~~~~
#       |           glp_mip_col_val
# glpk_stubs.c:336:11: warning: implicit declaration of function 'lpx_get_col_prim'; did you mean 'glp_get_col_prim'? [-Wimplicit-function-declaration]
#   336 |     ans = lpx_get_col_prim(lp, Int_val(n) + 1);
#       |           ^~~~~~~~~~~~~~~~
#       |           glp_get_col_prim
# glpk_stubs.c: In function 'ocaml_glpk_get_row_prim':
# glpk_stubs.c:342:3: error: unknown type name 'LPX'
#   342 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:342:13: note: in expansion of macro 'Lpx_val'
#   342 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:342:13: note: in expansion of macro 'Lpx_val'
#   342 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:343:27: warning: implicit declaration of function 'lpx_get_row_prim'; did you mean 'glp_get_row_prim'? [-Wimplicit-function-declaration]
#   343 |   return caml_copy_double(lpx_get_row_prim(lp, Int_val(n) + 1));
#       |                           ^~~~~~~~~~~~~~~~
#       |                           glp_get_row_prim
# glpk_stubs.c: In function 'ocaml_glpk_get_row_dual':
# glpk_stubs.c:348:3: error: unknown type name 'LPX'
#   348 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:348:13: note: in expansion of macro 'Lpx_val'
#   348 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:348:13: note: in expansion of macro 'Lpx_val'
#   348 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:349:27: warning: implicit declaration of function 'lpx_get_row_dual'; did you mean 'glp_get_row_dual'? [-Wimplicit-function-declaration]
#   349 |   return caml_copy_double(lpx_get_row_dual(lp, Int_val(n) + 1));
#       |                           ^~~~~~~~~~~~~~~~
#       |                           glp_get_row_dual
# glpk_stubs.c: In function 'ocaml_glpk_get_num_rows':
# glpk_stubs.c:354:3: error: unknown type name 'LPX'
#   354 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:354:13: note: in expansion of macro 'Lpx_val'
#   354 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:354:13: note: in expansion of macro 'Lpx_val'
#   354 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:355:18: warning: implicit declaration of function 'lpx_get_num_rows'; did you mean 'glp_get_num_rows'? [-Wimplicit-function-declaration]
#   355 |   return Val_int(lpx_get_num_rows(lp));
#       |                  ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:355:10: note: in expansion of macro 'Val_int'
#   355 |   return Val_int(lpx_get_num_rows(lp));
#       |          ^~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_num_cols':
# glpk_stubs.c:360:3: error: unknown type name 'LPX'
#   360 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:360:13: note: in expansion of macro 'Lpx_val'
#   360 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:360:13: note: in expansion of macro 'Lpx_val'
#   360 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:361:18: warning: implicit declaration of function 'lpx_get_num_cols'; did you mean 'glp_get_num_cols'? [-Wimplicit-function-declaration]
#   361 |   return Val_int(lpx_get_num_cols(lp));
#       |                  ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:361:10: note: in expansion of macro 'Val_int'
#   361 |   return Val_int(lpx_get_num_cols(lp));
#       |          ^~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_scale_problem':
# glpk_stubs.c:366:3: error: unknown type name 'LPX'
#   366 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:366:13: note: in expansion of macro 'Lpx_val'
#   366 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:366:13: note: in expansion of macro 'Lpx_val'
#   366 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:367:3: warning: implicit declaration of function 'lpx_scale_prob'; did you mean 'glp_scale_prob'? [-Wimplicit-function-declaration]
#   367 |   lpx_scale_prob(lp);
#       |   ^~~~~~~~~~~~~~
#       |   glp_scale_prob
# glpk_stubs.c: In function 'ocaml_glpk_unscale_problem':
# glpk_stubs.c:373:3: error: unknown type name 'LPX'
#   373 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:373:13: note: in expansion of macro 'Lpx_val'
#   373 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:373:13: note: in expansion of macro 'Lpx_val'
#   373 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:374:3: warning: implicit declaration of function 'lpx_unscale_prob'; did you mean 'glp_unscale_prob'? [-Wimplicit-function-declaration]
#   374 |   lpx_unscale_prob(lp);
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_unscale_prob
# glpk_stubs.c: In function 'ocaml_glpk_interior':
# glpk_stubs.c:389:3: error: unknown type name 'LPX'
#   389 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:389:13: note: in expansion of macro 'Lpx_val'
#   389 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:389:13: note: in expansion of macro 'Lpx_val'
#   389 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:393:9: warning: implicit declaration of function 'lpx_interior'; did you mean 'glp_interior'? [-Wimplicit-function-declaration]
#   393 |   ret = lpx_interior(lp);
#       |         ^~~~~~~~~~~~
#       |         glp_interior
# glpk_stubs.c: At top level:
# glpk_stubs.c:400:29: error: 'LPX_LP' undeclared here (not in a function)
#   400 | static int class_table[] = {LPX_LP, LPX_MIP};
#       |                             ^~~~~~
# glpk_stubs.c:400:37: error: 'LPX_MIP' undeclared here (not in a function); did you mean 'GLP_MIP'?
#   400 | static int class_table[] = {LPX_LP, LPX_MIP};
#       |                                     ^~~~~~~
#       |                                     GLP_MIP
# glpk_stubs.c: In function 'ocaml_glpk_set_class':
# glpk_stubs.c:404:3: error: unknown type name 'LPX'
#   404 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:404:13: note: in expansion of macro 'Lpx_val'
#   404 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:404:13: note: in expansion of macro 'Lpx_val'
#   404 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:405:3: warning: implicit declaration of function 'lpx_set_class' [-Wimplicit-function-declaration]
#   405 |   lpx_set_class(lp, class_table[Int_val(class)]);
#       |   ^~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_class':
# glpk_stubs.c:411:3: error: unknown type name 'LPX'
#   411 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:411:13: note: in expansion of macro 'Lpx_val'
#   411 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:411:13: note: in expansion of macro 'Lpx_val'
#   411 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c: At top level:
# glpk_stubs.c:425:28: error: 'LPX_CV' undeclared here (not in a function); did you mean 'GLP_CV'?
#   425 | static int kind_table[] = {LPX_CV, LPX_IV};
#       |                            ^~~~~~
#       |                            GLP_CV
# glpk_stubs.c:425:36: error: 'LPX_IV' undeclared here (not in a function); did you mean 'GLP_IV'?
#   425 | static int kind_table[] = {LPX_CV, LPX_IV};
#       |                                    ^~~~~~
#       |                                    GLP_IV
# glpk_stubs.c: In function 'ocaml_glpk_set_col_kind':
# glpk_stubs.c:429:3: error: unknown type name 'LPX'
#   429 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:429:13: note: in expansion of macro 'Lpx_val'
#   429 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:429:13: note: in expansion of macro 'Lpx_val'
#   429 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:430:3: warning: implicit declaration of function 'lpx_set_col_kind'; did you mean 'glp_set_col_kind'? [-Wimplicit-function-declaration]
#   430 |   lpx_set_col_kind(lp, Int_val(n) + 1, kind_table[Int_val(kind)]);
#       |   ^~~~~~~~~~~~~~~~
#       |   glp_set_col_kind
# glpk_stubs.c: In function 'ocaml_glpk_integer':
# glpk_stubs.c:437:3: error: unknown type name 'LPX'
#   437 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:437:13: note: in expansion of macro 'Lpx_val'
#   437 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:437:13: note: in expansion of macro 'Lpx_val'
#   437 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:441:9: warning: implicit declaration of function 'lpx_integer' [-Wimplicit-function-declaration]
#   441 |   ret = lpx_integer(lp);
#       |         ^~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_intopt':
# glpk_stubs.c:451:3: error: unknown type name 'LPX'
#   451 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:451:13: note: in expansion of macro 'Lpx_val'
#   451 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:451:13: note: in expansion of macro 'Lpx_val'
#   451 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:455:9: warning: implicit declaration of function 'lpx_intopt'; did you mean 'glp_intopt'? [-Wimplicit-function-declaration]
#   455 |   ret = lpx_intopt(lp);
#       |         ^~~~~~~~~~
#       |         glp_intopt
# glpk_stubs.c: In function 'ocaml_glpk_warm_up':
# glpk_stubs.c:464:3: error: unknown type name 'LPX'
#   464 |   LPX *lp = Lpx_val(blp);
#       |   ^~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:464:13: note: in expansion of macro 'Lpx_val'
#   464 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:464:13: note: in expansion of macro 'Lpx_val'
#   464 |   LPX *lp = Lpx_val(blp);
#       |             ^~~~~~~
# glpk_stubs.c:465:18: warning: implicit declaration of function 'lpx_warm_up'; did you mean 'glp_warm_up'? [-Wimplicit-function-declaration]
#   465 |   raise_on_error(lpx_warm_up(lp));
#       |                  ^~~~~~~~~~~
#       |                  glp_warm_up
# glpk_stubs.c: In function 'ocaml_glpk_get_message_level':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:473:18: warning: implicit declaration of function 'lpx_get_int_parm' [-Wimplicit-function-declaration]
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |                  ^~~~~~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:496:31: error: 'LPX_K_MSGLEV' undeclared (first use in this function)
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       |                               ^~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_message_level':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:478:3: warning: implicit declaration of function 'lpx_set_int_parm' [-Wimplicit-function-declaration]
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |   ^~~~~~~~~~~~~~~~
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:496:31: error: 'LPX_K_MSGLEV' undeclared (first use in this function)
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       |                               ^~~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_scaling':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:497:25: error: 'LPX_K_SCALE' undeclared (first use in this function)
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       |                         ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_scaling':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:497:25: error: 'LPX_K_SCALE' undeclared (first use in this function)
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       |                         ^~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_use_dual_simplex':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:498:34: error: 'LPX_K_DUAL' undeclared (first use in this function); did you mean 'GLP_DUAL'?
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       |                                  ^~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_use_dual_simplex':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:498:34: error: 'LPX_K_DUAL' undeclared (first use in this function); did you mean 'GLP_DUAL'?
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       |                                  ^~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_pricing':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:499:25: error: 'LPX_K_PRICE' undeclared (first use in this function)
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       |                         ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_pricing':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:499:25: error: 'LPX_K_PRICE' undeclared (first use in this function)
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       |                         ^~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_relaxation':
# glpk_stubs.c:485:3: error: unknown type name 'LPX'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:486:16: warning: implicit declaration of function 'lpx_get_real_parm' [-Wimplicit-function-declaration]
#   486 |   double ans = lpx_get_real_parm(lp, param); \
#       |                ^~~~~~~~~~~~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:500:29: error: 'LPX_K_RELAX' undeclared (first use in this function)
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       |                             ^~~~~~~~~~~
# glpk_stubs.c:486:38: note: in definition of macro 'BIND_REAL_PARAM'
#   486 |   double ans = lpx_get_real_parm(lp, param); \
#       |                                      ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_relaxation':
# glpk_stubs.c:491:3: error: unknown type name 'LPX'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:492:3: warning: implicit declaration of function 'lpx_set_real_parm' [-Wimplicit-function-declaration]
#   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
#       |   ^~~~~~~~~~~~~~~~~
# glpk_stubs.c:500:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:500:29: error: 'LPX_K_RELAX' undeclared (first use in this function)
#   500 | BIND_REAL_PARAM(relaxation, LPX_K_RELAX);
#       |                             ^~~~~~~~~~~
# glpk_stubs.c:492:25: note: in definition of macro 'BIND_REAL_PARAM'
#   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
#       |                         ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_solution_rounding':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:505:35: error: 'LPX_K_ROUND' undeclared (first use in this function)
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       |                                   ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_solution_rounding':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:505:35: error: 'LPX_K_ROUND' undeclared (first use in this function)
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       |                                   ^~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_iteration_limit':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:506:33: error: 'LPX_K_ITLIM' undeclared (first use in this function)
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       |                                 ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_iteration_limit':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:506:33: error: 'LPX_K_ITLIM' undeclared (first use in this function)
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       |                                 ^~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_iteration_count':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:507:33: error: 'LPX_K_ITCNT' undeclared (first use in this function)
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       |                                 ^~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_iteration_count':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:507:33: error: 'LPX_K_ITCNT' undeclared (first use in this function)
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       |                                 ^~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_time_limit':
# glpk_stubs.c:485:3: error: unknown type name 'LPX'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:485:13: note: in expansion of macro 'Lpx_val'
#   485 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:508:29: error: 'LPX_K_TMLIM' undeclared (first use in this function)
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       |                             ^~~~~~~~~~~
# glpk_stubs.c:486:38: note: in definition of macro 'BIND_REAL_PARAM'
#   486 |   double ans = lpx_get_real_parm(lp, param); \
#       |                                      ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_time_limit':
# glpk_stubs.c:491:3: error: unknown type name 'LPX'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:491:13: note: in expansion of macro 'Lpx_val'
#   491 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:508:1: note: in expansion of macro 'BIND_REAL_PARAM'
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       | ^~~~~~~~~~~~~~~
# glpk_stubs.c:508:29: error: 'LPX_K_TMLIM' undeclared (first use in this function)
#   508 | BIND_REAL_PARAM(time_limit, LPX_K_TMLIM);
#       |                             ^~~~~~~~~~~
# glpk_stubs.c:492:25: note: in definition of macro 'BIND_REAL_PARAM'
#   492 |   lpx_set_real_parm(lp, param, Double_val(n)); \
#       |                         ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_branching_heuristic':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:509:37: error: 'LPX_K_BRANCH' undeclared (first use in this function); did you mean 'GLP_IBRANCH'?
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       |                                     ^~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_branching_heuristic':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:509:37: error: 'LPX_K_BRANCH' undeclared (first use in this function); did you mean 'GLP_IBRANCH'?
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       |                                     ^~~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_backtracking_heuristic':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:510:40: error: 'LPX_K_BTRACK' undeclared (first use in this function)
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       |                                        ^~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_backtracking_heuristic':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:510:40: error: 'LPX_K_BTRACK' undeclared (first use in this function)
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       |                                        ^~~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_use_presolver':
# glpk_stubs.c:472:3: error: unknown type name 'LPX'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:472:13: note: in expansion of macro 'Lpx_val'
#   472 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:511:31: error: 'LPX_K_PRESOL' undeclared (first use in this function)
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       |                               ^~~~~~~~~~~~
# /home/opam/.opam/5.1/lib/ocaml/caml/mlvalues.h:77:47: note: in definition of macro 'Val_long'
#    77 | #define Val_long(x)     ((intnat) (((uintnat)(x) << 1)) + 1)
#       |                                               ^
# glpk_stubs.c:473:10: note: in expansion of macro 'Val_int'
#   473 |   return Val_int(lpx_get_int_parm(lp, param)); \
#       |          ^~~~~~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_set_use_presolver':
# glpk_stubs.c:477:3: error: unknown type name 'LPX'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |   ^~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:477:13: note: in expansion of macro 'Lpx_val'
#   477 |   LPX *lp = Lpx_val(blp); \
#       |             ^~~~~~~
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c:511:31: error: 'LPX_K_PRESOL' undeclared (first use in this function)
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       |                               ^~~~~~~~~~~~
# glpk_stubs.c:478:24: note: in definition of macro 'BIND_INT_PARAM'
#   478 |   lpx_set_int_parm(lp, param, Int_val(n)); \
#       |                        ^~~~~
# glpk_stubs.c: In function 'ocaml_glpk_read_cplex':
# glpk_stubs.c:515:3: error: unknown type name 'LPX'
#   515 |   LPX *lp = lpx_read_cpxlp(String_val(fname));
#       |   ^~~
# glpk_stubs.c:515:13: warning: implicit declaration of function 'lpx_read_cpxlp'; did you mean 'glp_read_lp'? [-Wimplicit-function-declaration]
#   515 |   LPX *lp = lpx_read_cpxlp(String_val(fname));
#       |             ^~~~~~~~~~~~~~
#       |             glp_read_lp
# glpk_stubs.c:515:13: warning: initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
# glpk_stubs.c: In function 'ocaml_glpk_write_cplex':
# glpk_stubs.c:523:7: warning: implicit declaration of function 'lpx_write_cpxlp'; did you mean 'glp_write_lp'? [-Wimplicit-function-declaration]
#   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
#       |       ^~~~~~~~~~~~~~~
#       |       glp_write_lp
# glpk_stubs.c:82:24: error: 'LPX' undeclared (first use in this function)
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                        ^~~
# glpk_stubs.c:523:23: note: in expansion of macro 'Lpx_val'
#   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
#       |                       ^~~~~~~
# glpk_stubs.c:82:29: error: expected expression before ')' token
#    82 | #define Lpx_val(v) (*((LPX**)Data_custom_val(v)))
#       |                             ^
# glpk_stubs.c:523:23: note: in expansion of macro 'Lpx_val'
#   523 |   if (lpx_write_cpxlp(Lpx_val(blp), String_val(fname)))
#       |                       ^~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_message_level':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:496:1: note: in expansion of macro 'BIND_INT_PARAM'
#   496 | BIND_INT_PARAM(message_level, LPX_K_MSGLEV);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_scaling':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:497:1: note: in expansion of macro 'BIND_INT_PARAM'
#   497 | BIND_INT_PARAM(scaling, LPX_K_SCALE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_use_dual_simplex':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:498:1: note: in expansion of macro 'BIND_INT_PARAM'
#   498 | BIND_INT_PARAM(use_dual_simplex, LPX_K_DUAL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_pricing':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:499:1: note: in expansion of macro 'BIND_INT_PARAM'
#   499 | BIND_INT_PARAM(pricing, LPX_K_PRICE);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_solution_rounding':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:505:1: note: in expansion of macro 'BIND_INT_PARAM'
#   505 | BIND_INT_PARAM(solution_rounding, LPX_K_ROUND);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_iteration_limit':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:506:1: note: in expansion of macro 'BIND_INT_PARAM'
#   506 | BIND_INT_PARAM(iteration_limit, LPX_K_ITLIM);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_iteration_count':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:507:1: note: in expansion of macro 'BIND_INT_PARAM'
#   507 | BIND_INT_PARAM(iteration_count, LPX_K_ITCNT);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_branching_heuristic':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:509:1: note: in expansion of macro 'BIND_INT_PARAM'
#   509 | BIND_INT_PARAM(branching_heuristic, LPX_K_BRANCH);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_backtracking_heuristic':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:510:1: note: in expansion of macro 'BIND_INT_PARAM'
#   510 | BIND_INT_PARAM(backtracking_heuristic, LPX_K_BTRACK);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: In function 'ocaml_glpk_get_use_presolver':
# glpk_stubs.c:474:1: warning: control reaches end of non-void function [-Wreturn-type]
#   474 | } \
#       | ^
# glpk_stubs.c:511:1: note: in expansion of macro 'BIND_INT_PARAM'
#   511 | BIND_INT_PARAM(use_presolver, LPX_K_PRESOL);
#       | ^~~~~~~~~~~~~~
# glpk_stubs.c: At top level:
# glpk_stubs.c:89:33: warning: 'lpx_ops' defined but not used [-Wunused-variable]
#    89 | static struct custom_operations lpx_ops =
#       |                                 ^~~~~~~
# make[2]: *** [OCamlMakefile:1013: glpk_stubs.o] Error 2
# make[2]: Leaving directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
# make[1]: *** [OCamlMakefile:716: byte-code-library] Error 2
# make[1]: Leaving directory '/home/opam/.opam/5.1/.opam-switch/build/glpk.0.1.6/src'
# make: *** [Makefile:13: byte] Error 2



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
+- The following actions failed
| - build glpk 0.1.6
+- 
- No changes have been performed
# Run eval $(opam env) to update the current shell environment
'opam --cli=2.1 install glpk.0.1.6 ocamlfind.1.9.6 --verbose --yes --confirm-level=unsafe-yes' failed.
OCaml

Innovation. Community. Security.