Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
cmake_minimum_required(VERSION 2.6)
cmake_minimum_required(VERSION 3.10)

project(NE10 C CXX ASM)

Expand Down Expand Up @@ -113,9 +113,11 @@ if(ANDROID_PLATFORM)
endif()

#TODO: Fine tune pic and pie flag for executable, share library and static library.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --sysroot=${NDK_SYSROOT_PATH} -pie")
string(APPEND CMAKE_C_FLAGS " -isysroot ${NDK_ISYSROOT_PATH}")
add_definitions(-D__ANDROID_API__=${ANDROID_API_LEVEL})
# If using NDK version older than 19
if(NOT DEFINED ANDROID_NDK_MAJOR OR ANDROID_NDK_MAJOR VERSION_LESS "19")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --sysroot=${NDK_SYSROOT_PATH} -pie")
string(APPEND CMAKE_C_FLAGS " -isysroot ${NDK_ISYSROOT_PATH}")
endif()

# Adding cflags for armv7. Aarch64 does not need such flags.
if(${NE10_TARGET_ARCH} STREQUAL "armv7")
Expand Down
51 changes: 46 additions & 5 deletions modules/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,35 @@ if(IOS_PLATFORM)
endfunction()
endif(IOS_PLATFORM)

if(ANDROID_PLATFORM)
# Similar to ios, android ARM assembler(Clang) doesn't support GNU as(GAS)'s assembly
# However, ios use Mach-o format, while android use ELF format.
# So we need to convert the assembly file to natch ELF format with differnt conversion script based on gas2ios_convert.py
function(convert_gas gas_files android_files)
#message(STATUS "in convert_gas function:${${gas_files}}")
#TODO: Change naming to android instead of ios
foreach(gas_file ${${gas_files}})
string(REGEX REPLACE
".*\(NE10_.*\).neon.s"
"${NE10_BINARY_DIR}/modules/CMakeFiles/NE10.dir/\\1_android.neon.s"
android_file
${gas_file})
list(APPEND android_files_tmp ${android_file})

#call a script to convert each assembly file in GAS to Clang
add_custom_command(
OUTPUT ${android_file}
COMMAND ${NE10_SOURCE_DIR}/tools/gas2android_convert.py
${gas_file} ${android_file}
DEPENDS ${gas_file}
)
endforeach()

#return value by setting the variable to PARENT_SCOPE
set(${android_files} ${android_files_tmp} PARENT_SCOPE)
endfunction()
endif(ANDROID_PLATFORM)

if(NE10_ENABLE_MATH)
#enable NE10_init_math
add_definitions(-DNE10_ENABLE_MATH)
Expand Down Expand Up @@ -198,22 +227,30 @@ if(NE10_ENABLE_DSP)
if("${NE10_TARGET_ARCH}" STREQUAL "armv7")
if(IOS_PLATFORM)
else()
set(NE10_DSP_GAS_TEMP
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fir.neon.s
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_iir.neon.s
)
convert_gas(NE10_DSP_GAS_TEMP NE10_DSP_ANDROID_NEON_SRCS)
# Add dsp NEON files.
set(NE10_DSP_NEON_SRCS
${NE10_DSP_NEON_SRCS}
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fir.neon.s
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_iir.neon.s
${NE10_DSP_ANDROID_NEON_SRCS}
)
endif()
endif()

if(NE10_ASM_OPTIMIZATION)
set(NE10_DSP_NEON_SRCS
${NE10_DSP_NEON_SRCS}
set(NE10_DSP_FFT_GAS_TEMP
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fft_float32.neon.s
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fft_int32.neon.s
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fft_int16.neon.s
)
convert_gas(NE10_DSP_FFT_GAS_TEMP NE10_DSP_ANDROID_NEON_SRCS)
set(NE10_DSP_NEON_SRCS
${NE10_DSP_NEON_SRCS}
${NE10_DSP_ANDROID_NEON_SRCS}
)
set(NE10_DSP_INTRINSIC_SRCS
${NE10_DSP_INTRINSIC_SRCS}
${PROJECT_SOURCE_DIR}/modules/dsp/NE10_fft_float32.neon.c
Expand Down Expand Up @@ -277,9 +314,13 @@ if(NE10_ENABLE_IMGPROC)

if("${NE10_TARGET_ARCH}" STREQUAL "armv7")
# Add image processing NEON files.
set(NE10_IMGPROC_NEON_SRCS
set(NE10_IMGPROC_GAS_TEMP
${PROJECT_SOURCE_DIR}/modules/imgproc/NE10_rotate.neon.s
)
convert_gas(NE10_IMGPROC_GAS_TEMP NE10_ANDROID_IMG_TEMP)
set(NE10_IMGPROC_NEON_SRCS
${NE10_ANDROID_IMG_TEMP}
)
endif()
# Add image intrinsic NEON files.
set(NE10_IMGPROC_INTRINSIC_SRCS
Expand Down
Loading