This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0.34-cygwin.patch
81 lines (80 loc) · 3.21 KB
/
0.34-cygwin.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
--- origsrc/flexdll/Makefile 2015-01-22 07:01:06.000000000 -0600
+++ src/flexdll/Makefile 2015-11-29 13:10:56.931451600 -0600
@@ -18,6 +18,8 @@ CYG64CC = $(CYGWIN64_PREFIX)-gcc
.PHONY: version.ml
version.ml:
echo "let version = \"$(VERSION)\"" > version.ml
+ echo "let cygwin_prefix = \"$(CYGWIN_PREFIX)\"" >> version.ml
+ echo "let cygwin64_prefix = \"$(CYGWIN64_PREFIX)\"" >> version.ml
echo "let mingw_prefix = \"$(MINGW_PREFIX)\"" >> version.ml
echo "let mingw64_prefix = \"$(MINGW64_PREFIX)\"" >> version.ml
--- origsrc/flexdll/reloc.ml 2015-01-22 10:30:07.000000000 -0600
+++ src/flexdll/reloc.ml 2015-11-29 13:11:28.603263100 -0600
@@ -945,7 +945,7 @@ let build_dll link_exe output_file files
if !machine = `x64 then "-Xlinker --image-base -Xlinker 0x10000 " ^ extra_args else extra_args
in
Printf.sprintf
- "%s %s%s -L. %s %s -o %s %s %s %s %s"
+ "%s %s%s -L. %s %s -o %s %s %s %s %s %s"
!gcc
(if link_exe = `EXE then "" else "-shared ")
(if main_pgm then "" else if !noentry then "-Wl,-e0 " else if !machine = `x86 then "-Wl,-e_FlexDLLiniter@12 " else "-Wl,-eFlexDLLiniter ")
@@ -955,6 +955,7 @@ let build_dll link_exe output_file files
descr
files
def_file
+ (if !implib then "-Wl,--out-implib=" ^ Filename.quote (Filename.chop_extension output_file ^ ".a") else "")
extra_args
| `MINGW | `MINGW64 | `GNAT ->
let def_file =
@@ -1064,23 +1065,28 @@ let setup_toolchain () =
if !exe_mode = `EXE then default_libs := "crt2.o" :: !default_libs
else default_libs := "dllcrt2.o" :: !default_libs
in
+ let cygwin_libs pre =
+ gcc := pre ^ "gcc";
+ objdump := "/usr/" ^ pre ^ "/bin/objdump";
+ search_path :=
+ !dirs @
+ [
+ Filename.dirname (get_output1 (!gcc ^ " -print-libgcc-file-name"));
+ Filename.dirname (get_output1 (!gcc ^ " -print-file-name=libcygwin.a"));
+ Filename.dirname (get_output1 (!gcc ^ " -print-file-name=w32api/libkernel32.a"));
+ ];
+ default_libs := ["-lkernel32"; "-luser32"; "-ladvapi32";
+ "-lshell32"; "-lcygwin"; "-lgcc_s"; "-lgcc"]
+ in
match !toolchain with
| _ when !builtin_linker ->
search_path := !dirs;
add_flexdll_obj := false;
noentry := true
- | `CYGWIN | `CYGWIN64 ->
- gcc := "gcc";
- objdump := "objdump";
- search_path :=
- !dirs @
- [
- "/lib";
- "/lib/w32api";
- Filename.dirname (get_output1 ~use_bash:true "gcc -print-libgcc-file-name");
- ];
- default_libs := ["-lkernel32"; "-luser32"; "-ladvapi32";
- "-lshell32"; "-lcygwin"; "-lgcc"]
+ | `CYGWIN ->
+ cygwin_libs Version.cygwin_prefix
+ | `CYGWIN64 ->
+ cygwin_libs Version.cygwin64_prefix
| `MSVC | `MSVC64 ->
search_path := !dirs @
parse_libpath (try Sys.getenv "LIB" with Not_found -> "");
@@ -1119,7 +1125,8 @@ let compile_if_needed file =
file
| `CYGWIN | `CYGWIN64 ->
Printf.sprintf
- "gcc -c -o %s %s %s"
+ "%s -c -o %s %s %s"
+ !gcc
(Filename.quote tmp_obj)
(mk_dirs_opt "-I")
file