aboutsummaryrefslogtreecommitdiff
path: root/third-party/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'third-party/cmake')
-rw-r--r--third-party/cmake/BuildGperf.cmake3
-rw-r--r--third-party/cmake/BuildLibtermkey.cmake24
-rw-r--r--third-party/cmake/BuildLibuv.cmake13
-rw-r--r--third-party/cmake/BuildLuajit.cmake6
-rw-r--r--third-party/cmake/BuildLuv.cmake19
-rw-r--r--third-party/cmake/PatchLuv.cmake29
-rw-r--r--third-party/cmake/libtermkeyCMakeLists.txt34
7 files changed, 84 insertions, 44 deletions
diff --git a/third-party/cmake/BuildGperf.cmake b/third-party/cmake/BuildGperf.cmake
index fd11aa1998..fa8b35f383 100644
--- a/third-party/cmake/BuildGperf.cmake
+++ b/third-party/cmake/BuildGperf.cmake
@@ -40,7 +40,7 @@ if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
BuildGperf(
CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/gperf/configure
- --prefix=${HOSTDEPS_INSTALL_DIR}
+ --prefix=${HOSTDEPS_INSTALL_DIR} MAKE=${MAKE_PRG}
INSTALL_COMMAND ${MAKE_PRG} install)
elseif(MSVC OR MINGW)
@@ -61,4 +61,3 @@ elseif(MSVC OR MINGW)
else()
message(FATAL_ERROR "Trying to build gperf in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif()
-
diff --git a/third-party/cmake/BuildLibtermkey.cmake b/third-party/cmake/BuildLibtermkey.cmake
index b5cd0c4ca6..8147c47e1e 100644
--- a/third-party/cmake/BuildLibtermkey.cmake
+++ b/third-party/cmake/BuildLibtermkey.cmake
@@ -11,14 +11,22 @@ ExternalProject_Add(libtermkey
-DTARGET=libtermkey
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
- CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libtermkey
- -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
- # Pass toolchain
- -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- # Hack to avoid -rdynamic in Mingw
- -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS=""
- -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
+ PATCH_COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libtermkey init
+ COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libtermkey apply --ignore-whitespace
+ ${CMAKE_CURRENT_SOURCE_DIR}/patches/libtermkey-Add-support-for-Windows.patch
+ CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt
+ ${DEPS_BUILD_DIR}/src/libtermkey/CMakeLists.txt
+ COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libtermkey
+ -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
+ # Pass toolchain
+ -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ # Hack to avoid -rdynamic in Mingw
+ -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS=""
+ -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
+ -DUNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include
+ -DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
else()
diff --git a/third-party/cmake/BuildLibuv.cmake b/third-party/cmake/BuildLibuv.cmake
index f6a9660d1c..084e707f92 100644
--- a/third-party/cmake/BuildLibuv.cmake
+++ b/third-party/cmake/BuildLibuv.cmake
@@ -7,7 +7,7 @@ function(BuildLibuv)
cmake_parse_arguments(_libuv
"BUILD_IN_SOURCE"
"TARGET"
- "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
+ "PATCH_COMMAND;CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
${ARGN})
if(NOT _libuv_CONFIGURE_COMMAND AND NOT _libuv_BUILD_COMMAND
@@ -31,6 +31,7 @@ function(BuildLibuv)
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
BUILD_IN_SOURCE ${_libuv_BUILD_IN_SOURCE}
+ PATCH_COMMAND "${_libuv_PATCH_COMMAND}"
CONFIGURE_COMMAND "${_libuv_CONFIGURE_COMMAND}"
BUILD_COMMAND "${_libuv_BUILD_COMMAND}"
INSTALL_COMMAND "${_libuv_INSTALL_COMMAND}")
@@ -41,9 +42,14 @@ set(UNIX_CFGCMD sh ${DEPS_BUILD_DIR}/src/libuv/autogen.sh &&
--prefix=${DEPS_INSTALL_DIR} --libdir=${DEPS_INSTALL_DIR}/lib
CC=${DEPS_C_COMPILER})
+set(LIBUV_PATCH_COMMAND
+${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv init
+ COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv apply
+ ${CMAKE_CURRENT_SOURCE_DIR}/patches/libuv-overlapped.patch)
+
if(UNIX)
BuildLibuv(
- CONFIGURE_COMMAND ${UNIX_CFGCMD}
+ CONFIGURE_COMMAND ${UNIX_CFGCMD} MAKE=${MAKE_PRG}
INSTALL_COMMAND ${MAKE_PRG} V=1 install)
elseif(MINGW AND CMAKE_CROSSCOMPILING)
@@ -54,6 +60,7 @@ elseif(MINGW AND CMAKE_CROSSCOMPILING)
# Build libuv for the target
BuildLibuv(
+ PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET}
INSTALL_COMMAND ${MAKE_PRG} V=1 install)
@@ -61,6 +68,7 @@ elseif(MINGW)
# Native MinGW
BuildLibUv(BUILD_IN_SOURCE
+ PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} -f Makefile.mingw
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/lib
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/libuv/libuv.a ${DEPS_INSTALL_DIR}/lib
@@ -72,6 +80,7 @@ elseif(WIN32 AND MSVC)
set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE})
BuildLibUv(BUILD_IN_SOURCE
+ PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibuvCMakeLists.txt
${DEPS_BUILD_DIR}/src/libuv/CMakeLists.txt
diff --git a/third-party/cmake/BuildLuajit.cmake b/third-party/cmake/BuildLuajit.cmake
index e65a81bba5..2fda221b12 100644
--- a/third-party/cmake/BuildLuajit.cmake
+++ b/third-party/cmake/BuildLuajit.cmake
@@ -35,10 +35,16 @@ function(BuildLuajit)
INSTALL_COMMAND "${_luajit_INSTALL_COMMAND}")
endfunction()
+if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
+ set(AMD64_ABI "LDFLAGS=-lpthread -lc++abi")
+else()
+ set(AMD64_ABI "")
+endif()
set(INSTALLCMD_UNIX ${MAKE_PRG} CFLAGS=-fPIC
CFLAGS+=-DLUAJIT_DISABLE_JIT
CFLAGS+=-DLUA_USE_APICHECK
CFLAGS+=-DLUA_USE_ASSERT
+ ${AMD64_ABI}
CCDEBUG+=-g
Q=
install)
diff --git a/third-party/cmake/BuildLuv.cmake b/third-party/cmake/BuildLuv.cmake
index 2a786dd8f3..339264746c 100644
--- a/third-party/cmake/BuildLuv.cmake
+++ b/third-party/cmake/BuildLuv.cmake
@@ -37,9 +37,17 @@ set(LUV_SRC_DIR ${DEPS_BUILD_DIR}/src/luv)
set(LUV_INCLUDE_FLAGS
"-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.0")
+# Replace luv default rockspec with the alternate one under the "rockspecs"
+# directory
set(LUV_PATCH_COMMAND
- ${CMAKE_COMMAND} -DLUV_SRC_DIR=${LUV_SRC_DIR}
- -P ${PROJECT_SOURCE_DIR}/cmake/PatchLuv.cmake)
+ ${CMAKE_COMMAND} -E copy_directory ${LUV_SRC_DIR}/rockspecs ${LUV_SRC_DIR})
+if(MINGW)
+ set(LUV_PATCH_COMMAND
+ ${LUV_PATCH_COMMAND}
+ COMMAND ${GIT_EXECUTABLE} -C ${LUV_SRC_DIR} init
+ COMMAND ${GIT_EXECUTABLE} -C ${LUV_SRC_DIR} apply --ignore-whitespace
+ ${CMAKE_CURRENT_SOURCE_DIR}/patches/luv-Add-missing-definitions-for-MinGW.patch)
+endif()
set(LUV_CONFIGURE_COMMAND_COMMON
${CMAKE_COMMAND} ${LUV_SRC_DIR}
@@ -78,7 +86,12 @@ else()
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS} -fPIC")
endif()
-set(LUV_BUILD_COMMAND ${CMAKE_COMMAND} --build .)
+if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND
+ (CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly"))
+ set(LUV_BUILD_COMMAND ${CMAKE_COMMAND} "-DCMAKE_MAKE_PROGRAM=gmake" --build .)
+else()
+ set(LUV_BUILD_COMMAND ${CMAKE_COMMAND} --build .)
+endif()
set(LUV_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install)
BuildLuv(PATCH_COMMAND ${LUV_PATCH_COMMAND}
diff --git a/third-party/cmake/PatchLuv.cmake b/third-party/cmake/PatchLuv.cmake
deleted file mode 100644
index 96595a2f30..0000000000
--- a/third-party/cmake/PatchLuv.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# replace luv default rockspec with the alternate one under the "rockspecs"
-# directory
-file(GLOB LUV_ROCKSPEC RELATIVE ${LUV_SRC_DIR} ${LUV_SRC_DIR}/*.rockspec)
-file(RENAME ${LUV_SRC_DIR}/rockspecs/${LUV_ROCKSPEC} ${LUV_SRC_DIR}/${LUV_ROCKSPEC})
-
-# Some versions of mingw are missing defines required by luv dns module, add
-# them now
-set(LUV_SRC_DNS_C_DEFS
-"#ifndef AI_NUMERICSERV
-# define AI_NUMERICSERV 0x0008
-#endif
-#ifndef AI_ALL
-# define AI_ALL 0x00000100
-#endif
-#ifndef AI_ADDRCONFIG
-# define AI_ADDRCONFIG 0x00000400
-#endif
-#ifndef AI_V4MAPPED
-# define AI_V4MAPPED 0x00000800
-#endif")
-
-file(READ ${LUV_SRC_DIR}/src/dns.c LUV_SRC_DNS_C)
-string(REPLACE
- "\n#include <netdb.h>"
- "\n#include <netdb.h>\n#else\n${LUV_SRC_DNS_C_DEFS}"
- LUV_SRC_DNS_C_PATCHED
- "${LUV_SRC_DNS_C}")
-file(WRITE ${LUV_SRC_DIR}/src/dns.c "${LUV_SRC_DNS_C_PATCHED}")
-
diff --git a/third-party/cmake/libtermkeyCMakeLists.txt b/third-party/cmake/libtermkeyCMakeLists.txt
new file mode 100644
index 0000000000..cb57631c1c
--- /dev/null
+++ b/third-party/cmake/libtermkeyCMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 2.8.7)
+project(libtermkey)
+
+add_definitions(-D _CRT_SECURE_NO_WARNINGS)
+add_definitions(-DHAVE_UNIBILIUM)
+if(NOT MSVC)
+ add_definitions(-std=c99)
+endif()
+
+include_directories(${PROJECT_BINARY_DIR}/t)
+include_directories(SYSTEM ${UNIBILIUM_INCLUDE_DIRS})
+
+add_library(termkey termkey.c driver-csi.c driver-ti.c)
+set_target_properties(termkey PROPERTIES
+ PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/termkey.h)
+target_link_libraries(termkey ${UNIBILIUM_LIBRARIES})
+
+include(GNUInstallDirs)
+install(TARGETS termkey
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+enable_testing()
+file(GLOB TESTSOURCES "t/[0-9]*.c")
+foreach(f ${TESTSOURCES})
+ get_filename_component(t ${f} NAME_WE)
+ if(${t} STREQUAL 05read)
+ continue()
+ endif()
+
+ add_executable("test_${t}" ${f} t/taplib.c)
+ target_link_libraries("test_${t}" termkey)
+ add_test("${t}" "test_${t}")
+endforeach()