2020-11-21 22:13:27 -05:00
|
|
|
# 3.14.0 introduced NAME_WLE
|
2020-08-13 23:38:10 -04:00
|
|
|
cmake_minimum_required(VERSION 3.14.0)
|
2021-09-26 12:35:50 -04:00
|
|
|
project(notcurses VERSION 2.4.3
|
2020-08-09 17:47:21 -04:00
|
|
|
DESCRIPTION "Blingful UI for modern terminal emulators"
|
2019-11-17 05:04:41 -05:00
|
|
|
HOMEPAGE_URL "https://nick-black.com/dankwiki/index.php/notcurses"
|
|
|
|
LANGUAGES C CXX)
|
2019-12-03 13:31:04 -05:00
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2019-11-17 05:04:41 -05:00
|
|
|
set(CMAKE_C_STANDARD 11)
|
2019-11-27 01:02:05 -05:00
|
|
|
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
2019-12-27 17:20:20 -05:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
2019-11-27 01:02:05 -05:00
|
|
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
2019-11-17 05:04:41 -05:00
|
|
|
|
2020-07-20 20:59:49 -04:00
|
|
|
include(CTest)
|
2019-11-17 05:04:41 -05:00
|
|
|
include(GNUInstallDirs)
|
2020-07-20 20:59:49 -04:00
|
|
|
include(CMakeDependentOption)
|
2020-08-18 02:50:02 -04:00
|
|
|
include(FeatureSummary)
|
2020-02-22 21:28:36 -05:00
|
|
|
|
2020-02-18 12:36:16 -05:00
|
|
|
###################### USER-SELECTABLE OPTIONS ###########################
|
2020-05-29 02:47:29 -04:00
|
|
|
# BUILD_TESTING is defined by CTest
|
2020-02-18 12:36:16 -05:00
|
|
|
option(DFSG_BUILD "DFSG build (no non-free media/code)" OFF)
|
2020-05-19 23:12:27 -04:00
|
|
|
option(USE_COVERAGE "Assess code coverage with llvm-cov/lcov" OFF)
|
2020-07-20 20:59:49 -04:00
|
|
|
cmake_dependent_option(
|
|
|
|
USE_DOCTEST "Build notcurses-tester with doctest" ON
|
|
|
|
"${BUILD_TESTING}" OFF
|
|
|
|
)
|
2020-02-20 00:25:59 -05:00
|
|
|
option(USE_DOXYGEN "Build HTML cross reference with doxygen" OFF)
|
2021-08-23 21:42:08 -04:00
|
|
|
option(USE_GPM "Enable libgpm console mouse support" OFF)
|
2020-02-18 12:36:16 -05:00
|
|
|
option(USE_PANDOC "Build man pages and HTML reference with pandoc" ON)
|
2020-08-29 18:55:21 -04:00
|
|
|
option(USE_POC "Build small, uninstalled proof-of-concept binaries" ON)
|
2021-05-01 21:25:58 -03:00
|
|
|
option(USE_QRCODEGEN "Enable libqrcodegen QR code support" OFF)
|
2020-05-21 23:46:25 -04:00
|
|
|
option(USE_STATIC "Build static libraries (in addition to shared)" ON)
|
2020-04-23 07:09:54 -04:00
|
|
|
set(USE_MULTIMEDIA "ffmpeg" CACHE STRING "Multimedia engine, one of 'ffmpeg', 'oiio', or 'none'")
|
|
|
|
set_property(CACHE USE_MULTIMEDIA PROPERTY STRINGS ffmpeg oiio none)
|
2021-06-01 04:08:24 -04:00
|
|
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
|
|
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE
|
|
|
|
STRING "Choose the build mode." FORCE)
|
|
|
|
endif()
|
2020-05-19 23:12:27 -04:00
|
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release MinSizeRel RelWithDebInfo Coverage)
|
2020-02-18 12:36:16 -05:00
|
|
|
############## END (additional) USER-SELECTABLE OPTIONS ##################
|
2020-04-23 07:09:54 -04:00
|
|
|
set(USE_FFMPEG OFF)
|
|
|
|
set(USE_OIIO OFF)
|
|
|
|
if(${USE_MULTIMEDIA} STREQUAL "ffmpeg")
|
|
|
|
set(USE_FFMPEG ON)
|
|
|
|
elseif(${USE_MULTIMEDIA} STREQUAL "oiio")
|
|
|
|
set(USE_OIIO ON)
|
2020-04-25 15:52:23 -04:00
|
|
|
elseif(NOT ${USE_MULTIMEDIA} STREQUAL "none")
|
|
|
|
message(FATAL_ERROR "USE_MULTIMEDIA must be one of 'oiio', 'ffmpeg', 'none' (was '${USE_MULTIMEDIA}')")
|
2020-04-23 07:09:54 -04:00
|
|
|
endif()
|
2019-12-25 02:00:53 -05:00
|
|
|
|
2021-08-17 22:34:48 -04:00
|
|
|
message(STATUS "Requested multimedia engine: ${USE_MULTIMEDIA}")
|
|
|
|
message(STATUS "Requested build mode: ${CMAKE_BUILD_TYPE}")
|
|
|
|
|
2021-02-10 16:07:40 -05:00
|
|
|
string(APPEND CMAKE_C_FLAGS_DEBUG " -Og")
|
|
|
|
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -Og")
|
2020-05-19 23:12:27 -04:00
|
|
|
if("${USE_COVERAGE}")
|
|
|
|
if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
|
|
|
|
message(FATAL_ERROR "USE_COVERAGE was on but CC isn't clang")
|
|
|
|
endif()
|
|
|
|
if(NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
|
|
|
|
message(FATAL_ERROR "USE_COVERAGE was on but CXX isn't clang++")
|
|
|
|
endif()
|
|
|
|
# FIXME requires clang11+
|
|
|
|
string(APPEND CMAKE_C_FLAGS_DEBUG " --coverage -fprofile-instr-generate -fcoverage-mapping")
|
|
|
|
string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage -fprofile-instr-generate -fcoverage-mapping")
|
|
|
|
endif()
|
2020-05-06 05:24:23 -04:00
|
|
|
|
2021-08-17 22:34:48 -04:00
|
|
|
# under msys2 (and all other operating systems) we want pkgconfig. when
|
|
|
|
# building with visual studio, don't require it.
|
|
|
|
if(NOT MSVC)
|
2021-01-18 14:10:04 -05:00
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
|
|
set(PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
2021-07-22 11:48:38 -05:00
|
|
|
elseif(APPLE)
|
2021-07-22 11:53:07 -05:00
|
|
|
# surely there's a better way to do this? alas, seems necessary to pull the
|
|
|
|
# pkg-config files out of Homebrew.
|
|
|
|
if(NOT DEFINED ENV{PKG_CONFIG_PATH})
|
2021-09-28 01:37:44 -04:00
|
|
|
set(ENV{PKG_CONFIG_PATH} "/usr/local/opt/ncurses/lib/pkgconfig")
|
2021-07-22 11:53:07 -05:00
|
|
|
endif()
|
2021-07-22 11:48:38 -05:00
|
|
|
set(PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
2021-01-18 14:10:04 -05:00
|
|
|
else()
|
|
|
|
set(PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/libdata/pkgconfig")
|
|
|
|
endif()
|
2019-11-17 12:55:12 -05:00
|
|
|
find_package(PkgConfig REQUIRED)
|
2020-06-25 01:39:43 -04:00
|
|
|
# some distros (<cough>motherfucking alpine</cough> subsume terminfo directly
|
|
|
|
# into ncurses. accept either, and may god have mercy on our souls.
|
|
|
|
pkg_search_module(TERMINFO REQUIRED tinfo>=6.1 ncursesw>=6.1)
|
2020-08-29 22:32:27 -04:00
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND terminfo)
|
|
|
|
set_package_properties(terminfo PROPERTIES TYPE REQUIRED)
|
2021-05-08 13:48:14 -04:00
|
|
|
set(PKGCONF_REQ_PRIV "${TERMINFO_LIBRARIES}")
|
2020-02-18 12:36:16 -05:00
|
|
|
if(${USE_FFMPEG})
|
2020-08-29 22:32:27 -04:00
|
|
|
pkg_check_modules(AVCODEC REQUIRED libavcodec>=57.0)
|
2019-11-28 11:15:29 -05:00
|
|
|
pkg_check_modules(AVFORMAT REQUIRED libavformat>=57.0)
|
2020-02-06 22:55:55 -05:00
|
|
|
pkg_check_modules(AVUTIL REQUIRED libavutil>=56.0)
|
2019-11-28 11:15:29 -05:00
|
|
|
pkg_check_modules(SWSCALE REQUIRED libswscale>=5.0)
|
2020-08-29 22:32:27 -04:00
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND FFMpeg)
|
2020-04-24 00:05:01 -04:00
|
|
|
elseif(${USE_OIIO})
|
2020-04-25 21:50:42 -04:00
|
|
|
pkg_check_modules(OIIO REQUIRED OpenImageIO>=2.1)
|
2020-08-29 22:32:27 -04:00
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND OpenImageIO)
|
2019-12-25 02:00:53 -05:00
|
|
|
endif()
|
2021-08-17 22:34:48 -04:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# global compiler flags
|
|
|
|
add_compile_definitions(_FORTIFY_SOURCE=2)
|
|
|
|
add_compile_options(-Wall -Wextra -W -Wshadow -Wformat -Wformat-security
|
2021-09-03 05:35:48 -04:00
|
|
|
-fexceptions -fstrict-aliasing)
|
2021-08-17 22:34:48 -04:00
|
|
|
|
|
|
|
# don't use REQUIRED with subsequent find_package() operations; we use
|
|
|
|
# feature_summary + set_package_properties to fail in one fell swoop.
|
|
|
|
find_package(Threads)
|
|
|
|
set_package_properties(Threads PROPERTIES TYPE REQUIRED)
|
|
|
|
find_package(ZLIB)
|
|
|
|
set_package_properties(ZLIB PROPERTIES TYPE REQUIRED)
|
|
|
|
# platform-specific logics
|
|
|
|
if(WIN32)
|
2021-08-28 20:08:42 -04:00
|
|
|
set(LIBRT_LIBRARIES wsock32 ws2_32 Secur32)
|
2021-08-17 22:34:48 -04:00
|
|
|
elseif(NOT APPLE)
|
|
|
|
find_library(LIBM m REQUIRED)
|
|
|
|
find_library(LIBRT rt REQUIRED)
|
|
|
|
endif()
|
|
|
|
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
|
|
include_directories(/usr/local/include)
|
|
|
|
link_directories(/usr/local/lib)
|
|
|
|
set(CMAKE_REQUIRED_INCLUDES /usr/local/include)
|
|
|
|
endif()
|
2021-07-12 17:04:40 -05:00
|
|
|
|
2020-07-22 03:30:02 -04:00
|
|
|
if(${USE_DOCTEST})
|
2020-08-18 02:50:02 -04:00
|
|
|
find_package(doctest 2.3.5)
|
|
|
|
set_package_properties(doctest PROPERTIES TYPE REQUIRED)
|
2020-07-22 03:30:02 -04:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# don't cache these, or installing them requires clearing the cache to be found.
|
|
|
|
# this is going to be true for anything lacking pkg-config/CMake support.
|
2021-07-10 17:54:06 -04:00
|
|
|
# unigbrk.h was introduced in libunistring 0.9.4, 2010-02-14.
|
2020-07-23 21:37:44 -04:00
|
|
|
unset(HAVE_UNISTRING_H CACHE)
|
2021-07-10 17:54:06 -04:00
|
|
|
check_include_file("unigbrk.h" HAVE_UNISTRING_H)
|
2020-07-22 03:30:02 -04:00
|
|
|
if(NOT "${HAVE_UNISTRING_H}")
|
2021-07-10 17:54:06 -04:00
|
|
|
message(FATAL_ERROR "Couldn't find unigbrk.h from GNU libunistring")
|
2020-07-22 03:30:02 -04:00
|
|
|
endif()
|
2021-05-01 19:51:20 -04:00
|
|
|
find_library(unistring unistring REQUIRED)
|
2020-08-29 22:32:27 -04:00
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND libunistring)
|
|
|
|
set_package_properties(libunistring PROPERTIES TYPE REQUIRED)
|
2021-08-23 21:42:08 -04:00
|
|
|
if(${USE_GPM}) # no pkgconfig from gpm
|
|
|
|
unset(HAVE_GPM_H CACHE)
|
|
|
|
check_include_file("gpm.h" HAVE_GPM_H)
|
|
|
|
if(NOT "${HAVE_GPM_H}")
|
|
|
|
message(FATAL_ERROR "Couldn't find gpm.h from libgpm")
|
|
|
|
endif()
|
|
|
|
find_library(gpm gpm REQUIRED)
|
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND libgpm)
|
|
|
|
set_package_properties(libgpm PROPERTIES TYPE REQUIRED)
|
|
|
|
endif()
|
2020-07-23 21:37:44 -04:00
|
|
|
unset(HAVE_QRCODEGEN_H CACHE)
|
2020-05-07 17:14:45 -04:00
|
|
|
if("${USE_QRCODEGEN}")
|
2020-07-22 03:30:02 -04:00
|
|
|
check_include_file("qrcodegen/qrcodegen.h" HAVE_QRCODEGEN_H)
|
2020-05-07 17:14:45 -04:00
|
|
|
if(NOT "${HAVE_QRCODEGEN_H}")
|
|
|
|
message(FATAL_ERROR "USE_QRCODEGEN is active, but couldn't find qrcodegen.h")
|
|
|
|
endif()
|
2020-08-29 22:32:27 -04:00
|
|
|
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND qrcodegen)
|
2020-05-07 17:14:45 -04:00
|
|
|
endif()
|
2021-06-06 10:48:49 -05:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
2019-11-17 12:55:12 -05:00
|
|
|
|
2021-01-09 23:22:36 -05:00
|
|
|
file(GLOB COMPATSRC CONFIGURE_DEPENDS src/compat/compat.c)
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# libnotcurses-core (core shared library, core static library)
|
|
|
|
file(GLOB NCCORESRCS CONFIGURE_DEPENDS src/lib/*.c src/lib/*.cpp)
|
|
|
|
add_library(notcurses-core SHARED ${NCCORESRCS} ${COMPATSRC})
|
2020-05-21 23:46:25 -04:00
|
|
|
if(${USE_STATIC})
|
2021-01-18 14:10:04 -05:00
|
|
|
add_library(notcurses-core-static STATIC ${NCCORESRCS})
|
2020-05-21 23:46:25 -04:00
|
|
|
else()
|
2021-01-18 14:10:04 -05:00
|
|
|
add_library(notcurses-core-static STATIC EXCLUDE_FROM_ALL ${NCCORESRCS})
|
2020-05-21 23:46:25 -04:00
|
|
|
endif()
|
2021-07-12 17:04:40 -05:00
|
|
|
# don't want these on freebsd/dragonfly/osx
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
|
|
target_compile_definitions(notcurses-core
|
|
|
|
PUBLIC
|
|
|
|
_XOPEN_SOURCE=700 # wcwidth(3) requires _XOPEN_SOURCE, and is in our headers
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
|
|
|
)
|
|
|
|
target_compile_definitions(notcurses-core-static
|
|
|
|
PUBLIC
|
|
|
|
_XOPEN_SOURCE=700 # wcwidth(3) requires _XOPEN_SOURCE, and is in our headers
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
|
|
|
)
|
|
|
|
endif()
|
2021-01-18 14:10:04 -05:00
|
|
|
set_target_properties(notcurses-core PROPERTIES
|
2020-05-28 17:24:11 -04:00
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
set_target_properties(notcurses-core-static PROPERTIES
|
2020-05-28 17:24:11 -04:00
|
|
|
VERSION ${PROJECT_VERSION}
|
2021-01-21 03:18:40 -05:00
|
|
|
OUTPUT_NAME notcurses-core
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_include_directories(notcurses-core
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2019-11-17 05:04:41 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-01-09 23:22:36 -05:00
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2019-11-17 05:04:41 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2019-12-27 05:27:51 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_INCLUDE_DIRS}"
|
2019-12-25 02:00:53 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_include_directories(notcurses-core-static
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2020-02-08 20:49:10 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-01-09 23:22:36 -05:00
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2020-02-08 20:49:10 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2020-02-09 00:08:11 -05:00
|
|
|
"${TERMINFO_STATIC_INCLUDE_DIRS}"
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_STATIC_INCLUDE_DIRS}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(notcurses-core
|
2019-12-25 02:00:53 -05:00
|
|
|
PRIVATE
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_LIBRARIES}"
|
2019-12-25 02:00:53 -05:00
|
|
|
"${TERMINFO_LIBRARIES}"
|
2021-07-12 19:04:54 -04:00
|
|
|
"${LIBM}"
|
2021-05-01 21:25:58 -03:00
|
|
|
"${unistring}"
|
2021-08-24 01:30:22 -04:00
|
|
|
"${gpm}"
|
2020-04-08 09:37:11 -04:00
|
|
|
PUBLIC
|
|
|
|
Threads::Threads
|
2021-08-05 03:34:45 -04:00
|
|
|
"${LIBRT_LIBRARIES}"
|
2019-12-25 02:00:53 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(notcurses-core-static
|
2020-02-08 20:49:10 -05:00
|
|
|
PRIVATE
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_STATIC_LIBRARIES}"
|
2020-02-09 00:08:11 -05:00
|
|
|
"${TERMINFO_STATIC_LIBRARIES}"
|
2021-07-12 19:04:54 -04:00
|
|
|
"${LIBM}"
|
2021-05-01 21:25:58 -03:00
|
|
|
"${unistring}"
|
2021-08-24 01:30:22 -04:00
|
|
|
"${gpm}"
|
2020-04-08 09:37:11 -04:00
|
|
|
PUBLIC
|
|
|
|
Threads::Threads
|
2021-08-05 03:34:45 -04:00
|
|
|
"${LIBRT_LIBRARIES}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_directories(notcurses-core
|
2019-12-25 02:00:53 -05:00
|
|
|
PRIVATE
|
|
|
|
"${TERMINFO_LIBRARY_DIRS}"
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_LIBRARY_DIRS}"
|
2019-12-25 02:00:53 -05:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_directories(notcurses-core-static
|
2020-02-08 20:49:10 -05:00
|
|
|
PRIVATE
|
2020-02-09 00:08:11 -05:00
|
|
|
"${TERMINFO_STATIC_LIBRARY_DIRS}"
|
2021-07-15 04:34:30 -04:00
|
|
|
"${ZLIB_STATIC_LIBRARY_DIRS}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2020-04-20 23:26:41 -04:00
|
|
|
if(${USE_QRCODEGEN})
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(notcurses-core PRIVATE qrcodegen)
|
|
|
|
target_link_libraries(notcurses-core-static PRIVATE qrcodegen)
|
2020-04-20 23:26:41 -04:00
|
|
|
endif()
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# libnotcurses (multimedia shared library+static library)
|
|
|
|
file(GLOB NCSRCS CONFIGURE_DEPENDS src/media/*.c src/media/*.cpp)
|
|
|
|
add_library(notcurses SHARED ${NCSRCS} ${COMPATSRC})
|
|
|
|
if(${USE_STATIC})
|
|
|
|
add_library(notcurses-static STATIC ${NCSRCS})
|
|
|
|
else()
|
|
|
|
add_library(notcurses-static STATIC EXCLUDE_FROM_ALL ${NCSRCS})
|
|
|
|
endif()
|
2021-01-21 03:18:40 -05:00
|
|
|
set_target_properties(notcurses PROPERTIES
|
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
|
|
)
|
|
|
|
set_target_properties(notcurses-static PROPERTIES
|
|
|
|
VERSION ${PROJECT_VERSION}
|
2021-01-18 14:10:04 -05:00
|
|
|
OUTPUT_NAME notcurses
|
|
|
|
)
|
2019-12-25 02:00:53 -05:00
|
|
|
target_include_directories(notcurses
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2021-01-18 14:10:04 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2021-01-18 14:10:04 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2021-07-12 17:43:07 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2021-01-18 14:10:04 -05:00
|
|
|
)
|
|
|
|
target_include_directories(notcurses-static
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2021-01-18 14:10:04 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2021-01-18 14:10:04 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2021-07-12 17:43:07 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2021-01-18 14:10:04 -05:00
|
|
|
)
|
2021-08-05 03:34:45 -04:00
|
|
|
target_compile_definitions(notcurses
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
|
|
|
)
|
|
|
|
target_compile_definitions(notcurses-static
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(notcurses
|
|
|
|
PUBLIC
|
|
|
|
notcurses-core
|
|
|
|
)
|
|
|
|
target_link_libraries(notcurses-static
|
2020-02-01 04:12:54 -05:00
|
|
|
PUBLIC
|
2021-01-18 14:10:04 -05:00
|
|
|
notcurses-core-static
|
|
|
|
)
|
|
|
|
if(${USE_FFMPEG})
|
|
|
|
target_include_directories(notcurses
|
|
|
|
PRIVATE
|
2020-02-06 22:55:55 -05:00
|
|
|
"${AVCODEC_INCLUDE_DIRS}"
|
2019-12-27 05:27:51 -05:00
|
|
|
"${AVFORMAT_INCLUDE_DIRS}"
|
2020-02-01 04:12:54 -05:00
|
|
|
"${AVUTIL_INCLUDE_DIRS}"
|
2019-12-27 05:27:51 -05:00
|
|
|
"${SWSCALE_INCLUDE_DIRS}"
|
2019-11-17 12:55:12 -05:00
|
|
|
)
|
2020-02-08 20:49:10 -05:00
|
|
|
target_include_directories(notcurses-static
|
2021-01-18 14:10:04 -05:00
|
|
|
PRIVATE
|
2020-02-09 00:08:11 -05:00
|
|
|
"${AVCODEC_STATIC_INCLUDE_DIRS}"
|
|
|
|
"${AVFORMAT_STATIC_INCLUDE_DIRS}"
|
|
|
|
"${AVUTIL_STATIC_INCLUDE_DIRS}"
|
|
|
|
"${SWSCALE_STATIC_INCLUDE_DIRS}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2019-11-17 12:55:12 -05:00
|
|
|
target_link_libraries(notcurses
|
2019-11-23 09:05:32 -05:00
|
|
|
PRIVATE
|
2020-02-06 22:55:55 -05:00
|
|
|
"${AVCODEC_LIBRARIES}"
|
2019-11-24 22:22:18 -05:00
|
|
|
"${AVFORMAT_LIBRARIES}"
|
2019-11-27 17:22:35 -05:00
|
|
|
"${SWSCALE_LIBRARIES}"
|
2020-04-23 07:09:54 -04:00
|
|
|
"${AVUTIL_LIBRARIES}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
|
|
|
target_link_libraries(notcurses-static
|
|
|
|
PRIVATE
|
2020-02-09 00:08:11 -05:00
|
|
|
"${AVCODEC_STATIC_LIBRARIES}"
|
|
|
|
"${AVFORMAT_STATIC_LIBRARIES}"
|
|
|
|
"${SWSCALE_STATIC_LIBRARIES}"
|
2020-04-23 07:09:54 -04:00
|
|
|
"${AVUTIL_STATIC_LIBRARIES}"
|
2019-11-17 05:04:41 -05:00
|
|
|
)
|
2019-12-01 12:42:18 -05:00
|
|
|
target_link_directories(notcurses
|
2020-04-23 07:09:54 -04:00
|
|
|
PRIVATE
|
2020-02-06 22:55:55 -05:00
|
|
|
"${AVCODEC_LIBRARY_DIRS}"
|
2019-12-01 12:42:18 -05:00
|
|
|
"${AVFORMAT_LIBRARY_DIRS}"
|
|
|
|
"${SWSCALE_LIBRARY_DIRS}"
|
2020-04-23 07:09:54 -04:00
|
|
|
"${AVUTIL_LIBRARY_DIRS}"
|
2019-12-01 12:42:18 -05:00
|
|
|
)
|
2020-02-08 20:49:10 -05:00
|
|
|
target_link_directories(notcurses-static
|
2020-04-23 07:09:54 -04:00
|
|
|
PRIVATE
|
2020-02-09 00:08:11 -05:00
|
|
|
"${AVCODEC_STATIC_LIBRARY_DIRS}"
|
|
|
|
"${AVFORMAT_STATIC_LIBRARY_DIRS}"
|
|
|
|
"${SWSCALE_STATIC_LIBRARY_DIRS}"
|
2020-04-23 07:09:54 -04:00
|
|
|
"${AVUTIL_STATIC_LIBRARY_DIRS}"
|
2020-02-08 20:49:10 -05:00
|
|
|
)
|
2020-04-24 00:05:01 -04:00
|
|
|
elseif(${USE_OIIO})
|
|
|
|
target_include_directories(notcurses PUBLIC "${OIIO_INCLUDE_DIRS}")
|
|
|
|
target_include_directories(notcurses-static PUBLIC "${OIIO_STATIC_INCLUDE_DIRS}")
|
|
|
|
target_link_libraries(notcurses PRIVATE ${OIIO_LIBRARIES})
|
|
|
|
target_link_libraries(notcurses-static PRIVATE ${OIIO_STATIC_LIBRARIES})
|
|
|
|
target_link_directories(notcurses PRIVATE ${OIIO_LIBRARY_DIRS})
|
|
|
|
target_link_directories(notcurses-static PRIVATE ${OIIO_STATIC_LIBRARY_DIRS})
|
2019-12-25 02:00:53 -05:00
|
|
|
endif()
|
2019-11-17 05:04:41 -05:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# libnotcurses++ (C++ wrappers)
|
2020-01-07 23:51:34 +01:00
|
|
|
set(NCPP_SOURCES
|
2020-05-02 23:01:21 +02:00
|
|
|
src/libcpp/FDPlane.cc
|
2020-02-15 23:04:39 +01:00
|
|
|
src/libcpp/Menu.cc
|
2020-03-15 00:35:54 +01:00
|
|
|
src/libcpp/MultiSelector.cc
|
2020-01-07 23:51:34 +01:00
|
|
|
src/libcpp/NotCurses.cc
|
|
|
|
src/libcpp/Plane.cc
|
2020-05-02 23:01:21 +02:00
|
|
|
src/libcpp/Plot.cc
|
2020-02-05 17:29:42 -05:00
|
|
|
src/libcpp/Reel.cc
|
2020-01-07 23:51:34 +01:00
|
|
|
src/libcpp/Root.cc
|
2020-02-15 23:04:39 +01:00
|
|
|
src/libcpp/Selector.cc
|
2020-05-02 23:01:21 +02:00
|
|
|
src/libcpp/Subproc.cc
|
2020-01-07 23:51:34 +01:00
|
|
|
src/libcpp/Tablet.cc
|
2020-05-22 22:11:59 +02:00
|
|
|
src/libcpp/Utilities.cc
|
2020-01-07 23:51:34 +01:00
|
|
|
)
|
|
|
|
|
2020-05-21 23:46:25 -04:00
|
|
|
add_library(notcurses++ SHARED ${NCPP_SOURCES})
|
|
|
|
if(${USE_STATIC})
|
|
|
|
add_library(notcurses++-static STATIC ${NCPP_SOURCES})
|
|
|
|
else()
|
|
|
|
add_library(notcurses++-static STATIC EXCLUDE_FROM_ALL ${NCPP_SOURCES})
|
|
|
|
endif()
|
2020-01-07 23:51:34 +01:00
|
|
|
set_target_properties(
|
|
|
|
notcurses++-static PROPERTIES
|
2020-05-28 17:24:11 -04:00
|
|
|
OUTPUT_NAME notcurses++
|
2020-01-07 23:51:34 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
set_target_properties(
|
|
|
|
notcurses++ PROPERTIES
|
2020-05-28 17:24:11 -04:00
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
|
|
OUTPUT_NAME "notcurses++")
|
2020-01-07 23:51:34 +01:00
|
|
|
|
|
|
|
set(NCPP_INCLUDE_DIRS
|
2021-08-24 01:30:22 -04:00
|
|
|
"include"
|
|
|
|
"src"
|
2020-01-07 23:51:34 +01:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
|
|
|
)
|
|
|
|
|
|
|
|
target_include_directories(notcurses++
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2020-01-07 23:51:34 +01:00
|
|
|
PRIVATE ${NCPP_INCLUDE_DIRS}
|
|
|
|
)
|
|
|
|
|
|
|
|
target_include_directories(notcurses++-static
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2020-01-07 23:51:34 +01:00
|
|
|
PRIVATE ${NCPP_INCLUDE_DIRS}
|
|
|
|
)
|
|
|
|
|
|
|
|
target_link_libraries(notcurses++
|
2020-03-15 01:19:47 -04:00
|
|
|
PUBLIC
|
2020-01-07 23:51:34 +01:00
|
|
|
notcurses)
|
|
|
|
|
|
|
|
set(NCPP_COMPILE_OPTIONS
|
|
|
|
-Werror=format-security
|
|
|
|
-Wnull-dereference
|
|
|
|
-Wunused
|
|
|
|
-Wno-c99-extensions
|
|
|
|
-fno-strict-aliasing
|
|
|
|
-ffunction-sections
|
|
|
|
-fno-rtti
|
|
|
|
-fpic
|
|
|
|
)
|
|
|
|
|
|
|
|
set(NCPP_COMPILE_DEFINITIONS_PUBLIC
|
2020-06-16 18:39:08 -04:00
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
2020-01-07 23:51:34 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
target_compile_options(notcurses++
|
|
|
|
PRIVATE
|
2020-06-16 22:46:59 +02:00
|
|
|
${NCPP_COMPILE_OPTIONS}
|
2020-01-07 23:51:34 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
target_compile_options(notcurses++-static
|
|
|
|
PRIVATE
|
2020-06-16 22:46:59 +02:00
|
|
|
${NCPP_COMPILE_OPTIONS}
|
2020-01-07 23:51:34 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
target_compile_definitions(notcurses++
|
|
|
|
PUBLIC
|
|
|
|
${NCPP_COMPILE_DEFINITIONS_PUBLIC}
|
|
|
|
)
|
|
|
|
|
|
|
|
target_compile_definitions(notcurses++-static
|
|
|
|
PUBLIC
|
|
|
|
${NCPP_COMPILE_DEFINITIONS_PUBLIC}
|
|
|
|
)
|
|
|
|
|
2020-04-10 15:59:13 -04:00
|
|
|
file(GLOB NOTCURSES_HEADERS
|
|
|
|
CONFIGURE_DEPENDS
|
|
|
|
LIST_DIRECTORIES false
|
2020-10-10 20:53:45 -04:00
|
|
|
${PROJECT_SOURCE_DIR}/include/notcurses/*.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/version.h)
|
2020-04-10 15:59:13 -04:00
|
|
|
|
2020-01-07 23:51:34 +01:00
|
|
|
file(GLOB NCPP_HEADERS
|
|
|
|
CONFIGURE_DEPENDS
|
|
|
|
LIST_DIRECTORIES false
|
2020-04-23 07:09:54 -04:00
|
|
|
${PROJECT_SOURCE_DIR}/include/ncpp/*.hh)
|
2020-01-07 23:51:34 +01:00
|
|
|
|
|
|
|
file(GLOB NCPP_INTERNAL_HEADERS
|
|
|
|
CONFIGURE_DEPENDS
|
|
|
|
LIST_DIRECTORIES false
|
2020-04-23 07:09:54 -04:00
|
|
|
${PROJECT_SOURCE_DIR}/include/ncpp/internal/*.hh)
|
2020-01-07 23:51:34 +01:00
|
|
|
|
2020-05-09 05:51:00 -04:00
|
|
|
export(PACKAGE notcurses)
|
|
|
|
|
2020-04-10 15:59:13 -04:00
|
|
|
install(FILES ${NOTCURSES_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/notcurses)
|
2020-01-07 23:51:34 +01:00
|
|
|
install(FILES ${NCPP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp)
|
|
|
|
install(FILES ${NCPP_INTERNAL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ncpp/internal)
|
|
|
|
|
2019-12-12 04:52:59 -05:00
|
|
|
# tiny proofs of concept, one binary per source file
|
2020-08-29 18:55:21 -04:00
|
|
|
if(USE_POC)
|
2021-01-18 18:40:55 -05:00
|
|
|
file(GLOB POCSRCS CONFIGURE_DEPENDS src/poc/*.c)
|
2019-12-12 04:52:59 -05:00
|
|
|
foreach(f ${POCSRCS})
|
2021-01-18 18:40:55 -05:00
|
|
|
get_filename_component(fe "${f}" NAME_WE)
|
2021-08-26 08:41:32 -04:00
|
|
|
add_executable(${fe} ${f})
|
2021-01-18 18:40:55 -05:00
|
|
|
target_include_directories(${fe}
|
2021-09-16 03:19:21 -05:00
|
|
|
BEFORE
|
2021-01-18 18:40:55 -05:00
|
|
|
PRIVATE include src "${TERMINFO_INCLUDE_DIRS}"
|
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
|
|
|
target_link_libraries(${fe}
|
2021-07-12 19:04:54 -04:00
|
|
|
PRIVATE notcurses "${TERMINFO_LIBRARIES}" "${LIBM}"
|
2021-01-18 18:40:55 -05:00
|
|
|
)
|
|
|
|
target_link_directories(${fe}
|
|
|
|
PRIVATE "${TERMINFO_LIBRARY_DIRS}"
|
|
|
|
)
|
|
|
|
endforeach()
|
|
|
|
file(GLOB POCPPSRCS CONFIGURE_DEPENDS src/pocpp/*.cpp)
|
|
|
|
foreach(f ${POCPPSRCS})
|
2019-12-12 04:52:59 -05:00
|
|
|
get_filename_component(fe "${f}" NAME_WE)
|
2021-08-26 08:41:32 -04:00
|
|
|
add_executable(${fe} ${f})
|
2019-12-12 04:52:59 -05:00
|
|
|
target_include_directories(${fe}
|
2021-09-16 03:19:21 -05:00
|
|
|
BEFORE
|
2021-01-09 23:22:36 -05:00
|
|
|
PRIVATE include src "${TERMINFO_INCLUDE_DIRS}"
|
2020-04-08 02:12:46 -04:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2019-12-12 04:52:59 -05:00
|
|
|
)
|
|
|
|
target_link_libraries(${fe}
|
2021-07-12 19:04:54 -04:00
|
|
|
PRIVATE notcurses++ "${TERMINFO_LIBRARIES}" "${LIBM}"
|
2019-12-12 04:52:59 -05:00
|
|
|
)
|
|
|
|
target_link_directories(${fe}
|
|
|
|
PRIVATE "${TERMINFO_LIBRARY_DIRS}"
|
|
|
|
)
|
|
|
|
endforeach()
|
2020-08-29 18:55:21 -04:00
|
|
|
endif()
|
2019-12-12 04:52:59 -05:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# notcurses-demo
|
|
|
|
file(GLOB DEMOSRCS CONFIGURE_DEPENDS src/demo/*.c)
|
|
|
|
add_executable(notcurses-demo ${DEMOSRCS} ${COMPATSRC})
|
|
|
|
target_compile_definitions(notcurses-demo
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE
|
|
|
|
)
|
|
|
|
target_include_directories(notcurses-demo
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2020-06-16 03:11:00 -04:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-01-18 14:10:04 -05:00
|
|
|
src
|
2021-08-05 03:28:01 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2020-06-16 03:11:00 -04:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(notcurses-demo
|
2020-06-16 03:11:00 -04:00
|
|
|
PRIVATE
|
|
|
|
notcurses
|
2021-07-12 19:04:54 -04:00
|
|
|
${LIBM}
|
2021-01-18 14:10:04 -05:00
|
|
|
Threads::Threads
|
2020-06-16 03:11:00 -04:00
|
|
|
)
|
|
|
|
|
2021-06-09 20:54:20 -04:00
|
|
|
############################################################################
|
|
|
|
# notcurses-info
|
|
|
|
file(GLOB INFOSRCS CONFIGURE_DEPENDS src/info/*.c)
|
2021-06-23 19:17:19 -04:00
|
|
|
add_executable(notcurses-info ${INFOSRCS} ${COMPATSRC})
|
2021-08-05 03:34:45 -04:00
|
|
|
target_compile_definitions(notcurses-info
|
|
|
|
PRIVATE
|
|
|
|
_GNU_SOURCE _DEFAULT_SOURCE
|
|
|
|
)
|
2021-06-09 20:54:20 -04:00
|
|
|
target_include_directories(notcurses-info
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2021-06-09 20:54:20 -04:00
|
|
|
PRIVATE
|
2021-06-23 19:17:19 -04:00
|
|
|
src
|
2021-06-09 20:54:20 -04:00
|
|
|
include
|
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2021-07-12 17:53:24 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2021-06-09 20:54:20 -04:00
|
|
|
)
|
|
|
|
target_link_libraries(notcurses-info
|
|
|
|
PRIVATE
|
|
|
|
notcurses
|
|
|
|
)
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
2020-04-08 09:13:39 -04:00
|
|
|
# notcurses-input
|
2020-04-02 19:42:17 -04:00
|
|
|
file(GLOB INPUTSRCS CONFIGURE_DEPENDS src/input/input.cpp)
|
2019-11-29 00:20:30 -05:00
|
|
|
add_executable(notcurses-input ${INPUTSRCS})
|
|
|
|
target_include_directories(notcurses-input
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2019-11-29 00:20:30 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2019-11-29 00:20:30 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
|
|
|
target_link_libraries(notcurses-input
|
|
|
|
PRIVATE
|
2020-04-02 19:42:17 -04:00
|
|
|
notcurses++
|
2019-11-29 00:20:30 -05:00
|
|
|
)
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
2021-01-21 03:51:12 -05:00
|
|
|
# nctetris
|
2021-01-18 14:10:04 -05:00
|
|
|
file(GLOB TETRISSRC CONFIGURE_DEPENDS src/tetris/*.cpp)
|
2021-01-21 03:51:12 -05:00
|
|
|
add_executable(nctetris ${TETRISSRC})
|
|
|
|
target_include_directories(nctetris
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2020-11-01 07:08:55 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2020-11-01 07:08:55 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
2021-01-21 03:51:12 -05:00
|
|
|
target_link_libraries(nctetris
|
2020-11-01 07:08:55 -05:00
|
|
|
PRIVATE
|
|
|
|
notcurses++
|
|
|
|
)
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# ncneofetch
|
|
|
|
file(GLOB FETCHSRCS CONFIGURE_DEPENDS src/fetch/*.c)
|
|
|
|
add_executable(ncneofetch ${FETCHSRCS})
|
|
|
|
target_include_directories(ncneofetch
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2020-03-22 17:33:08 -04:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2020-03-22 17:33:08 -04:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2021-08-05 03:34:45 -04:00
|
|
|
src
|
2020-03-22 17:33:08 -04:00
|
|
|
)
|
2021-01-18 14:10:04 -05:00
|
|
|
target_link_libraries(ncneofetch
|
|
|
|
PRIVATE
|
|
|
|
notcurses
|
|
|
|
)
|
|
|
|
|
2021-06-25 14:27:09 -04:00
|
|
|
# documentation source, processed by pandoc into XHTML and man pages. declare
|
|
|
|
# them here so that we can filter out man pages for binaries which aren't
|
|
|
|
# going to be installed.
|
|
|
|
file(GLOB MANSOURCE1 CONFIGURE_DEPENDS doc/man/man1/*.md)
|
|
|
|
file(GLOB MANSOURCE3 CONFIGURE_DEPENDS doc/man/man3/*.md)
|
|
|
|
|
2021-01-20 23:33:10 -05:00
|
|
|
# all further binaries require multimedia support
|
2021-08-04 16:31:40 -04:00
|
|
|
if(${USE_MULTIMEDIA} STREQUAL "none")
|
2021-06-25 14:27:09 -04:00
|
|
|
list(FILTER MANSOURCE1 EXCLUDE REGEX "ncls.1.md")
|
2021-08-04 16:31:40 -04:00
|
|
|
list(FILTER MANSOURCE1 EXCLUDE REGEX "ncplayer.1.md")
|
2021-06-25 14:27:09 -04:00
|
|
|
else()
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# ncls
|
|
|
|
file(GLOB LSSRC CONFIGURE_DEPENDS src/ls/*.cpp)
|
|
|
|
add_executable(ncls ${LSSRC})
|
|
|
|
target_include_directories(ncls
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2021-01-18 14:10:04 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-08-13 15:08:10 -04:00
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2021-01-18 14:10:04 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
2021-08-27 13:34:33 -05:00
|
|
|
target_link_libraries(ncls
|
2020-03-22 17:33:08 -04:00
|
|
|
PRIVATE
|
2021-01-19 20:40:03 -05:00
|
|
|
notcurses++
|
2020-03-22 17:33:08 -04:00
|
|
|
)
|
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
2021-01-18 14:22:54 -05:00
|
|
|
# ncplayer
|
2021-01-18 17:37:17 -05:00
|
|
|
file(GLOB PLAYERSRCS CONFIGURE_DEPENDS src/player/*.cpp)
|
|
|
|
add_executable(ncplayer ${PLAYERSRCS} ${COMPATSRC})
|
2021-01-18 14:22:54 -05:00
|
|
|
target_include_directories(ncplayer
|
2021-08-27 13:34:33 -05:00
|
|
|
BEFORE
|
2019-11-27 16:22:50 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-01-09 23:22:36 -05:00
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2019-11-27 16:22:50 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
|
|
|
)
|
2021-01-18 14:22:54 -05:00
|
|
|
target_link_libraries(ncplayer
|
2019-11-27 15:22:54 -05:00
|
|
|
PRIVATE
|
2020-04-02 19:42:17 -04:00
|
|
|
notcurses++
|
2019-11-27 15:22:54 -05:00
|
|
|
)
|
2019-12-27 01:29:45 -05:00
|
|
|
endif()
|
2019-11-27 15:22:54 -05:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
############################################################################
|
|
|
|
# testing
|
2020-05-29 02:47:29 -04:00
|
|
|
if(${BUILD_TESTING})
|
2021-03-11 23:51:54 -05:00
|
|
|
#set(CMAKE_CTEST_ARGUMENTS "-V")
|
2020-12-06 12:36:31 -05:00
|
|
|
if(${USE_DOCTEST})
|
2021-02-07 20:52:20 -05:00
|
|
|
file(GLOB TESTSRCS CONFIGURE_DEPENDS src/tests/*.cpp)
|
2020-12-06 12:36:31 -05:00
|
|
|
add_executable(notcurses-tester ${TESTSRCS})
|
|
|
|
target_include_directories(notcurses-tester
|
2021-08-24 01:30:22 -04:00
|
|
|
BEFORE
|
2020-12-06 12:36:31 -05:00
|
|
|
PRIVATE
|
|
|
|
include
|
2021-01-09 23:22:36 -05:00
|
|
|
src
|
2021-03-08 08:32:11 -03:00
|
|
|
"${CMAKE_REQUIRED_INCLUDES}"
|
2020-12-06 12:36:31 -05:00
|
|
|
"${PROJECT_BINARY_DIR}/include"
|
2021-07-12 17:53:24 -05:00
|
|
|
"${TERMINFO_INCLUDE_DIRS}"
|
2020-12-06 12:36:31 -05:00
|
|
|
)
|
|
|
|
target_link_libraries(notcurses-tester
|
|
|
|
PRIVATE
|
|
|
|
notcurses++
|
2021-05-01 21:25:58 -03:00
|
|
|
"${unistring}"
|
2020-12-06 12:36:31 -05:00
|
|
|
"${TERMINFO_LIBRARIES}"
|
|
|
|
)
|
2021-07-12 17:53:24 -05:00
|
|
|
target_link_directories(notcurses-tester
|
|
|
|
PRIVATE
|
|
|
|
"${TERMINFO_LIBRARY_DIRS}"
|
|
|
|
)
|
2020-12-06 12:36:31 -05:00
|
|
|
add_test(
|
|
|
|
NAME notcurses-tester
|
2021-06-01 02:25:11 -04:00
|
|
|
COMMAND notcurses-tester -p ${CMAKE_CURRENT_SOURCE_DIR}/data --abort-after=1
|
2020-12-06 12:36:31 -05:00
|
|
|
)
|
|
|
|
set_tests_properties(notcurses-tester PROPERTIES RUN_SERIAL TRUE)
|
|
|
|
install(TARGETS notcurses-tester DESTINATION bin)
|
2021-06-25 14:40:22 -04:00
|
|
|
else()
|
|
|
|
list(FILTER MANSOURCE1 EXCLUDE REGEX "notcurses-tester.1.md")
|
2020-12-06 12:36:31 -05:00
|
|
|
endif()
|
2019-11-17 05:04:41 -05:00
|
|
|
enable_testing()
|
2020-08-08 07:54:09 -04:00
|
|
|
# the accursed Ubuntu buildd sets "TERM=unknown" for unfathomable reasons
|
2020-08-29 19:16:55 -04:00
|
|
|
if(DEFINED ENV{TERM} AND NOT $ENV{TERM} STREQUAL "unknown" AND USE_POC)
|
2021-06-22 18:26:23 -04:00
|
|
|
add_test(
|
|
|
|
NAME notcurses-info
|
|
|
|
COMMAND notcurses-info
|
|
|
|
)
|
2020-06-28 06:04:41 -04:00
|
|
|
add_test(
|
|
|
|
NAME ncpp_build
|
|
|
|
COMMAND ncpp_build
|
|
|
|
)
|
|
|
|
add_test(
|
|
|
|
NAME ncpp_build_exceptions
|
|
|
|
COMMAND ncpp_build_exceptions
|
|
|
|
)
|
2021-08-07 23:57:48 -04:00
|
|
|
add_test(
|
|
|
|
NAME sgr-direct
|
|
|
|
COMMAND sgr-direct
|
|
|
|
)
|
2020-11-27 15:38:36 -05:00
|
|
|
add_test(
|
|
|
|
NAME sgr-full
|
|
|
|
COMMAND sgr-full
|
|
|
|
)
|
2020-06-28 06:04:41 -04:00
|
|
|
add_test(
|
|
|
|
NAME rgb
|
|
|
|
COMMAND rgb
|
|
|
|
)
|
|
|
|
add_test(
|
|
|
|
NAME rgbbg
|
|
|
|
COMMAND rgbbg
|
|
|
|
)
|
2021-08-08 04:16:14 -04:00
|
|
|
set_tests_properties(
|
|
|
|
notcurses-info ncpp_build ncpp_build_exceptions sgr-direct sgr-full rgb rgbbg
|
2020-07-21 22:47:03 -04:00
|
|
|
PROPERTIES RUN_SERIAL TRUE
|
|
|
|
)
|
2020-07-28 13:22:16 -04:00
|
|
|
endif()
|
2021-06-25 14:40:22 -04:00
|
|
|
else()
|
|
|
|
list(FILTER MANSOURCE1 EXCLUDE REGEX "notcurses-tester.1.md")
|
2020-04-08 02:12:46 -04:00
|
|
|
endif()
|
2019-11-17 05:04:41 -05:00
|
|
|
|
2021-06-25 14:27:09 -04:00
|
|
|
# Pandoc documentation (man pages, HTML reference)
|
|
|
|
if(USE_PANDOC)
|
|
|
|
find_program(PANDOC pandoc)
|
|
|
|
if(NOT PANDOC)
|
|
|
|
message(FATAL_ERROR "pandoc not found. USE_PANDOC=OFF to disable.")
|
|
|
|
else()
|
|
|
|
foreach(m ${MANSOURCE3} ${MANSOURCE1})
|
|
|
|
get_filename_component(me ${m} NAME_WLE)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${me}
|
|
|
|
DEPENDS ${m}
|
|
|
|
COMMAND ${PANDOC}
|
|
|
|
ARGS --to man --standalone --from markdown-smart ${m} > ${CMAKE_CURRENT_BINARY_DIR}/${me}
|
|
|
|
COMMENT "Building man page ${me}"
|
|
|
|
)
|
|
|
|
add_custom_target(${me}.man
|
|
|
|
ALL
|
|
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${me}
|
|
|
|
)
|
|
|
|
file(GLOB ANALHTML doc/analytics-header.html)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${me}.html
|
|
|
|
DEPENDS ${m} ${ANALHTML}
|
|
|
|
COMMAND ${PANDOC}
|
|
|
|
ARGS -H ${ANALHTML} --to html --standalone --from markdown-smart ${m} > ${CMAKE_CURRENT_BINARY_DIR}/${me}.html
|
|
|
|
COMMENT "Building HTML5 ${me}.html"
|
|
|
|
)
|
|
|
|
add_custom_target(${me}.html5
|
|
|
|
ALL
|
|
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${me}.html
|
|
|
|
)
|
|
|
|
endforeach()
|
|
|
|
foreach(m ${MANSOURCE3})
|
|
|
|
get_filename_component(me ${m} NAME_WLE)
|
|
|
|
LIST(APPEND MANPAGES3 ${CMAKE_CURRENT_BINARY_DIR}/${me})
|
|
|
|
endforeach()
|
|
|
|
foreach(m ${MANSOURCE1})
|
|
|
|
get_filename_component(me ${m} NAME_WLE)
|
|
|
|
LIST(APPEND MANPAGES1 ${CMAKE_CURRENT_BINARY_DIR}/${me})
|
|
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Doxygen / diagrams
|
|
|
|
if(USE_DOXYGEN)
|
|
|
|
find_package(Doxygen REQUIRED dot dia)
|
|
|
|
if(NOT ${DOXYGEN_FOUND})
|
|
|
|
message(FATAL_ERROR "doxygen not found. USE_DOXYGEN=OFF to disable.")
|
|
|
|
else()
|
|
|
|
set(DOXYFILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile)
|
|
|
|
# FIXME should dep on all source, i suppose, yuck
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/index.html"
|
|
|
|
DEPENDS ${DOXYFILE}
|
|
|
|
COMMAND Doxygen::doxygen
|
|
|
|
ARGS ${DOXYFILE}
|
|
|
|
COMMENT "Running doxygen"
|
|
|
|
)
|
|
|
|
add_custom_target(doxygen
|
|
|
|
ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/index.html"
|
|
|
|
)
|
|
|
|
set(MODELDOT ${CMAKE_CURRENT_SOURCE_DIR}/doc/model.dot)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/model.png"
|
|
|
|
DEPENDS ${MODELDOT}
|
|
|
|
COMMAND Doxygen::dot
|
|
|
|
ARGS -Tpng ${MODELDOT} -o "${CMAKE_CURRENT_BINARY_DIR}/model.png"
|
|
|
|
COMMENT "Running dot"
|
|
|
|
)
|
|
|
|
add_custom_target(dot
|
|
|
|
ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/model.png"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2020-12-03 01:47:40 -05:00
|
|
|
add_custom_target(demo
|
|
|
|
COMMAND ./notcurses-demo -p ${CMAKE_CURRENT_SOURCE_DIR}/data -c
|
|
|
|
DEPENDS notcurses-demo
|
|
|
|
)
|
|
|
|
|
2019-12-27 07:36:42 -05:00
|
|
|
# pkg-config support
|
2021-01-18 14:10:04 -05:00
|
|
|
configure_file(tools/notcurses-core.pc.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses-core.pc
|
|
|
|
@ONLY
|
|
|
|
)
|
2019-11-17 05:04:41 -05:00
|
|
|
configure_file(tools/notcurses.pc.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses.pc
|
|
|
|
@ONLY
|
|
|
|
)
|
2020-01-07 23:51:34 +01:00
|
|
|
configure_file(tools/notcurses++.pc.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses++.pc
|
|
|
|
@ONLY
|
2020-07-13 08:14:18 -04:00
|
|
|
)
|
2020-01-07 23:51:34 +01:00
|
|
|
|
2019-11-17 05:04:41 -05:00
|
|
|
include(CMakePackageConfigHelpers)
|
2020-01-05 04:53:43 -05:00
|
|
|
configure_file(tools/version.h.in include/version.h)
|
2020-10-10 20:53:45 -04:00
|
|
|
configure_file(tools/builddef.h.in include/builddef.h)
|
2020-01-05 04:53:43 -05:00
|
|
|
|
2020-11-29 01:11:09 +01:00
|
|
|
configure_package_config_file(tools/NotcursesConfig.cmake.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake
|
2021-07-24 22:49:19 -04:00
|
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses
|
2020-11-29 01:11:09 +01:00
|
|
|
)
|
|
|
|
|
2021-01-21 15:31:24 -05:00
|
|
|
write_basic_package_version_file(
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfigVersion.cmake
|
|
|
|
COMPATIBILITY SameMajorVersion
|
|
|
|
)
|
|
|
|
|
2021-01-19 08:37:21 -05:00
|
|
|
configure_package_config_file(tools/NotcursesCoreConfig.cmake.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfig.cmake
|
2021-07-24 22:49:19 -04:00
|
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/NotcursesCore
|
2021-01-19 08:37:21 -05:00
|
|
|
)
|
|
|
|
|
2019-11-17 05:04:41 -05:00
|
|
|
write_basic_package_version_file(
|
2020-08-29 18:38:28 -04:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake
|
2019-11-17 05:04:41 -05:00
|
|
|
COMPATIBILITY SameMajorVersion
|
|
|
|
)
|
|
|
|
|
2020-11-29 01:11:09 +01:00
|
|
|
configure_package_config_file(tools/Notcurses++Config.cmake.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/Notcurses++Config.cmake
|
2021-07-24 22:49:19 -04:00
|
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++
|
2021-05-24 00:23:12 -04:00
|
|
|
)
|
2020-11-29 01:11:09 +01:00
|
|
|
|
2020-11-28 21:00:00 +01:00
|
|
|
write_basic_package_version_file(
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake
|
|
|
|
COMPATIBILITY SameMajorVersion
|
2021-05-24 00:23:12 -04:00
|
|
|
)
|
2020-11-28 21:00:00 +01:00
|
|
|
|
2019-12-27 07:36:42 -05:00
|
|
|
# Installation
|
2021-01-21 04:19:29 -05:00
|
|
|
install(FILES
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfig.cmake"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesCoreConfigVersion.cmake"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/NotcursesCore"
|
|
|
|
)
|
|
|
|
|
2019-11-17 05:04:41 -05:00
|
|
|
install(FILES
|
2020-11-29 01:11:09 +01:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfig.cmake"
|
2020-08-29 18:38:28 -04:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/NotcursesConfigVersion.cmake"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses"
|
2019-11-17 05:04:41 -05:00
|
|
|
)
|
|
|
|
|
2020-11-28 21:00:00 +01:00
|
|
|
install(FILES
|
2020-11-29 01:11:09 +01:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Notcurses++Config.cmake"
|
2020-11-28 21:00:00 +01:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/Notcurses++ConfigVersion.cmake"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Notcurses++"
|
2021-05-24 00:23:12 -04:00
|
|
|
)
|
2020-11-28 21:00:00 +01:00
|
|
|
|
2021-01-21 01:36:02 -05:00
|
|
|
install(FILES
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses-core.pc
|
|
|
|
DESTINATION ${PKGCONFIG_DIR}
|
|
|
|
)
|
|
|
|
|
2019-11-17 05:04:41 -05:00
|
|
|
install(FILES
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses.pc
|
2020-07-16 12:52:10 -04:00
|
|
|
DESTINATION ${PKGCONFIG_DIR}
|
2019-11-17 05:04:41 -05:00
|
|
|
)
|
|
|
|
|
2020-11-29 01:11:09 +01:00
|
|
|
install(FILES
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/notcurses++.pc
|
|
|
|
DESTINATION ${PKGCONFIG_DIR}
|
2021-05-24 00:24:55 -04:00
|
|
|
)
|
2020-11-29 01:11:09 +01:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
if(NOT ${USE_MULTIMEDIA} STREQUAL "none")
|
2019-12-23 19:16:49 -05:00
|
|
|
file(GLOB TESTDATA CONFIGURE_DEPENDS data/*)
|
2020-04-17 21:06:30 -04:00
|
|
|
# Don't install source materia for self-originated multimedia
|
|
|
|
list(FILTER TESTDATA EXCLUDE REGEX ".*xcf$")
|
2020-04-17 21:32:07 -04:00
|
|
|
list(FILTER TESTDATA EXCLUDE REGEX ".*osp$")
|
2020-04-19 17:18:10 -04:00
|
|
|
install(FILES ${TESTDATA} DESTINATION ${CMAKE_INSTALL_DATADIR}/notcurses)
|
2020-04-08 02:12:46 -04:00
|
|
|
endif()
|
2019-12-01 15:27:17 -05:00
|
|
|
|
2021-07-24 22:49:19 -04:00
|
|
|
install(FILES ${MANPAGES1} DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1)
|
|
|
|
install(FILES ${MANPAGES3} DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man3)
|
2020-04-19 17:18:10 -04:00
|
|
|
file(GLOB MARKDOWN CONFIGURE_DEPENDS *.md)
|
2021-01-21 19:15:09 -05:00
|
|
|
list(FILTER MARKDOWN EXCLUDE REGEX "INSTALL.md")
|
2020-04-19 17:18:10 -04:00
|
|
|
install(FILES ${MARKDOWN} DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
2019-12-05 10:12:47 -05:00
|
|
|
|
2019-11-17 05:04:41 -05:00
|
|
|
install(TARGETS notcurses-demo DESTINATION bin)
|
2021-06-09 20:54:20 -04:00
|
|
|
install(TARGETS notcurses-info DESTINATION bin)
|
2020-02-07 11:21:06 -05:00
|
|
|
install(TARGETS notcurses-input DESTINATION bin)
|
2021-01-18 14:10:04 -05:00
|
|
|
install(TARGETS ncneofetch DESTINATION bin)
|
2021-08-05 03:34:45 -04:00
|
|
|
install(TARGETS nctetris DESTINATION bin)
|
2021-01-21 04:19:29 -05:00
|
|
|
if(NOT ${USE_MULTIMEDIA} STREQUAL "none")
|
2021-01-18 14:10:04 -05:00
|
|
|
install(TARGETS ncls DESTINATION bin)
|
2021-01-18 14:22:54 -05:00
|
|
|
install(TARGETS ncplayer DESTINATION bin)
|
2019-12-25 02:00:53 -05:00
|
|
|
endif()
|
2020-05-21 23:51:10 -04:00
|
|
|
|
2021-01-18 14:10:04 -05:00
|
|
|
install(TARGETS notcurses-core notcurses notcurses++
|
2019-11-17 05:04:41 -05:00
|
|
|
LIBRARY
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
COMPONENT Libraries
|
|
|
|
NAMELINK_COMPONENT Development
|
|
|
|
)
|
2020-05-21 23:51:10 -04:00
|
|
|
if(${USE_STATIC})
|
|
|
|
install(
|
2021-01-18 14:10:04 -05:00
|
|
|
TARGETS notcurses-core-static notcurses-static notcurses++-static
|
2020-05-21 23:51:10 -04:00
|
|
|
LIBRARY
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
COMPONENT Libraries
|
|
|
|
NAMELINK_COMPONENT Development
|
|
|
|
)
|
|
|
|
endif()
|
2021-07-15 19:16:45 +03:00
|
|
|
|
|
|
|
option(DUMMY_PYTHON "Build dummy python module used for compile check and Clangd" OFF)
|
|
|
|
if(${DUMMY_PYTHON})
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
add_subdirectory("./python")
|
|
|
|
endif()
|