Permalink
Browse files

From Jan Peciva, improvements to Inventor find operation

  • Loading branch information...
1 parent 1e74890 commit a57dd4b4d85d18041c33b2a78293131c71a35d9d @osg-training-guest osg-training-guest committed Jan 31, 2010
Showing with 177 additions and 34 deletions.
  1. +177 −34 CMakeModules/FindInventor.cmake
@@ -1,63 +1,206 @@
-# - Locate Inventor
+#
+# Find Open Inventor
+#
# This module defines:
# INVENTOR_FOUND, if false, do not try to link against Inventor.
# INVENTOR_INCLUDE_DIR, where to find headers.
# INVENTOR_LIBRARY, the library to link against.
# INVENTOR_LIBRARY_DEBUG, the debug library to link against.
+# INVENTOR_SOWIN_LIBRARY, the SoWin library - window binding library for Inventor
+# INVENTOR_SOWIN_LIBRARY, the SoWin debug library
+# INVENTOR_SOXT_LIBRARY, the SoXt library - window binding library for Inventor
+# INVENTOR_SOXT_LIBRARY, the SoXt debug library
+#
+
+#
+# Inventor
+#
+# notes:
+# - Coin is honored over SGI Inventor
+# - Coin is detected by coin-config script, COINDIR environment variable,
+# and finally standard system locations are searched
+# - SGI Inventor is searched at standard system locations only
+#
+
+# coin-config tells much of Coin instalation (if present)
+execute_process (COMMAND coin-config --prefix
+ OUTPUT_VARIABLE COIN_PREFIX
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# try to find Inventor includes (priority paths)
+FIND_PATH(INVENTOR_INCLUDE_DIR Inventor/So.h
+ ${COIN_PREFIX}/include
+ $ENV{COINDIR}/include
+ NO_DEFAULT_PATH
+)
+
+# try to find Inventor includes (regular paths)
FIND_PATH(INVENTOR_INCLUDE_DIR Inventor/So.h
/usr/local/include
/usr/include
/sw/include
/opt/local/include
/opt/csw/include
/opt/include
- $ENV{COINDIR}/include
)
-FIND_LIBRARY(INVENTOR_LIBRARY
- NAMES coin2 Coin
- PATHS
+# default Inventor lib search paths
+SET(INVENTOR_LIB_SEARCH_PATH
/usr/local/lib
/usr/lib
/sw/lib
/opt/local/lib
/opt/csw/lib
/opt/lib
- $ENV{COINDIR}/lib
-)
-IF(NOT INVENTOR_LIBRARY)
- # If we can't find libCoin try libInventor
- FIND_LIBRARY(INVENTOR_LIBRARY
- NAMES Inventor
- PATHS
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
- )
-ENDIF(NOT INVENTOR_LIBRARY)
+)
+
+# try to find Coin release lib (priority paths)
+FIND_LIBRARY(INVENTOR_LIBRARY_RELEASE
+ NAMES coin5 coin4 coin3 coin2 coin1 Coin
+ PATHS ${COIN_PREFIX}/lib
+ $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find Coin release lib (regular paths)
+FIND_LIBRARY(INVENTOR_LIBRARY_RELEASE
+ NAMES coin5 coin4 coin3 coin2 coin1 Coin
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+# try to find SGI Inventor lib
+FIND_LIBRARY(INVENTOR_LIBRARY_RELEASE
+ NAMES Inventor
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+
+# try to find Coin debug lib (priority paths)
FIND_LIBRARY(INVENTOR_LIBRARY_DEBUG
- NAMES coin2d
- PATHS
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
- $ENV{COINDIR}/lib
+ NAMES coin5d coin4d coin3d coin2d coin1d
+ PATHS ${COIN_PREFIX}/lib
+ $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find Coin debug lib (regular paths)
+FIND_LIBRARY(INVENTOR_LIBRARY_DEBUG
+ NAMES coin5d coin4d coin3d coin2d coin1d
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
)
-IF(NOT INVENTOR_LIBRARY_DEBUG)
- IF(INVENTOR_LIBRARY)
- SET(INVENTOR_LIBRARY_DEBUG ${INVENTOR_LIBRARY})
- ENDIF(INVENTOR_LIBRARY)
-ENDIF(NOT INVENTOR_LIBRARY_DEBUG)
+# set release to debug if only debug found
+IF(NOT INVENTOR_LIBRARY_RELEASE AND INVENTOR_LIBRARY_DEBUG)
+ SET(INVENTOR_LIBRARY_RELEASE ${INVENTOR_LIBRARY_DEBUG})
+ENDIF(NOT INVENTOR_LIBRARY_RELEASE AND INVENTOR_LIBRARY_DEBUG)
+
+# set debug to release (if only release found)
+IF(NOT INVENTOR_LIBRARY_DEBUG AND INVENTOR_LIBRARY_RELEASE)
+ SET(INVENTOR_LIBRARY_DEBUG ${INVENTOR_LIBRARY_RELEASE})
+ENDIF(NOT INVENTOR_LIBRARY_DEBUG AND INVENTOR_LIBRARY_RELEASE)
+
+# INVENTOR_LIBRARY
+IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+ SET(INVENTOR_LIBRARY
+ optimized ${INVENTOR_LIBRARY_RELEASE}
+ debug ${INVENTOR_LIBRARY_DEBUG})
+ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+ SET(INVENTOR_LIBRARY
+ ${INVENTOR_LIBRARY_RELEASE})
+ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+
+# set INVENTOR_FOUND appropriately
SET(INVENTOR_FOUND "NO")
IF(INVENTOR_INCLUDE_DIR AND INVENTOR_LIBRARY)
SET(INVENTOR_FOUND "YES")
ENDIF(INVENTOR_INCLUDE_DIR AND INVENTOR_LIBRARY)
+
+
+#
+# SoWin
+#
+# notes: SoWin is searched by COINDIR environment variable
+# (as expected to be located at Windows platform)
+
+# try to find SoWin lib (priority paths)
+FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY
+ NAMES sowin1
+ PATHS $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find SoWin lib (regular paths)
+FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY
+ NAMES sowin1
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+
+# try to find SoWin debug lib (priority paths)
+FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY_DEBUG
+ NAMES sowin1d
+ PATHS $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find SoWin debug lib (regular paths)
+FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY_DEBUG
+ NAMES sowin1d
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+
+# SoWin debug library defaults to non-debug lib
+IF(NOT INVENTOR_SOWIN_LIBRARY_DEBUG)
+ IF(INVENTOR_SOWIN_LIBRARY)
+ SET(INVENTOR_SOWIN_LIBRARY_DEBUG INVENTOR_SOWIN_LIBRARY)
+ ENDIF(INVENTOR_SOWIN_LIBRARY)
+ENDIF(NOT INVENTOR_SOWIN_LIBRARY_DEBUG)
+
+
+#
+# SoXt
+#
+# notes:
+# - SoXt is detected by soxt-config script (as expected by
+# Coin's SoXt on Linux/Unix) and on standard system locations
+# - SGI's InventorXt support is missing now
+#
+
+# soxt-config tells much of SoXt instalation (if present)
+execute_process (COMMAND soxt-config --prefix
+ OUTPUT_VARIABLE SOXT_PREFIX
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# try to find SoXt lib (priority paths)
+FIND_LIBRARY(INVENTOR_SOXT_LIBRARY
+ NAMES soxt1 SoXt
+ PATHS ${SOXT_PREFIX}/lib
+ $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find SoXt lib (regular paths)
+FIND_LIBRARY(INVENTOR_SOXT_LIBRARY
+ NAMES soxt1 SoXt
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+
+# try to find SoXt debug lib (priority paths)
+FIND_LIBRARY(INVENTOR_SOXT_LIBRARY_DEBUG
+ NAMES soxt1d
+ PATHS ${SOXT_PREFIX}/lib
+ $ENV{COINDIR}/lib
+ NO_DEFAULT_PATH
+)
+
+# try to find SoXt debug lib (regular paths)
+FIND_LIBRARY(INVENTOR_SOXT_LIBRARY_DEBUG
+ NAMES soxt1d
+ PATHS ${INVENTOR_LIB_SEARCH_PATH}
+)
+
+# SoXt debug library defaults to non-debug lib
+IF(NOT INVENTOR_SOXT_LIBRARY_DEBUG)
+ IF(INVENTOR_SOXT_LIBRARY)
+ SET(INVENTOR_SOXT_LIBRARY_DEBUG INVENTOR_SOXT_LIBRARY)
+ ENDIF(INVENTOR_SOXT_LIBRARY)
+ENDIF(NOT INVENTOR_SOXT_LIBRARY_DEBUG)

0 comments on commit a57dd4b

Please sign in to comment.