diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2018-07-16 11:52:12 +0200 |
---|---|---|
committer | Sébastien Dailly <sebastien@chimrod.com> | 2018-07-26 21:34:10 +0200 |
commit | 5711287dc01133195297cd2309aaca0191c01473 (patch) | |
tree | 0faa2c7e924d4d9d4cb1b7b2eb3f8bbe5e962d54 | |
parent | 725a98ea6133fe7741ac1ada32d53f7978bfede0 (diff) |
Update compilation for windows
-rwxr-xr-x | .gitignore | 2 | ||||
-rwxr-xr-x | Makefile | 4 | ||||
-rwxr-xr-x | src/screen.ml | 5 | ||||
-rwxr-xr-x | stub/Makefile | 13 | ||||
-rwxr-xr-x | stub/locale.c | 62 |
5 files changed, 15 insertions, 71 deletions
@@ -1,9 +1,11 @@ _build/ *.byte *.native +*.exe *.swp *.docdir *.o *.so +*.dll *.a licht @@ -59,6 +59,8 @@ clean: rm -f licht
rm -f *.native
rm -f *.byte
- make -C stub clean
+ $(MAKE) -C stub LIB=$(LIB) clean
+
+
$(OCB) -clean
diff --git a/src/screen.ml b/src/screen.ml index d168865..e11180b 100755 --- a/src/screen.ml +++ b/src/screen.ml @@ -173,7 +173,6 @@ let init () = begin let init = Curses.keypad window true && Curses.noecho () && Curses.start_color () - && Curses.use_default_colors () (* Build the color map *) && Curses.init_pair 1 Color.white Color.blue (* Titles *) @@ -181,10 +180,10 @@ let init () = begin && Curses.init_pair 3 Color.black Color.white (* Selected cell *) && Curses.init_pair 4 Color.black Color.red (* referenced cell *) && Curses.init_pair 5 Color.black Color.green (* sink cell *) - && Curses.curs_set 0 in + in if not init then - raise (Failure "Initialisation") + raise (Failure "Could not intialize the screen") else { window = window; diff --git a/stub/Makefile b/stub/Makefile index 462ba73..ea4ddde 100755 --- a/stub/Makefile +++ b/stub/Makefile @@ -3,20 +3,23 @@ LIB_STUB = $(LIB)_stub C_FILES = $(wildcard *.c)
OBJ_FILES = $(patsubst %.c,%.o,$(C_FILES))
+SHARED_EXTENSION=$(shell ocamlc -config | grep ext_dll | cut -d' ' -f2)
+LIBRARY=dll$(LIB_STUB)$(SHARED_EXTENSION)
+
#LINK_FLAG = $(shell pkg-config --libs $(LIB))
LINK_FLAG=
-all: dll$(LIB_STUB).so
+all: $(LIBRARY)
%.o: %.c
ocamlc -o $@ $<
-dll$(LIB_STUB).so: $(OBJ_FILES)
+$(LIBRARY): $(OBJ_FILES)
ocamlmklib -I ../_build -oc $(LIB_STUB) $(LINK_FLAG) $^
test -d ../_build || mkdir ../_build
- ln -sf ../stub/dll$(LIB_STUB).so ../_build/
- ln -sf ../stub/lib$(LIB_STUB).a ../_build/
+ cp $(LIBRARY) ../_build/
+ cp lib$(LIB_STUB).a ../_build/
clean:
- rm $(OBJ_FILES) *.so *.a
+ rm $(OBJ_FILES) $(LIBRARY) *.a
diff --git a/stub/locale.c b/stub/locale.c deleted file mode 100755 index 19a4e39..0000000 --- a/stub/locale.c +++ /dev/null @@ -1,62 +0,0 @@ -/* -This file is part of licht. - -licht is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -licht is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with licht. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <locale.h> - -#include "ocaml.h" - -CAMLprim value -c_set_locale(value v, value str) { - - int param = 0; - char* defined_locale; - switch (Int_val(v)) { - case 0: param = LC_ALL; break; - case 1: param = LC_COLLATE; break; - case 2: param = LC_CTYPE; break; - case 3: param = LC_MONETARY; break; - case 4: param = LC_NUMERIC; break; - case 5: param = LC_TIME; break; - case 6: param = LC_MESSAGES; break; - } - - const char *locale_name = String_val(str); - setlocale(param,locale_name); - defined_locale = setlocale(param,NULL); - return caml_copy_string(defined_locale); - -} - -CAMLprim value -c_length( value v ) { - - char *s; - int len = 0; - int i = 0, sum = 0; - s = String_val(v); - - while ( ( len = mbtowc (NULL, &s[i], MB_CUR_MAX )) != 0) { - i += len; - sum++; - } - - return Val_int(sum); - -} |