diff --git a/pkg/relic/Makefile b/pkg/relic/Makefile
index 78906b187cc8848f4cad5c54e0010b0b97323a22..30a185ddd6729e5de47938a6ce3adaebb301e388 100644
--- a/pkg/relic/Makefile
+++ b/pkg/relic/Makefile
@@ -5,17 +5,22 @@ PKG_LICENSE=LGPL-2.1
 
 .PHONY: all
 
+CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof
+
+TOOLCHAIN_FILE=$(PKG_BUILDDIR)/xcompile-toolchain.cmake
+
 all: $(PKG_BUILDDIR)/Makefile
-	"$(MAKE)" -C $(PKG_BUILDDIR) && \
+	$(MAKE) -C $(PKG_BUILDDIR) && \
 	cp $(PKG_BUILDDIR)/lib/librelic_s.a $(BINDIR)/$(PKG_NAME).a
 
-$(PKG_BUILDDIR)/comp-options.cmake: fix_source
-	cd "$(PKG_BUILDDIR)" && perl $(PKG_DIR)/generate-cmake-xcompile.perl > comp-options.cmake
+$(PKG_BUILDDIR)/Makefile: $(TOOLCHAIN_FILE)
+	cd $(PKG_BUILDDIR) && \
+	COMP="$(filter-out -Werror=old-style-definition -Werror=strict-prototypes, $(CFLAGS) ) " \
+	cmake -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
+		  -DCHECK=off -DTESTS=0 -DBENCH=0 -DSHLIB=off -Wno-dev $(RELIC_CONFIG_FLAGS) .
 
-$(PKG_BUILDDIR)/Makefile: $(PKG_BUILDDIR)/comp-options.cmake
-	cd "$(PKG_BUILDDIR)" && COMP="$(filter-out -Werror=old-style-definition -Werror=strict-prototypes, $(CFLAGS) ) " cmake -DCMAKE_TOOLCHAIN_FILE=comp-options.cmake -DCHECK=off -DTESTS=0 -DBENCH=0 -DSHLIB=off -Wno-dev $(RELIC_CONFIG_FLAGS) .
-
-CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof
+$(TOOLCHAIN_FILE): fix_source
+	$(RIOTBASE)/dist/tools/cmake/generate-xcompile-toolchain.sh > $(TOOLCHAIN_FILE)
 
 fix_source: git-download
 	./fix-util_print_wo_args.sh $(PKG_BUILDDIR)
@@ -23,4 +28,5 @@ fix_source: git-download
 
 clean::
 	@rm -rf $(BINDIR)/$(PKG_NAME).a
+
 include $(RIOTBASE)/pkg/pkg.mk
diff --git a/pkg/relic/generate-cmake-xcompile.perl b/pkg/relic/generate-cmake-xcompile.perl
deleted file mode 100755
index 34bc106ee6f07d6b0e5cf8fcb7f5f11152ccc21b..0000000000000000000000000000000000000000
--- a/pkg/relic/generate-cmake-xcompile.perl
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env perl
-print "INCLUDE(CMakeForceCompiler)\n";
-print "\n";
-print "\n";
-print "SET(CMAKE_SYSTEM_NAME Generic)\n";
-print "SET(CMAKE_SYSTEM_VERSION 1)\n";
-print "\n";
-print "SET(CMAKE_C_COMPILER \"$ENV{CC}\" CACHE STRING \"\")\n";
-print "SET(CMAKE_CXX_COMPILER \"$ENV{CXX}\" CACHE STRING \"\")\n";
-print "SET(CMAKE_RANLIB \"echo\" CACHE STRING \"\")\n";
-
-print "\n";
-print "# specify the cross compiler\n";
-print "CMAKE_FORCE_C_COMPILER(\${CMAKE_C_COMPILER} GNU)\n";
-print "CMAKE_FORCE_CXX_COMPILER(\${CMAKE_CXX_COMPILER} GNU)\n";
-print "SET(CMAKE_LINKER \"$ENV{LINK}\" CACHE STRING \"\")\n";
-print "\n";
-my $esc_c_flags = "$ENV{CFLAGS}";
-$esc_c_flags =~ s/"/\\"/g;
-print "SET(CMAKE_C_FLAGS \"$esc_c_flags\" CACHE STRING \"\")\n";
-print "\n";
-print "SET(CMAKE_EXE_LINKER_FLAGS \"$ENV{LINKFLAGS}\" CACHE STRING \"\")\n";
-
-print "\n";
-print "# search for programs in the build host directories\n";
-print "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n";
-print "# for libraries and headers in the target directories\n";
-print "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n";
-print "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n";