neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

BuildLuajit.cmake (6105B)


      1 function(BuildLuajit)
      2  cmake_parse_arguments(_luajit
      3    ""
      4    ""
      5    "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND;DEPENDS"
      6    ${ARGN})
      7 
      8  get_externalproject_options(luajit ${DEPS_IGNORE_SHA})
      9  ExternalProject_Add(luajit
     10    DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luajit
     11    CONFIGURE_COMMAND "${_luajit_CONFIGURE_COMMAND}"
     12    BUILD_IN_SOURCE 1
     13    BUILD_COMMAND "${_luajit_BUILD_COMMAND}"
     14    INSTALL_COMMAND "${_luajit_INSTALL_COMMAND}"
     15    DEPENDS "${_luajit_DEPENDS}"
     16    ${EXTERNALPROJECT_OPTIONS})
     17 endfunction()
     18 
     19 check_c_compiler_flag(-fno-stack-check HAS_NO_STACK_CHECK)
     20 if(APPLE AND HAS_NO_STACK_CHECK)
     21  set(NO_STACK_CHECK "CFLAGS+=-fno-stack-check")
     22 else()
     23  set(NO_STACK_CHECK "")
     24 endif()
     25 if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
     26  set(AMD64_ABI "LDFLAGS=-lpthread -lc++abi")
     27 else()
     28  set(AMD64_ABI "")
     29 endif()
     30 set(BUILDCMD_UNIX ${MAKE_PRG} -j CFLAGS=-fPIC
     31                              CFLAGS+=-DLUA_USE_APICHECK
     32                              CFLAGS+=-funwind-tables
     33                              ${NO_STACK_CHECK}
     34                              ${AMD64_ABI}
     35                              CCDEBUG+=-g
     36                              Q=)
     37 
     38 # Setting MACOSX_DEPLOYMENT_TARGET is mandatory for LuaJIT; use version set by
     39 # cmake.deps/CMakeLists.txt (either environment variable or current system version).
     40 if(APPLE)
     41  set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
     42 endif()
     43 
     44 if(CYGWIN)
     45  if(CMAKE_GENERATOR MATCHES "Ninja")
     46    set(LUAJIT_MAKE_PRG ${MAKE_PRG})
     47  else()
     48    set(LUAJIT_MAKE_PRG ${CMAKE_MAKE_PROGRAM})
     49  endif()
     50  BuildLuajit(BUILD_COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER}
     51                                PREFIX=${DEPS_INSTALL_DIR}
     52                                CFLAGS+=-DLUA_USE_APICHECK
     53                                CFLAGS+=-funwind-tables
     54                                CCDEBUG+=-g
     55                                BUILDMODE=static
     56                      # Build a DLL too
     57                      COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER} BUILDMODE=dynamic
     58 
     59          INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_BIN_DIR}
     60     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/luajit.exe ${DEPS_BIN_DIR}
     61     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/cyglua51.dll ${DEPS_BIN_DIR}
     62     COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_LIB_DIR}
     63     # Luarocks searches for lua51.dll in lib
     64     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/cyglua51.dll ${DEPS_LIB_DIR}
     65     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/libluajit-5.1.dll.a ${DEPS_LIB_DIR}
     66     COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1
     67     COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
     68            COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/luajit/src/jit ${DEPS_INSTALL_DIR}/share/luajit-2.1/jit
     69     )
     70 
     71 elseif(UNIX)
     72  BuildLuajit(INSTALL_COMMAND ${BUILDCMD_UNIX}
     73    CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR}
     74    ${DEPLOYMENT_TARGET} install)
     75 
     76 elseif(MINGW)
     77 
     78  if(CMAKE_GENERATOR MATCHES "Ninja")
     79    set(LUAJIT_MAKE_PRG ${MAKE_PRG})
     80  else()
     81    set(LUAJIT_MAKE_PRG ${CMAKE_MAKE_PROGRAM})
     82  endif()
     83  BuildLuajit(BUILD_COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER}
     84                                PREFIX=${DEPS_INSTALL_DIR}
     85                                CFLAGS+=-DLUA_USE_APICHECK
     86                                CFLAGS+=-funwind-tables
     87                                CCDEBUG+=-g
     88                                BUILDMODE=static
     89                      # Build a DLL too
     90                      COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER} BUILDMODE=dynamic
     91 
     92          INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_BIN_DIR}
     93     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/luajit.exe ${DEPS_BIN_DIR}
     94     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_BIN_DIR}
     95     COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_LIB_DIR}
     96     # Luarocks searches for lua51.dll in lib
     97     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_LIB_DIR}
     98     COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/libluajit.a ${DEPS_LIB_DIR}
     99     COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1
    100     COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
    101            COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/luajit/src/jit ${DEPS_INSTALL_DIR}/share/luajit-2.1/jit
    102     )
    103 elseif(MSVC)
    104 
    105  BuildLuajit(
    106    BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${DEPS_BUILD_DIR}/src/luajit/src ${DEPS_BUILD_DIR}/src/luajit/src/msvcbuild.bat
    107    INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_BIN_DIR}
    108      COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/luajit.exe ${DEPS_BIN_DIR}
    109      COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_BIN_DIR}
    110      COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_LIB_DIR}
    111      # Luarocks searches for lua51.lib
    112      COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.lib ${DEPS_LIB_DIR}/lua51.lib
    113      # Luv searches for luajit.lib
    114      COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.lib ${DEPS_LIB_DIR}/luajit.lib
    115      COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1
    116      COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
    117      COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/luajit/src/jit ${DEPS_INSTALL_DIR}/share/luajit-2.1/jit
    118      )
    119 else()
    120  message(FATAL_ERROR "Trying to build luajit in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
    121 endif()