diff --git a/absl/numeric/BUILD.bazel b/absl/numeric/BUILD.bazel
index a86b8d8d4fd1d75e8123eab3b65334399bd0c96e..c118d013c958e33d27872988f57caa11030617f2 100644
--- a/absl/numeric/BUILD.bazel
+++ b/absl/numeric/BUILD.bazel
@@ -10,7 +10,11 @@ licenses(["notice"])  # Apache 2.0
 
 cc_library(
     name = "int128",
-    srcs = ["int128.cc"],
+    srcs = [
+        "int128.cc",
+        "int128_have_intrinsic.inc",
+        "int128_no_intrinsic.inc",
+    ],
     hdrs = ["int128.h"],
     copts = ABSL_DEFAULT_COPTS,
     deps = [
diff --git a/absl/numeric/int128.h b/absl/numeric/int128.h
index ecd6b371f7ead2d8f60a5e0f002b89d8425a6489..a2ca29a03ad9a4c7df328f502313f5dd024cc564 100644
--- a/absl/numeric/int128.h
+++ b/absl/numeric/int128.h
@@ -625,6 +625,12 @@ inline uint128& uint128::operator--() {
   return *this;
 }
 
+#if defined(ABSL_HAVE_INTRINSIC_INT128)
+#include "absl/numeric/int128_have_intrinsic.inc"
+#else  // ABSL_HAVE_INTRINSIC_INT128
+#include "absl/numeric/int128_no_intrinsic.inc"
+#endif  // ABSL_HAVE_INTRINSIC_INT128
+
 }  // namespace absl
 
 #endif  // ABSL_NUMERIC_INT128_H_
diff --git a/absl/numeric/int128_have_intrinsic.inc b/absl/numeric/int128_have_intrinsic.inc
index bb6491e178abbcee2996319d5fad4daa32dbc513..49bde07678709bfbf92942ad2aeb43ff6624c08c 100644
--- a/absl/numeric/int128_have_intrinsic.inc
+++ b/absl/numeric/int128_have_intrinsic.inc
@@ -1,3 +1,3 @@
 // This file will contain :int128 implementation details that depend on internal
 // representation when ABSL_HAVE_INTRINSIC_INT128 is defined. This file will be
-// included by int128.h.
\ No newline at end of file
+// included by int128.h.