# - Find the LEF/DEF includes and libraries. # The following variables are set if LEF/DEF is found. If LEF/DEF is not # found, LEFDEF_FOUND is set to false. # LEFDEF_FOUND - True when LEF/DEF is found. # LEFDEF_INCLUDE_DIR - the path to where the LEF/DEF include files are. # LEFDEF_LIBRARIES - The path to where the LEF/DEF library files are. # # The DEF C API library: LEFDEF_CDEF_LIBRARY # LEFDEF_CDEF_LIBRARY_RELEASE # LEFDEF_CDEF_LIBRARY_DEBUG # # The DEF C API library (zlib) : LEFDEF_ZCDEF_LIBRARY # LEFDEF_ZCDEF_LIBRARY_RELEASE # LEFDEF_ZCDEF_LIBRARY_DEBUG # # The DEF C++ API library: LEFDEF_DEF_LIBRARY # LEFDEF_DEF_LIBRARY_RELEASE # LEFDEF_DEF_LIBRARY_DEBUG # # The DEF C++ API library (zlib) : LEFDEF_ZDEF_LIBRARY # LEFDEF_ZDEF_LIBRARY_RELEASE # LEFDEF_ZDEF_LIBRARY_DEBUG # # The LEF C API library: LEFDEF_CLEF_LIBRARY # LEFDEF_CLEF_LIBRARY_RELEASE # LEFDEF_CLEF_LIBRARY_DEBUG # # The LEF C API library (zlib) : LEFDEF_ZCLEF_LIBRARY # LEFDEF_ZCLEF_LIBRARY_RELEASE # LEFDEF_ZCLEF_LIBRARY_DEBUG # # The LEF C++ API library: LEFDEF_LEF_LIBRARY # LEFDEF_LEF_LIBRARY_RELEASE # LEFDEF_LEF_LIBRARY_DEBUG # # The LEF C++ API library (zlib) : LEFDEF_ZLEF_LIBRARY # LEFDEF_ZLEF_LIBRARY_RELEASE # LEFDEF_ZLEF_LIBRARY_DEBUG macro ( _find_lefdef_lib varname libname ) find_library ( LEFDEF_${varname}_LIBRARY_RELEASE NAMES ${libname} PATHS ${LEFDEF_LIBRARY_DIR} ) find_library ( LEFDEF_${varname}_LIBRARY_DEBUG NAMES ${libname}_Debug PATHS ${LEFDEF_LIBRARY_DIR} ) if ( LEFDEF_${varname}_LIBRARY_RELEASE AND NOT LEFDEF_${varname}_LIBRARY_DEBUG ) set ( LEFDEF_${varname}_LIBRARY_DEBUG ${LEFDEF_${varname}_LIBRARY_RELEASE} CACHE STRING "Path to a library" FORCE ) endif ( LEFDEF_${varname}_LIBRARY_RELEASE AND NOT LEFDEF_${varname}_LIBRARY_DEBUG ) if ( LEFDEF_${varname}_LIBRARY_DEBUG AND NOT LEFDEF_${varname}_LIBRARY_RELEASE ) set ( LEFDEF_${varname}_LIBRARY_RELEASE LEFDEF_${varname}_LIBRARY_DEBUG CACHE STRING "Path to a library" FORCE ) endif ( LEFDEF_${varname}_LIBRARY_DEBUG AND NOT LEFDEF_${varname}_LIBRARY_RELEASE ) if ( LEFDEF_${varname}_LIBRARY_RELEASE ) list ( APPEND LEFDEF_LIBRARIES "optimized" ${LEFDEF_${varname}_LIBRARY_RELEASE} "debug" ${LEFDEF_${varname}_LIBRARY_DEBUG} ) set ( LEFDEF_${varname}_LIBRARY_FOUND 1 ) mark_as_advanced ( LEFDEF_${varname}_LIBRARY_RELEASE LEFDEF_${varname}_LIBRARY_DEBUG ) else ( LEFDEF_${varname}_LIBRARY_RELEASE ) set ( LEFDEF_FOUND "NO" ) endif ( LEFDEF_${varname}_LIBRARY_RELEASE ) endmacro ( _find_lefdef_lib ) set ( LEFDEF_INCLUDE_DIR_DESCRIPTION "directory containing the LEF/DEF include files. E.g /opt/lefdef-5.6/include" ) set ( LEFDEF_LIBRARY_DIR_DESCRIPTION "directory containing the LEF/DEF library files. E.g /opt/lefdef-5.6/lib" ) set ( LEFDEF_DIR_MESSAGE "Set the LEFDEF_INCLUDE_DIR cmake cache entry to the ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" ) # Don't even bother under Win32 if ( UNIX ) set ( LEFDEF_FOUND "YES" ) set ( LEFDEF_SEARCH_PATH $ENV{LEFDEF_TOP} "/opt/lefdef-5.6" "/opt/lefdef-5.7" "/opt/lefdef") set ( LEFDEF_LIBRARIES "" ) set ( LEFDEF_LIBRARY_SEARCH_PATH "" ) foreach ( element ${LEFDEF_SEARCH_PATH} ) list ( APPEND LEFDEF_LIBRARY_SEARCH_PATH "${element}/lib" ) endforeach ( element ${LEFDEF_SEARCH_PATH} ) find_path ( LEFDEF_INCLUDE_DIR NAMES "defiDefs.h" PATHS ${LEFDEF_SEARCH_PATH} PATH_SUFFIXES "include" DOC "The ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" ) find_path ( LEFDEF_LIBRARY_DIR NAMES "libdef.a" "libdef_Debug.a" PATHS ${LEFDEF_LIBRARY_SEARCH_PATH} DOC "The ${LEFDEF_LIBRARY_DIR_DESCRIPTION}" ) if ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR ) _find_lefdef_lib ( "CDEF" "cdef" ) _find_lefdef_lib ( "ZCDEF" "cdefzlib" ) _find_lefdef_lib ( "DEF" "def" ) _find_lefdef_lib ( "ZDEF" "defzlib" ) _find_lefdef_lib ( "CLEF" "clef" ) _find_lefdef_lib ( "ZCLEF" "clefzlib" ) _find_lefdef_lib ( "LEF" "lef" ) _find_lefdef_lib ( "ZLEF" "lefzlib" ) else ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR ) set ( LEFDEF_FOUND "NO" ) endif ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR ) mark_as_advanced ( LEFDEF_INCLUDE_DIR LEFDEF_LIBRARY_DIR LEFDEF_LIBRARIES ) if ( LEFDEF_FOUND ) add_definitions ( -DHAVE_LEFDEF ) if ( NOT LEFDEF_FIND_QUIETLY ) message ( STATUS "Found LEF/DEF" ) endif ( NOT LEFDEF_FIND_QUIETLY ) else ( LEFDEF_FOUND ) if ( LEFDEF_FIND_REQUIRED ) message ( STATUS "LEF/DEF libraries and/or includes NOT found!" ) endif ( LEFDEF_FIND_REQUIRED ) endif ( LEFDEF_FOUND ) endif ( UNIX )