mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 14:11:15 -07:00
723366d40b
Add build recipe for libvterm in MinGW, a CMakeLists.txt file is bundled in third-party/cmake/.
73 lines
2.4 KiB
Plaintext
73 lines
2.4 KiB
Plaintext
cmake_minimum_required(VERSION 2.8.11)
|
|
project(libvterm LANGUAGES C)
|
|
|
|
include(GNUInstallDirs)
|
|
find_package(Perl REQUIRED)
|
|
|
|
if(MSVC)
|
|
add_definitions(/W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
|
else()
|
|
add_definitions(-Wall -std=c99)
|
|
endif()
|
|
|
|
# Generate includes from tables
|
|
file(GLOB TBL_FILES ${CMAKE_SOURCE_DIR}/src/encoding/*.tbl)
|
|
set(TBL_FILES_HEADERS)
|
|
foreach(file ${TBL_FILES})
|
|
get_filename_component(basename ${file} NAME_WE)
|
|
set(tname encoding/${basename}.inc)
|
|
add_custom_command(OUTPUT
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/encoding/
|
|
COMMAND ${PERL_EXECUTABLE} -CSD ${CMAKE_SOURCE_DIR}/tbl2inc_c.pl ${file} > ${CMAKE_BINARY_DIR}/${tname}
|
|
COMMENT "Generating ${tname}"
|
|
OUTPUT ${CMAKE_BINARY_DIR}/${tname}
|
|
)
|
|
list(APPEND TBL_FILES_HEADERS ${tname})
|
|
endforeach()
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/include)
|
|
include_directories(${CMAKE_BINARY_DIR})
|
|
|
|
file(GLOB VTERM_SOURCES ${CMAKE_SOURCE_DIR}/src/*.c)
|
|
add_library(vterm ${VTERM_SOURCES} ${TBL_FILES_HEADERS})
|
|
install(TARGETS vterm ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
add_library(vterm-shared SHARED ${VTERM_SOURCES} ${TBL_FILES_HEADERS})
|
|
set_target_properties(vterm-shared PROPERTIES
|
|
OUTPUT_NAME vterm
|
|
SOVERSION 0)
|
|
install(TARGETS vterm-shared
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
|
|
install(FILES include/vterm.h include/vterm_keycodes.h
|
|
DESTINATION include)
|
|
|
|
if(NOT WIN32)
|
|
file(GLOB BIN_SOURCES ${CMAKE_SOURCE_DIR}/bin/*.c)
|
|
foreach(EXE_C ${BIN_SOURCES})
|
|
get_filename_component(target_name ${EXE_C} NAME_WE)
|
|
add_executable(${target_name} ${EXE_C})
|
|
target_link_libraries(${target_name} vterm)
|
|
install(TARGETS ${target_name} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
endforeach()
|
|
endif()
|
|
|
|
# Tests
|
|
add_executable(harness EXCLUDE_FROM_ALL t/harness.c)
|
|
target_link_libraries(harness vterm)
|
|
set_target_properties(harness PROPERTIES
|
|
# run-test.pl expects to find the harness in t/.libs/
|
|
RUNTIME_OUTPUT_DIRECTORY t/.libs)
|
|
|
|
file(GLOB TESTFILES ${CMAKE_SOURCE_DIR}/t/*.test)
|
|
add_custom_target(check)
|
|
foreach(testfile ${TESTFILES})
|
|
get_filename_component(target_name ${testfile} NAME_WE)
|
|
add_custom_target(${target_name}
|
|
COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/t/run-test.pl ${testfile}
|
|
COMMENT "**${target_name} **"
|
|
DEPENDS harness)
|
|
add_dependencies(check ${target_name})
|
|
endforeach()
|