1# This file is loaded by qmake right after loading the qmakespec.
2# Afterwards, the project's .qmake.conf and .qmake.cache are loaded
3# (if present).
4# Note that up to this point, nothing specific to a particular SUBDIRS
5# project or build pass can be done.
6
7isEmpty(MAKEFILE_GENERATOR):error("Qmake spec does not set MAKEFILE_GENERATOR.")
8isEmpty(QMAKE_PLATFORM) {
9    isEmpty(TARGET_PLATFORM) {
10        equals(MAKEFILE_GENERATOR, UNIX) {
11            equals(QMAKE_HOST.os, Darwin): \
12                TARGET_PLATFORM = macx # backwards compatibility; cannot change
13            else: \
14                TARGET_PLATFORM = unix
15        } else:if(equals(MAKEFILE_GENERATOR, MSVC.NET) \
16                 |equals(MAKEFILE_GENERATOR, MSBUILD) \
17                 |equals(MAKEFILE_GENERATOR, MINGW)) {
18            TARGET_PLATFORM = win32
19        } else:if(equals(MAKEFILE_GENERATOR, PROJECTBUILDER) \
20                 |equals(MAKEFILE_GENERATOR, XCODE)) {
21            TARGET_PLATFORM = macx
22        } else {
23            error("Qmake spec sets an invalid MAKEFILE_GENERATOR.")
24        }
25    }
26    equals(TARGET_PLATFORM, unix): \
27        QMAKE_PLATFORM = unix
28    else:equals(TARGET_PLATFORM, macx): \
29        QMAKE_PLATFORM = macos osx macx mac darwin unix
30    else:equals(TARGET_PLATFORM, win32): \
31        QMAKE_PLATFORM = win32
32    else: \
33        error("Qmake spec sets an invalid TARGET_PLATFORM.")
34}
35
36contains(QMAKE_PLATFORM, macx) {
37    !contains(QMAKE_PLATFORM, osx) {
38        warning("qmake spec specified platform macx, but not osx.");
39        QMAKE_PLATFORM = osx $$QMAKE_PLATFORM
40    }
41
42    !contains(QMAKE_PLATFORM, macos) {
43        warning("qmake spec specifies platform macx, but not macos.")
44        QMAKE_PLATFORM = macos $$QMAKE_PLATFORM
45    }
46}
47
48CONFIG += $$QMAKE_PLATFORM
49
50isEmpty(QMAKE_COMPILER) {
51    *-g++*: \
52        QMAKE_COMPILER = gcc
53    else:*-llvm*: \
54        QMAKE_COMPILER = gcc llvm
55    else:*-clang*: \
56        QMAKE_COMPILER = gcc clang llvm
57    else:*-msvc*: \
58        QMAKE_COMPILER = msvc
59    else: \
60        error("qmake spec does not announce the compiler family, and it cannot be guessed.")
61    warning("qmake spec does not announce the compiler family. Guessed $${QMAKE_COMPILER}.")
62}
63CONFIG += $$QMAKE_COMPILER
64
65equals(MAKEFILE_GENERATOR, MSBUILD) \
66|equals(MAKEFILE_GENERATOR, MSVC.NET) \
67|isEmpty(QMAKE_SH) {
68    QMAKE_ZIP               = zip -r -9
69
70    QMAKE_CD                = cd /d
71    QMAKE_COPY              = copy /y
72    QMAKE_COPY_FILE         = $$QMAKE_COPY
73    QMAKE_COPY_DIR          = xcopy /s /q /y /i
74    # xcopy copies the contained files if source is a directory. Deal with it.
75    CONFIG                 += copy_dir_files
76    QMAKE_MOVE              = move
77    QMAKE_DEL_FILE          = del
78    QMAKE_DEL_DIR           = rmdir
79    QMAKE_DEL_TREE          = rmdir /s /q
80    QMAKE_CHK_EXISTS        = if not exist %1
81    QMAKE_CHK_DIR_EXISTS    = if not exist   # legacy
82    QMAKE_MKDIR             = mkdir          # legacy
83    QMAKE_MKDIR_CMD         = if not exist %1 mkdir %1 & if not exist %1 exit 1
84    QMAKE_STREAM_EDITOR     = $(QMAKE) -install sed
85    QMAKE_SHELL_NULL_DEVICE = NUL
86    QMAKE_INSTALL_FILE      = copy /y
87    QMAKE_INSTALL_PROGRAM   = copy /y
88} else {
89    QMAKE_TAR               = tar -cf
90    QMAKE_GZIP              = gzip -9f
91
92    QMAKE_CD                = cd
93    QMAKE_COPY              = cp -f
94    QMAKE_COPY_FILE         = $$QMAKE_COPY
95    QMAKE_COPY_DIR          = $$QMAKE_COPY -R
96    QMAKE_MOVE              = mv -f
97    QMAKE_DEL_FILE          = rm -f
98    QMAKE_DEL_DIR           = rmdir
99    QMAKE_DEL_TREE          = rm -rf
100    QMAKE_CHK_EXISTS        = test -e %1 ||
101    QMAKE_CHK_DIR_EXISTS    = test -d    # legacy
102    QMAKE_MKDIR             = mkdir -p   # legacy
103    QMAKE_MKDIR_CMD         = test -d %1 || mkdir -p %1
104    QMAKE_STREAM_EDITOR     = sed
105    QMAKE_SHELL_NULL_DEVICE = /dev/null
106
107    equals(QMAKE_HOST.os, Windows) {
108        MINGW_IN_SHELL = 1   # legacy
109        # Override built-ins.
110        QMAKE_DIR_SEP = /
111        QMAKE_DIRLIST_SEP = :
112        # Because install's ability to set permissions is not relevant on Windows,
113        # and git's msys does not provide it to start with.
114        QMAKE_INSTALL_FILE      = cp -f
115        QMAKE_INSTALL_PROGRAM   = cp -f
116    } else {
117        QMAKE_INSTALL_FILE      = install -m 644 -p
118        QMAKE_INSTALL_PROGRAM   = install -m 755 -p
119    }
120}
121QMAKE_INSTALL_DIR = $$QMAKE_COPY_DIR
122equals(QMAKE_HOST.os, Windows) {
123    QMAKE_SYMBOLIC_LINK      = $(QMAKE) -install ln -f -s
124    QMAKE_LN_SHLIB           = $(QMAKE) -install ln -s
125    QMAKE_SYSTEM_NULL_DEVICE = NUL
126} else {
127    QMAKE_SYMBOLIC_LINK      = ln -f -s
128    QMAKE_LN_SHLIB           = ln -s
129    QMAKE_SYSTEM_NULL_DEVICE = /dev/null
130}
131