coriolis/crlcore/cmake_modules/FindOPENACCESS.cmake

219 lines
9.1 KiB
CMake

# - Find the OpenAccess includes and libraries.
# x-----------------------------------------------------------------x
# | This file is part of the hurricaneAMS Software. |
# | Copyright (c) UPMC/LIP6 2009-2010, All Rights Reserved |
# | =============================================================== |
# | Author : Jean-Manuel Caba |
# | E-mail : Jean-Manuel.Caba@asim.lip6.fr |
# | =============================================================== |
# | Author : Chistophe Alexandre |
# | E-mail : Christophe.Alexandre@asim.lip6.fr |
# x-----------------------------------------------------------------x
# The following variables are set if OpenAccess is found. If OpenAccess is not
# found, OA_FOUND is set to false.
# OA_FOUND - True when OpenAccess is found.
# OA_INCLUDE_DIR - the path to where the OpenAccess include files are.
# OA_LIBRARIES - The path to where the OpenAccess library files are.
#
# In OpenAccess si2 version the base library (without the plugins) are
# The OpenAccess oaCommon library: OA_COMMON_LIBRARY
# OA_COMMON_LIBRARY_RELEASE
# OA_COMMON_DEBUG
#
# The OpenAccess oaBase library: OA_BASE_LIBRARY
# OA_BASE_LIBRARY_RELEASE
# OA_BASE_DEBUG
#
# The OpenAccess oaCM library: OA_CM_LIBRARY
# OA_CM_LIBRARY_RELEASE
# OA_CM_DEBUG
#
# The OpenAccess oaDM library: OA_DM_LIBRARY
# OA_DM_LIBRARY_RELEASE
# OA_DM_DEBUG
#
# The OpenAccess oaTech library: OA_TECH_LIBRARY
# OA_TECH_LIBRARY_RELEASE
# OA_TECH_DEBUG
#
# The OpenAccess oaDesign library: OA_DESIGN_LIBRARY
# OA_DESIGN_LIBRARY_RELEASE
# OA_DESIGN_DEBUG
#
# The OpenAccess oaWafer library: OA_WAFER_LIBRARY
# OA_WAFER_LIBRARY_RELEASE
# OA_WAFER_DEBUG
#
# The OpenAccess oaPlugin library: OA_PLUGIN_LIBRARY
# OA_PLUGIN_LIBRARY_RELEASE
# OA_PLUGIN_DEBUG
#
# Cadence version of OpenAccess has also
#
#liboaCMExportSample.so
#liboaCMTrackingSample.so
#liboaDMFileSysBase.so
#liboaDMFileSys.so
#liboaDMTurboBase.so
#liboaDMTurbo.so
#liboaLangBase.so
#liboaLangInfo.so
#liboaNativeLibDef.so
#liboaNativeText.so
#liboaPcellCPP.so
#liboaPcellScript.so
#liboaRQCDS.so
#liboaRQHGCDS.so
#liboaRQXYTree.so
#liboaTclCommon.so
#liboaTclBase.so
#liboaTclPlugIn.so
#liboaTclEngine.so
#liboaTclHelp.so
#liboaTcl.so
MESSAGE(STATUS "Searching for OPENACCESS ...")
SET(OA_INCLUDE_PATH_DESCRIPTION "directory containing the OpenAccess include files. E.g /usr/local/include")
SET(OA_DIR_MESSAGE "Set the OA_INCLUDE_DIR cmake cache entry to the ${OA_INCLUDE_PATH_DESCRIPTION}")
# don't even bother under WIN32
IF(UNIX)
SET(OA_DIR_SEARCH $ENV{OA_LIB_DIR})
IF(OA_DIR_SEARCH)
FILE(TO_CMAKE_PATH ${OA_DIR_SEARCH} OA_DIR_SEARCH)
ENDIF(OA_DIR_SEARCH)
#
# Look for an installation.
#
FIND_PATH(OA_INCLUDE_PATH NAMES oa/oaDesign.h PATHS $ENV{OA_INCLUDE_DIR}
PATH_SUFFIXES include
# Help the user find it if we cannot.
DOC "The ${OA_INCLUDE_PATH_DESCRIPTION}"
)
SET(OA_LIBRARY_DIR ${OA_DIR_SEARCH})
# Set OA_OACOMMON_LIBRARY
FIND_LIBRARY(OA_OACOMMON_LIBRARY_RELEASE NAMES oaCommon PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OACOMMON_LIBRARY_DEBUG NAMES oaCommonD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OABASE_LIBRARY
FIND_LIBRARY(OA_OABASE_LIBRARY_RELEASE NAMES oaBase PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OABASE_LIBRARY_DEBUG NAMES oaBaseD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OACM_LIBRARY
FIND_LIBRARY(OA_OACM_LIBRARY_RELEASE NAMES oaCM PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OACM_LIBRARY_DEBUG NAMES oaCMD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OADM_LIBRARY
FIND_LIBRARY(OA_OADM_LIBRARY_RELEASE NAMES oaDM PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OADM_LIBRARY_DEBUG NAMES oaDMD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OAPLUGIN_LIBRARY
FIND_LIBRARY(OA_OAPLUGIN_LIBRARY_RELEASE NAMES oaPlugIn PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OAPLUGIN_LIBRARY_DEBUG NAMES oaPlugInD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OATECH_LIBRARY
FIND_LIBRARY(OA_OATECH_LIBRARY_RELEASE NAMES oaTech PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OATECH_LIBRARY_DEBUG NAMES oaTechD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OADESIGN_LIBRARY
FIND_LIBRARY(OA_OADESIGN_LIBRARY_RELEASE NAMES oaDesign PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OADESIGN_LIBRARY_DEBUG NAMES oaDesignD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
# Set OA_OAWAFER_LIBRARY
FIND_LIBRARY(OA_OAWAFER_LIBRARY_RELEASE NAMES oaWafer PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH )
FIND_LIBRARY(OA_OAWAFER_LIBRARY_DEBUG NAMES oaWaferD PATHS ${OA_LIBRARY_DIR} NO_DEFAULT_PATH)
############################################
#
# Check the existence of the libraries.
#
############################################
MACRO (_OA_ADJUST_LIB_VARS basename)
# if only the release version was found, set the debug variable also to the release version
IF (OA_${basename}_LIBRARY_RELEASE AND NOT OA_${basename}_LIBRARY_DEBUG)
SET(OA_${basename}_LIBRARY_DEBUG ${OA_${basename}_LIBRARY_RELEASE})
SET(OA_${basename}_LIBRARY ${OA_${basename}_LIBRARY_RELEASE})
SET(OA_${basename}_LIBRARIES ${OA_${basename}_LIBRARY_RELEASE})
ENDIF (OA_${basename}_LIBRARY_RELEASE AND NOT OA_${basename}_LIBRARY_DEBUG)
# if only the debug version was found, set the release variable also to the debug version
IF (OA_${basename}_LIBRARY_DEBUG AND NOT OA_${basename}_LIBRARY_RELEASE)
SET(OA_${basename}_LIBRARY_RELEASE ${OA_${basename}_LIBRARY_DEBUG})
SET(OA_${basename}_LIBRARY ${OA_${basename}_LIBRARY_DEBUG})
SET(OA_${basename}_LIBRARIES ${OA_${basename}_LIBRARY_DEBUG})
ENDIF (OA_${basename}_LIBRARY_DEBUG AND NOT OA_${basename}_LIBRARY_RELEASE)
IF (OA_${basename}_LIBRARY_DEBUG AND OA_${basename}_LIBRARY_RELEASE)
# if the generator supports configuration types then set
# optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
SET(OA_${basename}_LIBRARY optimized ${OA_${basename}_LIBRARY_RELEASE} debug ${OA_${basename}_LIBRARY_DEBUG})
ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
# if there are no configuration types and CMAKE_BUILD_TYPE has no value
# then just use the release libraries
SET(OA_${basename}_LIBRARY ${OA_${basename}_LIBRARY_RELEASE} )
ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
SET(OA_${basename}_LIBRARIES optimized ${OA_${basename}_LIBRARY_RELEASE} debug ${OA_${basename}_LIBRARY_DEBUG})
ENDIF (OA_${basename}_LIBRARY_DEBUG AND OA_${basename}_LIBRARY_RELEASE)
SET(OA_${basename}_LIBRARY ${OA_${basename}_LIBRARY} CACHE FILEPATH "The OpenAccess ${basename} library")
IF (OA_${basename}_LIBRARY)
SET(OA_${basename}_FOUND 1)
ENDIF (OA_${basename}_LIBRARY)
# Make variables changeble to the advanced user
MARK_AS_ADVANCED(OA_${basename}_LIBRARY OA_${basename}_LIBRARY_RELEASE OA_${basename}_LIBRARY_DEBUG OA_${basename}_INCLUDE_DIR)
ENDMACRO (_OA_ADJUST_LIB_VARS)
_OA_ADJUST_LIB_VARS(OACOMMON)
_OA_ADJUST_LIB_VARS(OABASE)
_OA_ADJUST_LIB_VARS(OACM)
_OA_ADJUST_LIB_VARS(OADM)
_OA_ADJUST_LIB_VARS(OAPLUGIN)
_OA_ADJUST_LIB_VARS(OATECH)
_OA_ADJUST_LIB_VARS(OADESIGN)
_OA_ADJUST_LIB_VARS(OAWAFER)
IF (OA_INCLUDE_PATH AND OA_OACOMMON_LIBRARY AND OA_OABASE_LIBRARY
AND OA_OADM_LIBRARY AND OA_OATECH_LIBRARY AND OA_OADESIGN_LIBRARY
AND OA_OAWAFER_LIBRARY AND OA_OAPLUGIN_LIBRARY)
SET(OA_FOUND "YES")
IF (NOT OA_FIND_QUIETLY)
MESSAGE(STATUS "Found OpenAccess")
ENDIF( NOT OA_FIND_QUIETLY)
SET(OA_INCLUDE_DIR
${OA_INCLUDE_PATH}
)
SET(OA_LIBRARIES
${OA_OACOMMON_LIBRARY}
${OA_OABASE_LIBRARY}
${OA_OACM_LIBRARY}
${OA_OADM_LIBRARY}
${OA_OAPLUGIN_LIBRARY}
${OA_OATECH_LIBRARY}
${OA_OADESIGN_LIBRARY}
${OA_OAWAFER_LIBRARY}
)
ELSE (OA_INCLUDE_PATH AND OA_LIBRARY_PATH)
SET(OA_FOUND "NO")
IF(OA_FIND_REQUIRED)
MESSAGE( FATAL_ERROR "OpenAccess NOT found!")
ELSE(OA_FIND_REQUIRED)
MESSAGE( STATUS "OpenAccess NOT found!")
ENDIF(OA_FIND_REQUIRED)
ENDIF (OA_INCLUDE_PATH AND OA_OACOMMON_LIBRARY AND OA_OABASE_LIBRARY
AND OA_OADM_LIBRARY AND OA_OATECH_LIBRARY AND OA_OADESIGN_LIBRARY
AND OA_OAWAFER_LIBRARY AND OA_OAPLUGIN_LIBRARY)
IF(OA_FOUND)
ADD_DEFINITIONS(-DHAVE_OPENACCESS)
ENDIF(OA_FOUND)
ENDIF(UNIX)