Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to FindCUDAToolkit.cmake #3004

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/build_cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ defaults:
working-directory: dlib/test

jobs:
ubuntu-latest-gcc-default-cmake-3-8-ffmpeg5:
ubuntu-latest-gcc-default-cmake-3-17-ffmpeg5:
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
Expand All @@ -40,18 +40,18 @@ jobs:
sudo apt update
sudo apt install libwebp-dev make yasm

- name: Cache cmake 3.8.0
- name: Cache cmake 3.17.0
uses: actions/cache@v3
id: cache-cmake-download
with:
# cache this folder:
path: ~/cmake-3.8.0-Linux-x86_64
key: cmake-3.8.0_try3
path: ~/cmake-3.17.0-Linux-x86_64
key: cmake-3.17.0_try3

- run: |
# Get the minimum version of cmake dlib supports
wget https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.tar.gz
tar -xf cmake-3.8.0-Linux-x86_64.tar.gz -C ~
wget https://cmake.org/files/v3.17/cmake-3.17.0-Linux-x86_64.tar.gz
tar -xf cmake-3.17.0-Linux-x86_64.tar.gz -C ~
if: steps.cache-cmake-download.outputs.cache-hit != 'true'

- name: Cache FFmpeg 5
Expand All @@ -76,7 +76,7 @@ jobs:
run: |
mkdir build
cd build
~/cmake-3.8.0-Linux-x86_64/bin/cmake -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n5.1.3_installation ..
~/cmake-3.17.0-Linux-x86_64/bin/cmake -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n5.1.3_installation ..

- name: Build just tests
run: |
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

project(dlib_project)

Expand Down
75 changes: 29 additions & 46 deletions dlib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#


cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
Expand Down Expand Up @@ -649,26 +649,20 @@ if (NOT TARGET dlib)


if (DLIB_USE_CUDA)
find_package(CUDA 7.5)
find_package(CUDAToolkit QUIET)

if (CUDA_VERSION VERSION_GREATER 9.1 AND CMAKE_VERSION VERSION_LESS 3.12.2)
# This bit of weirdness is to work around a bug in cmake
list(REMOVE_ITEM CUDA_CUBLAS_LIBRARIES "CUDA_cublas_device_LIBRARY-NOTFOUND")
endif()


if (CUDA_FOUND AND MSVC AND NOT CUDA_CUBLAS_LIBRARIES AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
if (CUDAToolkit_FOUND AND MSVC AND NOT TARGET CUDA::cublas AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
message(WARNING "You have CUDA installed, but we can't use it unless you put visual studio in 64bit mode.")
set(CUDA_FOUND 0)
endif()

if (NOT CUDA_CUBLAS_LIBRARIES)
message(STATUS "Found CUDA, but CMake was unable to find the cuBLAS libraries that should be part of every basic CUDA "
"install. Your CUDA install is somehow broken or incomplete. Since cuBLAS is required for dlib to use CUDA we won't use CUDA.")
set(CUDA_FOUND 0)
endif()

if (CUDA_FOUND)
if (CUDAToolkit_FOUND)

# There is some bug in cmake that causes it to mess up the
# -std=c++11 option if you let it propagate it to nvcc in some
Expand Down Expand Up @@ -712,14 +706,25 @@ if (NOT TARGET dlib)

include(cmake_utils/test_for_cudnn/find_cudnn.txt)

if (cudnn AND cudnn_include AND NOT DEFINED cuda_test_compile_worked AND NOT DEFINED cudnn_test_compile_worked)
include(CheckLanguage)
check_language(CUDA)
set(cuda_compiler_found OFF)
if (CMAKE_CUDA_COMPILER)
set(cuda_compiler_found ON)
else()
message(STATUS " *** Cannot find CUDA compiler. If you are on windows using Visual Studio, make sure to install 'Visual Studio Integration' in the cuda installer.")
endif()

if (cudnn AND cudnn_include AND cuda_compiler_found AND NOT DEFINED cuda_test_compile_worked AND NOT DEFINED cudnn_test_compile_worked)
# make sure cuda is really working by doing a test compile
enable_language(CUDA)
message(STATUS "Building a CUDA test project to see if your compiler is compatible with CUDA...")

set(CUDA_TEST_CMAKE_FLAGS
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}"
"-DCMAKE_INCLUDE_PATH=${CMAKE_INCLUDE_PATH}"
"-DCMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}")
"-DCMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}"
"-DCUDAToolkit_ROOT=${CUDAToolkit_ROOT}")

if (NOT MSVC) # see https://github.com/davisking/dlib/issues/363
list(APPEND CUDA_TEST_CMAKE_FLAGS "-DCUDA_HOST_COMPILER=${CUDA_HOST_COMPILER}")
Expand Down Expand Up @@ -760,24 +765,6 @@ if (NOT TARGET dlib)
endif()
endif()
endif()

# Find where cuSOLVER is since the FindCUDA cmake package doesn't
# bother to look for it in older versions of cmake.
if (NOT CUDA_cusolver_LIBRARY)
get_filename_component(cuda_blas_path "${CUDA_CUBLAS_LIBRARIES}" DIRECTORY)
find_library(CUDA_cusolver_LIBRARY cusolver HINTS ${cuda_blas_path})
# CUDA 10.1 doesn't install symbolic links to libcusolver.so in
# the usual place. This is probably a bug in the cuda
# installer. In any case, If we haven't found cusolver yet go
# look in the cuda install folder for it. New versions of cmake
# do this correctly, but older versions need help.
if (NOT CUDA_cusolver_LIBRARY)
find_library(CUDA_cusolver_LIBRARY cusolver HINTS
/usr/local/cuda/lib64/
)
endif()
mark_as_advanced(CUDA_cusolver_LIBRARY)
endif()
# Also find OpenMP since cuSOLVER needs it. Importantly, we only
# look for one to link to if our use of BLAS, specifically the
# Intel MKL, hasn't already decided what to use. This is because
Expand All @@ -800,7 +787,7 @@ if (NOT TARGET dlib)
endif()
endif()

if (CUDA_FOUND AND cudnn AND cuda_test_compile_worked AND cudnn_test_compile_worked AND cudnn_include)
if (CUDAToolkit_FOUND AND cudnn AND cuda_test_compile_worked AND cudnn_test_compile_worked AND cudnn_include)
set(source_files ${source_files}
cuda/cuda_dlib.cu
cuda/cudnn_dlibapi.cpp
Expand All @@ -810,21 +797,22 @@ if (NOT TARGET dlib)
cuda/cuda_data_ptr.cpp
cuda/gpu_data.cpp
)
list (APPEND dlib_needed_private_libraries ${CUDA_CUBLAS_LIBRARIES})
list (APPEND dlib_needed_private_libraries CUDA::toolkit)
list (APPEND dlib_needed_private_libraries CUDA::cublas)
list (APPEND dlib_needed_private_libraries ${cudnn})
list (APPEND dlib_needed_private_libraries ${CUDA_curand_LIBRARY})
list (APPEND dlib_needed_private_libraries ${CUDA_cusolver_LIBRARY})
list (APPEND dlib_needed_private_libraries ${CUDA_CUDART_LIBRARY})
list (APPEND dlib_needed_private_libraries CUDA::curand)
list (APPEND dlib_needed_private_libraries CUDA::cusolver)
list (APPEND dlib_needed_private_libraries CUDA::cudart)
Comment on lines +800 to +805
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't work when generating pkgconfig files.
If you look at my old PR #2912, which included using FindCUDAToolkit.cmake, I was unable to properly interoperate with pkgconfig due to cmake's use of "blah::blah" when linking libraries. This was my final hurdle but sadly couldn't overcome it. It included a whole bunch of other tidy-ups too... Sad

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh no, this sounds bad. I wasn't reading all of the PR, because it is way too long. But I assume you reference this comment [1] of yours.

You suggest using the "old" cmake way of using XXX_LIBRARIES and XXX_INCLUDE_DIRS.
Given the result variables from the new finder [2], the major problem seems to be the XXX_LIBRARIES variable, which is not set. I was also browsing the cmake source code of the finder and there isn't even a private one.

Did you try out to get all the link libraries via a target property? [3] Maybe creating the XXX_LIBRARIES manually by extracting all the libraries from the LINK_LIBRARIES [4] property is fine.

[1] #2912 (comment)
[2] https://cmake.org/cmake/help/latest/module/FindCUDAToolkit.html#result-variables
[3] get_target_property: https://cmake.org/cmake/help/latest/command/get_target_property.html
[4] LINK_LIBRARIES: https://cmake.org/cmake/help/latest/prop_tgt/LINK_LIBRARIES.html

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried extracting all the link libraries but it isn't trivial. There are some old cmake libraries that attempt to do this but they're not maintained. Personally my preference would be to drop support for pkgconfig then this problem goes away. There is a ticket open https://gitlab.kitware.com/cmake/cmake/-/issues/22621 that discusses adding support for exporting pkgconfig files natively. But nothing's happened. Realistically, how many users are using dlib via pkgconfig? My guess is not very many.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue with the link libraries is that you have to do it recursively for all dependencies. It can get a bit nasty.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this sounds at least like a solution if pkgconfig cannot be dropped.

Long-term wise, a solution is probably needed anyway, as CMake linking on targets will very likely stay.

if(openmp_libraries)
list (APPEND dlib_needed_private_libraries ${openmp_libraries})
endif()

include_directories(${cudnn_include})
message(STATUS "Enabling CUDA support for dlib. DLIB WILL USE CUDA, compute capabilities: ${DLIB_CUDA_COMPUTE_CAPABILITIES}")
else()
set(DLIB_USE_CUDA OFF CACHE STRING ${DLIB_USE_BLAS_STR} FORCE )
set(DLIB_USE_CUDA OFF CACHE BOOL ${DLIB_USE_BLAS_STR} FORCE )
toggle_preprocessor_switch(DLIB_USE_CUDA)
if (NOT CUDA_FOUND)
if (NOT CUDAToolkit_FOUND)
message(STATUS "DID NOT FIND CUDA")
endif()
message(STATUS "Disabling CUDA support for dlib. DLIB WILL NOT USE CUDA")
Expand Down Expand Up @@ -875,15 +863,7 @@ if (NOT TARGET dlib)
endif()
endif()

# Tell CMake to build dlib via add_library()/cuda_add_library()
if (DLIB_USE_CUDA)
# The old cuda_add_library() command doesn't support CMake's newer dependency
# stuff, so we have to set the include path manually still, which we do here.
include_directories(${dlib_needed_public_includes})
cuda_add_library(dlib ${source_files} )
else()
add_library(dlib ${source_files} )
endif()
add_library(dlib ${source_files} )

endif () ##### end of if NOT DLIB_ISO_CPP_ONLY ##########################################################

Expand Down Expand Up @@ -917,6 +897,9 @@ if (NOT TARGET dlib)
target_compile_options(dlib PRIVATE "-DDLIB_CHECK_FOR_VERSION_MISMATCH=${DLIB_CHECK_FOR_VERSION_MISMATCH}")
endif()

if (DLIB_USE_CUDA)
set_target_properties(dlib PROPERTIES CUDA_ARCHITECTURES ${DLIB_CUDA_COMPUTE_CAPABILITIES})
endif()

# Allow the unit tests to ask us to compile the all/source.cpp file just to make sure it compiles.
if (DLIB_TEST_COMPILE_ALL_SOURCE_CPP)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

add_subdirectory(${CMAKE_CURRENT_LIST_DIR} dlib_build)

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This script checks if your compiler and host processor can generate and then run programs with AVX instructions.

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

# Don't rerun this script if its already been executed.
if (DEFINED AVX_IS_AVAILABLE_ON_HOST)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/check_if_neon_available.cmake
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This script checks if __ARM_NEON__ is defined for your compiler

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

# Don't rerun this script if its already been executed.
if (DEFINED ARM_NEON_IS_AVAILABLE)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This script checks if your compiler and host processor can generate and then run programs with SSE4 instructions.

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

# Don't rerun this script if its already been executed.
if (DEFINED SSE4_IS_AVAILABLE_ON_HOST)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/find_ffmpeg.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

message(STATUS "Searching for FFMPEG/LIBAV")
find_package(PkgConfig)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/find_libjpeg.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#This script just runs CMake's built in JPEG finding tool. But it also checks that the
#copy of libjpeg that cmake finds actually builds and links.

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

if (BUILDING_PYTHON_IN_MSVC)
# Never use any system copy of libjpeg when building python in visual studio
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/find_libpng.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#This script just runs CMake's built in PNG finding tool. But it also checks that the
#copy of libpng that cmake finds actually builds and links.

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

if (BUILDING_PYTHON_IN_MSVC)
# Never use any system copy of libpng when building python in visual studio
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/set_compiler_specific_options.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)


# Check if we are being built as part of a pybind11 module.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Including this cmake script into your cmake project will cause visual studio
# to build your project against the static C runtime.

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)

if (MSVC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
option (DLIB_FORCE_MSVC_STATIC_RUNTIME "use static runtime" ON)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_avx/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(avx_test)

set(USE_AVX_INSTRUCTIONS ON CACHE BOOL "Use AVX instructions")
Expand Down
7 changes: 4 additions & 3 deletions dlib/cmake_utils/test_for_cuda/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(cuda_test)

include_directories(../../cuda)
add_definitions(-DDLIB_USE_CUDA)

# Override the FindCUDA.cmake setting to avoid duplication of host flags if using a toolchain:
option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" OFF)
find_package(CUDA 7.5 REQUIRED)
find_package(CUDAToolkit 7.5 REQUIRED)
set(CUDA_HOST_COMPILATION_CPP ON)
list(APPEND CUDA_NVCC_FLAGS "-arch=sm_50;-std=c++14;-D__STRICT_ANSI__;-D_MWAITXINTRIN_H_INCLUDED;-D_FORCE_INLINES")

cuda_add_library(cuda_test STATIC cuda_test.cu )
enable_language(CUDA)
add_library(cuda_test STATIC cuda_test.cu )
9 changes: 6 additions & 3 deletions dlib/cmake_utils/test_for_cudnn/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(cudnn_test)

# Override the FindCUDA.cmake setting to avoid duplication of host flags if using a toolchain:
option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" OFF)
find_package(CUDA 7.5 REQUIRED)
find_package(CUDAToolkit 7.5 REQUIRED)
set(CUDA_HOST_COMPILATION_CPP ON)
list(APPEND CUDA_NVCC_FLAGS "-arch=sm_50;-std=c++14;-D__STRICT_ANSI__")
add_definitions(-DDLIB_USE_CUDA)
Expand All @@ -13,6 +13,9 @@ include(find_cudnn.txt)

if (cudnn_include AND cudnn)
include_directories(${cudnn_include})
cuda_add_library(cudnn_test STATIC ../../cuda/cudnn_dlibapi.cpp ${cudnn} )
enable_language(CUDA)
add_library(cudnn_test STATIC ../../cuda/cudnn_dlibapi.cpp ${cudnn} )
target_compile_features(cudnn_test PUBLIC cxx_std_14)
target_link_libraries(cudnn_test PRIVATE CUDA::toolkit)
target_link_libraries(cudnn_test PRIVATE CUDA::cudart)
endif()
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_libjpeg/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(test_if_libjpeg_is_broken)

find_package(JPEG)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_libjxl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(test_if_libjxl_is_broken)

include_directories(${JXL_INCLUDE_DIR})
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_libpng/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(test_if_libpng_is_broken)

find_package(PNG)
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_libwebp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(test_if_libwebp_is_broken)

include_directories(${WEBP_INCLUDE_DIR})
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_neon/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(neon_test)

add_library(neon_test STATIC neon_test.cpp )
Expand Down
2 changes: 1 addition & 1 deletion dlib/cmake_utils/test_for_sse4/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(sse4_test)

set(USE_SSE4_INSTRUCTIONS ON CACHE BOOL "Use SSE4 instructions")
Expand Down
2 changes: 1 addition & 1 deletion dlib/external/cblas/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#


cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project(cblas)


Expand Down
6 changes: 3 additions & 3 deletions dlib/external/pybind11/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
if(OSX AND CMAKE_VERSION VERSION_LESS 3.7)
# Bug in macOS CMake < 3.7 is unable to download catch
message(WARNING "CMAKE 3.7+ needed on macOS to download catch, and newer HIGHLY recommended")
elseif(WINDOWS AND CMAKE_VERSION VERSION_LESS 3.8)
# Only tested with 3.8+ in CI.
message(WARNING "CMAKE 3.8+ tested on Windows, previous versions untested")
elseif(WINDOWS AND CMAKE_VERSION VERSION_LESS 3.17)
# Only tested with 3.8´17+ in CI.
message(WARNING "CMAKE 3.17+ tested on Windows, previous versions untested")
endif()

message(STATUS "CMake ${CMAKE_VERSION}")
Expand Down
2 changes: 1 addition & 1 deletion dlib/java/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.17.0)
project (myproject)
set(java_package_name net.dlib)
set(source_files
Expand Down
Loading
Loading