import kepp, clean up build dependencies
This commit is contained in:
		
							parent
							
								
									0d0d63ede4
								
							
						
					
					
						commit
						a61916206c
					
				|  | @ -1,3 +1,4 @@ | ||||||
|  | .cmake | ||||||
| .idea | .idea | ||||||
| .trunk | .trunk | ||||||
| .vc | .vc | ||||||
|  | @ -12,6 +13,5 @@ core | ||||||
| core.* | core.* | ||||||
| cmake-build-* | cmake-build-* | ||||||
| 
 | 
 | ||||||
| bufferTest | ke | ||||||
| dictionaryTest | kge | ||||||
| tlvTest |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,78 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Buffer.cc
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/10/23
 | ||||||
|  | /// \brief Buffer implementation.
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | /// @\section DESCRIPTION
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include <optional> | ||||||
|  | #include <random> | ||||||
|  | #include <sstream> | ||||||
|  | 
 | ||||||
|  | #include "Buffer.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static std::string | ||||||
|  | anonymousName() | ||||||
|  | { | ||||||
|  | 	std::uniform_int_distribution<> dist(1000, 9999); | ||||||
|  | 	std::random_device randomDevice; | ||||||
|  | 	std::mt19937 rng(randomDevice()); | ||||||
|  | 	std::stringstream ss; | ||||||
|  | 
 | ||||||
|  | 	ss << "Buffer<" << dist(rng) << ">"; | ||||||
|  | 	return ss.str(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Buffer::Buffer() | ||||||
|  |     : name(anonymousName()), path(std::nullopt), file(std::nullopt) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Buffer::Buffer(std::string fName) | ||||||
|  |     : name(std::move(fName)), path(std::nullopt), file(std::nullopt) | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Buffer::Buffer(std::string fName, std::string fPath) | ||||||
|  | : name(std::move(fName)), path(std::move(fPath)), file(std::nullopt) | ||||||
|  | { | ||||||
|  | 	if (this->path) { | ||||||
|  | 		this->file = OptFile(File(this->path.value())); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | int Buffer::Flush(OptString altPath) | ||||||
|  | { | ||||||
|  | 	return altPath ? 0 : 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void Buffer::ChangePath(std::string newPath) | ||||||
|  | { | ||||||
|  | 	this->path = OptString(std::move(newPath)); | ||||||
|  | } | ||||||
|  | @ -0,0 +1,56 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Buffer.h
 | ||||||
|  | /// \author kyle
 | ||||||
|  | /// \date 2023-10-10
 | ||||||
|  | /// \brief A buffer is the basic document type.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #ifndef KEPP_FRAME_H | ||||||
|  | #define KEPP_FRAME_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "Defs.h" | ||||||
|  | #include "File.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef std::vector<std::vector<uint8_t>>   BufferContents; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /// A Buffer is the atom of text editing. It represents a single document,
 | ||||||
|  | /// whether a memory-only buffer or a file-backed buffer.
 | ||||||
|  | ///
 | ||||||
|  | /// \details
 | ||||||
|  | ///
 | ||||||
|  | /// There are currently two main types of Buffers: file-backed and virtual.
 | ||||||
|  | /// A virtual buffer describes any buffer that isn't backed by a file.
 | ||||||
|  | ///
 | ||||||
|  | /// A virtual buffer can be promoted to a file frame, but a file buffer
 | ||||||
|  | /// cannot be demoted to a virtual buffer.
 | ||||||
|  | class Buffer { | ||||||
|  | public: | ||||||
|  | 	/// The constructor with no arguments generates a new anonymous
 | ||||||
|  | 	/// buffer.
 | ||||||
|  | 	Buffer(); | ||||||
|  | 
 | ||||||
|  | 	/// A single constructor generates a virtual buffer.
 | ||||||
|  | 	Buffer(std::string fName); | ||||||
|  | 
 | ||||||
|  | 	/// Instantiate a Buffer pointing to fPath.
 | ||||||
|  | 	Buffer(std::string fName, std::string fPath); | ||||||
|  | 
 | ||||||
|  | 	std::string Name() const { return this->name; } | ||||||
|  | 
 | ||||||
|  | 	int	Flush(OptString altPath); | ||||||
|  | 	void	ChangePath(std::string newPath); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	std::string	name; | ||||||
|  | 	OptString	path; | ||||||
|  | 	OptFile		file; | ||||||
|  | 	BufferContents  contents; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif // KEPP_FRAME_H
 | ||||||
|  | 
 | ||||||
							
								
								
									
										126
									
								
								CMakeLists.txt
								
								
								
								
							
							
						
						
									
										126
									
								
								CMakeLists.txt
								
								
								
								
							|  | @ -1,34 +1,32 @@ | ||||||
| cmake_minimum_required(VERSION 3.22) | cmake_minimum_required(VERSION 3.22) | ||||||
| 
 | 
 | ||||||
| project(kge LANGUAGES CXX VERSION 0.0.1) | project(kge | ||||||
|  | 	DESCRIPTION "kyle's editor" | ||||||
|  | 	LANGUAGES CXX | ||||||
|  | 	VERSION 0.0.1) | ||||||
| set(CMAKE_CXX_STANDARD 17) | set(CMAKE_CXX_STANDARD 17) | ||||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||||
|  | 
 | ||||||
| string(TIMESTAMP TODAY "%Y%m%d") | string(TIMESTAMP TODAY "%Y%m%d") | ||||||
| 
 | 
 | ||||||
| include(FetchContent) | #################### | ||||||
| FetchContent_Declare( | ### BUILD CONFIG ### | ||||||
| 		klib | #################### | ||||||
| 		GIT_REPOSITORY https://git.wntrmute.dev/kyle/klib |  | ||||||
| 		GIT_TAG        master |  | ||||||
| 		FIND_PACKAGE_ARGS NAMES klib |  | ||||||
| ) |  | ||||||
| FetchContent_MakeAvailable(klib) |  | ||||||
| 
 | 
 | ||||||
| find_package(SDL2 REQUIRED) | # in "prod", this will be ON by default; the docstring is written this | ||||||
| find_package(OpenGL REQUIRED) | # way as I am likely to forget to change it later. | ||||||
| find_package(klib REQUIRED) | set(BUILD_GUI OFF CACHE BOOL "Disable building the graphical version.") | ||||||
| find_package(Freetype) |  | ||||||
| if (DEFINED FREETYPE_INCLUDE_DIRS) |  | ||||||
| 	add_definitions(-DIMGUI_ENABLE_FREETYPE) |  | ||||||
| 	set(FREETYPE_SOURCES |  | ||||||
| 		ext/imgui/misc/freetype/imgui_freetype.cpp |  | ||||||
| 		ext/imgui/misc/freetype/imgui_freetype.h) |  | ||||||
| endif() |  | ||||||
| 
 | 
 | ||||||
| if(MSVC) | if(MSVC) | ||||||
| 	add_compile_options("/W4" "$<$<CONFIG:RELEASE>:/O2>") | 	add_compile_options("/W4" "$<$<CONFIG:RELEASE>:/O2>") | ||||||
| else() | else() | ||||||
| 	add_compile_options("-Wall" "-Wextra" "-Werror" "$<$<CONFIG:RELEASE>:-O3>") | 	add_compile_options( | ||||||
|  | 			"-Wall" | ||||||
|  | 			"-Wextra" | ||||||
|  | 			"-Werror" | ||||||
|  | 			"-static" | ||||||
|  | 			"$<$<CONFIG:DEBUG>:-g>" | ||||||
|  | 			"$<$<CONFIG:RELEASE>:-O2>") | ||||||
| 	if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | 	if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | ||||||
| 		add_compile_options("-stdlib=libc++") | 		add_compile_options("-stdlib=libc++") | ||||||
| 	else() | 	else() | ||||||
|  | @ -36,51 +34,62 @@ else() | ||||||
| 	endif() | 	endif() | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| add_library(imgui STATIC | if(${BUILD_GUI}) | ||||||
|         # Main Imgui files | include(imgui.cmake) | ||||||
|         ext/imgui/imgui.cpp | endif() | ||||||
|         ext/imgui/imgui.h |  | ||||||
|         ext/imgui/imgui_draw.cpp |  | ||||||
|         ext/imgui/imgui_tables.cpp |  | ||||||
|         ext/imgui/imgui_widgets.cpp |  | ||||||
|         ext/imgui/imgui_demo.cpp |  | ||||||
| 
 | 
 | ||||||
|         ext/imgui/backends/imgui_impl_sdl2.cpp | ##################### | ||||||
|         ext/imgui/backends/imgui_impl_sdl2.h | ### BUILD TARGETS ### | ||||||
|         ext/imgui/backends/imgui_impl_opengl3.cpp | ##################### | ||||||
|         ext/imgui/backends/imgui_impl_opengl3.h |  | ||||||
| 
 | 
 | ||||||
| 	$<IF:$<TARGET_EXISTS:Freetype::Freetype>,${FREETYPE_SOURCES},>) | set(HEADER_FILES | ||||||
| add_library(imgui::imgui ALIAS imgui) | 		Defs.h | ||||||
| target_link_libraries(imgui | 		Buffer.h | ||||||
|         PUBLIC | 		File.h | ||||||
|         OpenGL::GL | 		Cursor.h | ||||||
| 	$<IF:$<TARGET_EXISTS:Freetype::Freetype>,Freetype::Freetype,> |  | ||||||
|         $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main> |  | ||||||
|         $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>) |  | ||||||
| target_include_directories(imgui PUBLIC |  | ||||||
|         ext/imgui/ |  | ||||||
|         ext/imgui/backends/ |  | ||||||
|         ext/imgui/misc/freetype |  | ||||||
| 	$<IF:$<TARGET_EXISTS:Freetype::Freetype>,${FREETYPE_INCLUDE_DIRS},>) |  | ||||||
| 
 |  | ||||||
| include_directories(ext/ ${SDL2_INCLUDE_DIRS} ${KLIB_INCLUDE_DIRS}) |  | ||||||
| 
 |  | ||||||
| configure_file(kge.desktop.in kge.desktop @ONLY) |  | ||||||
| add_executable(kge |  | ||||||
|         kge.cc |  | ||||||
| ) | ) | ||||||
| target_link_libraries(kge imgui ${KLIB_LIBRARIES}) | set(SOURCE_FILES | ||||||
|  | 		Defs.cc | ||||||
|  | 		Buffer.cc | ||||||
|  | 		File.cc | ||||||
|  | 		Cursor.cc | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | add_executable(ke main.cc ${SOURCE_FILES} ${HEADER_FILES}) | ||||||
| 
 | 
 | ||||||
| add_custom_target(manpages) | add_custom_target(manpages) | ||||||
|  | configure_file(ke.md ke.1.scdoc @ONLY) | ||||||
|  | add_custom_command(TARGET manpages COMMAND scdoc < ke.1.scdoc > ke.1 | ||||||
|  | 		OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/ke.1) | ||||||
|  | add_dependencies(ke manpages) | ||||||
|  | 
 | ||||||
|  | if(${BUILD_GUI}) | ||||||
|  | 	configure_file(kge.desktop.in kge.desktop @ONLY) | ||||||
|  | 	add_executable(kge gmain.cc ${SOURCE_FILES} ${HEADER_FILES}) | ||||||
|  | 	target_link_libraries(kge imgui) | ||||||
|  | 
 | ||||||
| 	configure_file(kge.md kge.1.scdoc @ONLY) | 	configure_file(kge.md kge.1.scdoc @ONLY) | ||||||
| 	add_custom_command(TARGET manpages COMMAND scdoc < kge.1.scdoc > kge.1 | 	add_custom_command(TARGET manpages COMMAND scdoc < kge.1.scdoc > kge.1 | ||||||
| 			OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/kge.1) | 			OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/kge.1) | ||||||
| add_dependencies(kge manpages) |  | ||||||
| 
 | 
 | ||||||
|  | 	add_dependencies(kge manpages) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | ####################### | ||||||
|  | ### INSTALL TARGETS ### | ||||||
|  | ####################### | ||||||
|  | 
 | ||||||
|  | install(TARGETS ke | ||||||
|  | 		DESTINATION bin | ||||||
|  | 		COMPONENT dist COMPONENT nox) | ||||||
|  | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ke.1 | ||||||
|  | 		DESTINATION share/man/man1 | ||||||
|  | 		COMPONENT dist COMPONENT nox) | ||||||
|  | 
 | ||||||
|  | if(${BUILD_GUI}) | ||||||
| 	install(TARGETS kge | 	install(TARGETS kge | ||||||
| 			DESTINATION bin | 			DESTINATION bin | ||||||
| 		COMPONENT dist) | 			COMPONENT dist nox) | ||||||
| 	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kge.desktop | 	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kge.desktop | ||||||
| 			DESTINATION share/applications | 			DESTINATION share/applications | ||||||
| 			COMPONENT dist) | 			COMPONENT dist) | ||||||
|  | @ -90,11 +99,6 @@ install(FILES kge.png | ||||||
| 	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kge.1 | 	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kge.1 | ||||||
| 			DESTINATION share/man/man1 | 			DESTINATION share/man/man1 | ||||||
| 			COMPONENT dist) | 			COMPONENT dist) | ||||||
|  | endif() | ||||||
| 
 | 
 | ||||||
| include(CMakePack.txt) | include(packaging.cmake) | ||||||
| 
 |  | ||||||
| 	get_cmake_property(_variableNames VARIABLES) |  | ||||||
| 	list (SORT _variableNames) |  | ||||||
| 	foreach (_variableName ${_variableNames}) |  | ||||||
| 		message(STATUS "${_variableName}=${${_variableName}}") |  | ||||||
| 	endforeach() |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,102 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Cursor.cc
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #include "Cursor.h" | ||||||
|  | #include "Defs.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /// \todo kyle Can cursors be replaced with std::pair?
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static std::pair<size_t, size_t> | ||||||
|  | orderedPair(size_t a, size_t b) | ||||||
|  | { | ||||||
|  | 	if (a > b) { | ||||||
|  | 		return {b, a}; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return {a, b}; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static size_t | ||||||
|  | isqrt(size_t n) | ||||||
|  | { | ||||||
|  | 	if (n < 2) { | ||||||
|  | 		return n; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	size_t	start = 0; | ||||||
|  | 	size_t	end = n / 2; | ||||||
|  | 	size_t	result = 0; | ||||||
|  | 
 | ||||||
|  | 	while (start <= end) { | ||||||
|  | 		auto middle = (start + end) >> 1; | ||||||
|  | 		result = middle * middle; | ||||||
|  | 		if (result == n) { | ||||||
|  | 			return middle; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (result < n) { | ||||||
|  | 			start = middle + 1; | ||||||
|  | 			result = middle; | ||||||
|  | 		} else { | ||||||
|  | 			end = middle - 1; | ||||||
|  | 			result = middle; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Cursor Cursor::Update(const Cursor &c) | ||||||
|  | { | ||||||
|  | 	Cursor prev(this->x, this->y); | ||||||
|  | 	this->X(c.X()); | ||||||
|  | 	this->Y(c.Y()); | ||||||
|  | 	return prev; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | size_t Cursor::Distance(const Cursor &c) const | ||||||
|  | { | ||||||
|  | 	auto xPair = orderedPair(this->x, c.X()); | ||||||
|  | 	auto yPair = orderedPair(this->y, c.Y()); | ||||||
|  | 
 | ||||||
|  | 	auto x0 = xPair.second - xPair.first; | ||||||
|  | 	x0 *= x0; | ||||||
|  | 
 | ||||||
|  | 	auto y0 = yPair.second - xPair.first; | ||||||
|  | 	y0 *= y0; | ||||||
|  | 
 | ||||||
|  | 	auto dist = x0 + y0; | ||||||
|  | 	return isqrt(dist); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | std::ostream &operator<<(std::ostream &os, const Cursor &cursor) | ||||||
|  | { | ||||||
|  | 	os << cursor.X() << "," << cursor.Y(); | ||||||
|  | 	return os; | ||||||
|  | } | ||||||
|  | @ -0,0 +1,56 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Cursor.h
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief Cursor describes a position in a Buffer.
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #ifndef KEPP__CURSOR_H_ | ||||||
|  | #define KEPP__CURSOR_H_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include <cstddef> | ||||||
|  | #include <ostream> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /// Cursors represent a position in a Buffer.
 | ||||||
|  | class Cursor { | ||||||
|  | public: | ||||||
|  | 	Cursor(size_t _x, size_t _y) : x(_x), y(_y) {}; | ||||||
|  | 
 | ||||||
|  | 	size_t	X() const { return this->x; } | ||||||
|  | 	size_t	Y() const { return this->y; } | ||||||
|  | 	void X(size_t nx) { this->x = nx; } | ||||||
|  | 	void Y(size_t ny) { this->y = ny; } | ||||||
|  | 
 | ||||||
|  | 	void Update(size_t nx, size_t ny) { this->X(nx); this->Y(ny); } | ||||||
|  | 	Cursor Update(const Cursor &c); | ||||||
|  | 
 | ||||||
|  | 	size_t	Distance(const Cursor &c) const; | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	size_t	x; | ||||||
|  | 	size_t	y; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | std::ostream &operator<<(std::ostream &os, const Cursor &cursor); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif // KEPP__CURSOR_H_
 | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Defs.cc
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #include "Defs.h" | ||||||
|  | @ -0,0 +1,42 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file Defs.h
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #ifndef KEPP__DEFS_H_ | ||||||
|  | #define KEPP__DEFS_H_ | ||||||
|  | 
 | ||||||
|  | #include <optional> | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef std::optional<std::string>	OptString; | ||||||
|  | 
 | ||||||
|  | template<typename T> | ||||||
|  | T Min(T a, T b) { return a > b ? b : a; } | ||||||
|  | template size_t Min<size_t>(size_t a, size_t b); | ||||||
|  | 
 | ||||||
|  | template<typename T> | ||||||
|  | T Max(T a, T b) { return a > b ? a : b; } | ||||||
|  | template size_t Max(size_t a, size_t b); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif // KEPP__DEFS_H_
 | ||||||
|  | @ -0,0 +1,43 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file File.cc
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #include "File.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const std::string &File::Path() const | ||||||
|  | { | ||||||
|  | 	return path; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void File::SetPath(const std::string &fPath) | ||||||
|  | { | ||||||
|  | 	File::path = fPath; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | File::File(std::string fPath) | ||||||
|  | 	: path(fPath), readOnly(false) | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,63 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file File.h
 | ||||||
|  | /// \author kyle 
 | ||||||
|  | /// \created 10/11/23
 | ||||||
|  | /// \brief File contains configuration information for a file.
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #ifndef KEPP__FILE_H_ | ||||||
|  | #define KEPP__FILE_H_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include <fstream> | ||||||
|  | #include <ios> | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | #include "Defs.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static constexpr std::ios::openmode	DefaultMode = | ||||||
|  |     std::ios::in|std::ios::out; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /// A File abstracts a concrete file on disk.
 | ||||||
|  | class File { | ||||||
|  | public: | ||||||
|  | 	File(std::string fPath); | ||||||
|  | 
 | ||||||
|  | 	const std::string &Path() const; | ||||||
|  | 	void SetPath(const std::string &fPath); | ||||||
|  | 
 | ||||||
|  | 	// int Refresh(std::);
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	[[nodiscard]] bool IsReadOnly() const { return this->readOnly; }; | ||||||
|  | 	void MarkReadOnly() { this->readOnly = true; } | ||||||
|  | 	void ClearReadOnly() { this->readOnly = false; } | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	std::string		path; | ||||||
|  | 	bool			readOnly; | ||||||
|  | 	std::ios::openmode	mode; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef std::optional<File>	OptFile; | ||||||
|  | 
 | ||||||
|  | #endif // KEPP__FILE_H_
 | ||||||
							
								
								
									
										11
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										11
									
								
								Makefile
								
								
								
								
							|  | @ -2,7 +2,14 @@ | ||||||
| all: | all: | ||||||
| 	mkdir -p build && cd build && cmake .. && make | 	mkdir -p build && cd build && cmake .. && make | ||||||
| 
 | 
 | ||||||
| .PHONY: deps | PHONY: deps | ||||||
| deps: | deps: | ||||||
| 	sudo apt-get install libfreetype-dev libsdl2-dev libopengl-dev | 	sudo apt-get install doxygen scdoc | ||||||
| 
 | 
 | ||||||
|  | .PHONY: gui-deps | ||||||
|  | gui-deps: | ||||||
|  | 	sudo apt-get install libfreetype-dev libsdl2-dev libopengl-dev libglfw3-dev | ||||||
|  | 
 | ||||||
|  | .PHONY: | ||||||
|  | clean: | ||||||
|  | 	rm -r build cmake-build-* | ||||||
|  |  | ||||||
|  | @ -0,0 +1,39 @@ | ||||||
|  | find_package(SDL2 REQUIRED) | ||||||
|  | find_package(OpenGL REQUIRED) | ||||||
|  | find_package(Freetype) | ||||||
|  | if (DEFINED FREETYPE_INCLUDE_DIRS) | ||||||
|  |     add_definitions(-DIMGUI_ENABLE_FREETYPE) | ||||||
|  |     set(FREETYPE_SOURCES | ||||||
|  |             ext/imgui/misc/freetype/imgui_freetype.cpp | ||||||
|  |             ext/imgui/misc/freetype/imgui_freetype.h) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | add_library(imgui STATIC | ||||||
|  |         # Main Imgui files | ||||||
|  |         ext/imgui/imgui.cpp | ||||||
|  |         ext/imgui/imgui.h | ||||||
|  |         ext/imgui/imgui_draw.cpp | ||||||
|  |         ext/imgui/imgui_tables.cpp | ||||||
|  |         ext/imgui/imgui_widgets.cpp | ||||||
|  |         ext/imgui/imgui_demo.cpp | ||||||
|  | 
 | ||||||
|  |         ext/imgui/backends/imgui_impl_sdl2.cpp | ||||||
|  |         ext/imgui/backends/imgui_impl_sdl2.h | ||||||
|  |         ext/imgui/backends/imgui_impl_opengl3.cpp | ||||||
|  |         ext/imgui/backends/imgui_impl_opengl3.h | ||||||
|  | 
 | ||||||
|  |         $<IF:$<TARGET_EXISTS:Freetype::Freetype>,${FREETYPE_SOURCES},>) | ||||||
|  | add_library(imgui::imgui ALIAS imgui) | ||||||
|  | target_link_libraries(imgui | ||||||
|  |         PUBLIC | ||||||
|  |         OpenGL::GL | ||||||
|  |         $<IF:$<TARGET_EXISTS:Freetype::Freetype>,Freetype::Freetype,> | ||||||
|  |         $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main> | ||||||
|  |         $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>) | ||||||
|  | target_include_directories(imgui PUBLIC | ||||||
|  |         ext/imgui/ | ||||||
|  |         ext/imgui/backends/ | ||||||
|  |         ext/imgui/misc/freetype | ||||||
|  |         $<IF:$<TARGET_EXISTS:Freetype::Freetype>,${FREETYPE_INCLUDE_DIRS},>) | ||||||
|  | 
 | ||||||
|  | include_directories(ext/ ${SDL2_INCLUDE_DIRS}) | ||||||
|  | @ -0,0 +1,41 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | set -eu | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | source /etc/lsb-release | ||||||
|  | 
 | ||||||
|  | preinstall () { | ||||||
|  |   echo "[+] preparing to install" | ||||||
|  |   sudo apt-get update | ||||||
|  |   sudo apt-get install ca-certificates gpg wget | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | do_install () { | ||||||
|  | if [ ! -f /etc/apt/sources.list.d/kitware.list ] | ||||||
|  | then | ||||||
|  |   echo "[+] fetching initial keyring" | ||||||
|  |   wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null | ||||||
|  | 
 | ||||||
|  |   echo "[+] adding repo to sources.list.d" | ||||||
|  |   echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ ${DISTRIB_RELEASE} main" | \ | ||||||
|  |     sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null | ||||||
|  |   sudo apt-get update | ||||||
|  | 
 | ||||||
|  |   echo "[+] installing kitware keyring" | ||||||
|  |   if [ -f "/usr/share/keyrings/kitware-archive-keyring.gpg" ] | ||||||
|  |   then | ||||||
|  |     sudo rm /usr/share/keyrings/kitware-archive-keyring.gpg | ||||||
|  |   fi | ||||||
|  |   sudo apt-get install kitware-archive-keyring | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "${USE_CMAKE_RC}" = "YES" ] | ||||||
|  | then | ||||||
|  |   echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ ${DISTRIB_RELEASE}-rc main' | \ | ||||||
|  |     sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null | ||||||
|  |   sudo apt-get update | ||||||
|  | fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sudo apt-get install cmake cmake-curses-gui cmake-extras | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | set -eu | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | ke(1) ["@TODAY@" ["Shimmering Clarity Industries"]] | ||||||
|  | 
 | ||||||
|  | # NAME | ||||||
|  | 
 | ||||||
|  | ke - kyle's editor | ||||||
|  | 
 | ||||||
|  | # SYNOPSIS | ||||||
|  | 
 | ||||||
|  | ke files... | ||||||
|  | 
 | ||||||
|  | # AUTHORS | ||||||
|  | 
 | ||||||
|  | Written by Kyle Isom <kyle@imap.cc>. Up-to-date sources can be found | ||||||
|  | at https://git.wntrmute.dev/kyle/kge. | ||||||
|  | @ -0,0 +1,63 @@ | ||||||
|  | ///
 | ||||||
|  | /// \file main.cc
 | ||||||
|  | /// \author kyle
 | ||||||
|  | /// \date 2023-10-10
 | ||||||
|  | /// \brief kyle's editor
 | ||||||
|  | ///
 | ||||||
|  | /// \section COPYRIGHT
 | ||||||
|  | /// Copyright 2023 K. Isom <kyle@imap.cc>
 | ||||||
|  | ///
 | ||||||
|  | /// Permission to use, copy, modify, and/or distribute this software for
 | ||||||
|  | /// any purpose with or without fee is hereby granted, provided that the
 | ||||||
|  | /// above copyright notice and this permission notice appear in all copies.
 | ||||||
|  | ///
 | ||||||
|  | /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 | ||||||
|  | /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 | ||||||
|  | /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
 | ||||||
|  | /// BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
 | ||||||
|  | /// OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | ||||||
|  | /// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | ||||||
|  | /// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | ||||||
|  | /// SOFTWARE.
 | ||||||
|  | ///
 | ||||||
|  | 
 | ||||||
|  | #include <iostream> | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | #include "Buffer.h" | ||||||
|  | #include "Cursor.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | usage(std::ostream &os, int exitCode) | ||||||
|  | { | ||||||
|  | 	os << "ke - kyle's editor ++\n"; | ||||||
|  | 	os << "\nUsage:\n"; | ||||||
|  | 	os << "\tke [files]\n"; | ||||||
|  | 	exit(exitCode); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | ShowDist(Cursor a, Cursor b) | ||||||
|  | { | ||||||
|  | 	std::cout << a << " -> " << b << ": " << a.Distance(b) << "\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	if ((argc == 2) && (std::string(argv[1]) == "-h")) { | ||||||
|  | 		usage(std::cout, 0); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	Buffer	frame; | ||||||
|  | 	std::cout << frame.Name() << "\n"; | ||||||
|  | 
 | ||||||
|  | 	ShowDist(Cursor(0, 0), Cursor(5, 5)); | ||||||
|  | 	ShowDist(Cursor(2, 2), Cursor(4, 4)); | ||||||
|  | 	ShowDist(Cursor(32, 12), Cursor(14, 71)); | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | @ -2,22 +2,23 @@ | ||||||
| include(InstallRequiredSystemLibraries) | include(InstallRequiredSystemLibraries) | ||||||
| 
 | 
 | ||||||
| set(CPACK_PACKAGE_VENDOR "Shimmering Clarity") | set(CPACK_PACKAGE_VENDOR "Shimmering Clarity") | ||||||
| set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Kyle's Graphical Editor") | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "kyle's editor") | ||||||
| set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) | set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) | ||||||
| set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) | set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) | ||||||
| set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) | set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) | ||||||
| 
 | 
 | ||||||
| # Debian settings | # Debian settings | ||||||
| set(CPACK_DEBIAN_PACKAGE_MAINTAINER "K. Isom") | set(CPACK_DEBIAN_PACKAGE_MAINTAINER "K. Isom") | ||||||
| set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Kyle's Graphical Editor") | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "kyle's editor") | ||||||
| set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) | set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) | ||||||
|  | if(${BUILD_GUI}) | ||||||
| set(CPACK_DEBIAN_PACKAGE_DEPENDS | set(CPACK_DEBIAN_PACKAGE_DEPENDS | ||||||
| #	"libc++12 (>= 3.7.0-1)" |  | ||||||
| 	"libsdl2-2.0-0, libfreetype6 (>= 2.11.1)" | 	"libsdl2-2.0-0, libfreetype6 (>= 2.11.1)" | ||||||
| ) | ) | ||||||
|  | endif() | ||||||
| set(CPACK_DEBIAN_PACKAGE_SECTION universe/editors) | set(CPACK_DEBIAN_PACKAGE_SECTION universe/editors) | ||||||
| set(CPACK_DEB_COMPONENT_INSTALL ON) | set(CPACK_DEB_COMPONENT_INSTALL ON) | ||||||
| set(CPACK_COMPONENTS_ALL dist) | set(CPACK_COMPONENTS_ALL dist nox) | ||||||
| set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP) | set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP) | ||||||
| 
 | 
 | ||||||
| if(LINUX) | if(LINUX) | ||||||
		Loading…
	
		Reference in New Issue