Hello,
I am trying to get ECL to run on a MIPS-based wireless router that runs OpenWRT. This one:
system type : Qualcomm Atheros QCA956X ver 1 rev 0 machine : TP-Link Archer C7 v4 processor : 0 cpu model : MIPS 74Kc V5.0 BogoMIPS : 385.84 wait instruction : yes microsecond timers : yes tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb] isa : mips1 mips2 mips32r1 mips32r2 ASEs implemented : mips16 dsp dsp2 Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit cdmm nan_legacy nan_2008 contextconfig perf shadow register sets : 1
OpenWRT has a framework for building packages; almost everything is in one Makefile and possibly patches, but the system takes care of whatever is needed to cross compile, usually.
So, I have tried creating an ECL package, and, well, it complained I was cross-compiling :-) and told me that I should fill in a cross_config file. So I did (the only change was to choose ECL_BIGENDIAN=yes):
ECL_STACK_DIR=down CL_FIXNUM_TYPE=int CL_FIXNUM_BITS=32 CL_FIXNUM_MAX=536870911L CL_FIXNUM_MIN=-536870912L CL_INT_BITS=32 CL_LONG_BITS=32 ECL_BIGENDIAN=yes ECL_NEWLINE=LF ECL_FILE_CNT=0 ECL_STDINT_HEADER="#include <stdint.h>" ECL_UINT8_T=uint8_t ECL_UINT16_T=uint16_t ECL_UINT32_T=uint32_t ECL_UINT64_T=no ECL_INT8_T=int8_t ECL_INT16_T=int16_t ECL_INT32_T=int32_t ECL_INT64_T=no ECL_LONG_LONG_BITS=no ECL_WORKING_ENVIRON=yes ECL_TO_RUN=/usr/local/bin/ecl
Then, when compiling, I got the error below. It seems that I probably got something wrong in the cross_config file (is that correct?)
Does it look like something easy/obvious to fix? Is the output of the configure script necessary?
Thank you! Jeronimo
. . . Making all in src make[6]: Entering directory '/home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3/build/atomic/src' make[7]: Entering directory '/home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3/build/atomic/src' libtool: compile: mips-openwrt-linux-musl-gcc -DHAVE_CONFIG_H -I../src -I/home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3/src/bdwgc/libatomic_ops/src -I/home/jeronimo/pkg/openwrt/staging_dir/target-mips_24kc_musl/usr/include -I/home/jeronimo/pkg/openwrt/staging_dir/target-mips_24kc_musl/include -I/home/jeronimo/pkg/openwrt/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/usr/include -I/home/jeronimo/pkg/openwrt/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/include/fortify -I/home/jeronimo/pkg/openwrt/staging_dir/toolchain-mips_24kc_gcc-7.4.0_musl/include -fPIC -Wall -Wextra -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16 -iremap/home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3:ecl-16.1.3 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/jeronimo/pkg/openwrt/staging_dir/target-mips_24kc_musl/usr/include/ -fPIC -D_THREAD_SAFE -MT atomic_ops.lo -MD -MP -MF .deps/atomic_ops.Tpo -c /home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3/src/bdwgc/libatomic_ops/src/atomic_ops.c -fPIC -DPIC -o atomic_ops.o {standard input}: Assembler messages: {standard input}:24: Error: opcode not supported on this processor: mips2 (mips2) `sync ' {standard input}:47: Error: opcode not supported on this processor: mips2 (mips2) `ll $2,0($4)' {standard input}:49: Error: opcode not supported on this processor: mips2 (mips2) `sc $5,0($4)' make[7]: *** [Makefile:597: atomic_ops.lo] Error 1 make[7]: Leaving directory '/home/jeronimo/pkg/openwrt/build_dir/target-mips_24kc_musl/ecl-16.1.3/build/atomic/src' make[6]: *** [Makefile:460: all] Error 2