mirror of https://github.com/axmolengine/axmol.git
91 lines
2.8 KiB
CMake
91 lines
2.8 KiB
CMake
|
|
set(LUA_SRC_PATH ${CMAKE_CURRENT_LIST_DIR}/lua-${LUA_VERSION}/src)
|
|
|
|
set(lib_name plainlua)
|
|
set(target_name ${lib_name})
|
|
|
|
project(${lib_name})
|
|
|
|
include(../../cmake/CocosExternalConfig.cmake)
|
|
|
|
aux_source_directory(${LUA_SRC_PATH} LUA_CORE)
|
|
list(REMOVE_ITEM LUA_CORE ${LUA_SRC_PATH}/lua.c ${LUA_SRC_PATH}/luac.c)
|
|
|
|
set(LUA_BUILD_AS_DLL ${BUILD_SHARED_LIBS})
|
|
|
|
if(WIN32)
|
|
set(LUA_BUILD_AS_DLL TRUE)
|
|
add_library(${target_name} SHARED ${LUA_CORE})
|
|
else()
|
|
add_library(${target_name} ${LUA_CORE})
|
|
endif()
|
|
|
|
target_compile_definitions(${target_name}
|
|
PRIVATE _CRT_SECURE_NO_WARNINGS
|
|
PRIVATE _WINSOCK_DEPRECATED_NO_WARNINGS
|
|
)
|
|
|
|
if(${LUA_VERSION} VERSION_GREATER_EQUAL "5.4.0") # !important: traditional lua bindings solution tolua++ not support yet
|
|
target_compile_definitions(${target_name} PUBLIC LUA_COMPAT_APIINTCASTS=1)
|
|
elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.3.0")
|
|
target_compile_definitions(${target_name}
|
|
PUBLIC LUA_COMPAT_5_1=1
|
|
PUBLIC LUA_COMPAT_5_2=1
|
|
PUBLIC LUA_COMPAT_MODULE=1
|
|
)
|
|
elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.2.0")
|
|
target_compile_definitions(${target_name}
|
|
PUBLIC LUA_COMPAT_ALL=1
|
|
PUBLIC LUA_COMPAT_MODULE=1
|
|
)
|
|
endif()
|
|
|
|
if(LUA_BUILD_AS_DLL)
|
|
target_compile_definitions(${target_name} PUBLIC LUA_BUILD_AS_DLL=1)
|
|
endif()
|
|
|
|
set_target_properties(${target_name} PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${LUA_SRC_PATH}"
|
|
)
|
|
|
|
set_target_properties(${target_name}
|
|
PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
FOLDER "ThirdParty"
|
|
)
|
|
|
|
if(WIN32 OR MACOSX)
|
|
|
|
function (add_lua_bin target_name src_files)
|
|
add_executable(${target_name} ${src_files})
|
|
if(${LUA_VERSION} VERSION_GREATER_EQUAL "5.4.0") # !important: traditional lua bindings solution tolua++ not support yet
|
|
target_compile_definitions(${target_name} PUBLIC LUA_COMPAT_APIINTCASTS=1)
|
|
elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.3.0")
|
|
target_compile_definitions(${target_name}
|
|
PUBLIC LUA_COMPAT_5_1=1
|
|
PUBLIC LUA_COMPAT_5_2=1
|
|
)
|
|
elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.2.0")
|
|
target_compile_definitions(${target_name} PUBLIC LUA_COMPAT_ALL=1)
|
|
endif()
|
|
|
|
target_link_libraries(${target_name} plainlua)
|
|
|
|
set_target_properties(${target_name}
|
|
PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
FOLDER "Tools"
|
|
)
|
|
endfunction()
|
|
|
|
# tool:luac the lua bytecode compiler
|
|
add_lua_bin(luac "${LUA_SRC_PATH}/luac.c;${LUA_SRC_PATH}/ldump.c;${LUA_SRC_PATH}/lopcodes.c")
|
|
|
|
# tool:lua the lua interpreter
|
|
add_lua_bin(lua "${LUA_SRC_PATH}/lua.c")
|
|
endif()
|