-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* [libsvm] Add new port * [libsvm] Add tools feature * [libsvm] Fix UWP build
- Loading branch information
Showing
3 changed files
with
133 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
cmake_minimum_required(VERSION 3.14) | ||
|
||
project(libsvm LANGUAGES C CXX) | ||
|
||
include(GNUInstallDirs) | ||
|
||
option(SVM_BUILD_TOOLS "Build SVM tools" OFF) | ||
|
||
set(libsvm_sources svm.cpp) | ||
if (WIN32) | ||
list(APPEND libsvm_sources svm.def) | ||
endif () | ||
|
||
add_library(libsvm ${libsvm_sources}) | ||
|
||
target_compile_definitions( | ||
libsvm | ||
PRIVATE | ||
$<$<C_COMPILER_ID:MSVC>: | ||
_CRT_SECURE_NO_WARNINGS | ||
strdup=_strdup | ||
> | ||
) | ||
|
||
target_include_directories( | ||
libsvm | ||
PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> | ||
) | ||
|
||
set_target_properties(libsvm PROPERTIES PUBLIC_HEADER svm.h) | ||
|
||
install(TARGETS libsvm EXPORT unofficial-libsvm-config) | ||
|
||
install( | ||
EXPORT unofficial-libsvm-config | ||
NAMESPACE unofficial::libsvm:: | ||
DESTINATION share/unofficial-libsvm | ||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ | ||
) | ||
|
||
if (SVM_BUILD_TOOLS) | ||
add_executable(svm-predict svm-predict.c) | ||
target_link_libraries(svm-predict PRIVATE libsvm) | ||
|
||
add_executable(svm-scale svm-scale.c) | ||
target_link_libraries(svm-scale PRIVATE libsvm) | ||
|
||
add_executable(svm-train svm-train.c) | ||
target_link_libraries(svm-train PRIVATE libsvm) | ||
|
||
install(TARGETS svm-predict svm-scale svm-train) | ||
|
||
if (WIN32) | ||
add_executable(svm-toy svm-toy/windows/svm-toy.cpp) | ||
target_link_libraries(svm-toy PRIVATE libsvm) | ||
set_target_properties(svm-toy PROPERTIES WIN32_EXECUTABLE ON) | ||
|
||
install(TARGETS svm-toy) | ||
endif () | ||
endif () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Source: libsvm | ||
Version: 323 | ||
Description: A library for Support Vector Machines | ||
Homepage: https://www.csie.ntu.edu.tw/~cjlin/libsvm/ | ||
|
||
Feature: tools | ||
Description: Build libsvm tools |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
include(vcpkg_common_functions) | ||
|
||
vcpkg_from_github( | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO cjlin1/libsvm | ||
REF v323 | ||
SHA512 c4abd408acf860c76cfc743e6c65d241fcb18443e741fc0f557f7cf7b4d0913c05f3afc5d49de8a42ff88db6fc7b046d08bcb0a3d2a24ba23e297ed1cfbb9131 | ||
HEAD_REF master | ||
) | ||
|
||
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) | ||
|
||
vcpkg_check_features( | ||
OUT_FEATURE_OPTIONS FEATURE_OPTIONS | ||
tools SVM_BUILD_TOOLS | ||
) | ||
|
||
vcpkg_configure_cmake( | ||
SOURCE_PATH ${SOURCE_PATH} | ||
PREFER_NINJA | ||
OPTIONS_DEBUG | ||
-DSVM_BUILD_TOOLS=OFF | ||
OPTIONS_RELEASE | ||
${FEATURE_OPTIONS} | ||
) | ||
|
||
vcpkg_install_cmake() | ||
|
||
vcpkg_copy_pdbs() | ||
|
||
vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-${PORT} TARGET_PATH share/unofficial-${PORT}) | ||
|
||
# Install tools | ||
if ("tools" IN_LIST FEATURES) | ||
if(VCPKG_TARGET_IS_WINDOWS) | ||
set(EXECUTABLE_SUFFIX ".exe") | ||
else() | ||
set(EXECUTABLE_SUFFIX "") | ||
endif() | ||
|
||
foreach (libsvm_tool svm-predict svm-scale svm-toy svm-train) | ||
if (EXISTS ${CURRENT_PACKAGES_DIR}/bin/${libsvm_tool}${EXECUTABLE_SUFFIX}) | ||
file( | ||
COPY ${CURRENT_PACKAGES_DIR}/bin/${libsvm_tool}${EXECUTABLE_SUFFIX} | ||
DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT} | ||
) | ||
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/${libsvm_tool}${EXECUTABLE_SUFFIX}) | ||
endif () | ||
|
||
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}) | ||
endforeach () | ||
|
||
if (VCPKG_LIBRARY_LINKAGE STREQUAL static) | ||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin) | ||
endif () | ||
endif () | ||
|
||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) | ||
|
||
# Handle copyright | ||
configure_file(${SOURCE_PATH}/COPYRIGHT ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY) | ||
|
||
# CMake integration test | ||
vcpkg_test_cmake(PACKAGE_NAME unofficial-${PORT}) |