From 8bd3481146886136d2c05029f5a11d68f796f2c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Thu, 17 Dec 2020 09:18:20 +0100 Subject: [clrng] Add new port: clRNG (#14876) --- ports/clrng/001-build-fixup.patch | 124 ++++++++++++++++++++++++++++++++++++++ ports/clrng/CONTROL | 6 ++ ports/clrng/portfile.cmake | 48 +++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 ports/clrng/001-build-fixup.patch create mode 100644 ports/clrng/CONTROL create mode 100644 ports/clrng/portfile.cmake diff --git a/ports/clrng/001-build-fixup.patch b/ports/clrng/001-build-fixup.patch new file mode 100644 index 000000000..4bdd727ee --- /dev/null +++ b/ports/clrng/001-build-fixup.patch @@ -0,0 +1,124 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 65f51db..f010bb8 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -31,7 +31,7 @@ + # ######################################################################## + + +-cmake_minimum_required( VERSION 2.8.10 ) ++cmake_minimum_required( VERSION 3.0 ) + + if( CMAKE_GENERATOR MATCHES "NMake" ) + option( NMAKE_COMPILE_VERBOSE "Print compile and link strings to the console" OFF ) +@@ -127,7 +127,6 @@ if( BUILD64 ) + set_property( GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE ) + message( STATUS "64bit build - FIND_LIBRARY_USE_LIB64_PATHS TRUE" ) + +- set( SUFFIX_LIB_DEFAULT "64" ) + else( ) + set_property( GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE ) + message( STATUS "32bit build - FIND_LIBRARY_USE_LIB64_PATHS FALSE" ) +@@ -161,7 +160,8 @@ set( SUFFIX_BIN ${SUFFIX_BIN_DEFAULT} CACHE STRING "String to append to 'bin' in + #endif( ) + + # This will define OPENCL_FOUND +-find_package( OpenCL ) ++find_package( OpenCL REQUIRED ) ++find_package( Threads REQUIRED ) + + if( (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_LESS 2.8) ) + message( STATUS "Cmake version 2.8 or greater needed to use GTest" ) +@@ -170,7 +170,7 @@ else() + find_package( GTest ) + + # Hack to get googletest v1.6 to work with vs2012 +- if( MSVC11 ) ++ if( 0 ) + add_definitions( "/D_VARIADIC_MAX=10" ) + endif( ) + endif() +@@ -196,7 +196,7 @@ get_filename_component( C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME_WE ) + # message( "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} ) + + # Set common compile and link options +-if( MSVC ) ++if( 0 ) + # Following options for nMake + message( STATUS "Detected MSVS Ver: " ${MSVC_VERSION} ) + +@@ -206,6 +206,7 @@ if( MSVC ) + string( REGEX REPLACE "/STACK:[0-9]+" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}" ) + + elseif( CMAKE_COMPILER_IS_GNUCXX ) ++ if( 0 ) + message( STATUS "Detected GNU fortran compiler." ) + EXEC_PROGRAM( ${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE vnum ) + STRING(REGEX REPLACE ".*([0-9])\\.([0-9])\\.([0-9]).*" "\\1\\2\\3" vnum ${vnum}) +@@ -216,6 +217,7 @@ elseif( CMAKE_COMPILER_IS_GNUCXX ) + + set( CMAKE_CXX_FLAGS "-pthread ${CMAKE_CXX_FLAGS}" ) + set( CMAKE_C_FLAGS "-std=c11 -Wall -pedantic-errors -pthread ${CMAKE_C_FLAGS}" ) ++ endif() + + if( BUILD64 ) + set( CMAKE_CXX_FLAGS "-m64 ${CMAKE_CXX_FLAGS}" ) +diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt +index dbe479d..8717e58 100644 +--- a/src/library/CMakeLists.txt ++++ b/src/library/CMakeLists.txt +@@ -62,8 +62,6 @@ set( clRNG.Headers private.h + + set( clRNG.Files ${clRNG.Source} ${clRNG.Headers} ) + +-# Include standard OpenCL headers +-include_directories( ${OPENCL_INCLUDE_DIRS} ${PROJECT_BINARY_DIR}/include ../include ) + + if(BUILD_SHARED_LIBRARY) + add_library( clRNG SHARED ${clRNG.Files} ) +@@ -72,6 +70,15 @@ else() + endif() + target_link_libraries( clRNG ${OPENCL_LIBRARIES} ) + ++target_link_libraries( clRNG PUBLIC ++ OpenCL::OpenCL ++ Threads::Threads ++) ++target_include_directories( clRNG PUBLIC ++ $ ++ $ ++) ++ + set_target_properties( clRNG PROPERTIES VERSION ${CLRNG_VERSION} ) + set_target_properties( clRNG PROPERTIES SOVERSION ${CLRNG_SOVERSION} ) + set_target_properties( clRNG PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/staging" ) +@@ -89,7 +96,7 @@ install( TARGETS clRNG + EXPORT clRNG-Targets + RUNTIME DESTINATION bin${SUFFIX_BIN} + LIBRARY DESTINATION lib${SUFFIX_LIB} +- ARCHIVE DESTINATION lib${SUFFIX_LIB}/import ++ ARCHIVE DESTINATION lib${SUFFIX_LIB} + ) + + # CMake config files for clRNG +@@ -139,9 +146,9 @@ endif( ) + include( InstallRequiredSystemLibraries ) + + # Install necessary runtime files for debug builds +-install( PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} +- CONFIGURATIONS Debug +- DESTINATION ${CLRNG_RUNTIME_DESTINATION} ) ++#install( PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ++# CONFIGURATIONS Debug ++# DESTINATION ${CLRNG_RUNTIME_DESTINATION} ) + + # Install all *.pdb files for debug builds + install( DIRECTORY ${PROJECT_BINARY_DIR}/staging/ +@@ -152,6 +159,6 @@ install( DIRECTORY ${PROJECT_BINARY_DIR}/staging/ + + # Install a snapshot of the source as it was for this build; useful for the .pdb's + install( DIRECTORY ${PROJECT_SOURCE_DIR} +- DESTINATION ${CLRNG_RUNTIME_DESTINATION} ++ DESTINATION "." + OPTIONAL + CONFIGURATIONS Debug ) diff --git a/ports/clrng/CONTROL b/ports/clrng/CONTROL new file mode 100644 index 000000000..35c19e5e6 --- /dev/null +++ b/ports/clrng/CONTROL @@ -0,0 +1,6 @@ +Source: clrng +Version: 2020-12-01 +Build-Depends: opencl +Supports: !arm64 +Homepage: https://github.com/clMathLibraries/clRNG +Description: clRNG is a library for uniform random number generation in OpenCL. diff --git a/ports/clrng/portfile.cmake b/ports/clrng/portfile.cmake new file mode 100644 index 000000000..d6a390a3e --- /dev/null +++ b/ports/clrng/portfile.cmake @@ -0,0 +1,48 @@ +vcpkg_fail_port_install(ON_ARCH "arm64") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO clMathLibraries/clRNG + REF 4a16519ddf52ee0a5f0b7e6288b0803b9019c13b + SHA512 28bda5d2a156e7394917f8c40bd1e8e7b52cf680abc0ef50c2650b1d546c0a1d0bd47ceeccce3cd7c79c90a15494c3d27829e153613a7d8e18267ce7262eeb6e + HEAD_REF master + PATCHES + 001-build-fixup.patch +) + +file(REMOVE ${SOURCE_PATH}/src/FindOpenCL.cmake) + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND NOT VCPKG_CMAKE_SYSTEM_NAME) + set(R123_SSE_FLAG [[-DCMAKE_C_FLAGS="/DR123_USE_SSE=0"]]) +endif() + +# We only have x64 and x86 as valid archs, as arm64 fails fast +string(COMPARE EQUAL "${VCPKG_TARGET_ARCHITECTURE}" "x64" BUILD64) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED_LIBRARY) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH}/src + PREFER_NINJA + OPTIONS + -DBUILD_SHARED_LIBRARY=${BUILD_SHARED_LIBRARY} + -DBUILD64=${BUILD64} + -DBUILD_TEST=OFF + -DBUILD_CLIENT=OFF + ${R123_SSE_FLAG} +) + +vcpkg_install_cmake() + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file( + REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/bin" + "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/clRNG) + +vcpkg_copy_pdbs() + +file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) -- cgit v1.2.3