how to compile fftw3 on iOS - c++

Nowdays I just want to use FFTW3 on iOS, since I've compiled it successfully into i386 version which is used by the iOS simulator, the rest work is to compile it into armv6(or v7) version and lipo these two versions together,below is my incorrect configure:
./configure
CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1
LD=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld
CCFLAGS="-I
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/lib/gcc/arm-apple-darwin10/4.2.1/include/
-I /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/
-miphoneos-version-min=2.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk"
LDFLAGS="-arch armv6 -isysroot
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk"
--enable-float --host=arm-apple-darwin --build=arm-apple-darwin10 --disable-fortran
when use this to build fftw3,I always get this:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-apple-darwin-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... arm-apple-darwin10
checking host system type... arm-apple-darwin
checking for arm-apple-darwin-gcc... /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1
checking whether the C compiler works... no
configure: error: in /Users/chencyz/Desktop/Development/Misc/fftw3/fftw-3.3':
configure: error: C compiler cannot create executables
Seeconfig.log' for more details
I'm not so clear about the problem(C compiler not works?),could anyone give me some guides,thanks very much !

According to ./configure --help:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
So the key is to pass --host=arm-apple-darwin10, and execute configure with the correct alterations to PATH, CFLAGS, LDFLAGS, etc.
This seems to work:
PATH=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:$PATH \
../configure --host=arm-apple-darwin10 CFLAGS="-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" \
CC=arm-apple-darwin10-gcc-4.2.1 \
CPP=cpp \
LDFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" \
--enable-single
Good luck.

I had a similar issue when trying to get cute compiled for iOS. Looking at the configure script, it didn't seem to use the $LDFLAGS variable, but if it did I think you could add the following to the configure line:
./configure CC=... CFLAGS="-arch armv7 -isysroot $SDKROOT" CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS -Wl,-syslibroot $SDKROOT"
Where $SDKROOT is /Developer/Platforms/iPhone.platform/Developer/SDKs/iPhone5.0.sdk by default (with the iOS 5.0 SDK).
I never got cute compiled as I couldn't figure out how to correct the C-compiler invocation, however, your mileage may vary.

Related

QuantLib Installation using Homebrew on Mac with M1 chip

I'm quite new to Mac system and trying to use Homebrew to install QuantLib for a c++ coursework on XCode. I have installed boost and followed the steps on the website, but met a problem at the step of entering this into the terminal:
./configure --with-boost-include=/usr/local/include/ \
--with-boost-lib=/usr/local/lib/ --prefix=/usr/local/ \
CXXFLAGS='-O2 -std=c++11 -stdlib=libc++ -mmacosx-version-min=10.9' \
LDFLAGS='-stdlib=libc++ -mmacosx-version-min=10.9'
Since it is m1 chip, the default path of Homebrew has changed to /opt/homebrew/ and so has the location of boost, so I've changed it to
./configure --with-boost-include=/opt/homebrew/include/ \
--with-boost-lib=/opt/homebrew/lib/ --prefix=/opt/homebrew/ \
CXXFLAGS='-O2 -std=c++11 -stdlib=libc++ -mmacosx-version-min=11.4' \
LDFLAGS='-stdlib=libc++ -mmacosx-version-min=11.4'
But it still doesn't work and shows:
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: opt/homebrew/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... ./config/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gawk... (cached) awk
checking for opt/homebrew/-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for opt/homebrew/-g++... no
checking for opt/homebrew/-c++... no
checking for opt/homebrew/-gpp... no
checking for opt/homebrew/-aCC... no
checking for opt/homebrew/-CC... no
checking for opt/homebrew/-cxx... no
checking for opt/homebrew/-cc++... no
checking for opt/homebrew/-cl.exe... no
checking for opt/homebrew/-FCC... no
checking for opt/homebrew/-KCC... no
checking for opt/homebrew/-RCC... no
checking for opt/homebrew/-xlC_r... no
checking for opt/homebrew/-xlC... no
checking for opt/homebrew/-clang++... no
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking how to run the C preprocessor... gcc -E
checking build system type... Invalid configuration `opt/homebrew/': machine `opt/homebrew/-unknown' not recognized
configure: error: /bin/sh ./config/config.sub opt/homebrew/ failed
How should I change the prefix? Any suggestion would be very welcome!

Conan: Setting up autotools to cross compile libcurl for iOS

I've started using Conan to manage a cross platform project with a fairly large dependency tree (diving into the deep end, I know). Several components in the project use autotools for their configuration step, and I'm struggling to get some of those scripts to detect it properly. Conan itself offers little guidance on the subject, so I'm certain there's some setting I'm missing.
To test out my cross environment, I'm compiling libcurl/7.69.1 from MacOS to iOS armv8 with the following settings (using --build to make everything locally):
[settings]
arch=armv8
arch_build=x86_64
build_type=Release
compiler=apple-clang
compiler.libcxx=libc++
compiler.version=11.0
os=iOS
os.version=9.0
os_build=Macos
[options]
darwin_ssl=False
with_openssl=True
[build_requires]
*: darwin-toolchain/1.0.6#theodelrieu/stable
libcurl/*: libtool/2.4.6
[env]
When it gets to the libcurl configure script, it fails with the following message (relevant libtool output included):
libtool/2.4.6: Package '150f8c59c5beb38d3bb23c3061298c1594abbc17' created
libtool/2.4.6: Created package revision 33a24903417fc5c368223b78e4ffc784
libtool/2.4.6: Appending PATH env: /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin
libtool/2.4.6: Setting LIBTOOLIZE env to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/libtoolize
libtool/2.4.6: Appending ACLOCAL_PATH env: /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share/aclocal
libtool/2.4.6: Setting LIBTOOL_PREFIX environment variable to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17
libtool/2.4.6: Setting LIBTOOL_DATADIR environment variable to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share
libtool/2.4.6: Setting LIBTOOL_PKGAUXDIR environment variable to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share/libtool/build-aux
libtool/2.4.6: Setting LIBTOOL_PKGLTDLDIR environment variable to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share/libtool
libtool/2.4.6: Setting LIBTOOL_ACLOCALDIR environment variable to /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share/aclocal
libtool/2.4.6: Appending AUTOMAKE_CONAN_INCLUDES environment variable: /Users/my_home_dir/.conan/data/libtool/2.4.6/_/_/package/150f8c59c5beb38d3bb23c3061298c1594abbc17/bin/share/aclocal
...
libcurl/7.69.1: Calling:
> ./configure '--without-libidn2' '--without-librtmp' '--without-libmetalink' '--without-libpsl' '--without-brotli' '--with-ssl=/Users/my_home_dir/.conan/data/openssl/1.1.1g/Qrypt/dev/package/6721cd435aa597f77b709c9f18a506df5f25cc78' '--without-libssh2' '--without-nghttp2' '--with-zlib=/Users/my_home_dir/.conan/data/zlib/1.2.11/_/_/package/6721cd435aa597f77b709c9f18a506df5f25cc78/lib' '--disable-shared' '--enable-static' '--disable-ldap' '--enable-threaded-resolver' '--disable-verbose' '--prefix=/Users/my_home_dir/.conan/data/libcurl/7.69.1/_/_/package/614a97ea5d3c0afeea50678bf1a8f62835834ff0' '--bindir=${prefix}/bin' '--sbindir=${prefix}/bin' '--libexecdir=${prefix}/bin' '--libdir=${prefix}/lib' '--includedir=${prefix}/include' '--oldincludedir=${prefix}/include' '--datarootdir=${prefix}/share' --build=x86_64-apple-darwin --host=aarch64-apple-darwin
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable debug build options... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable curl debug memory tracking... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable ESNI support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a BSD-compatible install... /usr/bin/install -c
checking for aarch64-apple-darwin-gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
checking whether the C compiler works... no
configure: error: in `/Users/my_home_dir/.conan/data/libcurl/7.69.1/_/_/build/614a97ea5d3c0afeea50678bf1a8f62835834ff0/source_subfolder':
configure: error: C compiler cannot create executables
See `config.log' for more details
And the libcurl config.log reads:
configure:4319: checking whether the C compiler works
configure:4341: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk -arch arm64 -mios-version-min=9.0 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk -mios-version-min=9.0 -fembed-bitcode -arch arm64 -DHAVE_SOCKET -DHAVE_FCNTL_O_NONBLOCK -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk -mios-version-min=9.0 -fembed-bitcode -arch arm64 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk -L/Users/my_home_dir/.conan/data/openssl/1.1.1g/Qrypt/dev/package/6721cd435aa597f77b709c9f18a506df5f25cc78/lib conftest.c -lltdl -lssl -lcrypto -lz >&5
ld: library not found for -lltdl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:4345: $? = 1
configure:4383: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "curl"
| #define PACKAGE_TARNAME "curl"
| #define PACKAGE_VERSION "-"
| #define PACKAGE_STRING "curl -"
| #define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.haxx.se/mail/"
| #define PACKAGE_URL ""
| /* end confdefs.h. */
|
| int main (void)
| {
|
| ;
| return 0;
| }
My main question: Searching around, this error seems to indicate libtool cannot be found for my target platform. Am I setting up my autotools correctly within my profile? I copied it from the linux settings within lib curl's recipe; are there any other settings needed to get it set up for a MacOS build agent?
Some other misc questions to help me understand what I'm doing:
When I declare a build_requirement, those components get compiled for the build architecture, correct? (MacOS/x86_64 in this case)
The libcurl recipe on conan-center-index does not set libtool as a build_requirement for MacOS, but configure still tries to call it. Is that an oversight within the recipe or is there supposed to be another way to compile libcurl on MacOS machines?
I noticed the libtool package appends LIBTOOL_PREFIX/bin to the PATH, but libltdl.a resides in LIBTOOL_PREFIX/lib, does the curl configure script find libltdl.a some other way?

Basemap installation on Mac laptop

I know there are several questions about this topic, but I cannot find a clear answer.
I'm trying to install Basemap in my laptop (Mac OS X, v 10.6.8). I'm running Python 2.7.8 |Anaconda 2.0.1.
Python is installed in the following folder: users/myname/anaconda
I've downloaded basemap-1.0.7 into the same folder (users/myname/anaconda), then I follow the instructions from http://matplotlib.org/basemap/users/installing.html:
To install the GEOS library I open up a terminal and type:
cd anaconda/basemap-1.0.7/geos-3.3.3/
export GEOS_DIR=/user/myname/anaconda
./configure --prefix=$GEOS_DIR
Then I get the following error:
checking host system type... i386-apple-darwin10.8.0
checking target system type... i386-apple-darwin10.8.0
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... no
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/Users/myname/anaconda/basemap-1.0.7/geos-3.3.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
Then, when I try to run make; make install I get the error:
-bash: make: command not found
Can someone explain what I'm doing wrong?
The problem is that Basemap needs to compile GEOS, which is a C library, so you need a C compiler.
Alternatively, just download and install from the Mac OSX binaries provided here: http://trac.osgeo.org/geos/

Not able to install gdb 7.5

I am trying to install gdb 7.5
My OS env is : Linux ddkhost 2.6.18-53.el5PAE #1 SMP Wed Oct 10 16:48:18 EDT 2007 i686 i686 i386 GNU/Linux
I am following these steps:
./configure
make
now it is running recursively endless.
configure: creating ./config.status
CONFIG_FILES=Makefile CONFIG_HEADERS= /bin/sh ./config.status
config.status: creating Makefile
make: Warning: File `Makefile.in' has modification time 1.9e+08 s in the future
CONFIG_SHELL="/bin/sh" /bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create --no-recursion
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
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 ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for PWL_handle_timeout in -lpwl... no
checking for version 0.11 (revision 0 or later) of PPL... no
checking for default BUILD_CONFIG...
checking for bison... bison -y
checking for bison... bison
checking for gm4... no
checking for gnum4... no
checking for m4... m4
checking for flex... flex
checking for flex... flex
checking for makeinfo... makeinfo
checking for expect... expect
checking for runtest... no
checking for ar... ar
checking for as... as
checking for dlltool... no
checking for ld... ld
checking for windres... no
checking for windmc... no
checking where to find the target ar... host tool
checking where to find the target as... host tool
checking where to find the target cc... host tool
checking where to find the target c++... host tool
checking where to find the target c++ for libstdc++... host tool
checking where to find the target dlltool... host tool
checking where to find the target gcc... host tool
checking where to find the target gcj... host tool
checking where to find the target gfortran... host tool
checking where to find the target gccgo... host tool
checking where to find the target readelf... host tool
checking where to find the target strip... host tool
checking where to find the target windres... host tool
checking where to find the target windmc... host tool
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether -fkeep-inline-functions is supported... yes
configure: creating ./config.status
CONFIG_FILES=Makefile CONFIG_HEADERS= /bin/sh ./config.status
config.status: creating Makefile
make: Warning: File `Makefile.in' has modification time 1.9e+08 s in the future
CONFIG_SHELL="/bin/sh" /bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure --no-create --no-recursion
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
and so on.......
What is the reason?
From:
make: Warning: File `Makefile.in' has modification time 1.9e+08 s in the future
it indeed seems like your system clock is not synced up with your NFS server like #drank0 commented. Assuming you have root, try setting the time via NTP first:
ntpdate -s ntp.pool.org
If that doesn't work, just set the date like:
date -s 'May 23, 2013'

Cannot created executables installing IT++, ACML

I want to install IT++ with ACML
I first installed ACML and then did:
export LDFLAGS=$LDFLAGS:"-L/opt/acml4.4.0/ifort32/lib"
export CPPFLAGS=$CPPFLAGS:"-I/opt/acml4.4.0/ifort32/include"
So that IT++ can find it when it configures itself.
NExt I went to the IT++ directory and typed "./configure"
then I get the following error:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for g++... g++
checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables
See `config.log' for more details.
I went to the config.log and the interesting lines are given below:
lib conftest.cpp >&5
g++: :-I/opt/acml4.4.0/ifort32_mp/include: No such file or directory
g++: :-L/opt/acml4.4.0/ifort32_mp/lib: No such file or directory
configure:2836: $? = 1
Why is it doing this?