either use the bootstrap script in ./pd and the configure script there, or the old configure script in ./pd/src (and run autoconf there)
Ok, that seemed to work a bit better, but I get a SIMD-related compilation error:
---- [claude@fourier pd]$ cd src/ [claude@fourier src]$ make clean rm -f `find ../extra/ -name "*.pd_*"` rm -f tags rm -f ../obj/* ../bin/pd ../bin/pd-gui ../bin/pdsend \ ../bin/pdreceive ../bin/pd-watchdog m_stamp.c rm: cannot remove `../obj/CVS': Is a directory make: [local-clean] Error 1 (ignored) rm -f *~ (cd ../doc/6.externs; rm -f *.pd_linux) rm -f makefile.dependencies touch makefile.dependencies chmod 666 makefile.dependencies [claude@fourier src]$ autoconf [claude@fourier src]$ ./configure --enable-jack \ --enable-optimize --enable-simd --enable-fftw \ --enable-threadedgui --enable-threadedsf --enable-gathreadlocks checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for a BSD-compatible install... /usr/bin/install -c checking whether make sets $(MAKE)... yes checking how to run the C preprocessor... gcc -E checking for an ANSI C-conforming const... yes checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for pid_t... yes checking for size_t... yes checking whether time.h and sys/time.h may both be included... yes checking for ANSI C header files... (cached) yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking bstring.h usability... no checking bstring.h presence... no checking for bstring.h... no checking whether gcc needs -traditional... no checking return type of signal handlers... void checking for vprintf... yes checking for _doprnt... no checking for gettimeofday... yes checking for select... yes checking for socket... yes checking for strerror... yes checking for dlopen in -ldl... yes checking for sin in -lm... yes checking for pthread_create in -lpthread... yes checking for snd_pcm_info in -lasound... yes checking for shm_open in -lrt... yes checking for jack_set_error_function in -ljack... yes checking for jack_set_xrun_callback in -ljack... yes checking for fftwf_plan_dft_r2c_1d in -lfftw3f... no checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include checking for XCreateWindow in -lX11... yes checking for main in -ltcl8.7... no checking for main in -ltcl8.6... no checking for main in -ltcl8.5... no checking for main in -ltcl8.4... no checking for main in -ltcl8.3... yes checking for main in -ltk8.3... yes checking tcl.h usability... yes checking tcl.h presence... yes checking for tcl.h... yes OPT_CFLAGS --------------- -O3 -funroll-loops -fomit-frame-pointer configure: creating ./config.status config.status: creating makefile [claude@fourier src]$ make depend gcc -I. -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DTIME_WITH_SYS_TIME=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MALLOC_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DRETSIGTYPE=void -DHAVE_VPRINTF=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_STRERROR=1 -DHAVE_LIBDL=1 -DHAVE_LIBM=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBASOUND=1 -DHAVE_LIBRT=1 -DHAVE_LIBJACK=1 -DHAVE_LIBX11=1 -DHAVE_LIBTK8_3=1 -DPD -DUNIX -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses -Wno-switch -O3 -funroll-loops -fomit-frame-pointer -DJACK_XRUN -DTHREADED_GUI -DTHREADED_SF -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DPA_USE_OSS -DPA_LITTLE_ENDIAN -DUSEAPI_OSS -I../portaudio/pa_common -I../portaudio/pablio -I../portaudio/portmidi-macosx -fno-strict-aliasing -M 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 g_toggle.c g_vdial.c g_vslider.c g_vumeter.c m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c m_conf.c m_glob.c m_sched.c s_main.c s_inter.c s_file.c s_print.c s_loader.c s_path.c s_entry.c s_audio.c s_audio_jack.c s_audio_alsa.c s_midi.c d_ugen.c d_ctl.c d_arithmetic.c d_osc.c d_filter.c d_dac.c d_misc.c d_math.c d_fft.c d_mayer_fft.c d_fftroutine.c d_array.c d_global.c d_delay.c d_resample.c x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c d_soundfile.c m_simd.c m_simd_sse_vc.c m_simd_sse_gcc.c m_simd_ve_gcc.c s_midi_oss.c s_audio_oss.c > makefile.dependencies [claude@fourier src]$ make # ... gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DTIME_WITH_SYS_TIME=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MALLOC_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DRETSIGTYPE=void -DHAVE_VPRINTF=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_STRERROR=1 -DHAVE_LIBDL=1 -DHAVE_LIBM=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBASOUND=1 -DHAVE_LIBRT=1 -DHAVE_LIBJACK=1 -DHAVE_LIBX11=1 -DHAVE_LIBTK8_3=1 -DPD -DUNIX -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses -Wno-switch -O3 -funroll-loops -fomit-frame-pointer -DJACK_XRUN -DTHREADED_GUI -DTHREADED_SF -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DPA_USE_OSS -DPA_LITTLE_ENDIAN -DUSEAPI_OSS -I../portaudio/pa_common -I../portaudio/pablio -I../portaudio/portmidi-macosx -fno-strict-aliasing -DINSTALL_PREFIX="/usr/local" -I. -c -o ../obj/m_simd_sse_vc.o m_simd_sse_vc.c gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DTIME_WITH_SYS_TIME=1 -DSTDC_HEADERS=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MALLOC_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DRETSIGTYPE=void -DHAVE_VPRINTF=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_STRERROR=1 -DHAVE_LIBDL=1 -DHAVE_LIBM=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBASOUND=1 -DHAVE_LIBRT=1 -DHAVE_LIBJACK=1 -DHAVE_LIBX11=1 -DHAVE_LIBTK8_3=1 -DPD -DUNIX -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses -Wno-switch -O3 -funroll-loops -fomit-frame-pointer -DJACK_XRUN -DTHREADED_GUI -DTHREADED_SF -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DGARRAY_THREAD_LOCK -D_GNU_SOURCE -DPA_USE_OSS -DPA_LITTLE_ENDIAN -DUSEAPI_OSS -I../portaudio/pa_common -I../portaudio/pablio -I../portaudio/portmidi-macosx -fno-strict-aliasing -DINSTALL_PREFIX="/usr/local" -I. -c -o ../obj/m_simd_sse_gcc.o m_simd_sse_gcc.c m_simd_sse_gcc.c: In function `setvec_simd': m_simd_sse_gcc.c:40: inconsistent operand constraints in an `asm' make: *** [m_simd_sse_gcc.o] Error 1 [claude@fourier src]$ ----
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
m_simd_sse_gcc.c: In function `setvec_simd': m_simd_sse_gcc.c:40: inconsistent operand constraints in an `asm' make: *** [m_simd_sse_gcc.o] Error 1 [claude@fourier src]$
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
I don't know exactly about your CPU, but the compilation error is unrelated to that (and shouldn't happen). Which gcc version are you using?
best greetings, Thomas
Thomas Grill wrote:
m_simd_sse_gcc.c: In function `setvec_simd': m_simd_sse_gcc.c:40: inconsistent operand constraints in an `asm' make: *** [m_simd_sse_gcc.o] Error 1 [claude@fourier src]$
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
I don't know exactly about your CPU, but the compilation error is unrelated to that (and shouldn't happen). Which gcc version are you using?
$ gcc --version gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
I don't know exactly about your CPU, but the compilation error is unrelated to that (and shouldn't happen). Which gcc version are you using?
$ gcc --version gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
this error should be unrelated to the gcc version. gcc can only assign xmm registers, if it is sure, you are on a specific machine ... for that you _have_ to use -march= flags covering your machine. i added an --enable-optimize=athlon-xp feature, that does this for you ... should be in cvs, soon ...
cheers ... tim
Tim Blechmann schrieb:
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
this error should be unrelated to the gcc version. gcc can only assign xmm registers, if it is sure, you are on a specific machine ... for that you _have_ to use -march= flags covering your machine. i added an --enable-optimize=athlon-xp feature, that does this for you ... should be in cvs, soon ...
Shouldn't we use a run-time cpu detection instead and switch to the optimized SIMD versions then? just dlload an so. I have a bunch of snippets from the xvid sources. (an optimized assembler routines also :)
Shouldn't we use a run-time cpu detection instead and switch to the optimized SIMD versions then? just dlload an so. I have a bunch of snippets from the xvid sources. (an optimized assembler routines also :)
i already implemented the runtime detection ... the problem is just that gcc wants to have the march flag to compile the inline assembler properly (to assign input and output registers to be exact) ...
i'm not sure, how to solve that in a portable way. i could only pass pointers to the assembly code, but iirc, that results in a few obsolete instructions ... one could rewrite the whole function in assembler, but that wouldn't be a clean solution either ... or it's possible to compile only the file with the simd code with -march ...
if someone has an idea of a solution, i'm interested to hear it ...
cheers ... tim
Without --enable-simd compilation succeeds - maybe my CPU doesn't support SIMD? My CPU is an AMD Athlon XP (1600+ I think).
you will have to use --enable-optimize=athlon-xp or similar (i'm not sure, what exactly) ... gcc needs the march=athlon-xp flag to know that there are simd registers ...
t