-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.mingw32
230 lines (185 loc) · 9.01 KB
/
Makefile.mingw32
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#-------------------------------------------------------------------------
# rxtx is a native interface to serial ports in java.
# Copyright 1997-2004 by Trent Jarvi [email protected].
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library 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
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#-------------------------------------------------------------------------
# This Makefile works on windows 98/NT with mingw32 in a DOS shell
# One catch. We cant figure out how to generate .def files with default
# DOS tools and mingw32. Install Cygwin if you are adding/removing/chaninging
# C functions.
# mingw build tools are used
# PATH=c:\mingw\bin;c:\jdk118\bin;%PATH%
# mingw32 version 1.0.1-20010726
# jdk was 1.1.8
# java.sun.com
######################
# user defined variables
######################
# path to the source code (directory with SerialImp.c) Unix style path
SRC=../src
# and the dos path
DOSSRC=..\\\src
# path to the jdk directory that has include, bin, lib, ... Unix style path
JDKHOME=C:/jdk13
#path to mingw32
MINGHOME="D:/mingw"
# path to install RXTXcomm.jar DOS style path
COMMINSTALL="C:\jdk13\lib"
# path to install the shared libraries DOS style path
LIBINSTALL="C:\jdk13\bin"
# path to the mingw32 libraries (directory with libmingw32.a) DOS style path
LIBDIR="c:\cygwin\lib\mingw"
######################
# End of user defined variables
######################
######################
# Tools
######################
AS=as
CC=gcc
LD=ld
DLLTOOL=dlltool
# this looks like a nice tool but I was not able to get symbols in the dll.
DLLWRAP=dllwrap
CLASSPATH=-classpath ".;C:\jdk13\lib\RXTXcomm.jar;c:\BlackBox.jar;c:\jdk13\lib\classes.zip"
JAVAH=javah $(CLASSPATH)
JAR=jar
JAVAC=javac $(CLASSPATH)
######################
# Tool Flags
######################
CFLAGS_CYGWIN= -O2 $(INCLUDE) -DWIN32 -D __int64="long long" -mno-fp-ret-in-387 -Wall
CFLAGS= -O2 $(INCLUDE) -mno-cygwin -DWIN32 -D __int64="long long" -mno-fp-ret-in-387 -Wall
#CFLAGS= -O2 $(INCLUDE) -mno-cygwin -DWIN32 -D __int64="long long" -mno-fp-ret-in-387 -Wall -D TRENT_IS_HERE_DEBUGGING_ENUMERATION -DTRENT_IS_HERE_DEBUGGING_THREADS
INCLUDE= -I c:\matlab6p5/extern/include/ -I . -I $(JDKINCLUDE) -I $(JDKINCLUDE)/win32 -I $(SRC) -I include -I $(MINGINCLUDE)
JAVAHFLAGS= -jni -d include
LIBS=-L . -L $(LIBDIR) -LC:/tmp/rxtx5/build -luser32 -lgdi32 -lcomdlg32 -lkernel32 -ladvapi32 -lmoldname -lcrtdll
# -lmex
# path to the java native interface headers (directory with jni.h)
JDKINCLUDE=$(JDKHOME)/include
MINGINCLUDE=$(MINGHOME)/include
JAVAFILES = $(wildcard $(SRC)/*.java)
CFILES=$(wildcard $(SRC)/*.c) $(wildcard $(SRC)/*.cc)
TARGETLIBS= rxtxSerial.dll rxtxParallel.dll
#TARGETLIBS= rxtxSerial.dll rxtxParallel.dll rxtxZystem.dll
DLLOBJECTS= fixup.o SerialImp.o termios.o init.o fuserImp.o
PARALLELOBJECTS= ParallelImp.o termios.o init.o
all: $(TARGETLIBS) # rebuild rebuild will force everything to be built.
rebuild:
rm -rf gnu include RXTXcomm.jar Serial.* rxtxSerial.* * *.O.o *.O gnutimestamp
include:
mkdir include
gnu:
mkdir gnu
mkdir gnu\\\io
# yayaya We should have put the files in gnu.io to start with
gnutimestamp: $(JAVAFILES) $(CFILES) include gnu
xcopy /Y $(DOSSRC)\\*.* gnu\\io\\
echo > gnutimestamp
# FIXME make 3.79.1 behaves really strage if we use %.o rules.
init.o:
$(CC) $(CFLAGS) -c $(SRC)/init.cc -o init.o
fixup.o:
$(CC) $(CFLAGS) -c $(SRC)/$*.c -o fixup.o
#ZystemImp.o: include/config.h
# $(CC) $(CFLAGS_CYGWIN) -c $(SRC)/ZystemImp.c -o ZystemImp.o
SerialImp.o: include/config.h
$(CC) $(CFLAGS) -c $(SRC)/SerialImp.c -o SerialImp.o
fuserImp.o:
$(CC) $(CFLAGS) -c $(SRC)/fuserImp.c -o fuserImp.o
termios.o:
$(CC) $(CFLAGS) -c $(SRC)/$*.c -o termios.o
ParallelImp.o: include/config.h
$(CC) $(CFLAGS) -c $(SRC)/$*.c -o ParallelImp.o
# This file is a pain in the rear to generate. If your looking at this you
# need to install cygwin.
#$(SRC)/Zystem.def: $(DLLOBJECTS) ZystemImp.o
#$(LD) --base-file Zystem.base --dll -o rxtxZystem.dll $(DLLOBJECTS) ZystemImp.o _divdi3.o $(LIBS) -lcygwin -e _dll_entry@12
#xcopy /Y $(DOSSRC)\\Zystem.def gnu\\io\\
$(SRC)/Serial.def: $(DLLOBJECTS)
$(LD) --base-file Serial.base --dll -o rxtxSerial.dll $(DLLOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
xcopy /Y $(DOSSRC)\\Serial.def gnu\\io\\
# echo EXPORTS >$(SRC)/Serial.def;for i in `nm rxtxSerial.dll | grep "T _Java"|cut -b 13-`;do echo -n $$i|sed s#@.*##;echo "="$$i;done >> $(SRC)/Serial.def
$(SRC)/Parallel.def: $(PARALLELOBJECTS)
$(LD) --base-file Parallel.base --dll -o rxtxParallel.dll $(PARALLELOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
xcopy $(DOSSRC)\\Parallel.def gnu\\io\\
# echo EXPORTS >$(SRC)/Parallel.def;for i in `nm rxtxParallel.dll | grep "T _Java"|cut -b 13-`;do echo -n $$i|sed s#@.*##;echo "="$$i;done >> $(SRC)/Parallel.def
rxtxZystem.dll: RXTXcomm.jar $(DLLOBJECTS) #ZystemImp.o $(SRC)/Zystem.def
gcc -c -DBUILDING_DLL=1 -D_DLL=1 -I. -Ic:/jdk13/include -Ic:/jdk13/include/win32 -Wall -O2 -D __int64="long long" -o ZystemImp.o $(SRC)/ZystemImp.c
dllwrap --verbose --no-default-excludes --export-all-symbols --output-exp Zystem.exp --output-def Zystem.def --add-stdcall-alias --driver-name gcc -o rxtxZystem.dll ZystemImp.o -Wl,-e,__cygwin_noncygwin_dll_entry@12 -s
#rxtxZystem.dll: RXTXcomm.jar $(DLLOBJECTS) ZystemImp.o $(SRC)/Zystem.def
#$(LD) --base-file Zystem.base --dll -o rxtxZystem.dll $(DLLOBJECTS) \
#ZystemImp.o _divdi3.o $(LIBS) -lcygwin -e _dll_entry@12
#$(DLLTOOL) --as=$(AS) --dllname rxtxZystem.dll --def $(SRC)/Zystem.def \
#--base-file Zystem.base --output-exp Zystem.exp
#$(LD) --base-file Zystem.base Zystem.exp -dll -o rxtxZystem.dll \
#$(DLLOBJECTS) ZystemImp.o _divdi3.o $(LIBS) -lcygwin -e _dll_entry@12
#$(DLLTOOL) --as=$(AS) --dllname rxtxZystem.dll --def $(SRC)/Zystem.def \
#--base-file Zystem.base --output-exp Zystem.exp
#$(LD) --base-file Zystem.base Zystem.exp -dll -o rxtxZystem.dll \
#$(DLLOBJECTS) ZystemImp.o _divdi3.o $(LIBS) -lcygwin -e _dll_entry@12
rxtxSerial.dll: RXTXcomm.jar $(DLLOBJECTS) $(SRC)/Serial.def
$(LD) --base-file Serial.base --dll -o rxtxSerial.dll $(DLLOBJECTS) \
$(LIBS) -lmingw32 -e _dll_entry@12
$(DLLTOOL) --as=$(AS) --dllname rxtxSerial.dll --def $(SRC)/Serial.def \
--base-file Serial.base --output-exp Serial.exp
$(LD) --base-file Serial.base Serial.exp -dll -o rxtxSerial.dll \
$(DLLOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
$(DLLTOOL) --as=$(AS) --dllname rxtxSerial.dll --def $(SRC)/Serial.def \
--base-file Serial.base --output-exp Serial.exp
$(LD) --base-file Serial.base Serial.exp -dll -o rxtxSerial.dll \
$(DLLOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
#
# This should replace the mess above if it worked.
# nm shows no symbols in the dll produced. The old stuff above works ok.
# $(DLLWRAP) --output-def $*.def --output-exp $*.exp \
# --add-stdcall-alias --driver-name gcc -mwindows \
# --target=i386-mingw32 -o $*.dll $(DLLOBJECTS) $(LIBS) -s
# -mno-cygwin
rxtxParallel.dll: $(PARALLELOBJECTS)
$(LD) --base-file Parallel.base --dll -o rxtxParallel.dll $(PARALLELOBJECTS) \
$(LIBS) -lmingw32 -e _dll_entry@12
$(DLLTOOL) --as=$(AS) --dllname rxtxParallel.dll --def $(SRC)/Parallel.def \
--base-file Parallel.base --output-exp Parallel.exp
$(LD) --base-file Parallel.base Parallel.exp -dll -o rxtxParallel.dll \
$(PARALLELOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
$(DLLTOOL) --as=$(AS) --dllname rxtxParallel.dll --def $(SRC)/Parallel.def \
--base-file Parallel.base --output-exp Parallel.exp
$(LD) --base-file Parallel.base Parallel.exp -dll -o rxtxParallel.dll \
$(PARALLELOBJECTS) $(LIBS) -lmingw32 -e _dll_entry@12
RXTXcomm.jar: gnutimestamp
$(JAVAC) gnu\\io\\*.java
$(JAR) -cf RXTXcomm.jar gnu\\io\\*.class
$(JAVAH) $(JAVAHFLAGS) $(patsubst gnu/io/%.java,gnu.io.%,$(wildcard gnu/io/*.java))
include/config.h: gnutimestamp
echo "#define HAVE_FCNTL_H 1" > include\\\config.h
echo "#define HAVE_SIGNAL_H 1" >> include\\\config.h
echo "#define HAVE_SYS_FCNTL_H 1" >> include\\\config.h
echo "#define HAVE_SYS_FILE_H 1" >> include\\\config.h
echo "#undef HAVE_SYS_SIGNAL_H" >> include\\\config.h
echo "#undef HAVE_TERMIOS_H" >> include\\\config.h
install: all
xcopy RXTXcomm.jar $(COMMINSTALL)
xcopy RXTXcomm.jar "e:\matlab~1\java\jarext\commapi\win32"
xcopy $(TARGETLIBS) $(LIBINSTALL)
xcopy $(TARGETLIBS) "e:\matlab~1\bin\win32"
uninstall:
del $(COMMINSTALL)\\\RXTXcomm.jar
del $(LIBINSTALL)\\\$(TARGETLIBS)
clean:
deltree gnu\\\io\\\*.*
deltree include
del Serial.* gnutimestamp *.o *.O RXTXcomm.jar rxtxSerial.*