summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/spec_post.prf
blob: c9578773fe80e0d44f9f9c9ac64fa9649aca770e (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
# 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 = 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 specifies platform macx, but not osx.")
    QMAKE_PLATFORM = osx $$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_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_INSTALL_FILE      = copy /y
    QMAKE_INSTALL_PROGRAM   = copy /y
} else {
    QMAKE_TAR               = tar -cf
    QMAKE_GZIP              = gzip -9f

    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

    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) {
    # Ugly (and broken for relative paths) hack to support cross-building for Unix.
    QMAKE_SYMBOLIC_LINK     = $$QMAKE_COPY
    QMAKE_LN_SHLIB          = $$QMAKE_SYMBOLIC_LINK
} else {
    QMAKE_SYMBOLIC_LINK     = ln -f -s
    QMAKE_LN_SHLIB          = ln -s
}