summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/spec_post.prf
blob: 432bb51516db24722ffdbe059cb85fbba86297ed (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# This file is loaded by qmake right after loading the qmakespec.
# Afterwards, the project's .qmake.conf and .qmake.cache are loaded
# (if present).
# Note that up to this point, nothing specific to a particular SUBDIRS
# project or build pass can be done.

isEmpty(MAKEFILE_GENERATOR):error("Qmake spec does not set MAKEFILE_GENERATOR.")
isEmpty(QMAKE_PLATFORM) {
    isEmpty(TARGET_PLATFORM) {
        equals(MAKEFILE_GENERATOR, UNIX) {
            equals(QMAKE_HOST.os, Darwin): \
                TARGET_PLATFORM = macx # backwards compatibility; cannot change
            else: \
                TARGET_PLATFORM = unix
        } else:if(equals(MAKEFILE_GENERATOR, MSVC.NET) \
                 |equals(MAKEFILE_GENERATOR, MSBUILD) \
                 |equals(MAKEFILE_GENERATOR, MINGW)) {
            TARGET_PLATFORM = win32
        } else:if(equals(MAKEFILE_GENERATOR, PROJECTBUILDER) \
                 |equals(MAKEFILE_GENERATOR, XCODE)) {
            TARGET_PLATFORM = macx
        } else {
            error("Qmake spec sets an invalid MAKEFILE_GENERATOR.")
        }
    }
    equals(TARGET_PLATFORM, unix): \
        QMAKE_PLATFORM = unix
    else:equals(TARGET_PLATFORM, macx): \
        QMAKE_PLATFORM = macos osx macx mac darwin unix
    else:equals(TARGET_PLATFORM, win32): \
        QMAKE_PLATFORM = win32
    else: \
        error("Qmake spec sets an invalid TARGET_PLATFORM.")
}

contains(QMAKE_PLATFORM, macx) {
    !contains(QMAKE_PLATFORM, osx) {
        warning("qmake spec specified platform macx, but not osx.");
        QMAKE_PLATFORM = osx $$QMAKE_PLATFORM
    }

    !contains(QMAKE_PLATFORM, macos) {
        warning("qmake spec specifies platform macx, but not macos.")
        QMAKE_PLATFORM = macos $$QMAKE_PLATFORM
    }
}

CONFIG += $$QMAKE_PLATFORM

isEmpty(QMAKE_COMPILER) {
    *-g++*: \
        QMAKE_COMPILER = gcc
    else:*-llvm*: \
        QMAKE_COMPILER = gcc llvm
    else:*-clang*: \
        QMAKE_COMPILER = gcc clang llvm
    else:*-msvc*: \
        QMAKE_COMPILER = msvc
    else: \
        error("qmake spec does not announce the compiler family, and it cannot be guessed.")
    warning("qmake spec does not announce the compiler family. Guessed $${QMAKE_COMPILER}.")
}
CONFIG += $$QMAKE_COMPILER

equals(MAKEFILE_GENERATOR, MSBUILD) \
|equals(MAKEFILE_GENERATOR, MSVC.NET) \
|isEmpty(QMAKE_SH) {
    QMAKE_ZIP               = zip -r -9

    QMAKE_CD                = cd /d
    QMAKE_COPY              = copy /y
    QMAKE_COPY_FILE         = $$QMAKE_COPY
    QMAKE_COPY_DIR          = xcopy /s /q /y /i
    # xcopy copies the contained files if source is a directory. Deal with it.
    CONFIG                 += copy_dir_files
    QMAKE_MOVE              = move
    QMAKE_DEL_FILE          = del
    QMAKE_DEL_DIR           = rmdir
    QMAKE_DEL_TREE          = rmdir /s /q
    QMAKE_CHK_EXISTS        = if not exist %1
    QMAKE_CHK_DIR_EXISTS    = if not exist   # legacy
    QMAKE_MKDIR             = mkdir          # legacy
    QMAKE_MKDIR_CMD         = if not exist %1 mkdir %1 & if not exist %1 exit 1
    QMAKE_STREAM_EDITOR     = $(QMAKE) -install sed
    QMAKE_SHELL_NULL_DEVICE = NUL
    QMAKE_INSTALL_FILE      = copy /y
    QMAKE_INSTALL_PROGRAM   = copy /y
} else {
    QMAKE_TAR               = tar -cf
    QMAKE_GZIP              = gzip -9f

    QMAKE_CD                = cd
    QMAKE_COPY              = cp -f
    QMAKE_COPY_FILE         = $$QMAKE_COPY
    QMAKE_COPY_DIR          = $$QMAKE_COPY -R
    QMAKE_MOVE              = mv -f
    QMAKE_DEL_FILE          = rm -f
    QMAKE_DEL_DIR           = rmdir
    QMAKE_DEL_TREE          = rm -rf
    QMAKE_CHK_EXISTS        = test -e %1 ||
    QMAKE_CHK_DIR_EXISTS    = test -d    # legacy
    QMAKE_MKDIR             = mkdir -p   # legacy
    QMAKE_MKDIR_CMD         = test -d %1 || mkdir -p %1
    QMAKE_STREAM_EDITOR     = sed
    QMAKE_SHELL_NULL_DEVICE = /dev/null

    equals(QMAKE_HOST.os, Windows) {
        MINGW_IN_SHELL = 1   # legacy
        # Override built-ins.
        QMAKE_DIR_SEP = /
        QMAKE_DIRLIST_SEP = :
        # Because install's ability to set permissions is not relevant on Windows,
        # and git's msys does not provide it to start with.
        QMAKE_INSTALL_FILE      = cp -f
        QMAKE_INSTALL_PROGRAM   = cp -f
    } else {
        QMAKE_INSTALL_FILE      = install -m 644 -p
        QMAKE_INSTALL_PROGRAM   = install -m 755 -p
    }
}
QMAKE_INSTALL_DIR = $$QMAKE_COPY_DIR
equals(QMAKE_HOST.os, Windows) {
    QMAKE_SYMBOLIC_LINK      = $(QMAKE) -install ln -f -s
    QMAKE_LN_SHLIB           = $(QMAKE) -install ln -s
    QMAKE_SYSTEM_NULL_DEVICE = NUL
} else {
    QMAKE_SYMBOLIC_LINK      = ln -f -s
    QMAKE_LN_SHLIB           = ln -s
    QMAKE_SYSTEM_NULL_DEVICE = /dev/null
}