cmake_minimum_required(VERSION 3.8) include(GNUInstallDirs) #project(assembler C ASM) ############################################# # opus ############################################# if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)") add_definitions(-DARCH_ARM) list(APPEND RESAMPLE_FILES libswresample/arm/audio_convert_init.c) list(APPEND RESAMPLE_FILES libswresample/arm/resample_init.c) #list(APPEND RESAMPLE_FILES arm/fft_init_arm.c) list(APPEND RESAMPLE_FILES libavutil/arm/cpu.c) list(APPEND RESAMPLE_FILES libavutil/arm/float_dsp_init_arm.c) list(APPEND RESAMPLE_FILES libavutil/arm/float_dsp_init_neon.c) list(APPEND RESAMPLE_FILES libavutil/arm/float_dsp_init_vfp.c) ENABLE_LANGUAGE(C ASM) list(APPEND ARM_FILES libswresample/arm/audio_convert_neon.S) #list(APPEND ARM_FILES arm/fft_vfp.S) list(APPEND ARM_FILES libswresample/arm/resample.S) list(APPEND ARM_FILES libavutil/arm/float_dsp_neon.S) list(APPEND ARM_FILES libavutil/arm/float_dsp_vfp.S) else() add_definitions(-DARCH_AARCH64) list(APPEND RESAMPLE_FILES libswresample/aarch64/audio_convert_init.c) list(APPEND RESAMPLE_FILES libswresample/aarch64/resample_init.c) #list(APPEND RESAMPLE_FILES aarch64/fft_init_aarch64.c) list(APPEND RESAMPLE_FILES libavutil/aarch64/cpu.c) list(APPEND RESAMPLE_FILES libavutil/aarch64/float_dsp_init.c) list(APPEND RESAMPLE_FILES libavutil/aarch64/tx_float_init.c) list(APPEND RESAMPLE_FILES libavcodec/aarch64/opusdsp_init.c) ENABLE_LANGUAGE(C ASM) list(APPEND ARM_FILES libswresample/aarch64/audio_convert_neon.S) list(APPEND ARM_FILES libavutil/aarch64/float_dsp_neon.S) list(APPEND ARM_FILES libavutil/aarch64/tx_float_neon.S) list(APPEND ARM_FILES libavcodec/aarch64/opusdsp_neon.S) endif() #set_property(SOURCE arm/audio_convert_neon.S APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp") add_library(opus-ahal SHARED dsp.c dec.c celt.c dec_celt.c pvq.c rc.c tab.c parse.c silk.c ${RESAMPLE_FILES} ${ARM_FILES} ./libavutil/cpu.c ./libavutil/tx.c ./libavutil/bprint.c ./libavutil/intmath.c ./libavutil/tx_double.c ./libavutil/tx_float.c ./libavutil/tx_int32.c ./libavutil/channel_layout.c ./libavutil/log2_tab.c ./libavutil/audio_fifo.c ./libavutil/float_dsp.c ./libavutil/opt.c ./libavutil/mem.c ./libavutil/fifo.c ./libavutil/samplefmt.c ./libavutil/rational.c ./libavutil/error.c ./libavutil/avstring.c ./libavutil/avsscanf.c ./libavutil/mathematics.c ./libavutil/eval.c ./libavutil/reverse.c ./libavutil/log.c ./libavutil/time.c ./libavutil/frame.c ./libavutil/buffer.c ./libavutil/dict.c ./libswresample/swresample.c ./libswresample/resample.c ./libswresample/audioconvert.c ./libswresample/rematrix.c ./libswresample/resample_dsp.c ./libswresample/dither.c ./libswresample/options.c ./libavcodec/vorbis_data.c ./libavcodec/mathtables.c ./libavcodec/get_buffer.c ./libavcodec/refstruct.c ) if(ANDROID_BUILD) add_definitions(-DANDROID_BUILD) add_definitions(-DUSE_LOGCAT) endif() target_compile_options(opus-ahal PRIVATE -Wl,-no-undefined -Xlinker --unresolved-symbols=ignore-in-shared-libs -g) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") #add_definitions(-DUSE_DEFAULT_STDLIB -DUSE_HELIX_AAC_DECODER) #set_target_properties(opus-ahal PROPERTIES # VERSION ${PROJECT_VERSION} # SOVERSION 1) target_include_directories(opus-ahal PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/libavcodec ${PROJECT_SOURCE_DIR}/libavutil ${PROJECT_SOURCE_DIR}/compat ${PROJECT_SOURCE_DIR}/compat/float ${PROJECT_SOURCE_DIR}/arm ${PROJECT_SOURCE_DIR}/libswresample ) if(ANDROID_BUILD) target_link_options(opus-ahal PRIVATE "-Wl,-soname,libopus-ahal.so") target_link_libraries(opus-ahal -lm -llog) else() target_link_libraries(opus-ahal -lcutils -lamaudioutils -llog) endif() install(TARGETS opus-ahal LIBRARY DESTINATION "lib")