diff --git a/config.tests/gl/gl.cpp b/config.tests/gl/gl.cpp new file mode 100644 index 000000000..8af3e1f48 --- /dev/null +++ b/config.tests/gl/gl.cpp @@ -0,0 +1,14 @@ +#if defined(Q_OS_WIN) + #include + #include +#elif defined(Q_OS_MAC) + #include +#else + #include +#endif + +int main(int, char **) +{ + glGetString(GL_VERSION); + return 0; +} diff --git a/config.tests/gl/gl.pro b/config.tests/gl/gl.pro new file mode 100644 index 000000000..4c1579c52 --- /dev/null +++ b/config.tests/gl/gl.pro @@ -0,0 +1,16 @@ +load(config_test_pre) + +CONFIG -= qt +CONFIG += console + +SOURCES = gl.cpp + +win32 { + DEFINES += Q_OS_WIN + LIBS *= -lopengl32 +} +linux: LIBS *= -lGL +macx { + DEFINES += Q_OS_MAC + LIBS += -framework OpenGL +} diff --git a/config.tests/glu/glu.cpp b/config.tests/glu/glu.cpp new file mode 100644 index 000000000..8d762705d --- /dev/null +++ b/config.tests/glu/glu.cpp @@ -0,0 +1,14 @@ +#if defined(Q_OS_WIN) + #include + #include +#elif defined(Q_OS_MAC) + #include +#else + #include +#endif + +int main(int, char **) +{ + gluGetString(GL_VERSION); + return 0; +} diff --git a/config.tests/glu/glu.pro b/config.tests/glu/glu.pro new file mode 100644 index 000000000..a82352231 --- /dev/null +++ b/config.tests/glu/glu.pro @@ -0,0 +1,16 @@ +load(config_test_pre) + +CONFIG -= qt +CONFIG += console + +SOURCES = glu.cpp + +win32 { + DEFINES += Q_OS_WIN + LIBS *= -lglu32 +} +linux: LIBS *= -lGLU +macx { + DEFINES += Q_OS_MAC + LIBS += -framework OpenGL +} diff --git a/config.tests/libpng/libpng.cpp b/config.tests/libpng/libpng.cpp new file mode 100644 index 000000000..c3668456d --- /dev/null +++ b/config.tests/libpng/libpng.cpp @@ -0,0 +1,7 @@ +#include + +int main(int, char **) +{ + png_access_version_number(); + return 0; +} diff --git a/config.tests/libpng/libpng.pro b/config.tests/libpng/libpng.pro new file mode 100644 index 000000000..da047e586 --- /dev/null +++ b/config.tests/libpng/libpng.pro @@ -0,0 +1,7 @@ +load(config_test_pre) + +CONFIG -= qt +CONFIG += console + +SOURCES = libpng.cpp +LIBS *= -lpng -lz diff --git a/config.tests/zlib/zlib.cpp b/config.tests/zlib/zlib.cpp new file mode 100644 index 000000000..4d131d9b6 --- /dev/null +++ b/config.tests/zlib/zlib.cpp @@ -0,0 +1,7 @@ +#include + +int main(int, char **) +{ + zlibVersion(); + return 0; +} diff --git a/config.tests/zlib/zlib.pro b/config.tests/zlib/zlib.pro new file mode 100644 index 000000000..d74d4b3ae --- /dev/null +++ b/config.tests/zlib/zlib.pro @@ -0,0 +1,7 @@ +load(config_test_pre) + +CONFIG -= qt +CONFIG += console + +SOURCES = zlib.cpp +LIBS *= -lz diff --git a/mkspecs/features/common_pre.prf b/mkspecs/features/common_pre.prf index 1f5379db2..5669de3df 100644 --- a/mkspecs/features/common_pre.prf +++ b/mkspecs/features/common_pre.prf @@ -103,62 +103,11 @@ equals(WORD_SIZE,32) { win32-g++: QMAKE_LFLAGS *= -Wl,--large-address-aware } -################################ -# Path to external dependencies -################################ - -# If you want to manually set the external path, uncomment the following line -# EXTERNALSROOT = /path/to/externals - -isEmpty(EXTERNALSROOT) { - EXTERNALSROOT = $$(SWIFT_EXTERNALS_DIR) -} - -isEmpty(EXTERNALSROOT) { - EXTERNALSROOT = $$SourceRoot/externals -} - -!exists("$$EXTERNALSROOT/common/include") { - error("Could not find externals in $${EXTERNALSROOT}. Please install them!") -} - ################################ # Externals ################################ -EXTERNALS_SPEC = $$basename(QMAKESPEC) -msvc { - clang_cl: EXTERNALS_SPEC = win32-msvc2015 - win32-msvc2017: EXTERNALS_SPEC = win32-msvc2015 - win32-msvc { - # From Qt 5.8.1 onwards, QMAKESPEC is win32-msvc without the version number - # see https://codereview.qt-project.org/#/c/162754/ - lessThan(MSVC_VER, 14.0) | greaterThan(MSVC_VER, 15.0) { - error(This version of Visual Studio is not supported (MSVC_VER = $$MSVC_VER)) - } - EXTERNALS_SPEC = win32-msvc2015 - } -} - -INCLUDEPATH *= $$EXTERNALSROOT/common/include -INCLUDEPATH *= $$EXTERNALSROOT/$$EXTERNALS_SPEC/include -INCLUDEPATH *= $$EXTERNALSROOT/common/include/crashpad -INCLUDEPATH *= $$EXTERNALSROOT/common/include/mini_chromium - -equals(WORD_SIZE,64) { - EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin64 - EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib64 -} -equals(WORD_SIZE,32) { - EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin32 - EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib32 -} - -LIBS *= -L$$EXTERNALS_LIB_DIR -macx: LIBS *= -F$$EXTERNALS_LIB_DIR -win32: LIBS *= -luser32 - -INCLUDEPATH *= $$EXTERNALDIR/common/include +include(externals.pri) ################################ # Includes diff --git a/mkspecs/features/config.pri b/mkspecs/features/config.pri index ce29c9921..4849a88b3 100644 --- a/mkspecs/features/config.pri +++ b/mkspecs/features/config.pri @@ -28,6 +28,17 @@ isEmpty(BLACK_EOL): BLACK_EOL = "20180101" ## Private Area ## +## Dependency Checks ## +load(configure) + +defineTest(CheckMandatoryDependency) { + !qtCompileTest($${1}): error(Cannot find $${1} development package. Make sure it is installed. Inspect config.log for more information.) +} + +defineTest(CheckOptionalDependency) { + qtCompileTest($${1}) +} + # include vatsim client id and key include(vatsim.pri) diff --git a/mkspecs/features/config_test_pre.prf b/mkspecs/features/config_test_pre.prf new file mode 100644 index 000000000..6ad8c89af --- /dev/null +++ b/mkspecs/features/config_test_pre.prf @@ -0,0 +1,2 @@ +include(wordsize.pri) +include(externals.pri) diff --git a/mkspecs/features/externals.pri b/mkspecs/features/externals.pri new file mode 100644 index 000000000..cb6f19617 --- /dev/null +++ b/mkspecs/features/externals.pri @@ -0,0 +1,56 @@ +################################ +# Path to external dependencies +################################ + +# If you want to manually set the external path, uncomment the following line +# EXTERNALSROOT = /path/to/externals + +isEmpty(EXTERNALSROOT) { + EXTERNALSROOT = $$(SWIFT_EXTERNALS_DIR) +} + +isEmpty(EXTERNALSROOT) { + EXTERNALSROOT = $$SourceRoot/externals +} + +!exists("$$EXTERNALSROOT/common/include") { + error("Could not find externals in $${EXTERNALSROOT}. Please install them!") +} + +################################ +# Externals +################################ + +EXTERNALS_SPEC = $$basename(QMAKESPEC) +msvc { + clang_cl: EXTERNALS_SPEC = win32-msvc2015 + win32-msvc2017: EXTERNALS_SPEC = win32-msvc2015 + win32-msvc { + # From Qt 5.8.1 onwards, QMAKESPEC is win32-msvc without the version number + # see https://codereview.qt-project.org/#/c/162754/ + lessThan(MSVC_VER, 14.0) | greaterThan(MSVC_VER, 15.0) { + error(This version of Visual Studio is not supported (MSVC_VER = $$MSVC_VER)) + } + EXTERNALS_SPEC = win32-msvc2015 + } +} + +INCLUDEPATH *= $$EXTERNALSROOT/common/include +INCLUDEPATH *= $$EXTERNALSROOT/$$EXTERNALS_SPEC/include +INCLUDEPATH *= $$EXTERNALSROOT/common/include/crashpad +INCLUDEPATH *= $$EXTERNALSROOT/common/include/mini_chromium + +equals(WORD_SIZE,64) { + EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin64 + EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib64 +} +equals(WORD_SIZE,32) { + EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin32 + EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib32 +} + +LIBS *= -L$$EXTERNALS_LIB_DIR +macx: LIBS *= -F$$EXTERNALS_LIB_DIR +win32: LIBS *= -luser32 + +INCLUDEPATH *= $$EXTERNALDIR/common/include diff --git a/swift.pro b/swift.pro index b81d1db05..b05f7b516 100644 --- a/swift.pro +++ b/swift.pro @@ -6,6 +6,11 @@ CONFIG += ordered OTHER_FILES += mkspecs/features/*.prf OTHER_FILES += mkspecs/features/*.pri +CheckMandatoryDependency(gl) +CheckMandatoryDependency(glu) +CheckMandatoryDependency(libpng) +CheckMandatoryDependency(zlib) + contains(BLACK_CONFIG,Doxygen) { SUBDIRS += docs }