31 lines
1.3 KiB
CMake
31 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(cthulhu_wine_access LANGUAGES C CXX)
|
|
|
|
include(GNUInstallDirs)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
|
|
find_program(WIDL_EXECUTABLE widl REQUIRED)
|
|
|
|
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
|
set(generated_header "${generated_dir}/nvdaController.h")
|
|
set(generated_server "${generated_dir}/nvdaController_s.c")
|
|
file(MAKE_DIRECTORY "${generated_dir}")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${generated_header}" "${generated_server}"
|
|
COMMAND "${WIDL_EXECUTABLE}" --win64 -h -H "${generated_header}"
|
|
-s -S "${generated_server}" "${CMAKE_CURRENT_SOURCE_DIR}/nvdaController.idl"
|
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/nvdaController.idl"
|
|
VERBATIM)
|
|
|
|
add_executable(cthulhu-wine-access main.cpp "${generated_server}")
|
|
target_compile_features(cthulhu-wine-access PRIVATE cxx_std_20)
|
|
target_include_directories(cthulhu-wine-access PRIVATE "${generated_dir}")
|
|
target_link_libraries(cthulhu-wine-access PRIVATE
|
|
PkgConfig::GIO oleacc ole32 oleaut32 rpcrt4 user32)
|
|
target_link_options(cthulhu-wine-access PRIVATE -mwindows)
|
|
target_compile_options(cthulhu-wine-access PRIVATE
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wall -Wextra>)
|
|
|
|
install(TARGETS cthulhu-wine-access RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|