Revision: 77260
http://sourceforge.net/p/brlcad/code/77260
Author: starseeker
Date: 2020-09-29 12:09:14 +0000 (Tue, 29 Sep 2020)
Log Message:
-----------
32 vs 64 bit must be decided very early in the process.
Modified Paths:
--------------
brlcad/branches/thirdparty_rework/CMakeLists.txt
brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Environment_Setup.cmake
brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_User_Options.cmake
Modified: brlcad/branches/thirdparty_rework/CMakeLists.txt
===================================================================
--- brlcad/branches/thirdparty_rework/CMakeLists.txt 2020-09-29 00:23:36 UTC
(rev 77259)
+++ brlcad/branches/thirdparty_rework/CMakeLists.txt 2020-09-29 12:09:14 UTC
(rev 77260)
@@ -54,7 +54,23 @@
# need this definition up front.
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 for both the superbuild and the main build.
+include(BRLCAD_Environment_Setup)
+
+
+#---------------------------------------------------------------------
+# Define the user level options - the superbuild needs these to make
+# decisions on what to build.
include(BRLCAD_Options)
+
+#---------------------------------------------------------------------
+# Define various utilities common to both superbuild and the primary
+# build.
include(BRLCAD_Util)
if (NOT DEFINED SUBBUILD)
@@ -287,9 +303,6 @@
# build logic
include(BRLCAD_Targets)
-# Setup and checks related to system environment settings
-include(BRLCAD_Environment_Setup)
-
include(CheckTypeSize)
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
@@ -523,89 +536,8 @@
endif(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND NOT
CMAKE_CONFIGURATION_TYPES)
#----------------------------------------------------------------------
-# Decide whether to do a 32 or a 64 bit build.
+# Let config.h know whether we're doing 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")
-# On Windows, we can't set word size at CMake configure time - the
-# compiler chosen at the beginning dictates the result. Mark as
-# advanced in that situation.
-if(MSVC)
- mark_as_advanced(BRLCAD_WORD_SIZE)
-endif(MSVC)
-
-# 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 (APPLE)
- if (${CMAKE_WORD_SIZE} MATCHES "32BIT")
- set(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Building for i386" FORCE)
- endif (${CMAKE_WORD_SIZE} MATCHES "32BIT")
-endif (APPLE)
-
CONFIG_H_APPEND(BRLCAD "#define SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}\n")
# OpenBSD doesn't define __WORD_SIZE
@@ -616,31 +548,6 @@
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
Modified:
brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Environment_Setup.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Environment_Setup.cmake
2020-09-29 00:23:36 UTC (rev 77259)
+++ brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_Environment_Setup.cmake
2020-09-29 12:09:14 UTC (rev 77260)
@@ -75,3 +75,113 @@
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")
+# On Windows, we can't set word size at CMake configure time - the
+# compiler chosen at the beginning dictates the result. Mark as
+# advanced in that situation.
+if(MSVC)
+ mark_as_advanced(BRLCAD_WORD_SIZE)
+endif(MSVC)
+
+# calculate the size of a pointer if we haven't already
+include(CheckTypeSize)
+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 (APPLE)
+ if (${CMAKE_WORD_SIZE} MATCHES "32BIT")
+ set(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Building for i386" FORCE)
+ endif (${CMAKE_WORD_SIZE} MATCHES "32BIT")
+endif (APPLE)
+
+# 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)
+
Modified: brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_User_Options.cmake
===================================================================
--- brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_User_Options.cmake
2020-09-29 00:23:36 UTC (rev 77259)
+++ brlcad/branches/thirdparty_rework/misc/CMake/BRLCAD_User_Options.cmake
2020-09-29 12:09:14 UTC (rev 77260)
@@ -70,7 +70,7 @@
# test for X11 on all platforms since we don't know when/where we'll find it,
unless
# we've indicated we *don't* want an X11 build
if(NOT BRLCAD_ENABLE_AQUA AND NOT BRLCAD_ENABLE_MINIMAL)
- include(FindX11)
+ find_package(X11)
endif(NOT BRLCAD_ENABLE_AQUA AND NOT BRLCAD_ENABLE_MINIMAL)
# make sure Xi is included in the list of X11 libs
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