cmake_minimum_required(VERSION 3.22.1)
project(takeaudio_lame LANGUAGES C)

set(LAME_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../third_party/lame")
set(LAME_SOURCES
    ${LAME_ROOT}/libmp3lame/VbrTag.c
    ${LAME_ROOT}/libmp3lame/bitstream.c
    ${LAME_ROOT}/libmp3lame/encoder.c
    ${LAME_ROOT}/libmp3lame/fft.c
    ${LAME_ROOT}/libmp3lame/gain_analysis.c
    ${LAME_ROOT}/libmp3lame/id3tag.c
    ${LAME_ROOT}/libmp3lame/lame.c
    ${LAME_ROOT}/libmp3lame/newmdct.c
    ${LAME_ROOT}/libmp3lame/presets.c
    ${LAME_ROOT}/libmp3lame/psymodel.c
    ${LAME_ROOT}/libmp3lame/quantize.c
    ${LAME_ROOT}/libmp3lame/quantize_pvt.c
    ${LAME_ROOT}/libmp3lame/reservoir.c
    ${LAME_ROOT}/libmp3lame/set_get.c
    ${LAME_ROOT}/libmp3lame/tables.c
    ${LAME_ROOT}/libmp3lame/takehiro.c
    ${LAME_ROOT}/libmp3lame/util.c
    ${LAME_ROOT}/libmp3lame/vbrquantize.c
    ${LAME_ROOT}/libmp3lame/version.c
)

add_library(mp3lame STATIC ${LAME_SOURCES})
target_include_directories(mp3lame PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${LAME_ROOT}/include ${LAME_ROOT}/libmp3lame)
target_compile_definitions(mp3lame PRIVATE
    HAVE_CONFIG_H
    STDC_HEADERS HAVE_ERRNO_H HAVE_FCNTL_H HAVE_LIMITS_H HAVE_INTTYPES_H
    HAVE_STDINT_H HAVE_STRCHR HAVE_MEMCPY LAME_LIBRARY_BUILD
)
target_compile_options(mp3lame PRIVATE -O3 -fvisibility=hidden)

add_library(takeaudio_lame SHARED lame_jni.c)
target_include_directories(takeaudio_lame PRIVATE ${LAME_ROOT}/include)
target_link_libraries(takeaudio_lame PRIVATE mp3lame m log)
target_link_options(takeaudio_lame PRIVATE
    "-Wl,-z,max-page-size=16384"
    "-Wl,-z,common-page-size=16384"
)
