pcsx2/cmake/SearchForStuff.cmake

173 lines
5.8 KiB
CMake

#-------------------------------------------------------------------------------
# Search all libraries on the system
#-------------------------------------------------------------------------------
# Do not search Lib in /usr/lib64. Hope it is not overwritten in find_package or others macro
SET(FIND_LIBRARY_USE_LIB64_PATHS FALSE)
## Linux only libraries
if(Linux)
# Most plugins (if not all) and PCSX2 core need gtk2, so set the required flags
find_package(GTK2 REQUIRED gtk)
if(GTK2_FOUND)
# From version 2.21.3 gtk moved gdk-pixbuf into a separate module
# Cmake need to be fixed. For the moment uses a manual detection.
find_path(GDK_PIXBUF_INCLUDE_DIRS NAMES gdk-pixbuf/gdk-pixbuf.h PATHS
/usr/include/gdk-pixbuf-2.0
/usr/include)
if (GDK_PIXBUF_INCLUDE_DIRS)
set(GTK2_INCLUDE_DIRS "${GDK_PIXBUF_INCLUDE_DIRS}" "${GTK2_INCLUDE_DIRS}")
# Remove duplicates when cmake will be fixed
list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS)
endif (GDK_PIXBUF_INCLUDE_DIRS)
endif(GTK2_FOUND)
find_package(X11)
endif(Linux)
## Use cmake package to find module
find_package(ALSA)
find_package(BZip2)
find_package(Gettext) # translation tool
find_package(JPEG)
find_package(OpenGL)
# Tell cmake that we use SDL as a library and not as an application
set(SDL_BUILDING_LIBRARY TRUE)
find_package(SDL)
find_package(Subversion)
# The requirement of wxWidgets is checked in SelectPcsx2Plugins module
# Does not require the module (allow to compile non-wx plugins)
# Force the unicode build (the variable is only supported on cmake 2.8.3 and above)
# Warning do not put any double-quote for the argument...
# set(wxWidgets_CONFIG_OPTIONS --unicode=yes --debug=yes) # In case someone want to debug inside wx
#
# Fedora uses an extra non-standard option ... Arch must be the first option.
if(Fedora)
set(wxWidgets_CONFIG_OPTIONS --arch i686 --unicode=yes)
else()
set(wxWidgets_CONFIG_OPTIONS --unicode=yes)
endif()
find_package(wxWidgets COMPONENTS base core adv)
find_package(ZLIB)
if (EGL_API)
include(FindEGL)
endif()
## Use pcsx2 package to find module
include(FindAio)
## Include cg because of zzogl-cg and zerogs
#if(NOT GLSL_API)
include(FindCg)
#endif(NOT GLSL_API)
include(FindGlew)
include(FindLibc)
include(FindPortAudio)
include(FindSoundTouch)
include(FindSparseHash)
include(FindSparseHash_NEW)
# Note for include_directory: The order is important to avoid a mess between include file from your system and the one of pcsx2
# If you include first 3rdparty, all 3rdpary include will have a higer priority...
# If you include first /usr/include, all system include will have a higer priority over the pcsx2 one...
# Current implementation:
# 1/ include 3rdparty sub-directory that we will used (either request or fallback)
# 2/ include system one
#----------------------------------------
# Fallback on 3rdparty libraries
#----------------------------------------
# Empty
#----------------------------------------
# Use system include (if not 3rdparty one)
#----------------------------------------
if(Linux)
if(GTK2_FOUND)
include_directories(${GTK2_INCLUDE_DIRS})
endif(GTK2_FOUND)
if(X11_FOUND)
include_directories(${X11_INCLUDE_DIR})
endif(X11_FOUND)
endif(Linux)
if(AIO_FOUND)
include_directories(${AIO_INCLUDE_DIR})
endif()
if(ALSA_FOUND)
include_directories(${ALSA_INCLUDE_DIRS})
endif(ALSA_FOUND)
if(BZIP2_FOUND)
include_directories(${BZIP2_INCLUDE_DIR})
endif(BZIP2_FOUND)
if(CG_FOUND)
include_directories(${CG_INCLUDE_DIRS})
endif(CG_FOUND)
if (EGL_FOUND)
include_directories(${EGL_INCLUDE_DIR})
endif()
if(JPEG_FOUND)
include_directories(${JPEG_INCLUDE_DIR})
endif(JPEG_FOUND)
if(GLEW_FOUND)
include_directories(${GLEW_INCLUDE_DIR})
endif(GLEW_FOUND)
if(OPENGL_FOUND)
include_directories(${OPENGL_INCLUDE_DIR})
endif(OPENGL_FOUND)
if(PORTAUDIO_FOUND)
include_directories(${PORTAUDIO_INCLUDE_DIR})
endif(PORTAUDIO_FOUND)
if(SDL_FOUND)
include_directories(${SDL_INCLUDE_DIR})
endif(SDL_FOUND)
if(SOUNDTOUCH_FOUND)
include_directories(${SOUNDTOUCH_INCLUDE_DIR})
endif(SOUNDTOUCH_FOUND)
if(SPARSEHASH_FOUND)
include_directories(${SPARSEHASH_INCLUDE_DIR})
endif(SPARSEHASH_FOUND)
if(SPARSEHASH_NEW_FOUND)
include_directories(${SPARSEHASH_NEW_INCLUDE_DIR})
# allow to build parts that depend on sparsehash
set(SPARSEHASH_FOUND TRUE)
endif(SPARSEHASH_NEW_FOUND)
if(wxWidgets_FOUND)
if(Linux)
# Force the use of 32 bit library configuration on
# 64 bits machine with 32 bits library in /usr/lib32
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
## There is no guarantee that wx-config is a link to a 32 bits library. So you need to force the destinity
# Library can go into 3 path major paths (+ multiarch but you will see that later when implementation is done)
# 1/ /usr/lib32 (32 bits only)
# 2/ /usr/lib64 (64 bits only)
# 3/ /usr/lib (32 or 64 bits depends on distributions)
if (EXISTS "/usr/lib32/wx")
STRING(REGEX REPLACE "/usr/lib/wx" "/usr/lib32/wx" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
STRING(REGEX REPLACE "/usr/lib64/wx" "/usr/lib32/wx" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
endif (EXISTS "/usr/lib32/wx")
if (EXISTS "/usr/lib/wx")
STRING(REGEX REPLACE "/usr/lib64/wx" "/usr/lib/wx" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
endif (EXISTS "/usr/lib/wx")
# Multiarch ubuntu/debian
STRING(REGEX REPLACE "/usr/lib/x86_64-linux-gnu" "/usr/lib/i386-linux-gnu" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
endif(Linux)
include(${wxWidgets_USE_FILE})
endif(wxWidgets_FOUND)
if(ZLIB_FOUND)
include_directories(${ZLIB_INCLUDE_DIRS})
endif(ZLIB_FOUND)