cmake_minimum_required(VERSION 3.12)
project(lua VERSION 5.4.6 LANGUAGES C)

set(CMAKE_SYSTEM_NAME Linux)
# 基础配置
set(CMAKE_C_STANDARD 99)  # 使用 C99 标准
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# 平台检测
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    message(STATUS "Configuring for Linux/HarmonyOS")
    add_compile_definitions(LUA_USE_LINUX LUA_COMPAT_5_3)

    # 鸿蒙系统可能不支持 readline，因此不包含相关配置
    # 如果鸿蒙系统有其他支持的库，可以在这里添加

    # 添加动态链接支持
    list(APPEND EXTRA_LIBS dl)

else()  # 通用 Unix 配置
    message(STATUS "Configuring for generic Unix")
    add_compile_definitions(LUA_USE_POSIX LUA_COMPAT_5_3)
    list(APPEND EXTRA_LIBS dl)
endif()

# Lua 核心文件列表
file(GLOB LUA_CORE_SOURCES
    lapi.c
    lcode.c
    lctype.c
    ldebug.c
    ldo.c
    ldump.c
    lfunc.c
    lgc.c
    llex.c
    lmem.c
    lobject.c
    lopcodes.c
    lparser.c
    lstate.c
    lstring.c
    ltable.c
    ltm.c
    lundump.c
    lvm.c
    lzio.c
)

# Lua 库文件列表
file(GLOB LUA_LIB_SOURCES
    lauxlib.c
    lbaselib.c
    lcorolib.c
    ldblib.c
    liolib.c
    lmathlib.c
    loadlib.c
    loslib.c
    lstrlib.c
    ltablib.c
    lutf8lib.c
    linit.c
)

# 特殊源文件的编译器优化
set_source_files_properties(
    llex.c
    lparser.c
    lcode.c
    PROPERTIES COMPILE_FLAGS "-Os"
)

add_library(lua STATIC
    ${LUA_CORE_SOURCES}
    ${LUA_LIB_SOURCES}
)