aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fürmetz <fuermetz@mailbox.org>2018-12-14 15:32:21 +0100
committerLukas Fürmetz <fuermetz@mailbox.org>2018-12-14 15:32:21 +0100
commita29efa393f4c56b3347e200b991912e71f83bde4 (patch)
treea29cf79ef380d553b47e33fd5391f8cd69affa8d
parentec958982b889b4ea65216d70fa8128dcd413256a (diff)
Vendor libvtermvendor_libvterm
-rw-r--r--.gitmodules3
-rw-r--r--CMakeLists.txt58
m---------vendor/libvterm0
3 files changed, 41 insertions, 20 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..867d7a9
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "libvterm"]
+ path = vendor/libvterm
+ url = https://github.com/neovim/libvterm
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 521ce54..c06967e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,27 +1,8 @@
cmake_minimum_required(VERSION 3.0.2)
+include(ExternalProject)
project(emacs-libvterm C)
-# Look for the header file.
-find_path(LIBVTERM_INCLUDE_DIR NAMES
- vterm.h
- )
-
-if(NOT LIBVTERM_INCLUDE_DIR)
- message(FATAL_ERROR "vterm.h not found")
-endif()
-
-find_library(LIBVTERM_LIBRARY NAMES
- vterm
- libvterm
- )
-
-if(NOT LIBVTERM_LIBRARY)
- message(FATAL_ERROR "libvterm not found")
-endif()
-
-include_directories(${LIBVTERM_INCLUDE_DIR})
-
add_library(vterm-module MODULE vterm-module.c utf8.c elisp.c)
set_target_properties(vterm-module PROPERTIES
C_STANDARD 99
@@ -30,6 +11,43 @@ set_target_properties(vterm-module PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}
)
+# Look for the header file.
+option(USE_SYSTEM_LIBVTERM "Use system libvterm instead of the vendored version." OFF)
+
+if(USE_SYSTEM_LIBVTERM)
+ find_path(LIBVTERM_INCLUDE_DIR NAMES
+ vterm.h
+ )
+
+ if(NOT LIBVTERM_INCLUDE_DIR)
+ message(FATAL_ERROR "vterm.h not found")
+ endif()
+
+ find_library(LIBVTERM_LIBRARY NAMES
+ vterm
+ libvterm
+ )
+
+ if(NOT LIBVTERM_LIBRARY)
+ message(FATAL_ERROR "libvterm not found")
+ endif()
+else()
+ ExternalProject_add(libvterm
+ PREFIX ${PROJECT_SOURCE_DIR}/vendor/libvterm
+ SOURCE_DIR ${PROJECT_SOURCE_DIR}/vendor/libvterm
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND make
+ BUILD_IN_SOURCE ON
+ INSTALL_COMMAND "")
+
+ set(LIBVTERM_INCLUDE_DIR vendor/libvterm/include)
+ set(LIBVTERM_LIBRARY ${PROJECT_SOURCE_DIR}/vendor/libvterm/.libs/libvterm.a)
+
+ add_dependencies(vterm-module libvterm)
+endif()
+
+include_directories(${LIBVTERM_INCLUDE_DIR})
+
# Link with libvterm
target_link_libraries(vterm-module ${LIBVTERM_LIBRARY})
diff --git a/vendor/libvterm b/vendor/libvterm
new file mode 160000
+Subproject 7a3913a4f465fbf4f59a049f43da8d97fc573a9