Skip to content

Commit

Permalink
build: add CMake based build system
Browse files Browse the repository at this point in the history
GYP has been replaced with GN for Chromium.  Migrate to CMake rather
than GN as it is simpler.  This allows building for Windows ARM64 as
well.
  • Loading branch information
compnerd committed Dec 25, 2023
1 parent 7e59fe2 commit 42f7587
Showing 1 changed file with 103 additions and 0 deletions.
103 changes: 103 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@

cmake_minimum_required(VERSION 3.20)

project(WinPTY
VERSION 0.4.4
LANGUAGES CXX)

# Output Locations
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

# Global Macros
add_compile_definitions(UNICODE)
add_compile_definitions(_UNICODE)
add_compile_definitions(NOMINMAX)

execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT GIT_REVISION)
set(GIT_REVISION none)
endif()

file(WRITE ${CMAKE_BINARY_DIR}/gen/GenVersion.h "// AUTO-GENERATED BY CMake
const char GenVersion_Version[] = \"${PROJECT_VERSION}\";
const char GenVersion_Commit[] = \"${GIT_REVISION}\";
")

include_directories(${CMAKE_BINARY_DIR}/gen)

add_executable(winpty-agent
agent/Agent.cc
agent/AgentCreateDesktop.cc
agent/ConsoleFont.cc
agent/ConsoleInput.cc
agent/ConsoleInputReencoding.cc
agent/ConsoleLine.cc
agent/DebugShowInput.cc
agent/DefaultInputMap.cc
agent/EventLoop.cc
agent/InputMap.cc
agent/LargeConsoleRead.cc
agent/NamedPipe.cc
agent/Scraper.cc
agent/Terminal.cc
agent/Win32Console.cc
agent/Win32ConsoleBuffer.cc
agent/main.cc
shared/BackgroundDesktop.cc
shared/Buffer.cc
shared/DebugClient.cc
shared/GenRandom.cc
shared/OwnedHandle.cc
shared/StringUtil.cc
shared/WindowsSecurity.cc
shared/WindowsVersion.cc
shared/WinptyAssert.cc
shared/WinptyException.cc
shared/WinptyVersion.cc)
target_compile_definitions(winpty-agent PRIVATE
WINPTY_AGENT_ASSERT)
target_include_directories(winpty-agent PRIVATE
include)
target_link_libraries(winpty-agent PRIVATE
advapi32
shell32
user32)

add_library(winpty SHARED
libwinpty/AgentLocation.cc
libwinpty/winpty.cc
shared/BackgroundDesktop.cc
shared/Buffer.cc
shared/DebugClient.cc
shared/GenRandom.cc
shared/OwnedHandle.cc
shared/StringUtil.cc
shared/WindowsSecurity.cc
shared/WindowsVersion.cc
shared/WinptyAssert.cc
shared/WinptyException.cc
shared/WinptyVersion.cc)
target_include_directories(winpty PRIVATE
include)
target_compile_definitions(winpty PRIVATE
COMPILING_WINPTY_DLL)
target_link_libraries(winpty PRIVATE
advapi32
user32)

add_executable(winpty-debugserver
debugserver/DebugServer.cc
shared/DebugClient.cc
shared/OwnedHandle.cc
shared/StringUtil.cc
shared/WindowsSecurity.cc
shared/WindowsVersion.cc
shared/WinptyAssert.cc
shared/WinptyException.cc)
target_link_libraries(winpty-debugserver PRIVATE
advapi32)

0 comments on commit 42f7587

Please sign in to comment.