diff --git a/.gitignore b/.gitignore
index d797f4f53d99e7ea7d14916134506ab1e64e4f7f..07fa3afac55c704da706dd5c97a59b81f78e2c5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -144,8 +144,6 @@ uptime-*.json
 /src/common/libor-event.a
 /src/common/libor-event-testing.a
 /src/common/libor-event.lib
-/src/common/libcurve25519_donna.a
-/src/common/libcurve25519_donna.lib
 
 # /src/config/
 /src/config/Makefile
@@ -164,6 +162,7 @@ uptime-*.json
 /src/ext/keccak-tiny/libkeccak-tiny.lib
 
 # /src/lib
+/src/lib/libcurve25519_donna.a
 /src/lib/libtor-compress.a
 /src/lib/libtor-compress-testing.a
 /src/lib/libtor-crypt-ops.a
diff --git a/src/common/include.am b/src/common/include.am
index fb5472f3b91f21211bd13db9095545fe049b037f..3b49220cec58f1bfc645f6fc77e724719e3b7f55 100644
--- a/src/common/include.am
+++ b/src/common/include.am
@@ -17,31 +17,6 @@ else
 libor_extra_source=
 endif
 
-src_common_libcurve25519_donna_a_CFLAGS=
-
-if BUILD_CURVE25519_DONNA
-src_common_libcurve25519_donna_a_SOURCES=\
-	src/ext/curve25519_donna/curve25519-donna.c
-# See bug 13538 -- this code is known to have signed overflow issues.
-src_common_libcurve25519_donna_a_CFLAGS+=\
-	@F_OMIT_FRAME_POINTER@ @CFLAGS_CONSTTIME@
-noinst_LIBRARIES+=src/common/libcurve25519_donna.a
-LIBDONNA=src/common/libcurve25519_donna.a
-else
-if BUILD_CURVE25519_DONNA_C64
-src_common_libcurve25519_donna_a_CFLAGS+=@CFLAGS_CONSTTIME@
-src_common_libcurve25519_donna_a_SOURCES=\
-	src/ext/curve25519_donna/curve25519-donna-c64.c
-noinst_LIBRARIES+=src/common/libcurve25519_donna.a
-LIBDONNA=src/common/libcurve25519_donna.a
-else
-LIBDONNA=
-endif
-endif
-
-LIBDONNA += $(LIBED25519_REF10)
-LIBDONNA += $(LIBED25519_DONNA)
-
 if THREADS_PTHREADS
 threads_impl_source=src/common/compat_pthreads.c
 endif
diff --git a/src/include.am b/src/include.am
index e82943f733edd8b993b72e7a1997898569bf6628..685fe3433771684713667ce0688c92a8998f8ef3 100644
--- a/src/include.am
+++ b/src/include.am
@@ -4,6 +4,7 @@ include src/lib/cc/include.am
 include src/lib/ctime/include.am
 include src/lib/compress/include.am
 include src/lib/crypt_ops/include.am
+include src/lib/include.libdonna.am
 include src/lib/tls/include.am
 include src/lib/trace/include.am
 include src/common/include.am
diff --git a/src/lib/include.libdonna.am b/src/lib/include.libdonna.am
new file mode 100644
index 0000000000000000000000000000000000000000..5b92dc58a06787702db6c41e5d980c83672e165b
--- /dev/null
+++ b/src/lib/include.libdonna.am
@@ -0,0 +1,24 @@
+src_lib_libcurve25519_donna_a_CFLAGS=
+
+if BUILD_CURVE25519_DONNA
+src_lib_libcurve25519_donna_a_SOURCES=\
+	src/ext/curve25519_donna/curve25519-donna.c
+# See bug 13538 -- this code is known to have signed overflow issues.
+src_lib_libcurve25519_donna_a_CFLAGS+=\
+	@F_OMIT_FRAME_POINTER@ @CFLAGS_CONSTTIME@
+noinst_LIBRARIES+=src/lib/libcurve25519_donna.a
+LIBDONNA=src/lib/libcurve25519_donna.a
+else
+if BUILD_CURVE25519_DONNA_C64
+src_lib_libcurve25519_donna_a_CFLAGS+=@CFLAGS_CONSTTIME@
+src_lib_libcurve25519_donna_a_SOURCES=\
+	src/ext/curve25519_donna/curve25519-donna-c64.c
+noinst_LIBRARIES+=src/lib/libcurve25519_donna.a
+LIBDONNA=src/lib/libcurve25519_donna.a
+else
+LIBDONNA=
+endif
+endif
+
+LIBDONNA += $(LIBED25519_REF10)
+LIBDONNA += $(LIBED25519_DONNA)