aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2023-07-18 13:55:24 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2023-07-19 09:24:16 +0000
commit8d4414cedb428a93d67444dffb01abaef739d28a (patch)
treeaa5445dbeb2b9694c4f26123874c1df356065ef7
parent8d7b9cce9a58e1ea6c02637cf34cd05e2c1be46e (diff)
math/clad: New port: Automatic differentiation for C/C++
-rw-r--r--math/Makefile1
-rw-r--r--math/clad/Makefile23
-rw-r--r--math/clad/distinfo3
-rw-r--r--math/clad/files/patch-CMakeLists.txt19
-rw-r--r--math/clad/pkg-descr6
-rw-r--r--math/clad/pkg-plist37
6 files changed, 89 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index 4ef0d27252f9..208191e8ea97 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -223,6 +223,7 @@
SUBDIR += chryzodus
SUBDIR += chuffed
SUBDIR += cimod
+ SUBDIR += clad
SUBDIR += clasp
SUBDIR += clblas
SUBDIR += clblast
diff --git a/math/clad/Makefile b/math/clad/Makefile
new file mode 100644
index 000000000000..3d91651338d7
--- /dev/null
+++ b/math/clad/Makefile
@@ -0,0 +1,23 @@
+PORTNAME= clad
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.2
+CATEGORIES= math
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Automatic differentiation for C/C++
+WWW= https://github.com/vgvassilev/clad
+
+LICENSE= LGPL3
+LICENSE_FILE= ${WRKSRC}/License.txt
+
+USES= cmake compiler:c++14-lang llvm:15,build,run
+USE_LDCONFIG= yes
+
+USE_GITHUB= yes
+GH_ACCOUNT= vgvassilev
+
+CMAKE_ARGS= -DClang_DIR=${LLVM_PREFIX}/lib/cmake/clang \
+ -DLLVM_DIR=${LLVM_PREFIX}/lib/cmake/llvm
+CMAKE_ON= BUILD_SHARED_LIBS
+
+.include <bsd.port.mk>
diff --git a/math/clad/distinfo b/math/clad/distinfo
new file mode 100644
index 000000000000..b2b8e00aab64
--- /dev/null
+++ b/math/clad/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1689756219
+SHA256 (vgvassilev-clad-v1.2_GH0.tar.gz) = 35dd72349553acfe7cd66938bdd097cf86c6dc3ac71b1379ec6d0908a4fae08f
+SIZE (vgvassilev-clad-v1.2_GH0.tar.gz) = 918593
diff --git a/math/clad/files/patch-CMakeLists.txt b/math/clad/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..5bd87e30404d
--- /dev/null
+++ b/math/clad/files/patch-CMakeLists.txt
@@ -0,0 +1,19 @@
+--- CMakeLists.txt.orig 2023-07-19 08:50:39 UTC
++++ CMakeLists.txt
+@@ -299,9 +299,13 @@ if (CLAD_INCLUDE_DOCS)
+ endif()
+
+ if (NOT CLAD_BUILD_STATIC_ONLY)
+- add_subdirectory(test)
+- add_subdirectory(demos/ErrorEstimation/CustomModel)
+- add_subdirectory(demos/ErrorEstimation/PrintModel)
++ if (FREEBSD_BUILD_TESTS)
++ add_subdirectory(test)
++ endif()
++ if (FREEBSD_BUILD_DEMOS)
++ add_subdirectory(demos/ErrorEstimation/CustomModel)
++ add_subdirectory(demos/ErrorEstimation/PrintModel)
++ endif()
+
+ # Add benchmarking infrastructure.
+ if (CLAD_ENABLE_BENCHMARKS)
diff --git a/math/clad/pkg-descr b/math/clad/pkg-descr
new file mode 100644
index 000000000000..97f6e87a82c4
--- /dev/null
+++ b/math/clad/pkg-descr
@@ -0,0 +1,6 @@
+Clad enables automatic differentiation (AD) for C++. It is based on LLVM
+compiler infrastructure and is a plugin for Clang compiler. Clad is based on
+source code transformation. Given C++ source code of a mathematical function, it
+can automatically generate C++ code for computing derivatives of the function.
+It supports both forward-mode and reverse-mode AD.Clad has extensive coverage of
+modern C++ features and a robust fallback and recovery system in place.
diff --git a/math/clad/pkg-plist b/math/clad/pkg-plist
new file mode 100644
index 000000000000..1363f7b4609a
--- /dev/null
+++ b/math/clad/pkg-plist
@@ -0,0 +1,37 @@
+include/clad/Differentiator/Array.h
+include/clad/Differentiator/ArrayRef.h
+include/clad/Differentiator/BaseForwardModeVisitor.h
+include/clad/Differentiator/BuiltinDerivatives.h
+include/clad/Differentiator/CladConfig.h
+include/clad/Differentiator/CladUtils.h
+include/clad/Differentiator/Compatibility.h
+include/clad/Differentiator/DerivativeBuilder.h
+include/clad/Differentiator/DiffMode.h
+include/clad/Differentiator/DiffPlanner.h
+include/clad/Differentiator/Differentiator.h
+include/clad/Differentiator/ErrorEstimator.h
+include/clad/Differentiator/EstimationModel.h
+include/clad/Differentiator/ExternalRMVSource.h
+include/clad/Differentiator/ForwardModeVisitor.h
+include/clad/Differentiator/FunctionTraits.h
+include/clad/Differentiator/HessianModeVisitor.h
+include/clad/Differentiator/JacobianModeVisitor.h
+include/clad/Differentiator/MultiplexExternalRMVSource.h
+include/clad/Differentiator/NumericalDiff.h
+include/clad/Differentiator/ParseDiffArgsTypes.h
+include/clad/Differentiator/ReverseModeVisitor.h
+include/clad/Differentiator/ReverseModeVisitorDirectionKinds.h
+include/clad/Differentiator/STLBuiltins.h
+include/clad/Differentiator/StmtClone.h
+include/clad/Differentiator/Tape.h
+include/clad/Differentiator/VectorForwardModeVisitor.h
+include/clad/Differentiator/Version.h
+include/clad/Differentiator/VisitorBase.h
+include/clad/tools/ClangBackendPlugin.h
+include/clad/tools/ClangPlugin.h
+include/clad/tools/DerivedFnInfo.h
+lib/clad.so
+lib/libcladDifferentiator.so
+lib/libcladDifferentiator.so.15
+lib/libcladPlugin.so
+lib/libcladPlugin.so.15