[PD-dev] compile pd with cygwin

Hans-Christoph Steiner hans at eds.org
Thu Dec 6 03:25:30 CET 2007


Wow, that's awesome!  So you are using X11 to display Pd?  I am going  
to try this tonight.  Which version of Pd did you try?

.hc

On Dec 5, 2007, at 7:46 PM, Patrice Colet wrote:

>  Cygwin1.dll have to be in pd/bin for running, and it require  
> cygwin shell, Puredata into cygwin environment is working greatly  
> even when Gem crashes.
>
>
>
> $ diff -uw configure.in.old configure.in
> --- configure.in.old    2007-11-04 23:08:24.000000000 +0100
> +++ configure.in        2007-12-06 00:25:36.035890800 +0100
> @@ -21,6 +21,9 @@
>  AC_SUBST(OSNUMBER)
>  AC_SUBST(EXTERNTARGET)
>  AC_SUBST(ASIOSRC)
> +AC_SUBST(PID)
> +AC_SUBST(CYGDLL)
> +
>
>  dnl other defaults
>
> @@ -232,6 +235,7 @@
>      fi
>      STRIPFLAG=-s
>      GUINAME="pd-gui"
> +    PID="pd-watchdog"
>      if test x$USE_DEBUG_CFLAGS == "xyes";
>      then
>         MORECFLAGS=$MORECFLAGS" -g"
> @@ -300,7 +304,7 @@
>          ../portmidi/porttime/ptmacosx_cf.c "
>      STRIPFLAG=""
>      GUINAME="libPdTcl.dylib"
> -
> +    PID="pd-watchdog"
>  # find the Tcl/Tk Frameworks
>          if test -d "../../Frameworks";
>      then
> @@ -334,10 +338,9 @@
>          LDFLAGS=$LDFLAGS" -weak_framework Jack"
>      fi
>  fi
> -
>  # only Windows uses ASIO, for the rest, set to blank
>  ASIOSRC=
> -
> +EXT=
>  if test `uname -s` == MINGW32_NT-5.0;
>  then
>      EXT=dll
> @@ -368,6 +371,46 @@
>      GUIFLAGS=
>  fi
>
> +if test `uname -s` == CYGWIN_NT-5.1 || \
> + test `uname -s` == CYGWIN_NT-5.0 || \
> + test `uname -s` == CYGWIN_NT-6.0 ;
> +then
> +
> +    EXT=".exe"
> +    MORECFLAGS="-mno-cygwin -DPD -DNT -DUSEAPI_PORTAUDIO - 
> DUSEAPI_MMIO -DPA_LIT
> TLE_ENDIAN -DMSW -DPA19 -DPD_INTERNAL \
> +    -I/cygdrive/c/Mingw/include -L/cygdrive/c/Mingw/lib \
> +       -I../portaudio/pa_common -I../portaudio/pablio \
> +       -I../portaudio/pa_asio -I../asio \
> +    -mms-bitfields "$MORECFLAGS
> +
> +    CYGDLL="cygwin1.dll"$CYGDLL
> +    PDLIB=$PDLIB" -lwsock32 -lwinmm -lole32 -ltcl84 -ltk84 -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  \
> +        ../portaudio/pa_win_ds/pa_win_ds.c      \
> +        ../portaudio/pa_win_ds/dsound_wrapper.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"
> +       PID="pd.com"
> +    GUIFLAGS=
> +fi
>  # support for jack, on either linux or darwin:
>
>  if test x$jack == "xyes";
>
>
> ================================================================
>
>
> $ diff -uw makefile.in.old makefile.in
> --- makefile.in.old     2007-11-04 23:08:24.000000000 +0100
> +++ makefile.in 2007-12-06 00:50:20.832765800 +0100
> @@ -8,9 +8,11 @@
>  VPATH = ../obj:./
>  OBJ_DIR = ../obj
>  BIN_DIR = ../bin
> -PDEXEC = $(BIN_DIR)/pd
>  EXT= @EXT@
> +PDEXEC = $(BIN_DIR)/pd$(EXT)
>  GUINAME= @GUINAME@
> +# pd-watchdog or pd.com?
> +PID= @PID@
>
>  prefix = @prefix@
>  exec_prefix = @exec_prefix@
> @@ -36,7 +38,8 @@
>  LIB =  @PDLIB@
>
>  WARN_CFLAGS = -Wall -W -Wstrict-prototypes \
> -    -Wno-unused -Wno-parentheses -Wno-switch
> +    -Wno-unused -Wno-unused-parameter -Wno-parentheses -Wno-switch
> +
>  ARCH_CFLAGS = -DPD
>
>  CFLAGS = @CFLAGS@ $(ARCH_CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $ 
> (MORECFLAGS)
> @@ -45,6 +48,12 @@
>
>  SYSSRC += @SYSSRC@
>
> +#windows stuff
> +
> +PDDLL = pd.dll
> +
> +STRIP = strip --strip-unneeded -R .note -R .comment
> +
>  ASIOSRC = @ASIOSRC@
>
>  ASIOOBJ = $(ASIOSRC:.cpp=.o)
> @@ -89,21 +98,21 @@
>  #
>
>  .PHONY: pd gui externs all
> -
> -all: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $ 
> (BIN_DIR)/pdsend \
>
> +all: $(BIN_DIR)/$(GUINAME) $(PDEXEC) $(BIN_DIR)/$(PID) $(BIN_DIR)/ 
> pdsend \
>      $(BIN_DIR)/pdreceive  $(BIN_DIR)/pd.tk externs
>
>  bin: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $ 
> (BIN_DIR)/pdsend \
>
>      $(BIN_DIR)/pdreceive  $(BIN_DIR)/pd.tk
>
> +
>  $(OBJ) : %.o : %.c
> -       $(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $(OBJ_DIR)/$*.o  
> $*.c
> +       $(CC) $(CFLAGS) $(GFLAGS) -c -o $(OBJ_DIR)/$*.o $*.c
>
>  $(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
> +       $(CXX) $(CFLAGS) -c -o $(OBJ_DIR)/$*.o $*.cpp
>
>  pd: $(PDEXEC)
>
> @@ -118,25 +127,26 @@
>         $(CC) $(CFLAGS) $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog  
> s_watchdog.c
>
>  $(BIN_DIR)/pdsend: u_pdsend.c $(BIN_DIR)
> -       $(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 $(BIN_DIR)
> -       $(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive  
> u_pdreceive.c
> +       $(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive  
> u_pdreceive.c $(LI
> B)
>
> -$(PDEXEC): $(OBJ) $(BIN_DIR)
> +$(BIN_DIR)/pd: $(OBJ) $(BIN_DIR)
>         cd ../obj;  $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $ 
> (OBJ) \
>         $(LIB)
>
>  $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
> -       cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) \
> +       cd $(OBJ_DIR); $(CC) $(CFLAG) $(LIB) -o $(BIN_DIR)/$ 
> (GUINAME) $(GOBJ) \
>         $(GLIB)
>
>  $(BIN_DIR)/pd.tk: u_main.tk
>         cp u_main.tk $(BIN_DIR)/pd.tk
>
> +
>  #this is for Max OSX only...
>  $(BIN_DIR)/libPdTcl.dylib: $(GOBJ) $(GSRC)
> -       cd ../obj && $(CC) $(CFLAGS) -dynamiclib -read_only_relocs  
> warning  \
> +       cd $(OBJ_DIR) && $(CC) $(CFLAGS) -dynamiclib - 
> read_only_relocs warning
> \
>                 -o $(BIN_DIR)/libPdTcl.dylib $(GOBJ)  \
>                 -F at TCLTK_FRAMEWORKS_PATH@ \
>                 -framework Tcl  -framework Tk  -framework System  \
> @@ -147,12 +157,33 @@
> @executable_path/../Frameworks/Tk.framework/Versions/8.4/Tk \
>                 ../bin/libPdTcl.dylib
>
> -# this is for Windows/MinGW (only?)
> +
> +# this is for mingw    /cygwin
> +$(BIN_DIR)/pd.com: s_entry.o
> +       cd $(OBJ_DIR); $(CC) $(LDFLAGS) -o pd.com s_entry.o $(LIBS) \
> +                -L$(BIN_DIR) -lpd; $(STRIP) -s pd.com
> +                cp $(OBJ_DIR)/pd.com $(BIN_DIR)
> +
>  $(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)
> +       cd $(BIN_DIR);  dllwrap  $(CFLAGS) --output-def pdtcl.def \
> +       --output-lib=pdtcl.a --dllname=pdtcl.dll $(OBJ_DIR)/ 
> t_tkcmd.o $(LIB) $(G
> LIB)
>         strip --strip-unneeded $(BIN_DIR)/pdtcl.dll
>
> +$(BIN_DIR)/pd.exe: pd.dll pd.exe
> +
> +pd.exe: $(OBJ) $(BIN_DIR)
> +       cd $(OBJ_DIR); $(CC) $(CFLAGS) $(LDFLAGS) $(DBG_CFLAGS) -o $ 
> (PDEXEC) s_e
> ntry.o $(LIB) \
> +                -L$(BIN_DIR) -lpd
> +       $(STRIP) -s $(BIN_DIR)/pd.exe
> +
> +
> +pd.dll: $(OBJ) $(ASIOOBJ)
> +       cd $(OBJ_DIR); $(CXX) -shared $(LDFLAGS) -o pd.dll -mno- 
> cygwin $(OBJ) $(
> ASIOOBJ) $(LIB) \
> +               -Wl,--export-all-symbols -Wl,--out-implib=pd.a;
> +       $(STRIP) $(OBJ_DIR)/pd.dll
> +       cp $(OBJ_DIR)/pd.dll $(BIN_DIR)
> +
> +
>  externs:
>         cd ../extra/bonk~;make @EXTERNTARGET@
>         cd ../extra/choice;make @EXTERNTARGET@
> @@ -203,17 +234,18 @@
>         @echo "Pd install succeeded."
>
>  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
>         -rm -f `find ../portaudio -name "*.o"`
>         -rm -f *~
> -       -(cd ../doc/6.externs; rm -f *.pd_linux)
> +       -(cd ../doc/6.externs; rm -f *.pd_linux; rm -f *.dll)
>         -rm -f makefile.dependencies
>         touch makefile.dependencies
>         chmod 666 makefile.dependencies
>
>  extra-clean:
>         -rm -f `find ../extra/ -name "*.pd_*"`
> +       -rm -f `find ../extra/ -name "*.dll*"`
>         -rm -f tags
>
>  clean: extra-clean local-clean
> @@ -229,7 +261,7 @@
>  depend: makefile.dependencies
>
>  makefile.dependencies: makefile
> -       $(CC) $(CPPFLAGS) -M $(SRC) > makefile.dependencies
> +       $(CC) $(CFLAGS) -M $(SRC) > makefile.dependencies
>
>  uninstall:
>         rm -f -r $(libpddir)




------------------------------------------------------------------------ 
----

You can't steal a gift. Bird gave the world his music, and if you can  
hear it, you can have it. - Dizzy Gillespie







More information about the Pd-dev mailing list