it appears a one-character typo in the cmake_minimum_required line prevents it from compiling under CMake 4.0. in order to fix that, I had to take this thing out of submodules... it is recommended to do this after you pull; git submodule deinit extern/libsndfile
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Building for Android
 | 
						|
 | 
						|
Assuming the Android Ndk is installed at location `/path/to/toolchain`, building
 | 
						|
libsndfile for Android (arm-linux-androideabi) should be as simple as:
 | 
						|
```
 | 
						|
autoreconf -vif
 | 
						|
export ANDROID_TOOLCHAIN_HOME=/path/to/android/toolchain
 | 
						|
./Scripts/android-configure.sh
 | 
						|
make
 | 
						|
```
 | 
						|
The `Scripts/android-configure.sh` contains four of variables; `ANDROID_NDK_VER`,
 | 
						|
`ANDROID_GCC_VER`, `ANDROID_API_VER` and `ANDROID_TARGET` that can be overridden
 | 
						|
by setting them before the script is run.
 | 
						|
 | 
						|
Since I (erikd), do almost zero Android development, I am happy accept patches
 | 
						|
for this documentation and script to improve its utility for real Android
 | 
						|
developers.
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## Using CMake
 | 
						|
 | 
						|
(Tested on Linux)
 | 
						|
 | 
						|
For convenience, export the following variables:
 | 
						|
 | 
						|
```
 | 
						|
export ANDROID_ABI=arm64-v8a
 | 
						|
export ANDROID_PLATFORM_API_LEVEL=29
 | 
						|
export NDK_ROOT=/path/to/android/ndk
 | 
						|
```
 | 
						|
 | 
						|
Set `ANDROID_ABI`,  `ANDROID_PLATFORM_API_LEVEL`  according to your target system. Now cd into the libsndfile root directory, and run
 | 
						|
 | 
						|
```
 | 
						|
cmake -S . -B build  -DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake -DANDROID_ABI=$ANDROID_ABI -DANDROID_PLATFORM=$ANDROID_PLATFORM_API_LEVEL
 | 
						|
```
 | 
						|
 | 
						|
cd into `build` and run make
 | 
						|
 | 
						|
```
 | 
						|
cd build
 | 
						|
make [-j <number of parallel jobs>]
 | 
						|
```
 | 
						|
 | 
						|
This will build libsndfile for android.
 |