]> mj.ucw.cz Git - libucw.git/blobdiff - lib/autoconf.cfg
Added a trivial implementation of radix sorting.
[libucw.git] / lib / autoconf.cfg
index 66c4056cd079c14799bf648ae2983641f569fd63..43e4a7ec6ce94d1b861afb5b815c9a3c88fa6ef5 100644 (file)
@@ -75,12 +75,10 @@ sub parse_cpuinfo_darwin() {
 
 sub parse_cpuinfo() {
        my @cpu;
-       if (IsSet("CONFIG_EXACT_CPU")) {
-               if (IsSet("CONFIG_LINUX")) {
-                       @cpu = parse_cpuinfo_linux();
-               } elsif (IsSet("CONFIG_DARWIN")) {
-                       @cpu = parse_cpuinfo_darwin();
-               }
+       if (IsSet("CONFIG_LINUX")) {
+               @cpu = parse_cpuinfo_linux();
+       } elsif (IsSet("CONFIG_DARWIN")) {
+               @cpu = parse_cpuinfo_darwin();
        }
        $cpu[0] = "" if !defined $cpu[0];
        $cpu[1] = 0 if !defined $cpu[1];
@@ -98,7 +96,8 @@ Test("CPU_ARCH", "Checking for CPU architecture", sub {
                UnSet("CPU_BIG_ENDIAN");
                Set("CPU_ALLOW_UNALIGNED");
                Set("CPU_STRUCT_ALIGN" => 4);
-               if (my ($vendor, $family, $model) = parse_cpuinfo()) {
+               if (IsSet("CONFIG_EXACT_CPU")) {
+                       my ($vendor, $family, $model) = parse_cpuinfo();
                        # Try to understand CPU vendor, family and model [inspired by MPlayer's configure script]
                        if ($vendor eq "AuthenticAMD") {
                                if ($family >= 6) {
@@ -128,8 +127,10 @@ Test("CPU_ARCH", "Checking for CPU architecture", sub {
                                }
                        }
                        Log (($arch ne "") ? "(using /proc/cpuinfo) " : "(don't understand /proc/cpuinfo) ");
+                       return $arch;
+               } else {
+                       return "default";
                }
-               return $arch;
        } elsif ($mach eq "amd64") {
                Set("CPU_AMD64");
                Set("CPU_64BIT_POINTERS");
@@ -137,21 +138,28 @@ Test("CPU_ARCH", "Checking for CPU architecture", sub {
                UnSet("CPU_BIG_ENDIAN");
                Set("CPU_ALLOW_UNALIGNED");
                Set("CPU_STRUCT_ALIGN" => 8);
-               if (my ($vendor, $family, $model) = parse_cpuinfo()) {
+               if (IsSet("CONFIG_EXACT_CPU")) {
                        # In x86-64 world, the detection is somewhat easier so far...
+                       my ($vendor, $family, $model) = parse_cpuinfo();
                        if ($vendor eq "AuthenticAMD") {
                                $arch = "athlon64";
                        } elsif ($vendor eq "GenuineIntel") {
                                $arch = "nocona";
                        }
                        Log (($arch ne "") ? "(using /proc/cpuinfo) " : "(don't understand /proc/cpuinfo) ");
+                       return $arch;
+               } else {
+                       return "default";
                }
-               return $arch;
        } else {
-               return "";
+               return "unknown";
        }
 });
 
+if (Get("CPU_ARCH") eq "unknown") {
+       Warn "CPU architecture not recognized, using defaults, keep fingers crossed.\n";
+}
+
 ### Compiler and its Options ###
 
 # C flags: tell the compiler we're speaking C99, and disable common symbols
@@ -159,9 +167,7 @@ Set("CLANG" => "-std=gnu99 -fno-common");
 
 # C optimizations
 Set("COPT" => '-O2');
-if (Get("CPU_ARCH") eq "") {
-       Warn "CPU type not recognized, using defaults, keep fingers crossed.";
-} else {
+if (Get("CPU_ARCH") ne "unknown" && Get("CPU_ARCH") ne "default") {
        Append("COPT", '-march=$(CPU_ARCH)');
 }