From fd40e25e67ef033b12fc30b885722cc261656455 Mon Sep 17 00:00:00 2001 From: shizhenghui Date: Mon, 26 Aug 2024 20:45:25 +0800 Subject: [PATCH] lame: update CMakeLists.txt Signed-off-by: shizhenghui --- audioutils/lame/CMakeLists.txt | 92 +++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/audioutils/lame/CMakeLists.txt b/audioutils/lame/CMakeLists.txt index d0abfd65c..8b1c13250 100644 --- a/audioutils/lame/CMakeLists.txt +++ b/audioutils/lame/CMakeLists.txt @@ -20,7 +20,95 @@ if(CONFIG_AUDIOUTILS_LAME) - # call origin build system to generate libmp3lame - nuttx_call_apps_makefile(TARGET lame TARGET_BIN libmp3lame.a) + # Determine destination path + if(NOT DEFINED DST_PATH) + set(DST_PATH ${CMAKE_CURRENT_BINARY_DIR}/lame) + else() + set(DST_PATH ${DST_PATH}) + endif() + + # Set configuration commands + set(CFG_CMDS "") + if(NOT "${CONFIG_ARCH}" STREQUAL "sim") + list(APPEND CFG_CMDS "--host=${CONFIG_ARCH}") + list(APPEND CFG_CMDS "--cross-prefix=${CROSSDEV}") + endif() + + # # Download lame if no lame/configure found + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lame/configure") + execute_process( + COMMAND "svn" "checkout" "https://svn.code.sf.net/p/lame/svn/trunk/lame" + "lame" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") + endif() + + # Set source path + set(SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lame") + + # Add compiler flags + set(CFLAGS -DHAVE_CONFIG_H -Dfast_log2=lame_fast_log2) + set(CFLAGS + ${CFLAGS} + -Wno-address + -Wno-array-parameter + -Wno-builtin-declaration-mismatch + -Wno-incompatible-pointer-types + -Wno-implicit-function-declaration + -Wno-shadow + -Wno-stringop-overflow + -Wno-unused-variable + -Wno-unused-but-set-variable + -msse) + + set(INCDIR ${INCDIR_PREFIX}${DST_PATH} ${INCDIR_PREFIX}${SRC_PATH}/include + ${INCDIR_PREFIX}${SRC_PATH}/libmp3lame) + + # Set source files + set(CSRCS + "${SRC_PATH}/libmp3lame/bitstream.c" + "${SRC_PATH}/libmp3lame/encoder.c" + "${SRC_PATH}/libmp3lame/fft.c" + "${SRC_PATH}/libmp3lame/gain_analysis.c" + "${SRC_PATH}/libmp3lame/id3tag.c" + "${SRC_PATH}/libmp3lame/lame.c" + "${SRC_PATH}/libmp3lame/newmdct.c" + "${SRC_PATH}/libmp3lame/psymodel.c" + "${SRC_PATH}/libmp3lame/quantize.c" + "${SRC_PATH}/libmp3lame/vector/xmm_quantize_sub.c" + "${SRC_PATH}/libmp3lame/quantize_pvt.c" + "${SRC_PATH}/libmp3lame/set_get.c" + "${SRC_PATH}/libmp3lame/vbrquantize.c" + "${SRC_PATH}/libmp3lame/reservoir.c" + "${SRC_PATH}/libmp3lame/tables.c" + "${SRC_PATH}/libmp3lame/takehiro.c" + "${SRC_PATH}/libmp3lame/util.c" + "${SRC_PATH}/libmp3lame/VbrTag.c" + "${SRC_PATH}/libmp3lame/version.c" + "${SRC_PATH}/libmp3lame/presets.c") + + # Add custom target to generate config_h + set(CONFIG_H_FILE "${CMAKE_CURRENT_SOURCE_DIR}/lame/configure") + set(CONFIG_OPTIONS + --disable-cpml + --disable-decoder + --disable-efence + --disable-frontend + --disable-mp3x + --disable-gtktest + --disable-ipv6 + --disable-rpath + --enable-static + ${CFG_CMDS}) + add_custom_command( + OUTPUT "${DST_PATH}/config.h" + COMMAND ${CONFIG_H_FILE} ${CONFIG_OPTIONS} + WORKING_DIRECTORY "${DST_PATH}" + COMMENT "Generating config.h file") + add_custom_target(generate_config_h DEPENDS "${DST_PATH}/config.h") + + nuttx_add_library(libmp3lame STATIC) + add_dependencies(libmp3lame generate_config_h) + target_sources(libmp3lame PRIVATE ${CSRCS}) + target_include_directories(libmp3lame PRIVATE ${INCDIR}) + target_compile_options(libmp3lame PRIVATE ${CFLAGS}) endif()