Created
August 23, 2017 20:42
-
-
Save Kelvinrr/879ad457ff1386d28a367d2c291fd11d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #=============================================================================== | |
| # High level script to handle all required 3rd party dependencies | |
| # - All of them are expected to be in the 3rdParty folder, this script does not | |
| # go looking for them if they are not? | |
| #=============================================================================== | |
| # Specify top level directories | |
| set(thirdPartyDir "/usgs/pkgs/local/v006") | |
| set(INCLUDE_DIR "${thirdPartyDir}/include") | |
| set(LIB_DIR "${thirdPartyDir}/lib") | |
| set(PLUGIN_DIR "${thirdPartyDir}/plugins") | |
| set(BIN_DIR "${thirdPartyDir}/bin") | |
| list(APPEND CMAKE_PREFIX_PATH | |
| "$ENV{LIB_DIR}/lib" | |
| "$ENV{LIB}" | |
| /usgs/pkgs/local/v006/include/ | |
| /usgs/pkgs/local/v006/bin/ | |
| /usgs/pkgs/local/v006/lib/ | |
| /usr/lib | |
| /usr/local/lib | |
| /opt/usgs/v006/ports/Library/Frameworks/ | |
| /opt/usgs/v006/ports/libexec/ | |
| /opt/usgs/v006/ports/bin/ | |
| /opt/usgs/v006/ports/lib/ | |
| /opt/usgs/v006/ports/include/ | |
| /opt/usgs/v006/ports/libexec/qt5 | |
| /opt/usgs/v006/ports/libexec/qt5/bin/ | |
| /opt/usgs/v006/3rdparty/bin | |
| /opt/usgs/v006/3rdparty/include/ | |
| /opt/usgs/v006/3rdparty/lib/ | |
| /opt/usgs/v006/proprietary/ | |
| /opt/usgs/v006/proprietary/include/ | |
| /opt/usgs/v006/proprietary/lib/ | |
| ) | |
| # The common method of putting a version in a library name differs | |
| # between OSX and Linux. | |
| if(APPLE) | |
| set(end "*.dylib") | |
| else() | |
| set(end ".so*") | |
| endif() | |
| # Paths to required executables | |
| find_program(XALAN Xalan REQUIRED) | |
| find_program(LATEX latex) | |
| find_program(DOXYGEN doxygen REQUIRED) | |
| find_program(UIC uic REQUIRED) | |
| find_program(MOC moc REQUIRED) | |
| find_program(RCC rcc REQUIRED) | |
| find_program(PROTOC protoc REQUIRED) | |
| message(STATUS "${CMAKE_PREFIX_PATH}") | |
| include(FindProtobuf) | |
| find_package(Qt5 COMPONENTS | |
| Core | |
| Concurrent | |
| DBus | |
| Gui | |
| Multimedia | |
| MultimediaWidgets | |
| Network | |
| OpenGL # Needed to install mesa-common-dev for this! | |
| Positioning | |
| PrintSupport | |
| Qml | |
| Quick | |
| Script | |
| ScriptTools | |
| Sensors | |
| Sql | |
| Svg | |
| Test | |
| WebChannel | |
| WebEngine | |
| WebEngineWidgets | |
| Widgets | |
| Xml | |
| XmlPatterns REQUIRED) | |
| find_package(Qwt REQUIRED) | |
| find_package(XercesC REQUIRED) | |
| find_package(GeoTIFF REQUIRED) | |
| find_package(TIFF REQUIRED) | |
| find_package(CSPICE REQUIRED) | |
| find_package(TNT REQUIRED) | |
| find_package(GEOS REQUIRED) | |
| find_package(GSL REQUIRED) | |
| find_package(Protobuf REQUIRED) | |
| find_package(Boost REQUIRED) | |
| find_package(X11 REQUIRED) | |
| find_package(GSL REQUIRED) | |
| find_package(GMM REQUIRED) | |
| find_package(HDF5 REQUIRED) | |
| find_package(SuperLu REQUIRED) | |
| find_package(Protobuf REQUIRED) | |
| find_package(Cholmod REQUIRED) | |
| # # Only include Kakadu if it is available | |
| if(${JP2KFLAG}) | |
| find_package(Kakadu) | |
| endif(${JP2KFLAG}) | |
| get_cmake_property(_variableNames VARIABLES) # Get All VARIABLES | |
| foreach (_variableName ${_variableNames}) | |
| if (_variableName MATCHES ".+_INCLUDE_DIR$") | |
| list(APPEND ALLINCDIRS "${${_variableName}}") | |
| elseif (_variableName MATCHES ".+_INCLUDE_PATH$") | |
| list(APPEND ALLINCDIRS "${${_variableName}}") | |
| endif(_variableName MATCHES ".+_INCLUDE_DIR$") | |
| endforeach() | |
| list(APPEND ALLINCDIRS "/opt/usgs/v006/ports/include/" "/opt/usgs/v006/3rdParty/include/") | |
| foreach (_variableName ${_variableNames}) | |
| if (_variableName MATCHES "^CMAKE+") | |
| elseif (_variableName MATCHES ".+_LIB$") | |
| list(APPEND ALLLIBS "${${_variableName}}") | |
| elseif (_variableName MATCHES ".+_LIBRARY$") | |
| list(APPEND ALLLIBS "${${_variableName}}") | |
| elseif (_variableName MATCHES ".+_LIBRARIES$") | |
| list(APPEND ALLLIBS "${${_variableName}}") | |
| endif(_variableName MATCHES "^CMAKE+") | |
| endforeach() | |
| message(STATUS "ALL LIBS: ${ALLLIBS}") | |
| message(STATUS "ALL INCS: ${ALLINCDIRS}") | |
| #--------------------------------------------------------------------------- | |
| # Define the third party distribution libraries (patterns) | |
| #--------------------------------------------------------------------------- | |
| # On OSX we need to include a LOT of extra libraries! | |
| set(EXTRA_DYNAMIC_LIBS) | |
| if(APPLE) | |
| set(extras | |
| # QT dependencies | |
| libpcre16*.dylib | |
| libgthread-*.dylib | |
| libpcre.*dylib | |
| libharfbuzz*.dylib | |
| libgraphite2.*dylib | |
| libleveldb*.dylib* | |
| libsnappy.*dylib | |
| libwebp*.dylib | |
| libdbus*.dylib | |
| libiconv*.dylib | |
| liblzma*.dylib | |
| libz*.dylib | |
| libssl*.dylib | |
| libcrypto*.dylib | |
| libpng*.dylib | |
| libjpeg.*dylib | |
| libmng.*dylib | |
| liblcms2.*dylib | |
| libsqlite3.*dylib | |
| postgresql*/libpq.*dylib | |
| mysql56/mysql/libmysqlclient*.dylib | |
| libiodbc*.dylib | |
| # OpenCV dependancies | |
| libtbb*.dylib | |
| libjasper*.dylib | |
| libImath*.dylib | |
| libIlmImf*.dylib | |
| libIex*.dylib | |
| libHalf*.dylib | |
| libIlmThread*.dylib | |
| libswscale*.dylib | |
| # Secondary requirements to all OpenCV dependancies | |
| libSDL-1*.dylib | |
| libnettle*.dylib | |
| libhogweed*.dylib | |
| libgmp*.dylib | |
| libxvidcore*.dylib | |
| libx264*.dylib | |
| libvorbisenc*.dylib | |
| libvorbis*.dylib | |
| libogg*.dylib | |
| libtheoraenc*.dylib | |
| libtheoradec*.dylib | |
| libspeex*.dylib | |
| libschroedinger-1*.dylib | |
| libopus*.dylib | |
| libopenjpeg*.dylib | |
| libmp3lame*.dylib | |
| libmodplug*.dylib | |
| libfreetype*.dylib | |
| libbluray*.dylib | |
| libass*.dylib | |
| libgnutls*.dylib | |
| libbz2*.dylib | |
| libXrandr*.dylib | |
| libXext*.dylib | |
| libXrender*.dylib | |
| libX11*.dylib | |
| libxcb*.dylib | |
| libXau*.dylib | |
| libXdmcp*.dylib | |
| liborc-0*.dylib | |
| libxml2*.dylib | |
| libfribidi*.dylib | |
| libfontconfig*.dylib | |
| libexpat*.dylib | |
| libintl*.dylib | |
| libglib-*.dylib | |
| libp11-kit*.dylib | |
| libffi*.dylib | |
| # OpenCV3 dependencies | |
| libavresample*.dylib | |
| libxcb-shm*.dylib | |
| libsoxr*.dylib | |
| libopenjp2*.dylib | |
| libOpenNI*.dylib | |
| libswresample*.dylib | |
| libidn*.dylib | |
| libtasn1*.dylib | |
| libusb*.dylib | |
| # libxerces-c depends on these libraries | |
| libicui18n*.dylib | |
| libicuuc*.dylib | |
| libicudata*.dylib | |
| # libgeotiff depends on these libraries | |
| libproj*.dylib) | |
| else() # Linux | |
| set(extras libtbb.so*) | |
| endif() | |
| set(EXTRALIBDIR ${LIB_DIR}) | |
| foreach(lib ${extras}) | |
| set(EXTRA_DYNAMIC_LIBS ${EXTRA_DYNAMIC_LIBS} ${EXTRALIBDIR}/${lib}) | |
| endforeach() | |
| message("EXTRA_DYNAMIC_LIBS = ${EXTRA_DYNAMIC_LIBS}") | |
| # Libraries | |
| set(THIRDPARTYLIBS) | |
| set(RAW_DYNAMIC_LIBS ${QT_DYNAMIC_LIBS} | |
| ${QWT_DYNAMIC_LIBS} | |
| ${XERCES_DYNAMIC_LIBS} | |
| ${GEOTIFF_DYNAMIC_LIBS} | |
| ${HDF5_DYNAMIC_LIBS} | |
| ${TIFF_DYNAMIC_LIBS} | |
| ${NAIF_DYNAMIC_LIBS} | |
| ${GEOS_DYNAMIC_LIBS} | |
| ${GSL_DYNAMIC_LIBS} | |
| ${SUPERLU_DYNAMIC_LIBS} | |
| ${PROTOBUF_DYNAMIC_LIBS} | |
| ${KAKADU_DYNAMIC_LIBS} # Empty if not available | |
| ${CHOLMOD_DYNAMIC_LIBS} | |
| ${OPENCV_DYNAMIC_LIBS} | |
| ${EXTRA_DYNAMIC_LIBS}) | |
| message("THIRDPARTYLIBS = ${RAW_DYNAMIC_LIBS}") | |
| # For each item in this list, expand the wildcard to get the actual library list. | |
| foreach(lib ${RAW_DYNAMIC_LIBS}) | |
| string(FIND "${lib}" "*" position) | |
| if(${position} EQUAL -1) | |
| # No wildcard, just add it. | |
| set(THIRDPARTYLIBS ${THIRDPARTYLIBS} ${lib}) | |
| else() | |
| # Expand wildcard, then add. | |
| file(GLOB expandedLibs ${lib}) | |
| set(THIRDPARTYLIBS ${THIRDPARTYLIBS} ${expandedLibs}) | |
| endif() | |
| endforeach() | |
| message("THIRDPARTYLIBS = ${THIRDPARTYLIBS}") | |
| # Plugins | |
| file(GLOB_RECURSE THIRDPARTYPLUGINS "${PLUGIN_DIR}/*${SO}") | |
| file(GLOB THIRDPARTYPLUGINFOLDERS "${PLUGIN_DIR}/*") | |
| message("third party libs = ${THIRDPARTYLIBS}") | |
| message("third party plugins = ${THIRDPARTYPLUGINS}") | |
| message("third party plugins folders = ${THIRDPARTYPLUGINFOLDERS}") | |
| #--------------------------------------------------------------------------- | |
| # Consolidate information | |
| #--------------------------------------------------------------------------- | |
| set(ALLLIBDIRS ${QTLIBDIR} | |
| ${QWTLIBDIR} | |
| ${XERCESLIBDIR} | |
| ${GEOTIFFLIBDIR} | |
| ${TIFFLIBDIR} | |
| ${NAIFLIBDIR} | |
| ${TNTLIBDIR} | |
| ${JAMALIBDIR} | |
| ${GEOSLIBDIR} | |
| ${GSLLIBDIR} | |
| ${GMMLIBDIR} | |
| ${PROTOBUFLIBDIR} | |
| ${BOOSTLIBDIR} | |
| ${CHOLMODLIBDIR} | |
| ${HDF5LIBDIR} | |
| ${SUPERLULIBDIR} | |
| ${GMMLIBDIR}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment