26f7223769
... by implementing a fake ln in qmake. symlinks are supported only since vista (we officially still support xp), and even there are permission-restricted (MS being (rightfully) afraid of symlink attacks). so we fake the links by copying the files instead. the previous hack was a bit naive, simply using cp/copy instead of ln. this didn't work with relative paths, as real symlinks are resolved against their parent directory, not the working directory of the "ln" command. the new fake does this correctly. Change-Id: Ia2f5d68a39d6ffcc8a4383f9d0fc63a9da0a05c3 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
118 lines
4.2 KiB
Plaintext
118 lines
4.2 KiB
Plaintext
# 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) {
|
|
QMAKE_SYMBOLIC_LINK = $(QMAKE) -install ln -f -s
|
|
QMAKE_LN_SHLIB = $(QMAKE) -install ln -s
|
|
} else {
|
|
QMAKE_SYMBOLIC_LINK = ln -f -s
|
|
QMAKE_LN_SHLIB = ln -s
|
|
}
|