Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ==================================================================================================
- # Macros
- SET(PRINT_COMPILE_LENGTH "40")
- MACRO(FILL_WITH_DOTS VAR)
- STRING(LENGTH ${${VAR}} NAME_LENGTH)
- MATH(EXPR DOT_LENGTH "${PRINT_COMPILE_LENGTH} - ${NAME_LENGTH}")
- IF(${DOT_LENGTH} LESS 0)
- SET(DOT_LENGTH 0)
- ENDIF(${DOT_LENGTH} LESS 0)
- FOREACH(COUNT RANGE ${DOT_LENGTH})
- SET(${VAR} "${${VAR}}.")
- ENDFOREACH(COUNT)
- ENDMACRO(FILL_WITH_DOTS)
- MACRO(PRINT_LIBRARY_STATUS NAME VERSIONHINT LOCATION)
- SET(LIB_MESSAGE "${NAME} library found")
- FILL_WITH_DOTS(LIB_MESSAGE)
- IF(${ARGN})
- MESSAGE(STATUS " ${LIB_MESSAGE} YES (${LOCATION})")
- ELSE(${ARGN})
- MESSAGE(STATUS " ${LIB_MESSAGE} NO")
- ENDIF(${ARGN})
- ENDMACRO(PRINT_LIBRARY_STATUS)
- # ==================================================================================================
- # Required dependencies
- FIND_PACKAGE( SDL REQUIRED )
- IF(NOT SDL_FOUND)
- ## if SDL was not found regularly (e.g. by reading the SDLDIR environment variable)
- ## ask user for the path to the local SDL installation
- SET(SDL_PATH "" CACHE PATH "Provide path to SDL")
- IF(NOT SDL_PATH)
- message(FATAL_ERROR "Path to SDL was not provided")
- ENDIF(NOT SDL_PATH)
- ## set given path as SDLDIR environment variable and search again
- SET( ENV{SDLDIR} ${SDL_PATH} )
- find_package( SDL REQUIRED )
- ENDIF(NOT SDL_FOUND)
- ## setup variables
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${SDL_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${SDL_LIB} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${SDL_LIBRARY} )
- MARK_AS_ADVANCED(SDL_INCLUDE_DIR)
- MARK_AS_ADVANCED(SDL_LIBRARY)
- MARK_AS_ADVANCED(SDLMAIN_LIBRARY)
- # ==================================================================================================
- # Optional dependencies
- SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
- FIND_PACKAGE( Lua51 )
- FIND_PACKAGE( EXPAT )
- FIND_PACKAGE( PNG )
- FIND_PACKAGE( Sqlite )
- #TODO: FIND_PACKAGE( bfVFS )
- ## First check if the libraries are available in the system
- ## If not, use the SMP libraries
- IF(NOT LUA51_FOUND)
- SET( MISSING_LIBS ${MISSING_LIBS} "lua")
- ENDIF(NOT LUA51_FOUND)
- IF(NOT EXPAT_FOUND)
- SET( MISSING_LIBS ${MISSING_LIBS} "expat")
- ENDIF(NOT EXPAT_FOUND)
- IF(NOT PNG_FOUND)
- SET( MISSING_LIBS ${MISSING_LIBS} "libpng")
- ENDIF(NOT PNG_FOUND)
- IF(NOT SQLITE_FOUND)
- SET( MISSING_LIBS ${MISSING_LIBS} "sqlite")
- ENDIF(NOT SQLITE_FOUND)
- IF(NOT BFVFS_FOUND)
- SET( MISSING_LIBS ${MISSING_LIBS} "bfvfs")
- ENDIF(NOT BFVFS_FOUND)
- ## get Path to SMP libraries
- SET(SMP_LIBS_DIR "SMP_LIBS_DIR_NOT_FOUND" CACHE PATH "Path to the external SMP libraries")
- STRING(COMPARE NOTEQUAL ${SMP_LIBS_DIR} "SMP_LIBS_DIR_NOT_FOUND" SMP_LIBS_FOUND)
- ## find bfVFS
- LIST(FIND MISSING_LIBS "bfvfs" BFVFS_MISSING)
- IF(NOT ${BFVFS_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- FIND_FILE(BFVFS_CONFIG_FILE "BFVFSConfig.cmake" PATHS ${SMP_LIBS_DIR})
- MARK_AS_ADVANCED(BFVFS_CONFIG_FILE)
- IF(BFVFS_CONFIG_FILE)
- INCLUDE( ${BFVFS_CONFIG_FILE} )
- SET(BFVFS_LOC "inbuilt")
- ELSE(BFVFS_CONFIG_FILE)
- MESSAGE(SEND_ERROR "could not find bfVFS config file")
- ENDIF(BFVFS_CONFIG_FILE)
- ELSEIF(NOT ${BFVFS_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- SET(BFVFS_LOC "system")
- ENDIF(NOT ${BFVFS_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- ## find Lua
- LIST(FIND MISSING_LIBS "lua" LUA_MISSING)
- IF(NOT ${LUA_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- FIND_FILE(LUA_CONFIG_FILE "LuaConfig.cmake" PATHS ${SMP_LIBS_DIR})
- MARK_AS_ADVANCED(LUA_CONFIG_FILE)
- IF(LUA_CONFIG_FILE)
- INCLUDE( ${LUA_CONFIG_FILE} )
- SET(LUA_LOC "inbuilt")
- ELSE(LUA_CONFIG_FILE)
- MESSAGE(SEND_ERROR "could not find Lua config file")
- ENDIF(LUA_CONFIG_FILE)
- ELSE(NOT ${LUA_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- SET(LUA_LOC "system")
- ENDIF(NOT ${LUA_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- ## find SQLite
- LIST(FIND MISSING_LIBS "sqlite" SQLITE_MISSING)
- IF(NOT ${SQLITE_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- FIND_FILE(SQLITE_CONFIG_FILE "SQLiteConfig.cmake" PATHS ${SMP_LIBS_DIR})
- MARK_AS_ADVANCED(SQLITE_CONFIG_FILE)
- IF(SQLITE_CONFIG_FILE)
- INCLUDE( ${SQLITE_CONFIG_FILE} )
- SET(SQLITE_LOC "inbuilt")
- ELSE(SQLITE_CONFIG_FILE)
- MESSAGE(SEND_ERROR "could not find SQLITE config file")
- ENDIF(SQLITE_CONFIG_FILE)
- ELSE(NOT ${SQLITE_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- SET(SQLITE_LOC "system")
- # TODO: move this
- MARK_AS_ADVANCED(SQLITE_INCLUDE_DIR)
- MARK_AS_ADVANCED(SQLITE_LIBRARY_DEBUG)
- MARK_AS_ADVANCED(SQLITE_LIBRARY_RELEASE)
- ENDIF(NOT ${SQLITE_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- ## find EXPAT
- LIST(FIND MISSING_LIBS "expat" EXPAT_MISSING)
- IF(NOT ${EXPAT_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- FIND_FILE(EXPAT_CONFIG_FILE "ExpatConfig.cmake" PATHS ${SMP_LIBS_DIR})
- MARK_AS_ADVANCED(EXPAT_CONFIG_FILE)
- IF(EXPAT_CONFIG_FILE)
- INCLUDE( ${EXPAT_CONFIG_FILE} )
- SET(EXPAT_LOC "inbuilt")
- ELSE(EXPAT_CONFIG_FILE)
- MESSAGE(SEND_ERROR "could not find EXPAT config file")
- ENDIF(EXPAT_CONFIG_FILE)
- ELSE(NOT ${EXPAT_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- SET(EXPAT_LOC "system")
- ENDIF(NOT ${EXPAT_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- ## find LIBPNG
- LIST(FIND MISSING_LIBS "libpng" LIBPNG_MISSING)
- IF(NOT ${LIBPNG_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- FIND_FILE(LIBPNG_CONFIG_FILE "LibpngConfig.cmake" PATHS ${SMP_LIBS_DIR})
- MARK_AS_ADVANCED(LIBPNG_CONFIG_FILE)
- IF(LIBPNG_CONFIG_FILE)
- INCLUDE( ${LIBPNG_CONFIG_FILE} )
- SET(LIBPNG_LOC "inbuilt")
- ELSE(LIBPNG_CONFIG_FILE)
- MESSAGE(SEND_ERROR "could not find LIBPNG config file")
- ENDIF(LIBPNG_CONFIG_FILE)
- ELSE(NOT ${LIBPNG_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- SET(LIBPNG_LOC "system")
- SET(LIBPNG_FOUND ${PNG_FOUND})
- ENDIF(NOT ${LIBPNG_MISSING} EQUAL -1 AND ${SMP_LIBS_FOUND})
- ## options for other external libraries
- if(BFVFS_FOUND)
- option(SMP_WITH_BFVFS "enable VFS support" ON)
- endif()
- ##
- if(EXPAT_FOUND)
- option(SMP_WITH_XML "enable XML support" ON)
- endif()
- ##
- if(LUA51_FOUND)
- option(SMP_WITH_LUA "enable Lua support" ON)
- endif()
- ##
- if(SQLITE_FOUND)
- option(SMP_WITH_SQLITE "enable SQLite support" ON)
- endif()
- ##
- if(LIBPNG_FOUND)
- option(SMP_WITH_LIBPNG "enable libpng support" ON)
- endif()
- MESSAGE(STATUS "----------------------------------------------------------------------------")
- MESSAGE(STATUS "CHECKING FOR OPTIONAL DEPENDECIES")
- MESSAGE(STATUS "")
- PRINT_LIBRARY_STATUS("bfVFS" "" "${BFVFS_LOC}" BFVFS_FOUND)
- PRINT_LIBRARY_STATUS("expat" "" "${EXPAT_LOC}" EXPAT_FOUND)
- PRINT_LIBRARY_STATUS("lua" "(version >= 5.1)" "${LUA_LOC}" LUA51_FOUND)
- PRINT_LIBRARY_STATUS("sqlite" "(version >= 3)" "${SQLITE_LOC}" SQLITE_FOUND)
- PRINT_LIBRARY_STATUS("libpng" "" "${LIBPNG_LOC}" LIBPNG_FOUND)
- ## No of missing libs
- LIST(LENGTH MISSING_LIBS NUM_LIBS_MISSING)
- IF(NOT ${SMP_LIBS_FOUND} AND ${NUM_LIBS_MISSING} GREATER 0)
- MESSAGE(STATUS "")
- MESSAGE(STATUS "**********")
- MESSAGE(STATUS "* NOTICE *")
- MESSAGE(STATUS "**********")
- FOREACH(MISSING_LIB ${MISSING_LIBS})
- MESSAGE(STATUS " - library ${MISSING_LIB} missing")
- ENDFOREACH(MISSING_LIB ${MISSING_LIBS})
- MESSAGE(STATUS "You can either install the missing libraries or build them and set ")
- MESSAGE(STATUS "the SMP_LIBS_DIR variable using cmake-gui.")
- #MESSAGE(SEND_ERROR "Please install the missing libraries")
- ENDIF(NOT ${SMP_LIBS_FOUND} AND ${NUM_LIBS_MISSING} GREATER 0)
- MESSAGE(STATUS "")
- MESSAGE(STATUS "----------------------------------------------------------------------------")
- MESSAGE(STATUS "")
- if(SMP_WITH_BFVFS)
- ## setup variables
- set( SMP_DEFINITIONS ${SMP_DEFINITIONS} -DWITH_VFS ${BFVFS_DEFINITIONS} )
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${BFVFS_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${BFVFS_LIBRARY_DIR} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${BFVFS_LIBRARIES} )
- endif()
- if(SMP_WITH_LUA)
- ## setup variables
- set( SMP_DEFINITIONS ${SMP_DEFINITIONS} -DWITH_LUA ${LUA_DEFINITIONS} )
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${LUA_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${LUA_LIBRARY_DIR} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${LUA_LIBRARIES} )
- endif()
- if(SMP_WITH_SQLITE)
- ## setup variables
- set( SMP_DEFINITIONS ${SMP_DEFINITIONS} -DWITH_SQLITE ${SQLITE_DEFINITIONS} )
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${SQLITE_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${SQLITE_LIBRARY_DIR} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${SQLITE_LIBRARIES} )
- endif()
- if(SMP_WITH_XML)
- ## setup variables
- set( SMP_DEFINITIONS ${SMP_DEFINITIONS} -DWITH_XML ${EXPAT_DEFINITIONS} )
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${EXPAT_LIBRARY_DIR} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${EXPAT_LIBRARIES} )
- endif()
- if(SMP_WITH_LIBPNG)
- ## setup variables
- set( SMP_DEFINITIONS ${SMP_DEFINITIONS} -DWITH_PNG ${LIBPNG_DEFINITIONS} )
- set( SMP_INCLUDE_DIRS ${SMP_INCLUDE_DIRS} ${LIBPNG_INCLUDE_DIR} )
- set( SMP_LIBRARY_DIRS ${SMP_LIBRARY_DIRS} ${LIBPNG_LIBRARY_DIR} )
- set( SMP_LIBRARIES ${SMP_LIBRARIES} ${LIBPNG_LIBRARIES} )
- endif()
Advertisement
Add Comment
Please, Sign In to add comment