You are here: Home » Topic » problem cross-compiling firefly with flac support

problem cross-compiling firefly with flac support

This topic contains 4 replies, has 2 voices, and was last updated by  ischg 10 years, 4 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #1545

    ischg
    Participant

    I just succeeded in cross-compiling firefly svn 1586 for a dlink dns-323 (a NAS with an arm processor). While I’m not quite sure whether I can actually use the NAS to transcode flac in real-time, I’m still willing to give it a try 😉

    At this point, everything runs without the –enable-flac flag. If I include flac, I can compile everything, but once I launch firefly, I get the following:

     /mnt/HD_a2 # mt-daapd -f -d 9 -c /mnt/HD_a2/lnx_bin/etc/mt-daapd.conf
    Got general/web_root, convert to general/web_root (/mnt/HD_a2/lnx_bin/mt-daapd/admin-root)
    Found existing section
    Got general/port, convert to general/port (3689)
    Found existing section
    Got general/admin_pw, convert to general/admin_pw (mt-daapd)
    Found existing section
    Got general/db_type, convert to general/db_type (sqlite3)
    Found existing section
    Got general/db_parms, convert to general/db_parms (/mnt/HD_a2/lnx_bin/mt-daapd/cache)
    Found existing section
    Got general/mp3_dir, convert to general/mp3_dir (/mnt/HD_a2/shared/Mp3test)
    Found existing section
    Found 1 tokens in /mnt/HD_a2/shared/Mp3test
    Token 1: /mnt/HD_a2/shared/Mp3test
    Got general/servername, convert to general/servername (DNS-323 Firefly %v on %h)
    Found existing section
    Got general/runas, convert to general/runas (root)
    Found existing section
    Got general/playlist, convert to general/playlist (/mnt/HD_a2/lnx_bin/mt-daapd/cache/mt-daapd.playlist)
    Found existing section
    Got general/extensions, convert to general/extensions (.mp3,.m4a,.m4p,.ogg,.flac)
    Found existing section
    Got general/ssc_codectypes, convert to general/ssc_codectypes (ogg,flac,alac)
    Found existing section
    Got general/ssc_prog, convert to general/ssc_prog (/mnt/HD_a2/lnx_bin/bin/mt-daapd-ssc.sh)
    Found existing section
    Got general/logfile, convert to general/logfile (/mnt/HD_a2/lnx_bin/log/mt-daapd.log)
    Found existing section
    Expanding precomments to 2048
    Expanding precomments to 4096
    Got general/scan_type, convert to general/scan_type (2)
    Found existing section
    Got plugins/plugin_dir, convert to plugins/plugin_dir (/mnt/HD_a2/lnx_bin/mt-daapd/plugins)
    Found existing section
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/admin-root
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/admin-root
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/cache
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/cache
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/plugins
    Checking existence of /mnt/HD_a2/lnx_bin/mt-daapd/plugins
    Loading new config file.
    Firefly Version svn-1586: Starting with debuglevel 9
    Attempting to load plugin /mnt/HD_a2/lnx_bin/mt-daapd/plugins/out-daap.so
    R_ARM_PC24: Compile shared libraries with -fPIC!

    In my clumsy efforts, I’m pretty sure I used -fPIC. Specifically, I configured flac with

    ./configure --prefix=/opt/dns323/firefly/build/lnx_bin --host=arm-linux-uclibc --with-pic --with-ogg=/opt/dns323/firefly/build/lnx_bin --disable-rpath LDFLAGS=-L/opt/dns323/firefly/build/lnx_bin/lib CPPFLAGS=-I/opt/dns323/firefly/build/lnx_bin/include CFLAGS=-Os -mtune=arm9e -march=armv5te -fPIC -DPIC

    and firefly with

    export ac_cv_func_setpgrp_void=no
    ./configure --prefix=/ --sbindir=/bin --target=arm-linux-uclibc --host=arm-linux-uclibc --datadir=/ --build=i386-pc-linux-gnu --enable-sqlite3 --enable-oggvorbis --enable-flac --with-gnu-ld --with-sqlite-includes=/opt/dns323/firefly/build/lnx_bin/include --with-sqlite-libs=/mnt/HD_a2/lnx_bin/lib --with-id3tag=/opt/dns323/firefly/build/lnx_bin CFLAGS=-Os -mtune=arm9e -march=armv5te -fPIC -DPIC CPPFLAGS=-DSETPGRP_VOID

    As mentioned above, once I drop –enable-flac, everything works.

    I’m pretty sure that my configuration has ample room for mistakes. Any hints/pointers? Thanks a lot!

    #11634

    ischg
    Participant

    partial success …

    I just upgraded from flac-1.1.2 to flac-1.1.4 and now firefly reads the plugin correctly. I actually see the flac file on my SB.
    However, I still can’t play it: firefly fails with

    Session 0: Streaming file 'frog.flac' to 192.168.1.69 (offset 0)
    Illegal instruction
    wavstreamer: Can't read wav header.
    #11635

    rpedde
    Participant

    @ischg wrote:

    partial success …

    I just upgraded from flac-1.1.2 to flac-1.1.4 and now firefly reads the plugin correctly. I actually see the flac file on my SB.
    However, I still can’t play it: firefly fails with

    Session 0: Streaming file 'frog.flac' to 192.168.1.69 (offset 0)
    Illegal instruction
    wavstreamer: Can't read wav header.

    Is the illegal instruction coming from flac or mt-daapd?

    I think probably flac. See if you can transcode a file by hand to wav using flac. I thik that’s probably your question.

    — Ron

    #11636

    ischg
    Participant

    @rpedde wrote:

    Is the illegal instruction coming from flac or mt-daapd?
    I think probably flac. See if you can transcode a file by hand to wav using flac.

    Ron, you’re absolutely right: flac is the problem. I just ran the transcode manually and got

    /mnt/HD_a2/shared/Mp3test # flac --silent --decode --stdout frog.flac
    Illegal instruction

    I guess it’s back to cross compiling flac … thanks for your insight!

    Regard,
    -Ingmar

    #11637

    ischg
    Participant

    Well, I’ve played around with my configuration options, but to no avail. Is there any log file where I can get more detailed information on where the illegal instruction occurred?

    At this point, I’m not sure whether it’s some mismatch in architecture. The toolchain I use already came with CFLAGS given as

    -Os -mtune=arm9e -march=armv5te

    which should match the arm processor. I found the following in dmesg:

    CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)

    also, /proc/cpuinfo gives the following

    /mnt/HD_a2 # cat /proc/cpuinfo
    Processor : ARM926EJ-Sid(wb) rev 0 (v5l)
    BogoMIPS : 331.77
    Features : swp half thumb fastmult edsp java
    CPU implementer : 0x41
    CPU architecture: 5TEJ
    CPU variant : 0x0
    CPU part : 0x926
    CPU revision : 0
    Cache type : write-back
    Cache clean : cp15 c7 ops
    Cache lockdown : format C
    Cache format : Harvard
    I size : 32768
    I assoc : 1
    I line length : 32
    I sets : 1024
    D size : 32768
    D assoc : 1
    D line length : 32
    D sets : 1024

    Hardware : MV-88fxx81
    Revision : 0000
    Serial : 0000000000000000

    Thanks for all your help!

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.