Update of /cvsroot/pure-data/packages/patches
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3097/patches
Added Files:
mingw_fixes-0.39-2.patch
Log Message:
added in mingw_fixes patch which includes NT2_MSC_VER and lots of other stuff so that everything can compile using MinGW; reorged things to use the full name 'windows' rather than just 'win'. This matches 'darwin' and 'linux'; this is windows RC6
--- NEW FILE: mingw_fixes-0.39-2.patch ---
? configure
? makefile.mingw
? pdtcl.def
Index: configure.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/configure.in,v
retrieving revision 1.15
diff -u -w -r1.15 configure.in
--- configure.in 16 Aug 2005 04:06:28 -0000 1.15
+++ configure.in 19 Dec 2005 06:49:31 -0000
@@ -19,6 +19,7 @@
AC_SUBST(GUIFLAGS)
AC_SUBST(OSNUMBER)
AC_SUBST(EXTERNTARGET)
+AC_SUBST(ASIOSRC)
dnl other defaults
@@ -77,7 +78,10 @@
dnl Checking for `pthread_create' function in -pthread
AC_CHECK_LIB(pthread, pthread_create,PDLIB="$PDLIB -lpthread",
- echo "pthreads required" || exit 1)
+ AC_CHECK_LIB(pthreadGC2, pthread_create, PDLIB="$PDLIB -lpthreadGC2",
+ AC_CHECK_LIB(pthreadGC1, pthread_create, PDLIB="$PDLIB -lpthreadGC1",
+ AC_CHECK_LIB(pthreadGC, pthread_create, PDLIB="$PDLIB -lpthreadGC",
+ echo "pthreads required"; exit 1))))
dnl look for tcl 8.x... do I really have to go through all this!?
@@ -108,6 +112,11 @@
fi
if test $foundit == "no";
then
+ AC_CHECK_HEADER(tcl8.4/tcl.h,
+ GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.4";foundit=yes,)
+fi
+if test $foundit == "no";
+then
AC_CHECK_HEADER(tcl8.3/tcl.h,
GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.3";foundit=yes,)
fi
@@ -119,27 +128,30 @@
if test $foundit == "no";
then
echo no tcl header found
- exit -1
+ echo bolding trying without...
+# exit -1
fi
-AC_CHECK_LIB(tcl8.7, main,,
- AC_CHECK_LIB(tcl8.6, main,,
+AC_CHECK_LIB(tcl85, main,,
AC_CHECK_LIB(tcl8.5, main,,
+ AC_CHECK_LIB(tcl84, main,,
AC_CHECK_LIB(tcl8.4, main,,
AC_CHECK_LIB(tcl8.3, main,,
AC_CHECK_LIB(tcl8.2, main,,
- AC_CHECK_LIB(tcl8.0, main,,echo no tcl library found || exit 1)))))))
+ AC_CHECK_LIB(tcl8.0, main,,
+ echo no tcl library found; exit 1)))))))
-AC_CHECK_LIB(tk8.7, main,,
- AC_CHECK_LIB(tk8.6, main,,
+AC_CHECK_LIB(tk85, main,,
AC_CHECK_LIB(tk8.5, main,,
+ AC_CHECK_LIB(tk84, main,,
AC_CHECK_LIB(tk8.4, main,,
AC_CHECK_LIB(tk8.3, main,,
AC_CHECK_LIB(tk8.2, main,,
- AC_CHECK_LIB(tk8.0, main,,echo no tk library found || exit 1)))))))
+ AC_CHECK_LIB(tk8.0, main,,
+ echo no tk library found; exit 1)))))))
-if test `uname -s` = Linux;
+if test `uname -s` == Linux;
then
dnl Ckecking for ALSA
echo .................... alsa= $alsa
@@ -254,7 +266,7 @@
LDFLAGS=$LDFLAGS" -lrt -ljack"
fi
-if test `uname -s` = Darwin;
+if test `uname -s` == Darwin;
then
LDFLAGS="-Wl -framework CoreAudio \
-framework AudioUnit -framework AudioToolbox \
@@ -324,6 +336,37 @@
fi
fi
+
+if test `uname -s` == MINGW32_NT-5.0;
+then
+ EXT=dll
+ MORECFLAGS="-DUSEAPI_PORTAUDIO -DPA19 -DMSW -DPA_NO_DS -DPD_INTERNAL \
+ -I../portaudio/pa_common -I../portaudio/pablio \
+ -mwindows -mms-bitfields "$MORECFLAGS
+ PDLIB=$PDLIB" -lwsock32 -lwinmm -lole32 -lstdc++"
+
+ SYSSRC="s_audio_pa.c s_audio_pablio.c s_audio_paring.c \
+ s_audio_mmio.c s_midi_mmio.c \
+ ../portaudio/pa_common/pa_allocation.c \
+ ../portaudio/pa_common/pa_converters.c \
+ ../portaudio/pa_common/pa_cpuload.c \
+ ../portaudio/pa_common/pa_dither.c \
+ ../portaudio/pa_common/pa_front.c \
+ ../portaudio/pa_common/pa_process.c \
+ ../portaudio/pa_common/pa_skeleton.c \
+ ../portaudio/pa_common/pa_stream.c \
+ ../portaudio/pa_common/pa_trace.c \
+ ../portaudio/pa_win/pa_win_util.c \
+ ../portaudio/pa_win/pa_win_hostapis.c \
+ ../portaudio/pa_win_wmme/pa_win_wmme.c"
+ ASIOSRC="../portaudio/pa_asio/iasiothiscallresolver.cpp \
+ ../portaudio/pa_asio/pa_asio.cpp ../asio/asio.cpp \
+ ../asio/asiodrivers.cpp ../asio/asiolist.cpp"
+ STRIPFLAG="--strip-unneeded"
+ GUINAME="pdtcl.dll"
+ GUIFLAGS=
+fi
+
# support for jack, on either linux or darwin:
if test x$jack == "xyes";
Index: d_mayer_fft.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_mayer_fft.c,v
retrieving revision 1.3
diff -u -w -r1.3 d_mayer_fft.c
--- d_mayer_fft.c 18 May 2005 04:28:50 -0000 1.3
+++ d_mayer_fft.c 19 Dec 2005 06:49:31 -0000
@@ -48,7 +48,8 @@
* of work. -msp
*/
-#ifdef MSW
+/* These pragmas are only used for MSVC, not MinGW or Cygwin <hans(a)at.or.at> */
+#ifdef _MSC_VER
#pragma warning( disable : 4305 ) /* uncast const double to float */
#pragma warning( disable : 4244 ) /* uncast double to float */
#pragma warning( disable : 4101 ) /* unused local variables */
Index: m_pd.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v
retrieving revision 1.8
diff -u -w -r1.8 m_pd.h
--- m_pd.h 19 Aug 2005 23:28:03 -0000 1.8
+++ m_pd.h 19 Dec 2005 06:49:31 -0000
@@ -17,15 +17,16 @@
#define MSW
#endif
-#ifdef MSW
+/* These pragmas are only used for MSVC, not MinGW or Cygwin <hans(a)at.or.at> */
+#ifdef _MSC_VER
/* #pragma warning( disable : 4091 ) */
#pragma warning( disable : 4305 ) /* uncast const double to float */
#pragma warning( disable : 4244 ) /* uncast float/int conversion etc. */
#pragma warning( disable : 4101 ) /* unused automatic variables */
-#endif /* MSW */
+#endif /* _MSC_VER */
/* the external storage class is "extern" in UNIX; in MSW it's ugly. */
-#ifdef MSW
+#ifdef _WIN32
#ifdef PD_INTERNAL
#define EXTERN __declspec(dllexport) extern
#else
@@ -33,7 +34,7 @@
#endif /* PD_INTERNAL */
#else
#define EXTERN extern
-#endif /* MSW */
+#endif /* _WIN32 */
/* and depending on the compiler, hidden data structures are
declared differently: */
Index: makefile.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.in,v
retrieving revision 1.8
diff -u -w -r1.8 makefile.in
--- makefile.in 24 Jul 2005 19:41:14 -0000 1.8
+++ makefile.in 19 Dec 2005 06:49:31 -0000
@@ -30,6 +30,10 @@
SYSSRC += @SYSSRC@
+ASIOSRC = @ASIOSRC@
+
+ASIOOBJ = $(ASIOSRC:.cpp=.o)
+
SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
@@ -70,6 +74,9 @@
$(GOBJ) : %.o : %.c
$(CC) $(CFLAGS) $(GFLAGS) $(GINCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c
+$(ASIOOBJ): %.o : %.cpp
+ $(CXX) $(CFLAGS) $(INCLUDE) -c -o $(OBJ_DIR)/$*.o $*.cpp
+
pd: $(PDEXEC)
gui: $(BIN_DIR)/$(GUINAME)
@@ -77,16 +84,16 @@
pd-watchdog: $(BIN_DIR)/pd-watchdog
$(BIN_DIR)/pd-watchdog: s_watchdog.c
- $(CC) -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
+ $(CC) -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c $(LIB)
$(BIN_DIR)/pdsend: u_pdsend.c
- $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
+ $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c $(LIB)
$(BIN_DIR)/pdreceive: u_pdreceive.c
- $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
+ $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c $(LIB)
-$(PDEXEC): $(OBJ)
- cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) \
+$(PDEXEC): $(OBJ) $(ASIOOBJ)
+ cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(ASIOOBJ) $(OBJ) \
$(LIB)
$(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
@@ -109,6 +116,12 @@
@executable_path/../Frameworks/Tk.framework/Versions/8.4/Tk \
../bin/libPdTcl.dylib
+# this is for Windows/MinGW (only?)
+$(BIN_DIR)/pdtcl.dll: $(GOBJ)
+ cd $(BIN_DIR); dllwrap --export-all-symbols --output-def pdtcl.def \
+ --output-lib=pdtcl.a --dllname=$(GUINAME) $(OBJ_DIR)/t_tkcmd.o $(LIB) $(GLIB)
+ strip --strip-unneeded $(BIN_DIR)/pdtcl.dll
+
externs:
cd ../extra/bonk~;make @EXTERNTARGET@
cd ../extra/choice;make @EXTERNTARGET@
@@ -144,8 +157,9 @@
chmod 644 $(MANINSTDIR)/man1/pdreceive.1.gz
local-clean:
- -rm -f ../obj/* $(BIN_DIR)/pd $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \
- $(BIN_DIR)/pdreceive $(BIN_DIR)/pd-watchdog m_stamp.c
+ -rm -f ../obj/* $(BIN_DIR)/pd $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend* \
+ $(BIN_DIR)/pdreceive* $(BIN_DIR)/pd-watchdog* m_stamp.c \
+ $(BIN_DIR)/pd.exe $(BIN_DIR)/pdtcl.* $(BIN_DIR)/pd.tk
-rm -f `find ../portaudio ../portaudio_v18 -name "*.o"`
-rm -f *~
-(cd ../doc/6.externs; rm -f *.pd_linux)
Index: s_entry.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_entry.c,v
retrieving revision 1.3
diff -u -w -r1.3 s_entry.c
--- s_entry.c 11 Nov 2004 04:58:21 -0000 1.3
+++ s_entry.c 19 Dec 2005 06:49:31 -0000
@@ -3,7 +3,11 @@
int sys_main(int argc, char **argv);
-#ifdef MSW
+/*
+ * gcc does not support the __try stuff, only MSVC. Also, MinGW allows you to
+ * use main() instead of WinMain(). <hans(a)at.or.at>
+ */
+#ifdef _MSC_VER
#include <windows.h>
#include <stdio.h>
@@ -21,11 +25,11 @@
}
}
-#else /* not MSW */
+#else /* not _MSC_VER */
int main(int argc, char **argv)
{
return (sys_main(argc, argv));
}
-#endif
+#endif /* _MSC_VER */
Index: s_inter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v
retrieving revision 1.14
diff -u -w -r1.14 s_inter.c
--- s_inter.c 15 Oct 2005 23:14:28 -0000 1.14
+++ s_inter.c 19 Dec 2005 06:49:31 -0000
@@ -9,7 +9,7 @@
#include "s_stuff.h"
#include "m_imp.h"
#include "g_canvas.h" /* for GUI queueing stuff */
-#ifndef MSW
+#ifndef _WIN32
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -23,16 +23,19 @@
#ifdef HAVE_BSTRING_H
#include <bstring.h>
#endif
-#ifdef MSW
+#ifdef _WIN32
#include <io.h>
#include <fcntl.h>
#include <process.h>
#include <winsock.h>
#include <windows.h>
+# ifdef _MSC_VER
typedef int pid_t;
+# endif
typedef int socklen_t;
#define EADDRINUSE WSAEADDRINUSE
#endif
+
#include <stdarg.h>
#include <signal.h>
#include <fcntl.h>
@@ -100,7 +103,7 @@
/* ----------- functions for timing, signals, priorities, etc --------- */
-#ifdef MSW
+#ifdef _WIN32
static LARGE_INTEGER nt_inittime;
static double nt_freq = 0;
@@ -129,13 +132,13 @@
return (((double)(dumbass->QuadPart - nt_inittime.QuadPart)) / nt_freq);
}
#endif
-#endif /* MSW */
+#endif /* _WIN32 */
/* get "real time" in seconds; take the
first time we get called as a reference time of zero. */
double sys_getrealtime(void)
{
-#ifndef MSW
+#ifndef _WIN32
static struct timeval then;
struct timeval now;
gettimeofday(&now, 0);
@@ -165,11 +168,11 @@
FD_ZERO(&exceptset);
for (fp = sys_fdpoll, i = sys_nfdpoll; i--; fp++)
FD_SET(fp->fdp_fd, &readset);
-#ifdef MSW
+#ifdef _WIN32
if (sys_maxfd == 0)
Sleep(microsec/1000);
else
-#endif
+#endif /* _WIN32 */
select(sys_maxfd+1, &readset, &writeset, &exceptset, &timout);
for (i = 0; i < sys_nfdpoll; i++)
if (FD_ISSET(sys_fdpoll[i].fdp_fd, &readset))
@@ -187,11 +190,11 @@
}
else
{
-#ifdef MSW
+#ifdef _WIN32
if (sys_maxfd == 0)
Sleep(microsec/1000);
else
-#endif
+#endif /* _WIN32 */
select(0, 0, 0, 0, &timout);
return (0);
}
@@ -335,7 +338,7 @@
void sys_sockerror(char *s)
{
-#ifdef MSW
+#ifdef _WIN32
int err = WSAGetLastError();
if (err == 10054) return;
else if (err == 10044)
@@ -346,7 +349,7 @@
}
#else
int err = errno;
-#endif
+#endif /* _WIN32 */
fprintf(stderr, "%s: %s (%d)\n", s, strerror(err), err);
}
@@ -549,9 +552,9 @@
#ifdef UNISTD
close(fd);
#endif
-#ifdef MSW
+#ifdef _WIN32
closesocket(fd);
-#endif
+#endif /* _WIN32 */
}
/* ---------------------- sending messages to the GUI ------------------ */
@@ -856,10 +859,10 @@
int len = sizeof(server);
int ntry = 0, portno = FIRSTPORTNUM;
int xsock = -1;
-#ifdef MSW
+#ifdef _WIN32
short version = MAKEWORD(2, 0);
WSADATA nobby;
-#endif
+#endif /* _WIN32 */
#ifdef UNISTD
int stdinpipe[2];
#endif
@@ -884,9 +887,9 @@
signal(SIGSTKFLT, sys_exithandler);
#endif
#endif
-#ifdef MSW
+#ifdef _WIN32
if (WSAStartup(version, &nobby)) sys_sockerror("WSAstartup");
-#endif
+#endif /* _WIN32 */
if (sys_nogui)
{
@@ -894,10 +897,10 @@
skip starting the GUI up. */
t_atom zz[19];
int i;
-#ifdef MSW
+#ifdef _WIN32
if (GetCurrentDirectory(MAXPDSTRING, cmdbuf) == 0)
strcpy(cmdbuf, ".");
-#endif
+#endif /* _WIN32 */
#ifdef UNISTD
if (!getcwd(cmdbuf, MAXPDSTRING))
strcpy(cmdbuf, ".");
@@ -944,16 +947,16 @@
}
else /* default behavior: start up the GUI ourselves. */
{
-#ifdef MSW
+#ifdef _WIN32
char scriptbuf[MAXPDSTRING+30], wishbuf[MAXPDSTRING+30], portbuf[80];
int spawnret;
-#endif
-#ifdef MSW
+#endif /* _WIN32 */
+#ifdef WIN32
char intarg;
#else
int intarg;
-#endif
+#endif /* _WIN32 */
/* create a socket */
xsock = socket(AF_INET, SOCK_STREAM, 0);
@@ -971,9 +974,9 @@
intarg = 1;
if (setsockopt(xsock, IPPROTO_TCP, TCP_NODELAY,
&intarg, sizeof(intarg)) < 0)
-#ifndef MSW
+#ifndef _WIN32
post("setsockopt (TCP_NODELAY) failed\n")
-#endif
+#endif /* not _WIN32 */
;
@@ -986,11 +989,11 @@
/* name the socket */
while (bind(xsock, (struct sockaddr *)&server, sizeof(server)) < 0)
{
-#ifdef MSW
+#ifdef _WIN32
int err = WSAGetLastError();
#else
int err = errno;
-#endif
+#endif /* _WIN32 */
if ((ntry++ > 20) || (err != EADDRINUSE))
{
perror("bind");
@@ -1102,8 +1105,8 @@
}
#endif /* UNISTD */
-#ifdef MSW
- /* in MSW land "guipath" is unused; we just do everything from
+#ifdef _WIN32
+ /* in WIN32 land "guipath" is unused; we just do everything from
the libdir. */
/* fprintf(stderr, "%s\n", sys_libdir->s_name); */
@@ -1126,7 +1129,7 @@
exit(1);
}
-#endif /* MSW */
+#endif /* _WIN32 */
}
#if defined(__linux__) || defined(IRIX)
@@ -1198,10 +1201,10 @@
seteuid(getuid()); /* lose setuid priveliges */
#endif /* __linux__ */
-#ifdef MSW
+#ifdef _WIN32
if (!SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS))
fprintf(stderr, "pd: couldn't set high priority class\n");
-#endif
+#endif /* _WIN32 */
#ifdef MACOSX
if (sys_hipriority)
{
Index: s_watchdog.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_watchdog.c,v
retrieving revision 1.2
diff -u -w -r1.2 s_watchdog.c
--- s_watchdog.c 6 Sep 2004 20:20:36 -0000 1.2
+++ s_watchdog.c 19 Dec 2005 06:49:31 -0000
@@ -8,8 +8,13 @@
#include <sys/time.h>
#include <sys/types.h>
+#ifdef _WIN32
+#include <io.h>
+#include <winsock.h>
+#else
#include <unistd.h>
#include <signal.h>
+#endif /* _WIN32 */
#include <stdio.h>
int main(int argc, char **argv)
@@ -41,7 +46,9 @@
else continue;
}
happy = 0;
+#ifndef _WIN32
kill(getppid(), SIGHUP);
+#endif /* _WIN32 */
fprintf(stderr, "watchdog: signaling pd...\n");
}
}
Index: t_tkcmd.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/t_tkcmd.c,v
retrieving revision 1.6
diff -u -w -r1.6 t_tkcmd.c
--- t_tkcmd.c 15 Oct 2005 23:14:28 -0000 1.6
+++ t_tkcmd.c 19 Dec 2005 06:49:31 -0000
@@ -30,7 +30,7 @@
#include <winsock.h>
#include <io.h>
#endif
-#ifdef MSW
+#ifdef _MSC_VER
#pragma warning( disable : 4305 ) /* uncast const double to float */
#pragma warning( disable : 4244 ) /* uncast double to float */
#pragma warning( disable : 4101 ) /* unused local variables */