cmake_minimum_required(VERSION 3.22.1)
project(nosilence_mp3 C)

# LAME 3.100, unmodified sources (third_party/lame-3.100, LGPL-2.0-or-later) -> libmp3lame.so (replaceable).
set(LAME_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../third_party/lame-3.100)
file(GLOB LAME_SOURCES ${LAME_DIR}/libmp3lame/*.c)
list(REMOVE_ITEM LAME_SOURCES ${LAME_DIR}/libmp3lame/mpglib_interface.c)
add_library(mp3lame SHARED ${LAME_SOURCES})
target_include_directories(mp3lame PRIVATE ${LAME_DIR}/include ${LAME_DIR}/libmp3lame)
# What configure would put in config.h (no source edits): standard headers, float type used by util.h.
target_compile_definitions(mp3lame PRIVATE STDC_HEADERS=1 HAVE_STDINT_H=1 HAVE_ERRNO_H=1 HAVE_FCNTL_H=1 HAVE_LIMITS_H=1 ieee754_float32_t=float)
target_compile_options(mp3lame PRIVATE -O2 -w)
target_link_libraries(mp3lame m)

# NoSilence's own JNI bridge: only the public lame.h API, linked dynamically against libmp3lame.so.
add_library(nosilence_mp3 SHARED nosilence_mp3_jni.c)
target_include_directories(nosilence_mp3 PRIVATE ${LAME_DIR}/include)
target_link_libraries(nosilence_mp3 mp3lame log)
