Add SSE2 and SSE4.1 limited builds.

As the machines we test on get fancier and fancier, we're losing
coverage of older instruction sets.  This adds a flag to skip
CPU detection, and two new builds to test SSE2 and SSE4.1.

Change-Id: Ie28518b30860f90c80f71020e64e3696a7047021
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/213849
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/build.ninja b/build.ninja
index 0310e1f..f2eb262 100644
--- a/build.ninja
+++ b/build.ninja
@@ -2,6 +2,8 @@
 
 subninja build/clang
 subninja build/clang.O0
+subninja build/clang.sse2
+subninja build/clang.sse41
 subninja build/clang.avx512
 subninja build/clang.lsan
 subninja build/clang.m32
diff --git a/build/clang.sse2 b/build/clang.sse2
new file mode 100644
index 0000000..f26ec79
--- /dev/null
+++ b/build/clang.sse2
@@ -0,0 +1,4 @@
+mode         = .sse2
+extra_cflags = -msse2 -mno-sse3 -mno-ssse3 -mno-sse4.1 -DSKCMS_NO_RUNTIME_CPU_DETECTION
+include build/clang
+
diff --git a/build/clang.sse41 b/build/clang.sse41
new file mode 100644
index 0000000..20c4ed6
--- /dev/null
+++ b/build/clang.sse41
@@ -0,0 +1,4 @@
+mode         = .sse41
+extra_cflags = -msse4.1 -DSKCMS_NO_RUNTIME_CPU_DETECTION
+include build/clang
+
diff --git a/skcms.cc b/skcms.cc
index 3d97dd1..2a68439 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -1875,6 +1875,7 @@
 
 // Now, instantiate any other versions of run_program() we may want for runtime detection.
 #if !defined(SKCMS_PORTABLE) &&                           \
+    !defined(SKCMS_NO_RUNTIME_CPU_DETECTION) &&           \
         (( defined(__clang__) && __clang_major__ >= 5) || \
          (!defined(__clang__) && defined(__GNUC__)))      \
      && defined(__x86_64__)