Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1398 - in trunk: . CMake


Chronological Thread 
  • From: bigler@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1398 - in trunk: . CMake
  • Date: Thu, 24 May 2007 12:36:45 -0600 (MDT)

Author: bigler
Date: Thu May 24 12:36:45 2007
New Revision: 1398

Added:
   trunk/CMake/ConfigArchitecture.cmake
   trunk/CMake/ConfigCompilerFlags.cmake
   trunk/CMake/LinuxCPUInfo.cmake
      - copied, changed from r1397, trunk/CMake/linux-precise-arch.cmake
   trunk/CMake/ProcessorInfo.txt
Removed:
   trunk/CMake/linux-precise-arch.cmake
Modified:
   trunk/CMake/ConfigApple.cmake
   trunk/CMake/ConfigIA64.cmake
   trunk/CMake/ConfigIccVersion.cmake
   trunk/CMake/ConfigX86_64.cmake
   trunk/CMake/Macros.cmake
   trunk/CMakeLists.txt
Log:

New world order for manta configuration.  This should do a much better
job of generating good default compiler optimizations based on the
compiler and processor you are using.

CMake/ConfigApple.cmake

  Added newline.

CMake/ConfigArchitecture.cmake

  Configure different parameters based on the system architecture.

CMake/ConfigCompilerFlags.cmake

  Set bazillions of compiler flags based on compiler and processor
  used.

CMake/ConfigIA64.cmake
CMake/ConfigIccVersion.cmake
CMake/ConfigX86_64.cmake

  Use USING_ICC/ICPC instead of using a regular expression.

CMake/LinuxCPUInfo.cmake

  Don't spit anything out.

CMake/Macros.cmake

  Added APPEND_TO_STRING and PREPEND_TO_STRING.

  Changed FORCE_ADD_CXX_FLAGS to FORCE_ADD_FLAGS, so that I could use
  it with other paramters besides CMAKE_CXX_FLAGS.

CMake/ProcessorInfo.txt

  Information about different processors and optimization flags.

CMake/linux-precise-arch.cmake

  Moved to LinuxCPUInfo.cmake.

CMakeLists.txt

  Use ConfigArchitecture, CompilerInfo, and ConfigComipilerFlags.

  Got rid of ConfigIA64, ConfigX86_64, ConfigIccVersion, ConfigIrix,
  and ConfigApple.

  Use FORCE_ADD_FLAGS instead of FORCE_ADD_CXX_FLAGS.

  Remove force adding of "-Wall".  This is configured elsewhere and
  not manditory.


Modified: trunk/CMake/ConfigApple.cmake
==============================================================================
--- trunk/CMake/ConfigApple.cmake       (original)
+++ trunk/CMake/ConfigApple.cmake       Thu May 24 12:36:45 2007
@@ -24,4 +24,4 @@
 
   FIRST_TIME_SET(CMAKE_CXX_FLAGS_DEBUG   "-O0 -g -D_GLIBCXX_DEBUG" STRING 
"Debug Flags")
 
-ENDIF (APPLE)
\ No newline at end of file
+ENDIF (APPLE)

Added: trunk/CMake/ConfigArchitecture.cmake
==============================================================================
--- (empty file)
+++ trunk/CMake/ConfigArchitecture.cmake        Thu May 24 12:36:45 2007
@@ -0,0 +1,36 @@
+# This file will set architecture and system variables.  Compiler
+# flags should go into ConfigComipilerFlags.cmake.
+
+
+# Assume that if we are running on an Itanium (ia64), then it is an
+# SGI linux system
+IF   (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
+
+  SET(SGI_LINUX TRUE)
+
+ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
+
+IF (APPLE)
+
+  # Obtain output of /usr/bin/macine
+  EXEC_PROGRAM("/usr/bin/machine" OUTPUT_VARIABLE APPLE_MACHINE)
+
+  # Apple G4
+  IF (${APPLE_MACHINE} MATCHES "ppc7450")
+    SET(APPLE_G4 TRUE)
+  ENDIF (${APPLE_MACHINE} MATCHES "ppc7450")
+
+  # Apple G5
+  IF (${APPLE_MACHINE} MATCHES "ppc970")
+    SET(APPLE_G5 TRUE)
+  ENDIF(${APPLE_MACHINE} MATCHES "ppc970")
+
+  # Intel
+  IF (${APPLE_MACHINE} MATCHES "i486")
+    SET(APPLE_X86 TRUE)
+  ENDIF (${APPLE_MACHINE} MATCHES "i486")
+
+#   MESSAGE("APPLE_G4  = ${APPLE_G4}")
+#   MESSAGE("APPLE_G5  = ${APPLE_G5}")
+#   MESSAGE("APPLE_X86 = ${APPLE_X86}")
+ENDIF(APPLE)

Added: trunk/CMake/ConfigCompilerFlags.cmake
==============================================================================
--- (empty file)
+++ trunk/CMake/ConfigCompilerFlags.cmake       Thu May 24 12:36:45 2007
@@ -0,0 +1,254 @@
+# This will create a set of default compiler flags based on the system
+# and compiler supplied.
+
+##############################################################
+## Compiler libraries
+##############################################################
+
+# Some compilers in non default locations have libraries they need in
+# order to run properly.  You could change your LD_LIBRARY_PATH or you
+# could add the path toth to the rpath of the library or executable.
+# This helps with that.
+
+IF(NOT COMPILER_LIBRARY_PATH)
+  # Try and guess it
+  IF(USING_ICC)
+    SET(compiler_test_compiler ${CMAKE_C_COMPILER})
+  ENDIF(USING_ICC)
+  IF(USING_ICPC)
+    SET(compiler_test_compiler ${CMAKE_CXX_COMPILER})
+  ENDIF(USING_ICPC)
+  IF(compiler_test_compiler)
+    # TODO(bigler): get the full path of the compiler and guess the
+    # library from that.
+  ENDIF(compiler_test_compiler)
+ENDIF(NOT COMPILER_LIBRARY_PATH)
+
+SET(COMPILER_LIBRARY_PATH "${COMPILER_LIBRARY_PATH}" CACHE PATH "Path to 
compiler libraries" FORCE)
+
+IF(EXISTS "${COMPILER_LIBRARY_PATH}")
+  SET(rpath_arg "-Wl,-rpath,\"${COMPILER_LIBRARY_PATH}\"")
+  # TODO(bigler): remove the old path if there is one
+  FORCE_ADD_FLAGS(CMAKE_EXE_LINKER_FLAGS ${rpath_arg})
+  FORCE_ADD_FLAGS(CMAKE_MODULE_LINKER_FLAGS ${rpath_arg})
+  FORCE_ADD_FLAGS(CMAKE_SHARED_LINKER_FLAGS ${rpath_arg})
+ELSE(EXISTS "${COMPILER_LIBRARY_PATH}")
+  IF(COMPILER_LIBRARY_PATH)
+    MESSAGE(FATAL_ERROR "COMPILER_LIBRARY_PATH is set, but the path does not 
exist:\n${COMPILER_LIBRARY_PATH}")
+  ENDIF(COMPILER_LIBRARY_PATH)
+ENDIF(EXISTS "${COMPILER_LIBRARY_PATH}")
+
+##############################################################
+## System independent
+##############################################################
+
+# Initialize these parameters
+SET(C_FLAGS "")
+SET(C_FLAGS_DEBUG "")
+SET(C_FLAGS_RELEASE "")
+
+SET(CXX_FLAGS "")
+SET(CXX_FLAGS_DEBUG "")
+SET(CXX_FLAGS_RELEASE "")
+
+# Set the default warning levels for each compiler
+
+####################
+SET(WARNING_FLAGS "-Wall -wd193,383,424,981,1419,1572") #-Wcheck may also 
work
+# Solomon also uses these warning flags -wd1188,1476,1505
+SET(DEBUG_FLAGS "-O0 -g -restrict")
+SET(RELEASE_FLAGS "-O3 -g -restrict")
+IF   (USING_ICC)
+  APPEND_TO_STRING(C_FLAGS         ${WARNING_FLAGS})
+  APPEND_TO_STRING(C_FLAGS_DEBUG   ${DEBUG_FLAGS})
+  APPEND_TO_STRING(C_FLAGS_RELEASE ${RELEASE_FLAGS})
+ENDIF(USING_ICC)
+
+IF   (USING_ICPC)
+  APPEND_TO_STRING(CXX_FLAGS         ${WARNING_FLAGS})
+  APPEND_TO_STRING(CXX_FLAGS_DEBUG   "${DEBUG_FLAGS} -D_GLIBCXX_DEBUG")
+  APPEND_TO_STRING(CXX_FLAGS_RELEASE ${RELEASE_FLAGS})
+ENDIF(USING_ICPC)
+
+####################
+SET(WARNING_FLAGS "-Wall")
+SET(DEBUG_FLAGS "-O0 -g3")
+SET(RELEASE_FLAGS "-O3 -DNDEBUG -g3 -fgcse-sm -funroll-loops 
-fstrict-aliasing -fsched-interblock -ffast-math -freorder-blocks")
+IF   (USING_GCC)
+  APPEND_TO_STRING(C_FLAGS         ${WARNING_FLAGS})
+  APPEND_TO_STRING(C_FLAGS_DEBUG   ${DEBUG_FLAGS})
+  APPEND_TO_STRING(C_FLAGS_RELEASE ${RELEASE_FLAGS})
+ENDIF(USING_GCC)
+
+IF   (USING_GPP)
+  APPEND_TO_STRING(CXX_FLAGS         ${WARNING_FLAGS})
+  APPEND_TO_STRING(CXX_FLAGS_DEBUG   "${DEBUG_FLAGS} -D_GLIBCXX_DEBUG")
+  APPEND_TO_STRING(CXX_FLAGS_RELEASE ${RELEASE_FLAGS})
+ENDIF(USING_GPP)
+
+
+##############################################################
+## IA64
+##############################################################
+IF   (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
+  APPEND_TO_STRING(INTEL_OPT "-tpp2")
+ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
+
+##############################################################
+## Apple
+##############################################################
+IF (APPLE_G4)
+  APPEND_TO_STRING(GCC_OPT "-falign-loops=16 -falign-jumps=16 
-falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 
-mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G4 -mcpu=G4 -faltivec 
-mabi=altivec -mpowerpc-gfxopt")
+ENDIF (APPLE_G4)
+
+# G5 Workstation.
+IF (APPLE_G5)
+  APPEND_TO_STRING(GCC_OPT "-falign-loops=16 -falign-jumps=16 
-falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 
-mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G5 -mcpu=G5 -mpowerpc64 
-faltivec -mabi=altivec -mpowerpc-gfxopt" STRING "G5 Optimized Flags")
+ENDIF (APPLE_G5)
+
+# Macintel
+IF (APPLE_X86)
+  APPEND_TO_STRING(GCC_ARCH "nocona")
+  APPEND_TO_STRING(GCC_ARCH "prescott")
+  APPEND_TO_STRING(GCC_OPT "-msse -msse2 -msse3 -mfpmath=sse")
+ENDIF (APPLE_X86)
+
+##############################################################
+## X86
+##############################################################
+
+# On apple machines CMAKE_SYSTEM_PROCESSOR return i386.
+
+IF (CMAKE_SYSTEM_PROCESSOR MATCHES "i686" OR
+    CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+  APPEND_TO_STRING(GCC_OPT "-msse -msse2 -msse3 -mfpmath=sse")
+
+  # mtune options
+
+  INCLUDE(${CMAKE_SOURCE_DIR}/CMake/LinuxCPUInfo.cmake)
+
+  IF(VENDOR_ID MATCHES "AuthenticAMD")
+    APPEND_TO_STRING(GCC_ARCH "opteron") # supports 64 bit instructions
+    APPEND_TO_STRING(GCC_ARCH "athlon-xp") # no support for 64 bit 
instructions
+    APPEND_TO_STRING(INTEL_OPT "-xW -unroll4")
+  ENDIF(VENDOR_ID MATCHES "AuthenticAMD")
+  IF(VENDOR_ID MATCHES "GenuineIntel")
+    IF(CPU_FAMILY EQUAL 6)
+      IF(MODEL GREATER 13)
+        # This is likely a Pentium3, Pentium M.  Some pentium 3s don't
+        # support sse2, in that case fall back to the i686 code.
+        APPEND_TO_STRING(GCC_ARCH "pentium-m")
+        APPEND_TO_STRING(INTEL_OPT "-xB -tpp7")
+      ELSE(MODEL GREATER 13)
+        IF(MODEL GREATER 15)
+          # This is likely a Core Single or Core Duo.  This doesn't
+          # support EM64T.
+          APPEND_TO_STRING(GCC_ARCH "prescott")
+        ELSE(MODEL GREATER 15)
+          # This is likely a Core 2
+          APPEND_TO_STRING(GCC_ARCH "nocona")
+          APPEND_TO_STRING(GCC_ARCH "prescott")
+        ENDIF(MODEL GREATER 15)
+      ENDIF(MODEL GREATER 13)
+    ENDIF(CPU_FAMILY EQUAL 6)
+    IF(CPU_FAMILY EQUAL 15)
+      # These are your Pentium 4 and friends
+      IF(FLAGS MATCHES "em64t")
+        APPEND_TO_STRING(GCC_ARCH "nocona")
+        APPEND_TO_STRING(GCC_ARCH "prescott")
+      ENDIF(FLAGS MATCHES "em64t")
+      APPEND_TO_STRING(GCC_ARCH "pentium4")
+      APPEND_TO_STRING(INTEL_OPT "-xP -tpp7 -unroll4 -msse3")
+    ENDIF(CPU_FAMILY EQUAL 15)
+  ENDIF(VENDOR_ID MATCHES "GenuineIntel")
+  APPEND_TO_STRING(GCC_ARCH "i686")
+
+  ###########################################################
+  # Some x86_64 specific stuff
+  IF   (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+    APPEND_TO_STRING(INTEL_OPT "-tpp7")
+  ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+  ###########################################################
+
+ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "i686" OR
+       CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+
+##############################################################
+## Configure Architecture
+##############################################################
+
+# Cycle through the GCC_ARCH args and see which one will pass first.
+# Guard this evaluation with PASSED_FIRST_CONFIGURE, to make sure it
+# is only done the first time.
+IF(USING_GCC OR USING_GPP AND NOT PASSED_FIRST_CONFIGURE)
+  SEPARATE_ARGUMENTS(GCC_ARCH)
+  # Change the extension based of if we are using both gcc and g++.
+  IF(USING_GCC)
+    SET(EXTENSION "c")
+  ELSE(USING_GCC)
+    SET(EXTENSION "cc")
+  ENDIF(USING_GCC)
+  SET(COMPILE_TEST_SOURCE ${CMAKE_BINARY_DIR}/test/compile-test.${EXTENSION})
+  CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/CMake/testmain.c"
+    ${COMPILE_TEST_SOURCE} IMMEDIATE COPYONLY)
+  FOREACH(ARCH ${GCC_ARCH})
+    IF(NOT GOOD_ARCH)
+#       MESSAGE("Testing ARCH = ${ARCH}")
+      SET(ARCH_FLAG "-march=${ARCH} -mtune=${ARCH}")
+      SET(COMPILER_ARGS "${ARCH_FLAG} ${C_FLAGS_RELEASE} ${C_FLAGS} 
${GCC_OPT}")
+      TRY_RUN(RUN_RESULT_VAR COMPILE_RESULT_VAR
+        ${CMAKE_BINARY_DIR}/test ${COMPILE_TEST_SOURCE}
+        CMAKE_FLAGS
+        -DCOMPILE_DEFINITIONS:STRING=${COMPILER_ARGS}
+        OUTPUT_VARIABLE OUTPUT
+        )
+#       MESSAGE("OUTPUT             = ${OUTPUT}")
+#       MESSAGE("COMPILER_ARGS      = ${COMPILER_ARGS}")
+#       MESSAGE("RUN_RESULT_VAR     = ${RUN_RESULT_VAR}")
+#       MESSAGE("COMPILE_RESULT_VAR = ${COMPILE_RESULT_VAR}")
+      IF(RUN_RESULT_VAR EQUAL 0)
+        SET(GOOD_ARCH ${ARCH})
+      ENDIF(RUN_RESULT_VAR EQUAL 0)
+    ENDIF(NOT GOOD_ARCH)
+  ENDFOREACH(ARCH)
+  IF(GOOD_ARCH)
+    PREPEND_TO_STRING(GCC_OPT "-march=${GOOD_ARCH} -mtune=${GOOD_ARCH}")
+  ENDIF(GOOD_ARCH)
+#   MESSAGE("GOOD_ARCH = ${GOOD_ARCH}")
+ENDIF(USING_GCC OR USING_GPP AND NOT PASSED_FIRST_CONFIGURE)
+
+
+# MESSAGE("CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
+# MESSAGE("APPLE = ${APPLE}")
+# MESSAGE("LINUX = ${LINUX}")
+
+##############################################################
+## Set the defaults
+##############################################################
+
+MACRO(ADD_COMPILER_FLAG COMPILER FLAGS NEW_FLAG)
+  IF(${COMPILER})
+    PREPEND_TO_STRING(${FLAGS} ${${NEW_FLAG}})
+  ENDIF(${COMPILER})
+ENDMACRO(ADD_COMPILER_FLAG)
+
+ADD_COMPILER_FLAG(USING_ICC    C_FLAGS_RELEASE INTEL_OPT)
+ADD_COMPILER_FLAG(USING_ICPC CXX_FLAGS_RELEASE INTEL_OPT)
+ADD_COMPILER_FLAG(USING_GCC    C_FLAGS_RELEASE GCC_OPT)
+ADD_COMPILER_FLAG(USING_GPP  CXX_FLAGS_RELEASE GCC_OPT)
+
+MACRO(SET_FLAGS FLAG NEW_VALUE)
+  IF(${NEW_VALUE})
+    FIRST_TIME_MESSAGE("Setting compiler flags:")
+    FIRST_TIME_MESSAGE("${NEW_VALUE} = ${${NEW_VALUE}}")
+    FIRST_TIME_SET(${FLAG} "${${NEW_VALUE}}" CACHE STRING "Default compiler 
flags" FORCE)
+  ENDIF(${NEW_VALUE})
+ENDMACRO(SET_FLAGS)
+  
+SET_FLAGS(CMAKE_C_FLAGS         C_FLAGS)
+SET_FLAGS(CMAKE_C_FLAGS_DEBUG   C_FLAGS_DEBUG)
+SET_FLAGS(CMAKE_C_FLAGS_RELEASE C_FLAGS_RELEASE)
+
+SET_FLAGS(CMAKE_CXX_FLAGS         CXX_FLAGS)
+SET_FLAGS(CMAKE_CXX_FLAGS_DEBUG   CXX_FLAGS_DEBUG)
+SET_FLAGS(CMAKE_CXX_FLAGS_RELEASE CXX_FLAGS_RELEASE)

Modified: trunk/CMake/ConfigIA64.cmake
==============================================================================
--- trunk/CMake/ConfigIA64.cmake        (original)
+++ trunk/CMake/ConfigIA64.cmake        Thu May 24 12:36:45 2007
@@ -6,23 +6,23 @@
   SET(SGI_LINUX TRUE)
 
   # Warn if the compiler is not icc
-  IF   (CMAKE_C_COMPILER MATCHES "icc$")
+  IF   (USING_ICC)
     FIRST_TIME_SET(CMAKE_C_FLAGS_RELEASE "-tpp2 -O3 -g " CACHE STRING 
"Release  Flags" FORCE)
     FIRST_TIME_SET(CMAKE_C_FLAGS_DEBUG   "-O0 -g" CACHE STRING "Debug Flags" 
FORCE)
-  ELSE (CMAKE_C_COMPILER MATCHES "icc$")
+  ELSE (USING_ICC)
          FIRST_TIME_MESSAGE("Intel Compilers recommended on ia64. setenv CC 
icc before running cmake.")
          FIRST_TIME_SET(CMAKE_C_FLAGS_RELEASE "-O3 -ffast-math 
-funroll-loops -g" CACHE STRING "Release Flags" FORCE)
          FIRST_TIME_SET(CMAKE_C_FLAGS_DEBUG   "-O0 -g" CACHE STRING "Debug 
Flags" FORCE)
-  ENDIF(CMAKE_C_COMPILER MATCHES "icc$")
+  ENDIF(USING_ICC)
 
-  IF   (CMAKE_CXX_COMPILER MATCHES "icpc$")
+  IF   (USING_ICPC)
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-tpp2 -O3 -g" CACHE STRING 
"Release Flags" FORCE)
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_DEBUG   "-O0 -g" CACHE STRING "Debug 
Flags" FORCE)
-  ELSE (CMAKE_CXX_COMPILER MATCHES "icpc$")
+  ELSE (USING_ICPC)
          FIRST_TIME_MESSAGE("Intel Compilers recommended on ia64.  setenv 
CXX icpc before running cmake.")
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math 
-funroll-loops -g" CACHE STRING "Release Flags" FORCE)
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_DEBUG   "-O0 -g" CACHE STRING "Debug 
Flags" FORCE)
-  ENDIF(CMAKE_CXX_COMPILER MATCHES "icpc$")
+  ENDIF(USING_ICPC)
 
 ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
 

Modified: trunk/CMake/ConfigIccVersion.cmake
==============================================================================
--- trunk/CMake/ConfigIccVersion.cmake  (original)
+++ trunk/CMake/ConfigIccVersion.cmake  Thu May 24 12:36:45 2007
@@ -1,6 +1,6 @@
 
 # Determine INTEL_COMPILER_VERSION
-IF   (CMAKE_CXX_COMPILER MATCHES "icpc$")
+IF   (USING_ICPC)
 
   EXEC_PROGRAM(${CMAKE_CXX_COMPILER} 
                ARGS --version 
@@ -12,4 +12,4 @@
 
   MARK_AS_ADVANCED(INTEL_COMPILER_VERSION)
 
-ENDIF(CMAKE_CXX_COMPILER MATCHES "icpc$")
\ No newline at end of file
+ENDIF(USING_ICPC)

Modified: trunk/CMake/ConfigX86_64.cmake
==============================================================================
--- trunk/CMake/ConfigX86_64.cmake      (original)
+++ trunk/CMake/ConfigX86_64.cmake      Thu May 24 12:36:45 2007
@@ -4,15 +4,17 @@
 
   ####################################################################
   # Check for Intel Compilers.
-  IF   (CMAKE_C_COMPILER MATCHES "icc$")
+  IF   (USING_ICC)
     FIRST_TIME_SET(CMAKE_C_FLAGS_RELEASE "-tpp7 -O3 -g" CACHE STRING 
"Release  Flags" FORCE)
     FIRST_TIME_SET(CMAKE_C_FLAGS_DEBUG   "-O0 -g" CACHE STRING "Debug Flags" 
FORCE)
-  ENDIF(CMAKE_C_COMPILER MATCHES "icc$")
+    FIRST_TIME_SET(CMAKE_C_FLAGS "-Wcheck" CACHE STRING "Compiler Flags" 
FORCE)
+  ENDIF(USING_ICC)
 
-  IF   (CMAKE_CXX_COMPILER MATCHES "icpc$")
+  IF   (USING_ICPC)
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-tpp7 -O3 -g" CACHE STRING 
"Release Flags" FORCE)
          FIRST_TIME_SET(CMAKE_CXX_FLAGS_DEBUG   "-O0 -g -D_GLIBCXX_DEBUG" 
CACHE STRING "Debug Flags" FORCE)
-  ENDIF(CMAKE_CXX_COMPILER MATCHES "icpc$")
+    FIRST_TIME_SET(CMAKE_CXX_FLAGS "-Wcheck" CACHE STRING "Compiler Flags" 
FORCE)
+  ENDIF(USING_ICPC)
 
 ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
 

Copied: trunk/CMake/LinuxCPUInfo.cmake (from r1397, 
trunk/CMake/linux-precise-arch.cmake)
==============================================================================
--- trunk/CMake/linux-precise-arch.cmake        (original)
+++ trunk/CMake/LinuxCPUInfo.cmake      Thu May 24 12:36:45 2007
@@ -5,21 +5,21 @@
   SET(VENDOR_ID_RX "vendor_id[ \t]*:[ \t]*([a-zA-Z]+)\n")
   STRING(REGEX MATCH "${VENDOR_ID_RX}" VENDOR_ID "${PROC_CPUINFO}")
   STRING(REGEX REPLACE "${VENDOR_ID_RX}" "\\1" VENDOR_ID "${VENDOR_ID}")
-  MESSAGE(STATUS "VENDOR_ID : ${VENDOR_ID}")
+#  MESSAGE(STATUS "VENDOR_ID : ${VENDOR_ID}")
 
   SET(CPU_FAMILY_RX "cpu family[ \t]*:[ \t]*([0-9]+)")
   STRING(REGEX MATCH "${CPU_FAMILY_RX}" CPU_FAMILY "${PROC_CPUINFO}")
   STRING(REGEX REPLACE "${CPU_FAMILY_RX}" "\\1" CPU_FAMILY "${CPU_FAMILY}")
-  MESSAGE(STATUS "CPU_FAMILY : ${CPU_FAMILY}")
+#  MESSAGE(STATUS "CPU_FAMILY : ${CPU_FAMILY}")
 
   SET(MODEL_RX "model[ \t]*:[ \t]*([0-9]+)")
   STRING(REGEX MATCH "${MODEL_RX}" MODEL "${PROC_CPUINFO}")
   STRING(REGEX REPLACE "${MODEL_RX}" "\\1" MODEL "${MODEL}")
-  MESSAGE(STATUS "MODEL : ${MODEL}")
+#  MESSAGE(STATUS "MODEL : ${MODEL}")
 
   SET(FLAGS_RX "flags[ \t]*:[ \t]*([a-zA-Z0-9 _]+)\n")
   STRING(REGEX MATCH "${FLAGS_RX}" FLAGS "${PROC_CPUINFO}")
   STRING(REGEX REPLACE "${FLAGS_RX}" "\\1" FLAGS "${FLAGS}")
-  MESSAGE(STATUS "FLAGS : ${FLAGS}")
+#  MESSAGE(STATUS "FLAGS : ${FLAGS}")
 
 ENDIF(EXISTS "/proc/cpuinfo")

Modified: trunk/CMake/Macros.cmake
==============================================================================
--- trunk/CMake/Macros.cmake    (original)
+++ trunk/CMake/Macros.cmake    Thu May 24 12:36:45 2007
@@ -1,24 +1,39 @@
 
 
+# Appends VAL to the string contained in STR
+MACRO(APPEND_TO_STRING STR VAL)
+  # You need to double ${} STR to get the value.  The first one gets
+  # the variable, the second one gets the value.
+  SET(${STR} "${${STR}} ${VAL}")
+ENDMACRO(APPEND_TO_STRING)
+
+# Prepends VAL to the string contained in STR
+MACRO(PREPEND_TO_STRING STR VAL)
+  # You need to double ${} STR to get the value.  The first one gets
+  # the variable, the second one gets the value.
+  SET(${STR} "${VAL} ${${STR}}")
+ENDMACRO(PREPEND_TO_STRING)
+
+
 #################################################################
-###   ADD_CXX_FLAGS(flags)                                    ###
-### flags will be added to CMAKE_CXX_FLAGS, but only once     ###
+###  FORCE_ADD_FLAGS(parameter flags)                         ###
+### flags will be added to parameter, but only once           ###
 ### This only works for CMake 2.0 and above.                  ###
 #################################################################
-MACRO(FORCE_ADD_CXX_FLAGS)
+MACRO(FORCE_ADD_FLAGS parameter)
   FOREACH(arg ${ARGN})
     SET(TMP ${arg}) #elsewise the Seperate command doesn't work)
     SEPARATE_ARGUMENTS(TMP)
     FOREACH(option ${TMP})
-      STRING(REGEX REPLACE " ${option}" "" CMAKE_CXX_FLAGS
-        "${CMAKE_CXX_FLAGS}")
-      STRING(REGEX REPLACE "${option}" "" CMAKE_CXX_FLAGS
-        "${CMAKE_CXX_FLAGS}")
-      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${option}" CACHE STRING
-        "common C++ build flags" FORCE)
+      STRING(REGEX REPLACE " ${option}" "" ${parameter}
+        "${${parameter}}")
+      STRING(REGEX REPLACE "${option}" "" ${parameter}
+        "${${parameter}}")
+      SET(${parameter} "${${parameter}} ${option}" CACHE STRING
+        "" FORCE)
     ENDFOREACH(option ${TMP})
   ENDFOREACH(arg ${ARGN})
-ENDMACRO(FORCE_ADD_CXX_FLAGS)
+ENDMACRO(FORCE_ADD_FLAGS)
 
 # This MACRO is designed to set variables to default values only on
 # the first configure.  Subsequent configures will produce no ops.
@@ -62,4 +77,5 @@
       # DEPENDS Must match custom command OUTPUT.
       DEPENDS ${PROJECT_BINARY_DIR}/lib/${PY_FILE} 
       )
-ENDMACRO(PYTHON_POST_BUILD_COPY PY_FILE)
\ No newline at end of file
+ENDMACRO(PYTHON_POST_BUILD_COPY PY_FILE)
+

Added: trunk/CMake/ProcessorInfo.txt
==============================================================================
--- (empty file)
+++ trunk/CMake/ProcessorInfo.txt       Thu May 24 12:36:45 2007
@@ -0,0 +1,189 @@
+Output from LinuxCPUInfo.cmake
+
+Arachne (Opteron 880):
+
+-- VENDOR_ID : AuthenticAMD
+-- CPU_FAMILY : 15
+-- MODEL : 33
+-- FLAGS : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat 
pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 
3dnow pni lahf_lm cmp_legacy
+
+Muzzle (Pentium 4):
+
+-- VENDOR_ID : GenuineIntel
+-- CPU_FAMILY : 15
+-- MODEL : 2
+-- FLAGS : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat 
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
+
+Rocket (Pentium M):
+
+-- VENDOR_ID : GenuineIntel
+-- CPU_FAMILY : 6
+-- MODEL : 13
+-- FLAGS : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush 
dts acpi mmx fxsr sse sse2 ss tm pbe est tm2
+
+
+==========================================================
+Information on how to decode CPU_FAMILY and MODEL
+
+http://balusc.xs4all.nl/srv/har-cpu-int-pm.php
+
+
+Mobile processors (Like Pentium 3) MMX, SSE, SSE2
+6-9    Banias
+6-D    Dothan
+6-E    Yonah
+
+Core Solo - MMX, SSE, SSE2, SSE3
+6-E-8  Yonah
+6-E-C
+
+Core Duo
+6-E-8  Yonah
+6-E-C
+
+Core 2 Duo - EM64T, MMX, SSE, SSE2, SSE3
+6-F-2  Allendale
+6-F-6  Conroe (2M)
+6-F-7  Kentsfield
+
+Pentium 4 (also Celeron) MMX, SSE, SSE2
+F-0    Willamette
+F-1
+F-2    Northwood
+F-2    Gallatin (stepping 5)
+F-3    Prescott (adds SSE3)
+F-4    Prescott (stepping 1,9)
+F-4    Prescott 2M (stepping 3,A)
+F-6    Cedar Mill (stepping 2,4)
+F-0-A  Foster (Xeon DP)
+F-1-2
+F-2-4  Prestonia (Xeon DP)
+F-2-7
+F-2-9
+F-3-4  Nocona
+F-4-1
+F-4-9
+F-4-3  Irwindale
+F-4-A
+....   Got bored of doing this
+
+Pentium D (Dual core) EM64T, MMX, SSE, SSE2, SSE3
+F-4    Smithfield
+F-6    Presler
+F-4    Paxville DP (Xeon)
+F-6    Dempsey (Xeon)
+F-2    Paxville
+F-4    Paxville
+F-6    Tulsa
+
+==========================================================
+       -mtune=cpu-type
+           Tune to cpu-type everything applicable about the generated code,
+           except for the ABI and the set of available instructions.  The
+           choices for cpu-type are:
+
+           generic
+               Produce code optimized for the most common IA32/AMD64/EM64T
+               processors.  If you know the CPU on which your code will run,
+               then you should use the corresponding -mtune option instead of
+               -mtune=generic.  But, if you do not know exactly what CPU
+               users of your application will have, then you should use this
+               option.
+
+               As new processors are deployed in the marketplace, the
+               behavior of this option will change.  Therefore, if you
+               upgrade to a newer version of GCC, the code generated
+               option will change to reflect the processors that were
+               most common when that version of GCC was released.
+
+               There is no -march=generic option because -march indicates the
+               instruction set the compiler can use, and there is no generic
+               instruction set applicable to all processors.  In contrast,
+               -mtune indicates the processor (or, in this case, collection
+               of processors) for which the code is optimized.
+
+           i386
+               Original Intel's i386 CPU.
+
+           i486
+               Intel's i486 CPU.  (No scheduling is implemented for this
+               chip.)
+
+           i586, pentium
+               Intel Pentium CPU with no MMX support.
+
+           pentium-mmx
+               Intel PentiumMMX CPU based on Pentium core with MMX
+               instruction set support.
+
+           pentiumpro
+               Intel PentiumPro CPU.
+
+           i686
+               Same as "generic", but when used as "march" option, PentiumPro
+               instruction set will be used, so the code will run on all i686
+               familly chips.
+
+           pentium2
+               Intel Pentium2 CPU based on PentiumPro core with MMX
+               instruction set support.
+
+           pentium3, pentium3m
+               Intel Pentium3 CPU based on PentiumPro core with MMX and SSE
+               instruction set support.
+
+           pentium-m
+               Low power version of Intel Pentium3 CPU with MMX, SSE and SSE2
+               instruction set support.  Used by Centrino notebooks.
+
+           pentium4, pentium4m
+               Intel Pentium4 CPU with MMX, SSE and SSE2 instruction
+               set support.
+
+           prescott
+               Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2 and
+               SSE3 instruction set support.
+
+           nocona
+               Improved version of Intel Pentium4 CPU with 64-bit extensions,
+               MMX, SSE, SSE2 and SSE3 instruction set support.
+
+           k6  AMD K6 CPU with MMX instruction set support.
+
+           k6-2, k6-3
+               Improved versions of AMD K6 CPU with MMX and 3dNOW!
+               instruction set support.
+
+           athlon, athlon-tbird
+               AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE
+               prefetch instructions support.
+
+           athlon-4, athlon-xp, athlon-mp
+               Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and
+               full SSE instruction set support.
+
+           k8, opteron, athlon64, athlon-fx
+               AMD K8 core based CPUs with x86-64 instruction set support.
+               (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and
+               64-bit instruction set extensions.)
+
+           winchip-c6
+               IDT Winchip C6 CPU, dealt in same way as i486 with additional
+               MMX instruction set support.
+
+           winchip2
+               IDT Winchip2 CPU, dealt in same way as i486 with additional
+               MMX and 3dNOW!  instruction set support.
+
+           c3  Via C3 CPU with MMX and 3dNOW! instruction set support.  (No
+               scheduling is implemented for this chip.)
+
+           c3-2
+               Via C3-2 CPU with MMX and SSE instruction set support.  (No
+               scheduling is implemented for this chip.)
+
+           While picking a specific cpu-type will schedule things
+           appropriately for that particular chip, the compiler will
+           not generate any code that does not run on the i386 without
+           the -march=cpu-type option being used.
+

Modified: trunk/CMakeLists.txt
==============================================================================
--- trunk/CMakeLists.txt        (original)
+++ trunk/CMakeLists.txt        Thu May 24 12:36:45 2007
@@ -41,27 +41,35 @@
 
###############################################################################
 
 # Include helper cmake scripts
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/Macros.cmake)       # Include all 
Manta CMake Macros.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/BuildType.cmake)    # Set various 
options based on the build type.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/CheckSSE.cmake)     # Check if 
the build supports SSE
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/About.cmake)        # Add a 
static library build info and license.
 
+# Include all Manta CMake Macros.
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/Macros.cmake)
+# Set flags based on the architecture we are on (no compiler stuff)
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigArchitecture.cmake)
+# Determine information about the compiler
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/CompilerInfo.cmake)
+# Set various options based on the build type.
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/BuildType.cmake)
+# Check if the build supports SSE
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/CheckSSE.cmake)
+# Add a static library build info and license.
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/About.cmake)
+
+###############################################
 # Search for common dependencies.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindX11andGL.cmake) # Find X11 
and GL, specialized on OSX and Cygwin
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindTeem.cmake)     # Locate Teem.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindPabst.cmake)    # Locate pabst
+
+# Find X11 and GL, specialized on OSX and Cygwin
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindX11andGL.cmake)
+# Locate Teem.
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindTeem.cmake)
+# Locate pabst
+INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindPabst.cmake)
 
 # Check for specific machine/compiler options.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigIA64.cmake)       # SGI 
Itanium2 flags.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigX86_64.cmake)     # AMD64 
and Intel EM64T flags.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigIccVersion.cmake) # Extract 
Intel Compiler version info.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigIrix.cmake)       # SGI 
Irix Mips compiler flags.
-INCLUDE (${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigApple.cmake)      # Apple 
processor identification.
+INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMake/ConfigCompilerFlags.cmake)
 
 ## We need SCI_NOPERSISTENT to be defined
-FORCE_ADD_CXX_FLAGS("-DSCI_NOPERSISTENT")
-## Steve wants all the warnings turned on.
-FORCE_ADD_CXX_FLAGS("-Wall")
+FORCE_ADD_FLAGS(CMAKE_CXX_FLAGS "-DSCI_NOPERSISTENT")
 
 SET(USE_STATS_COLLECTOR 0 CACHE BOOL "Enable stats collection")
 




  • [MANTA] r1398 - in trunk: . CMake, bigler, 05/24/2007

Archive powered by MHonArc 2.6.16.

Top of page