Revision: 77891
http://sourceforge.net/p/brlcad/code/77891
Author: starseeker
Date: 2020-12-03 15:45:27 +0000 (Thu, 03 Dec 2020)
Log Message:
-----------
Put enviornment setup and characterization code into its own file.
Modified Paths:
--------------
brlcad/trunk/CMakeLists.txt
brlcad/trunk/misc/CMake/CMakeLists.txt
Added Paths:
-----------
brlcad/trunk/misc/CMake/BRLCAD_Environment_Setup.cmake
Modified: brlcad/trunk/CMakeLists.txt
===================================================================
--- brlcad/trunk/CMakeLists.txt 2020-12-03 15:25:33 UTC (rev 77890)
+++ brlcad/trunk/CMakeLists.txt 2020-12-03 15:45:27 UTC (rev 77891)
@@ -130,6 +130,11 @@
set(BRLCAD_CMAKE_DIR "${BRLCAD_SOURCE_DIR}/misc/CMake")
list(APPEND CMAKE_MODULE_PATH "${BRLCAD_CMAKE_DIR}")
+#---------------------------------------------------------------------
+# Setup and checks related to system environment settings. Some of
+# these impact search results needed to set default options, so we
+# do this early in the process.
+include(BRLCAD_Environment_Setup)
#---------------------------------------------------------------------
# Load general utility routines for BRL-CAD CMake logic
@@ -156,19 +161,6 @@
execute_process(COMMAND "${CMAKE_COMMAND}" -DSTAMP_FILE=${CONFIG_DELTA_START}
-P "${BRLCAD_CMAKE_DIR}/scripts/timestamp.cmake")
#---------------------------------------------------------------------
-# Allow the BRLCAD_ROOT environment variable to set during build, but be noisy
-# about it unless we're specifically told this is intentional. Having this
-# happen by accident is generally not a good idea.
-find_program(SLEEP_EXEC sleep)
-mark_as_advanced(SLEEP_EXEC)
-if(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
- message(WARNING "\nBRLCAD_ROOT is presently set to
\"$ENV{BRLCAD_ROOT}\"\nBRLCAD_ROOT should typically be used only when needed as
a runtime override, not during compilation. Building with BRLCAD_ROOT set may
produce unexpected behavior during both compilation and subsequent program
execution. It is *highly* recommended that BRLCAD_ROOT be unset and not
used.\n")
- if(SLEEP_EXEC)
- execute_process(COMMAND ${SLEEP_EXEC} 2)
- endif(SLEEP_EXEC)
-endif(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
-
-#---------------------------------------------------------------------
# Define relative install locations and output directories. Don't set
# these if they have already been set by some other means (like a
# higher level CMakeLists.txt file including this one).
@@ -492,69 +484,8 @@
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
-#---------------------------------------------------------------------
-# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
-# and set them to "C" so things like date output are as expected.
-set(_orig_lc_all $ENV{LC_ALL})
-set(_orig_lc_messages $ENV{LC_MESSAGES})
-set(_orig_lang $ENV{LANG})
-if(_orig_lc_all)
- set(ENV{LC_ALL} C)
-endif(_orig_lc_all)
-if(_orig_lc_messages)
- set(ENV{LC_MESSAGES} C)
-endif(_orig_lc_messages)
-if(_orig_lang)
- set(ENV{LANG} C)
-endif(_orig_lang)
#---------------------------------------------------------------------
-# Package creation with CMake depends on the value of umask - if permissions
-# are such that temporary files are created without permissions needed for
-# generated packages, the resulting packages may behave badly when installed.
-# In particular, RPM packages may improperly reset permissions on core
-# directories such as /usr.
-function(check_umask umask_val status_var)
- string(REGEX REPLACE "[^x]" "" umask_x "${umask_val}")
- string(REGEX REPLACE "[^r]" "" umask_r "${umask_val}")
- string(LENGTH "${umask_r}" UMASK_HAVE_R)
- set(${status_var} 0 PARENT_SCOPE)
- if(UMASK_HAVE_R AND "${umask_x}" STREQUAL "xxx")
- set(${status_var} 1 PARENT_SCOPE)
- endif(UMASK_HAVE_R AND "${umask_x}" STREQUAL "xxx")
-endfunction(check_umask)
-
-# Note - umask is not always an executable, so find_program wont' necessarily
-# determine whether the umask check is appropriate. If we don't find an
-# executable, follow up to see if we can use sh to get the info.
-find_program(UMASK_EXEC umask)
-mark_as_advanced(UMASK_EXEC)
-if(NOT UMASK_EXEC)
- # If we don't have a umask cmd, see if sh -c "umask -S" works
- execute_process(COMMAND sh -c "umask -S" OUTPUT_VARIABLE umask_out)
- # Check if we've got something that looks like a umask output
- if("${umask_out}" MATCHES "^u=.*g=.*o=.*")
- set(UMASK_EXEC sh)
- set(UMASK_EXEC_ARGS -c "umask -S")
- endif("${umask_out}" MATCHES "^u=.*g=.*o=.*")
-else(NOT UMASK_EXEC)
- set(UMASK_EXEC_ARGS -S)
-endif(NOT UMASK_EXEC)
-
-if(UMASK_EXEC)
- execute_process(COMMAND ${UMASK_EXEC} ${UMASK_EXEC_ARGS} OUTPUT_VARIABLE
umask_curr)
- string(STRIP "${umask_curr}" umask_curr)
- check_umask("${umask_curr}" UMASK_OK)
- if(NOT UMASK_OK)
- message(" ")
- message(WARNING "umask is set to ${umask_curr} - this setting is not
recommended if one of the goals of this build is to generate packages. Use
'umask 022' for improved package behavior.")
- if(SLEEP_EXEC)
- execute_process(COMMAND ${SLEEP_EXEC} 1)
- endif(SLEEP_EXEC)
- endif(NOT UMASK_OK)
-endif(UMASK_EXEC)
-
-#---------------------------------------------------------------------
# print out the title with a pretty box computed to wrap around
BOX_PRINT("*** Configuring BRL-CAD Release ${BRLCAD_VERSION}, Build
${CONFIG_DATE} ***" "*")
@@ -802,119 +733,7 @@
CONFIG_H_APPEND(BRLCAD "#define NDEBUG 1\n")
endif(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND NOT
CMAKE_CONFIGURATION_TYPES)
-#----------------------------------------------------------------------
-# Decide whether to do a 32 or a 64 bit build.
-set(WORD_SIZE_LABEL "Compile as 32BIT or 64BIT?")
-if(NOT BRLCAD_WORD_SIZE)
- set(BRLCAD_WORD_SIZE "AUTO" CACHE STRING WORD_SIZE_LABEL)
-endif(NOT BRLCAD_WORD_SIZE)
-set_property(CACHE BRLCAD_WORD_SIZE PROPERTY STRINGS AUTO 32BIT 64BIT)
-string(TOUPPER "${BRLCAD_WORD_SIZE}" BRLCAD_WORD_SIZE_UPPER)
-set(BRLCAD_WORD_SIZE "${BRLCAD_WORD_SIZE_UPPER}" CACHE STRING WORD_SIZE_LABEL
FORCE)
-if(NOT BRLCAD_WORD_SIZE MATCHES "AUTO" AND NOT BRLCAD_WORD_SIZE MATCHES
"64BIT" AND NOT BRLCAD_WORD_SIZE MATCHES "32BIT")
- message(WARNING "Unknown value ${BRLCAD_WORD_SIZE} supplied for
BRLCAD_WORD_SIZE - defaulting to AUTO")
- message(WARNING "Valid options are AUTO, 32BIT and 64BIT")
- set(BRLCAD_WORD_SIZE "AUTO" CACHE STRING WORD_SIZE_LABEL FORCE)
-endif(NOT BRLCAD_WORD_SIZE MATCHES "AUTO" AND NOT BRLCAD_WORD_SIZE MATCHES
"64BIT" AND NOT BRLCAD_WORD_SIZE MATCHES "32BIT")
-mark_as_advanced(BRLCAD_WORD_SIZE)
-
-# calculate the size of a pointer if we haven't already
-CHECK_TYPE_SIZE("void *" CMAKE_SIZEOF_VOID_P)
-
-# still not defined?
-if(NOT CMAKE_SIZEOF_VOID_P)
- message(WARNING "CMAKE_SIZEOF_VOID_P is not defined - assuming 32 bit
platform")
- set(CMAKE_SIZEOF_VOID_P 4)
-endif(NOT CMAKE_SIZEOF_VOID_P)
-
-if(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
- if(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
- set(CMAKE_WORD_SIZE "64BIT")
- set(BRLCAD_WORD_SIZE "64BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
- else(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
- if(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
- set(CMAKE_WORD_SIZE "32BIT")
- set(BRLCAD_WORD_SIZE "32BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
- else(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
- if(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
- set(CMAKE_WORD_SIZE "16BIT")
- set(BRLCAD_WORD_SIZE "16BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
- else(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
- set(CMAKE_WORD_SIZE "8BIT")
- set(BRLCAD_WORD_SIZE "8BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
- endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
- endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
- endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
-else(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
- set(CMAKE_WORD_SIZE "${BRLCAD_WORD_SIZE}")
-endif(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
-
-# Enable/disable 64-bit build settings for MSVC, which is apparently
-# determined at the CMake generator level - need to override other
-# settings if the compiler disagrees with them.
-if(MSVC)
- if(CMAKE_CL_64)
- if(NOT ${CMAKE_WORD_SIZE} MATCHES "64BIT")
- set(CMAKE_WORD_SIZE "64BIT")
- if(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
- message(WARNING "Selected MSVC compiler is 64BIT - setting word size to
64BIT. To perform a 32BIT MSVC build, select the 32BIT MSVC CMake generator.")
- set(BRLCAD_WORD_SIZE "64BIT" CACHE STRING WORD_SIZE_LABEL FORCE)
- endif(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
- endif(NOT ${CMAKE_WORD_SIZE} MATCHES "64BIT")
- add_definitions("-D_WIN64")
- else(CMAKE_CL_64)
- set(CMAKE_SIZEOF_VOID_P 4)
- if(NOT ${CMAKE_WORD_SIZE} MATCHES "32BIT")
- set(CMAKE_WORD_SIZE "32BIT")
- if(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
- message(WARNING "Selected MSVC compiler is 32BIT - setting word size to
32BIT. To perform a 64BIT MSVC build, select the 64BIT MSVC CMake generator.")
- set(BRLCAD_WORD_SIZE "32BIT" CACHE STRING WORD_SIZE_LABEL FORCE)
- endif(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
- endif(NOT ${CMAKE_WORD_SIZE} MATCHES "32BIT")
- endif(CMAKE_CL_64)
-endif(MSVC)
-
-# If a platform specific variable needs to be set for 32 bit, do it here
-if (${CMAKE_WORD_SIZE} MATCHES "32BIT")
- set(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Building for i386" FORCE)
-endif (${CMAKE_WORD_SIZE} MATCHES "32BIT")
-
-CONFIG_H_APPEND(BRLCAD "#define SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}\n")
-
-# OpenBSD doesn't define __WORD_SIZE
-if(${CMAKE_WORD_SIZE} MATCHES "32BIT")
- CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE
32\n#endif\n")
-endif(${CMAKE_WORD_SIZE} MATCHES "32BIT")
-if(${CMAKE_WORD_SIZE} MATCHES "64BIT")
- CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE
64\n#endif\n")
-endif(${CMAKE_WORD_SIZE} MATCHES "64BIT")
-
-# Based on what we are doing, we may need to constrain our search paths
-#
-# NOTE: Ideally we would set a matching property for 32 bit paths
-# on systems that default to 64 bit - as of 2.8.8 CMake doesn't yet
-# support FIND_LIBRARY_USE_LIB32_PATHS. There is a bug report on the
-# topic here: http://www.cmake.org/Bug/view.php?id=11260
-#
-if(${CMAKE_WORD_SIZE} MATCHES "32BIT")
- set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS OFF)
-else(${CMAKE_WORD_SIZE} MATCHES "32BIT")
- set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON)
-endif(${CMAKE_WORD_SIZE} MATCHES "32BIT")
-
-# One of the problems with 32/64 building is we need to search anew
-# for 64 bit libs after a 32 bit configure, or vice versa.
-if(PREVIOUS_CONFIGURE_TYPE)
- if(NOT ${PREVIOUS_CONFIGURE_TYPE} MATCHES ${CMAKE_WORD_SIZE})
- include(ResetCache)
- RESET_CACHE_file()
- endif(NOT ${PREVIOUS_CONFIGURE_TYPE} MATCHES ${CMAKE_WORD_SIZE})
-endif(PREVIOUS_CONFIGURE_TYPE)
-
-set(PREVIOUS_CONFIGURE_TYPE ${CMAKE_WORD_SIZE} CACHE STRING "Previous
configuration word size" FORCE)
-mark_as_advanced(PREVIOUS_CONFIGURE_TYPE)
-
# Auto-reconfiguration - by default, a CMake generated build system
# will re-run CMake if it detects that build system logic has changed.
# This is normally a good thing, but becomes problematic when using
Added: brlcad/trunk/misc/CMake/BRLCAD_Environment_Setup.cmake
===================================================================
--- brlcad/trunk/misc/CMake/BRLCAD_Environment_Setup.cmake
(rev 0)
+++ brlcad/trunk/misc/CMake/BRLCAD_Environment_Setup.cmake 2020-12-03
15:45:27 UTC (rev 77891)
@@ -0,0 +1,189 @@
+#---------------------------------------------------------------------
+# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
+# and set them to "C" so things like date output are as expected.
+set(_orig_lc_all $ENV{LC_ALL})
+set(_orig_lc_messages $ENV{LC_MESSAGES})
+set(_orig_lang $ENV{LANG})
+if(_orig_lc_all)
+ set(ENV{LC_ALL} C)
+endif(_orig_lc_all)
+if(_orig_lc_messages)
+ set(ENV{LC_MESSAGES} C)
+endif(_orig_lc_messages)
+if(_orig_lang)
+ set(ENV{LANG} C)
+endif(_orig_lang)
+
+#---------------------------------------------------------------------
+# Package creation with CMake depends on the value of umask - if permissions
+# are such that temporary files are created without permissions needed for
+# generated packages, the resulting packages may behave badly when installed.
+# In particular, RPM packages may improperly reset permissions on core
+# directories such as /usr.
+function(check_umask umask_val status_var)
+ string(REGEX REPLACE "[^x]" "" umask_x "${umask_val}")
+ string(REGEX REPLACE "[^r]" "" umask_r "${umask_val}")
+ string(LENGTH "${umask_r}" UMASK_HAVE_R)
+ set(${status_var} 0 PARENT_SCOPE)
+ if(UMASK_HAVE_R AND "${umask_x}" STREQUAL "xxx")
+ set(${status_var} 1 PARENT_SCOPE)
+ endif(UMASK_HAVE_R AND "${umask_x}" STREQUAL "xxx")
+endfunction(check_umask)
+
+# Note - umask is not always an executable, so find_program wont' necessarily
+# determine whether the umask check is appropriate. If we don't find an
+# executable, follow up to see if we can use sh to get the info.
+find_program(UMASK_EXEC umask)
+mark_as_advanced(UMASK_EXEC)
+if(NOT UMASK_EXEC)
+ # If we don't have a umask cmd, see if sh -c "umask -S" works
+ execute_process(COMMAND sh -c "umask -S" OUTPUT_VARIABLE umask_out)
+ # Check if we've got something that looks like a umask output
+ if("${umask_out}" MATCHES "^u=.*g=.*o=.*")
+ set(UMASK_EXEC sh)
+ set(UMASK_EXEC_ARGS -c "umask -S")
+ endif("${umask_out}" MATCHES "^u=.*g=.*o=.*")
+else(NOT UMASK_EXEC)
+ set(UMASK_EXEC_ARGS -S)
+endif(NOT UMASK_EXEC)
+
+if(UMASK_EXEC)
+ execute_process(COMMAND ${UMASK_EXEC} ${UMASK_EXEC_ARGS} OUTPUT_VARIABLE
umask_curr)
+ string(STRIP "${umask_curr}" umask_curr)
+ check_umask("${umask_curr}" UMASK_OK)
+ if(NOT UMASK_OK)
+ message(" ")
+ message(WARNING "umask is set to ${umask_curr} - this setting is not
recommended if one of the goals of this build is to generate packages. Use
'umask 022' for improved package behavior.")
+ if(SLEEP_EXEC)
+ execute_process(COMMAND ${SLEEP_EXEC} 1)
+ endif(SLEEP_EXEC)
+ endif(NOT UMASK_OK)
+endif(UMASK_EXEC)
+
+#---------------------------------------------------------------------
+# Allow the BRLCAD_ROOT environment variable to set during build, but be noisy
+# about it unless we're specifically told this is intentional. Having this
+# happen by accident is generally not a good idea.
+find_program(SLEEP_EXEC sleep)
+mark_as_advanced(SLEEP_EXEC)
+if(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
+ message(WARNING "\nBRLCAD_ROOT is presently set to
\"$ENV{BRLCAD_ROOT}\"\nBRLCAD_ROOT should typically be used only when needed as
a runtime override, not during compilation. Building with BRLCAD_ROOT set may
produce unexpected behavior during both compilation and subsequent program
execution. It is *highly* recommended that BRLCAD_ROOT be unset and not
used.\n")
+ if(SLEEP_EXEC)
+ execute_process(COMMAND ${SLEEP_EXEC} 2)
+ endif(SLEEP_EXEC)
+endif(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
+
+#----------------------------------------------------------------------
+# Characterize the system as 32 or 64 bit - this has an impact on many
+# of the subsequent operations, including find_package results, so it
+# must be done up front.
+set(WORD_SIZE_LABEL "Compile as 32BIT or 64BIT?")
+if(NOT BRLCAD_WORD_SIZE)
+ set(BRLCAD_WORD_SIZE "AUTO" CACHE STRING WORD_SIZE_LABEL)
+endif(NOT BRLCAD_WORD_SIZE)
+set_property(CACHE BRLCAD_WORD_SIZE PROPERTY STRINGS AUTO 32BIT 64BIT)
+string(TOUPPER "${BRLCAD_WORD_SIZE}" BRLCAD_WORD_SIZE_UPPER)
+set(BRLCAD_WORD_SIZE "${BRLCAD_WORD_SIZE_UPPER}" CACHE STRING WORD_SIZE_LABEL
FORCE)
+if(NOT BRLCAD_WORD_SIZE MATCHES "AUTO" AND NOT BRLCAD_WORD_SIZE MATCHES
"64BIT" AND NOT BRLCAD_WORD_SIZE MATCHES "32BIT")
+ message(WARNING "Unknown value ${BRLCAD_WORD_SIZE} supplied for
BRLCAD_WORD_SIZE - defaulting to AUTO")
+ message(WARNING "Valid options are AUTO, 32BIT and 64BIT")
+ set(BRLCAD_WORD_SIZE "AUTO" CACHE STRING WORD_SIZE_LABEL FORCE)
+endif(NOT BRLCAD_WORD_SIZE MATCHES "AUTO" AND NOT BRLCAD_WORD_SIZE MATCHES
"64BIT" AND NOT BRLCAD_WORD_SIZE MATCHES "32BIT")
+mark_as_advanced(BRLCAD_WORD_SIZE)
+
+# calculate the size of a pointer if we haven't already
+CHECK_TYPE_SIZE("void *" CMAKE_SIZEOF_VOID_P)
+
+# still not defined?
+if(NOT CMAKE_SIZEOF_VOID_P)
+ message(WARNING "CMAKE_SIZEOF_VOID_P is not defined - assuming 32 bit
platform")
+ set(CMAKE_SIZEOF_VOID_P 4)
+endif(NOT CMAKE_SIZEOF_VOID_P)
+
+if(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
+ if(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
+ set(CMAKE_WORD_SIZE "64BIT")
+ set(BRLCAD_WORD_SIZE "64BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
+ else(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
+ if(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
+ set(CMAKE_WORD_SIZE "32BIT")
+ set(BRLCAD_WORD_SIZE "32BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
+ else(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
+ if(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
+ set(CMAKE_WORD_SIZE "16BIT")
+ set(BRLCAD_WORD_SIZE "16BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
+ else(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
+ set(CMAKE_WORD_SIZE "8BIT")
+ set(BRLCAD_WORD_SIZE "8BIT (AUTO)" CACHE STRING WORD_SIZE_LABEL FORCE)
+ endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^2$")
+ endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^4$")
+ endif(${CMAKE_SIZEOF_VOID_P} MATCHES "^8$")
+else(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
+ set(CMAKE_WORD_SIZE "${BRLCAD_WORD_SIZE}")
+endif(${BRLCAD_WORD_SIZE} MATCHES "AUTO")
+
+# Enable/disable 64-bit build settings for MSVC, which is apparently
+# determined at the CMake generator level - need to override other
+# settings if the compiler disagrees with them.
+if(MSVC)
+ if(CMAKE_CL_64)
+ if(NOT ${CMAKE_WORD_SIZE} MATCHES "64BIT")
+ set(CMAKE_WORD_SIZE "64BIT")
+ if(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
+ message(WARNING "Selected MSVC compiler is 64BIT - setting word size to
64BIT. To perform a 32BIT MSVC build, select the 32BIT MSVC CMake generator.")
+ set(BRLCAD_WORD_SIZE "64BIT" CACHE STRING WORD_SIZE_LABEL FORCE)
+ endif(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
+ endif(NOT ${CMAKE_WORD_SIZE} MATCHES "64BIT")
+ add_definitions("-D_WIN64")
+ else(CMAKE_CL_64)
+ set(CMAKE_SIZEOF_VOID_P 4)
+ if(NOT ${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ set(CMAKE_WORD_SIZE "32BIT")
+ if(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
+ message(WARNING "Selected MSVC compiler is 32BIT - setting word size to
32BIT. To perform a 64BIT MSVC build, select the 64BIT MSVC CMake generator.")
+ set(BRLCAD_WORD_SIZE "32BIT" CACHE STRING WORD_SIZE_LABEL FORCE)
+ endif(NOT "${BRLCAD_WORD_SIZE}" MATCHES "AUTO")
+ endif(NOT ${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ endif(CMAKE_CL_64)
+endif(MSVC)
+
+# If a platform specific variable needs to be set for 32 bit, do it here
+if (${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ set(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Building for i386" FORCE)
+endif (${CMAKE_WORD_SIZE} MATCHES "32BIT")
+
+CONFIG_H_APPEND(BRLCAD "#define SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}\n")
+
+# OpenBSD doesn't define __WORD_SIZE
+if(${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE
32\n#endif\n")
+endif(${CMAKE_WORD_SIZE} MATCHES "32BIT")
+if(${CMAKE_WORD_SIZE} MATCHES "64BIT")
+ CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE
64\n#endif\n")
+endif(${CMAKE_WORD_SIZE} MATCHES "64BIT")
+
+# Based on what we are doing, we may need to constrain our search paths
+#
+# NOTE: Ideally we would set a matching property for 32 bit paths
+# on systems that default to 64 bit - as of 2.8.8 CMake doesn't yet
+# support FIND_LIBRARY_USE_LIB32_PATHS. There is a bug report on the
+# topic here: http://www.cmake.org/Bug/view.php?id=11260
+#
+if(${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS OFF)
+else(${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON)
+endif(${CMAKE_WORD_SIZE} MATCHES "32BIT")
+
+# One of the problems with 32/64 building is we need to search anew
+# for 64 bit libs after a 32 bit configure, or vice versa.
+if(PREVIOUS_CONFIGURE_TYPE)
+ if(NOT ${PREVIOUS_CONFIGURE_TYPE} MATCHES ${CMAKE_WORD_SIZE})
+ include(ResetCache)
+ RESET_CACHE_file()
+ endif(NOT ${PREVIOUS_CONFIGURE_TYPE} MATCHES ${CMAKE_WORD_SIZE})
+endif(PREVIOUS_CONFIGURE_TYPE)
+
+set(PREVIOUS_CONFIGURE_TYPE ${CMAKE_WORD_SIZE} CACHE STRING "Previous
configuration word size" FORCE)
+mark_as_advanced(PREVIOUS_CONFIGURE_TYPE)
+
Property changes on: brlcad/trunk/misc/CMake/BRLCAD_Environment_Setup.cmake
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: brlcad/trunk/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/CMake/CMakeLists.txt 2020-12-03 15:25:33 UTC (rev
77890)
+++ brlcad/trunk/misc/CMake/CMakeLists.txt 2020-12-03 15:45:27 UTC (rev
77891)
@@ -3,6 +3,7 @@
BRLCAD_CPack.cmake
BRLCAD_CPackOptions.cmake.in
BRLCAD_CheckFunctions.cmake
+ BRLCAD_Environment_Setup.cmake
BRLCAD_Options.cmake
BRLCAD_Regress_Util.cmake
BRLCAD_Summary.cmake
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits