diff --git a/.travis.yml b/.travis.yml
index 2467c99078cc3a1476eb275f300c557f1b804ddd..b50cb44a20376e7c78c4b2a14a05864f5a0c1d66 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,7 +14,9 @@ matrix:
     - name: "Documentation"
       env: TARGET=x86_64-unknown-linux-gnu
       script: sh ci/dox.sh
-      install: true
+      install:
+        - travis_retry rustup component add rust-src
+        - travis_retry cargo install xargo
       stage: tools-and-build-and-tier1
     - name: "Shellcheck"
       install: true
diff --git a/ci/dox.sh b/ci/dox.sh
index 3456288a3791dd873e63c22e8d386543646fd7df..21a63dd75591470d3cb38f965ebc0d6ac9b93e30 100644
--- a/ci/dox.sh
+++ b/ci/dox.sh
@@ -27,8 +27,11 @@ printf '### Platform-specific documentation\n' >> $PLATFORM_SUPPORT
 while read -r target; do
   echo "documenting ${target}"
 
-  #rustdoc -o "$TARGET_DOC_DIR/${target}" --target "${target}" src/lib.rs --cfg cross_platform_docs \
-  #  --crate-name libc
+  rustup target add "${target}" || true
+  xargo doc --target "${target}" \
+        --no-default-features  --features extra_traits
+
+  cp -r "target/${target}/doc" "${TARGET_DOC_DIR}/${target}"
 
   echo "* [${target}](${target}/libc/index.html)" >> $PLATFORM_SUPPORT
 done < targets