From 2250416e6d690eac6b5065dd2d434dbb2a667bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Damstedt=20Rasmussen?= Date: Wed, 13 Oct 2021 22:18:35 +0200 Subject: [PATCH 1/3] CMake build file for Tolk --- CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6a97844 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.1) +project(Tolk) + +option (TOLK_MULTITHREADED "Build Multi-Threaded (/MT) instead of Multi-Threaded DLL (/MD)" OFF) + +if (TOLK_MULTITHREADED) + foreach (flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if (${flag_var} MATCHES "/MD") + STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif() + endforeach(flag_var) +endif() + +set (TOLK_COMPILE_FLAGS -D_EXPORTING -DUNICODE -D_UNICODE) +set (TOLK_LINK_FLAGS User32 Ole32 OleAut32) + +# Find Java JDK so we can enable JNI support +option (TOLK_WITH_JAVAJNI "Build Tolk with Java support" ON) +if (TOLK_WITH_JAVAJNI) + find_package(JNI) + + if (JNI_FOUND) + include_directories (${JNI_INCLUDE_DIRS}) + list (APPEND TOLK_COMPILE_FLAGS -D_WITH_JNI) + list (APPEND TOLK_LINK_FLAGS ${JNI_LIBRARIES}) + else() + message("Cannot find Java JDK. Specify JAVA_HOME environment variable to help CMake find Java JDK") + endif() +endif() + +add_library(Tolk SHARED src/Tolk.cpp src/Tolk.h src/TolkVersion.h src/TolkJNI.cpp + src/ScreenReaderDriver.h src/Tolk.rc + src/ScreenReaderDriverJAWS.cpp src/ScreenReaderDriverJAWS.h + src/ScreenReaderDriverNVDA.cpp src/ScreenReaderDriverNVDA.h + src/ScreenReaderDriverSA.cpp src/ScreenReaderDriverSA.h + src/ScreenReaderDriverSNova.cpp src/ScreenReaderDriverSNova.h + src/ScreenReaderDriverWE.cpp src/ScreenReaderDriverWE.h + src/ScreenReaderDriverZT.cpp src/ScreenReaderDriverZT.h + src/ScreenReaderDriverSAPI.cpp src/ScreenReaderDriverSAPI.h + src/fsapi.c src/fsapi.h src/wineyes.c src/wineyes.h src/zt.c src/zt.h) + +target_include_directories (Tolk INTERFACE src) +target_link_libraries (Tolk PRIVATE ${TOLK_LINK_FLAGS}) +target_compile_options (Tolk PRIVATE ${TOLK_COMPILE_FLAGS}) + +install (TARGETS Tolk DESTINATION lib) +install (FILES src/Tolk.h DESTINATION include) +if (${CMAKE_GENERATOR_PLATFORM} MATCHES "x64") + install (FILES libs/x64/nvdaControllerClient64.dll libs/x64/SAAPI64.dll DESTINATION lib) +else() + install (FILES libs/x86/dolapi32.dll libs/x86/nvdaControllerClient32.dll libs/x86/SAAPI32.dll DESTINATION lib) +endif() From 65441671cdeabf40b0a94a924560a381efc410d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Damstedt=20Rasmussen?= Date: Wed, 13 Oct 2021 22:27:18 +0200 Subject: [PATCH 2/3] Build Tolk in Github Workflow --- .github/workflows/cmake.yml | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000..0eecb17 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,42 @@ +name: Windows + +on: [push] + +jobs: + msvc: + strategy: + matrix: + include: + - name: VS2019Release32 + vmimage: windows-2019 + cmakeplatform: Win32 + - name: VS2019Release64 + vmimage: windows-2019 + cmakeplatform: x64 + runs-on: ${{ matrix.vmimage }} + name: ${{ matrix.name }} + steps: + - uses: actions/checkout@v2 + + - name: Generate CMake Projects + working-directory: ${{runner.workspace}} + shell: cmd + run: | + cmake -S Tolk -B output -A ${{ matrix.cmakeplatform }} -DCMAKE_INSTALL_PREFIX=install + + - name: Build CMake Projects + working-directory: ${{runner.workspace}} + shell: cmd + run: | + cmake --build output + + - name: Install CMake Projects + working-directory: ${{runner.workspace}} + shell: cmd + run: | + cmake --build output --target install + + - uses: actions/upload-artifact@v2 + with: + name: tolk-binaries-${{ matrix.cmakeplatform }} + path: ${{runner.workspace}}/install \ No newline at end of file From 1e538e20f79916aaa5853a5383847e1954f98aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Damstedt=20Rasmussen?= Date: Tue, 1 Apr 2025 21:29:16 +0200 Subject: [PATCH 3/3] Set cmake_minimum_required to 3.10 to comply with CMake v4 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a97844..8b7984a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.10) project(Tolk) option (TOLK_MULTITHREADED "Build Multi-Threaded (/MT) instead of Multi-Threaded DLL (/MD)" OFF)