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
|
#*-------------------------------------------------------------------------
# RXTX License v 2.1 - LGPL v 2.1 + Linking Over Controlled Interface.
# RXTX is a native interface to serial ports in java.
# Copyright 1997-2008 by Trent Jarvi tjarvi@qbang.org and others who
# actually wrote it. See individual source files for more information.
#
# A copy of the LGPL v 2.1 may be found at
# http://www.gnu.org/licenses/lgpl.txt on March 4th 2007. A copy is
# here for your convenience.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 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
# Lesser General Public License for more details.
#
# An executable that contains no derivative of any portion of RXTX, but
# is designed to work with RXTX by being dynamically linked with it,
# is considered a "work that uses the Library" subject to the terms and
# conditions of the GNU Lesser General Public License.
#
# The following has been added to the RXTX License to remove
# any confusion about linking to RXTX. We want to allow in part what
# section 5, paragraph 2 of the LGPL does not permit in the special
# case of linking over a controlled interface. The intent is to add a
# Java Specification Request or standards body defined interface in the
# future as another exception but one is not currently available.
#
# http://www.fsf.org/licenses/gpl-faq.html#LinkingOverControlledInterface
#
# As a special exception, the copyright holders of RXTX give you
# permission to link RXTX with independent modules that communicate with
# RXTX solely through the Sun Microsytems CommAPI interface version 2,
# regardless of the license terms of these independent modules, and to copy
# and distribute the resulting combined work under terms of your choice,
# provided that every copy of the combined work is accompanied by a complete
# copy of the source code of RXTX (the version of RXTX used to produce the
# combined work), being distributed under the terms of the GNU Lesser General
# Public License plus this exception. An independent module is a
# module which is not derived from or based on RXTX.
#
# Note that people who make modified versions of RXTX are not obligated
# to grant this special exception for their modified versions; it is
# their choice whether to do so. The GNU Lesser General Public License
# gives permission to release a modified version without this exception; this
# exception also makes it possible to release a modified version which
# carries forward this exception.
#
# You should have received a copy of the GNU Lesser 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
# All trademarks belong to their respective owners.
#-------------------------------------------------------------------------*/
# This Makefile works on windows 98/NT with mingw32 in a DOS shell.
# Do not run in MSYS! Last tested on WinXP with MinGW-5.1.4
# (gcc-3.4.5, binutils-2.17.50, mingw32-make-3.81, w32api-3.12).
#
# SET PATH=c:\mingw\bin;c:\jdk142\bin;C:\WINDOWS\SYSTEM32
# mkdir build-mingw
# copy ..\Makefile.mingw32 build-mingw\Makefile
# cd build-mingw
# REM Edit Makefile settings to change user variables as needed
# mingw32-make SHELL=cmd
# mingw32-make SHELL=cmd install
######################
# user defined variables
######################
# path to the source code (directory with SerialImp.c) Unix style path
SRC=../src
# path to the jdk directory that has include, bin, lib, ... Unix style path
JDKHOME=D:\Apps\Java\j2sdk1.4.2_17
#path to mingw32
MINGHOME="D:\mingw"
# path to install RXTXcomm.jar DOS style path
COMMINSTALL="$(JDKHOME)\jre\lib\ext"
# path to install the shared libraries DOS style path
LIBINSTALL="$(JDKHOME)\jre\bin"
# path to the mingw32 libraries (directory with libmingw32.a) DOS style path
LIBDIR="$(MINGHOME)\lib"
# path to the junit library. Only needed for running the tests.
JUNIT_JAR=D:\Apps\junit3.8.2\junit.jar
######################
# 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;$(JDKHOME)\lib\classes.zip;$(JDKHOME)\jre\lib\rt.jar"
JAVAH=$(JDKHOME)\bin\javah
JAR=$(JDKHOME)\bin\jar
JAVAC=$(JDKHOME)\bin\javac -source 1.2 -target 1.2 -g
#JAVAC=$(JDKHOME)\bin\javac -g
JAVA=$(JDKHOME)\bin\java -ea -esa
######################
# Tool Flags
######################
CFLAGS_CYGWIN= -O2 $(INCLUDE) -DWIN32 -D __int64="long long" -mno-fp-ret-in-387 -Wall
CFLAGS= -O2 $(INCLUDE) -mno-cygwin -DWIN32 -D_JNI_IMPLEMENTATION_ -D __int64="long long" -mno-fp-ret-in-387 -Wall
#CFLAGS= -O2 $(INCLUDE) -mno-cygwin -DWIN32 -D_JNI_IMPLEMENTATION_ -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)
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)/gnu/io/*.java)
TESTFILES = $(wildcard $(SRC)/../tests/gnu/io/rxtx/tests/*.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:
-rmdir /s /q gnu
-del /q RXTXcomm.jar rxtxSerial.* rxtxParallel.* *.o
# FIXME make 3.79.1 behaves really strage if we use %.o rules.
init.o: $(SRC)/init.cc
$(CC) $(CFLAGS) -c $(SRC)/init.cc -o init.o
fixup.o: $(SRC)/fixup.c
$(CC) $(CFLAGS) -c $(SRC)/$*.c -o fixup.o
#ZystemImp.o: config.h
# $(CC) $(CFLAGS_CYGWIN) -c $(SRC)/ZystemImp.c -o ZystemImp.o
SerialImp.o: $(SRC)/SerialImp.c $(SRC)/SerialImp.h $(SRC)/win32termios.h config.h gnu_io_RXTXPort.h
$(CC) $(CFLAGS) -c $(SRC)/SerialImp.c -o SerialImp.o
fuserImp.o: $(SRC)/fuserImp.c config.h gnu_io_CommPortIdentifier.h
$(CC) $(CFLAGS) -c $(SRC)/fuserImp.c -o fuserImp.o
termios.o: $(SRC)/termios.c $(SRC)/win32termios.h config.h
$(CC) $(CFLAGS) -c $(SRC)/$*.c -o termios.o
ParallelImp.o: $(SRC)/ParallelImp.c $(SRC)/ParallelImp.h $(SRC)/win32termios.h config.h gnu_io_LPRPort.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.
rxtxZystem.dll: RXTXcomm.jar $(DLLOBJECTS) $(SRC)/ZystemImp.c #ZystemImp.o
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
rxtxSerial.dll: RXTXcomm.jar $(DLLOBJECTS)
gcc -mno-cygwin -shared -o $@ $(DLLOBJECTS) -lmingw32 -Wl,--kill-at
rxtxParallel.dll: $(PARALLELOBJECTS)
gcc -mno-cygwin -shared -o $@ $(PARALLELOBJECTS) -lmingw32 -Wl,--kill-at
gnu_io_RXTXPort.h gnu_io_CommPortIdentifier.h gnu_io_LPRPort.h gnu_io_RXTXVersion.h: RXTXcomm.jar
$(JAVAH) $(CLASSPATH) -jni gnu.io.RXTXPort gnu.io.CommPortIdentifier gnu.io.LPRPort gnu.io.RXTXVersion
RXTXcomm.jar: $(JAVAFILES)
$(JAVAC) $(CLASSPATH) -d . $(JAVAFILES)
$(JAR) -cf RXTXcomm.jar gnu
config.h: Makefile
echo "#define HAVE_FCNTL_H 1" > config.h
echo "#define HAVE_SIGNAL_H 1" >> config.h
echo "#define HAVE_SYS_FCNTL_H 1" >> config.h
echo "#define HAVE_SYS_FILE_H 1" >> config.h
echo "#undef HAVE_SYS_SIGNAL_H" >> config.h
echo "#undef HAVE_TERMIOS_H" >> config.h
testcp\stamp: RXTXcomm.jar $(TESTFILES)
-mkdir testcp
$(JAVAC) -classpath RXTXcomm.jar;$(JUNIT_JAR) -d testcp $(TESTFILES)
echo > testcp\stamp
tests: all testcp\stamp
$(JAVA) -classpath RXTXcomm.jar;testcp;$(JUNIT_JAR) gnu.io.rxtx.tests.RXTXTestSuite
install: all
xcopy /Y RXTXcomm.jar $(COMMINSTALL)
@REM xcopy RXTXcomm.jar "e:\matlab~1\java\jarext\commapi\win32"
xcopy /Y rxtx*.dll $(LIBINSTALL)
@REM xcopy $(TARGETLIBS) "e:\matlab~1\bin\win32"
uninstall:
del $(COMMINSTALL)\\\RXTXcomm.jar
del $(LIBINSTALL)\\\rxtx*.dll
clean:
-rmdir /s /q gnu
-rmdir /s /q testcp
-del /Q *.o RXTXcomm.jar rxtxSerial.dll rxtxParallel.dll config.h gnu_io_*.h
|