summaryrefslogtreecommitdiffstats
path: root/src/angle/src/QtANGLE/QtANGLE.pro
blob: 0f8e4de53671b4523f1e2f59b57585e32af2ec06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
include(../common/gles_common.pri)

TARGET = $$qtLibraryTarget($${LIBQTANGLE_NAME})

DEF_FILE_TARGET = $${TARGET}

!build_pass {
    # Merge libGLESv2 and libEGL .def files located under $$ANGLE_DIR into QtANGLE$${SUFFIX}.def
    DEF_FILES = \
        libGLESv2/libGLESv2 \
        libEGL/libEGL

    SUFFIX =
    for (DEBUG_RELEASE, $$list(0 1)) {
        DEF_MERGED = \
            "LIBRARY $${LIBQTANGLE_NAME}$$SUFFIX" \
            EXPORTS
        mingw: SUFFIX = $${SUFFIX}_mingw32
        PASS = 0
        MAX_ORDINAL = 0

        for (DEF_FILE, DEF_FILES) {
            DEF_FILE_PATH = $$ANGLE_DIR/src/$$DEF_FILE$${SUFFIX}.def
            DEF_SRC = $$cat($$DEF_FILE_PATH, lines)
            DEF_MERGED += \
                ";" \
                ";   Generated from:" \
                ";   $$DEF_FILE_PATH"

            for (line, DEF_SRC) {
                !contains(line, "(LIBRARY.*|EXPORTS)") {
                    LINESPLIT = $$split(line, @)
                    !count(LINESPLIT, 1) {
                        equals(PASS, 1) {
                            # In the second .def file we must allocate new ordinals in order
                            # to not clash with the ordinals from the first file. We then start off
                            # from MAX_ORDINAL + 1 and increase sequentially
                            MAX_ORDINAL = $$num_add($$MAX_ORDINAL, 1)
                            line = $$section(line, @, 0, -2)@$$MAX_ORDINAL
                        } else {
                            ORDINAL = $$last(LINESPLIT)
                            greaterThan(ORDINAL, $$MAX_ORDINAL): \
                                MAX_ORDINAL = $$ORDINAL
                        }
                    }
                    DEF_MERGED += $$line
                }
            }
            PASS = 1
        }
        write_file($${LIBQTANGLE_NAME}$${SUFFIX}.def, DEF_MERGED)|error()
        SUFFIX = "d"
    }
}

SOURCES += $$ANGLE_DIR/src/libEGL/libEGL.cpp

!static {
    DEF_FILE = $$PWD/$${DEF_FILE_TARGET}.def
    mingw: equals(QT_ARCH, i386): DEF_FILE = $$PWD/$${DEF_FILE_TARGET}_mingw32.def
} else {
    DEFINES += DllMain=DllMain_ANGLE # prevent symbol from conflicting with the user's DllMain
}

egl_headers.files = \
    $$ANGLE_DIR/include/EGL/egl.h \
    $$ANGLE_DIR/include/EGL/eglext.h \
    $$ANGLE_DIR/include/EGL/eglplatform.h
egl_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/EGL
INSTALLS += egl_headers