diff --git a/.hgignore b/.hgignore index 9940cef3d..4a0311dcc 100644 --- a/.hgignore +++ b/.hgignore @@ -141,6 +141,7 @@ moc_*.cpp *.patch *.7z external +external_stlport 3rdParty .svn diff --git a/code/CMakeModules/FindExternal.cmake b/code/CMakeModules/FindExternal.cmake index 7e87fd98d..3ca7774ba 100644 --- a/code/CMakeModules/FindExternal.cmake +++ b/code/CMakeModules/FindExternal.cmake @@ -1,27 +1,33 @@ # Look for a directory containing external libraries. # # The following values are defined +# EXTERNAL_PATH - where to find external # EXTERNAL_INCLUDE_PATH - where to find external includes # EXTERNAL_LIBRARY_PATH - where to find external libraries # EXTERNAL_FOUND - True if the external libraries are available -# also defined, but not for general use are -IF(EXTERNAL_PATH) - # in cache already - SET(EXTERNAL_FIND_QUIETLY TRUE) -ENDIF(EXTERNAL_PATH) +SET(EXTERNAL_TEMP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external ${CMAKE_CURRENT_SOURCE_DIR}/../external ${CMAKE_CURRENT_SOURCE_DIR}/3rdParty ${CMAKE_CURRENT_SOURCE_DIR}/../3rdParty ${EXTERNAL_PATH}) +SET(EXTERNAL_TEMP_FILE "include/png.h") +SET(EXTERNAL_NAME "external") -FIND_PATH(EXTERNAL_PATH - include/png.h - PATHS - ${CMAKE_CURRENT_SOURCE_DIR}/3rdParty - ${CMAKE_CURRENT_SOURCE_DIR}/../3rdParty - ${CMAKE_CURRENT_SOURCE_DIR}/external - ${CMAKE_CURRENT_SOURCE_DIR}/../external -) +# If using STLport preprend external_stlport +IF(WITH_STLPORT) + SET(EXTERNAL_TEMP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external_stlport ${CMAKE_CURRENT_SOURCE_DIR}/../external_stlport ${EXTERNAL_TEMP_PATH}) + SET(EXTERNAL_TEMP_FILE "include/stlport/string") + SET(EXTERNAL_NAME "external with STLport") +ENDIF(WITH_STLPORT) -IF(EXTERNAL_PATH) - SET(EXTERNAL_FOUND TRUE) +SET(EXTERNAL_FOUND FALSE) +FOREACH(ITEM ${EXTERNAL_TEMP_PATH}) + IF(EXISTS "${ITEM}/${EXTERNAL_TEMP_FILE}" AND NOT EXTERNAL_FOUND) + SET(EXTERNAL_FOUND TRUE) + # Get absolute path to avoid .. + GET_FILENAME_COMPONENT(ITEM ${ITEM} ABSOLUTE) + SET(EXTERNAL_PATH ${ITEM} CACHE PATH "" FORCE) + ENDIF(EXISTS "${ITEM}/${EXTERNAL_TEMP_FILE}" AND NOT EXTERNAL_FOUND) +ENDFOREACH(ITEM ${EXTERNAL_TEMP_PATH}) + +IF(EXTERNAL_FOUND) SET(EXTERNAL_INCLUDE_PATH "${EXTERNAL_PATH}/include") IF(NOT CMAKE_SIZEOF_VOID_P) @@ -40,16 +46,20 @@ IF(EXTERNAL_PATH) # Stupid hack for FindOpenAL.cmake SET(CMAKE_INCLUDE_PATH "${EXTERNAL_PATH};${CMAKE_INCLUDE_PATH}") SET(CMAKE_LIBRARY_PATH "${EXTERNAL_LIBRARY_PATH};${CMAKE_LIBRARY_PATH}") -ENDIF(EXTERNAL_PATH) +ENDIF(EXTERNAL_FOUND) IF(EXTERNAL_FOUND) - IF(NOT EXTERNAL_FIND_QUIETLY) - MESSAGE(STATUS "Found external: ${EXTERNAL_PATH}") - ENDIF(NOT EXTERNAL_FIND_QUIETLY) + IF(NOT External_FIND_QUIETLY) + MESSAGE(STATUS "Found ${EXTERNAL_NAME}: ${EXTERNAL_PATH}") + ENDIF(NOT External_FIND_QUIETLY) ELSE(EXTERNAL_FOUND) - IF(NOT EXTERNAL_FIND_QUIETLY) - MESSAGE(STATUS "Warning: Unable to find external!") - ENDIF(NOT EXTERNAL_FIND_QUIETLY) + IF(External_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Unable to find ${EXTERNAL_NAME}!") + ELSE(External_FIND_REQUIRED) + IF(NOT External_FIND_QUIETLY) + MESSAGE(STATUS "Warning: Unable to find ${EXTERNAL_NAME}!") + ENDIF(NOT External_FIND_QUIETLY) + ENDIF(External_FIND_REQUIRED) ENDIF(EXTERNAL_FOUND) MARK_AS_ADVANCED(EXTERNAL_INCLUDE_PATH EXTERNAL_LIBRARY_PATH)