summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
Diffstat (limited to 'qmake')
-rw-r--r--qmake/Makefile.unix8
-rw-r--r--qmake/Makefile.win323
-rw-r--r--qmake/Makefile.win32-g++273
-rw-r--r--qmake/Makefile.win32-g++-sh343
-rw-r--r--qmake/generators/integrity/gbuild.cpp4
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp246
-rw-r--r--qmake/generators/makefile.cpp6
-rw-r--r--qmake/generators/makefiledeps.cpp4
-rw-r--r--qmake/generators/metamakefile.cpp22
-rw-r--r--qmake/generators/projectgenerator.cpp2
-rw-r--r--qmake/generators/win32/mingw_make.cpp8
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h2
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp10
-rw-r--r--qmake/generators/win32/winmakefile.cpp18
-rw-r--r--qmake/main.cpp2
-rw-r--r--qmake/option.cpp93
-rw-r--r--qmake/option.h30
-rw-r--r--qmake/project.cpp142
-rw-r--r--qmake/project.h15
-rw-r--r--qmake/property.cpp86
-rw-r--r--qmake/property.h4
-rw-r--r--qmake/qmake.pri1
23 files changed, 462 insertions, 862 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 16af49311b..2dddecb7b0 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -15,7 +15,7 @@ OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \
#qt code
QOBJS=qtextcodec.o qutfcodec.o qstring.o qtextstream.o qiodevice.o qmalloc.o qglobal.o \
- qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfile.o \
+ qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \
qfilesystementry.o qfilesystemengine_unix.o qfilesystemengine.o qfilesystemiterator_unix.o \
qfsfileengine_unix.o qfsfileengine.o \
qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o \
@@ -37,6 +37,7 @@ DEPEND_SRC=project.cpp property.cpp meta.cpp main.cpp generators/makefile.cpp ge
generators/integrity/gbuild.cpp \
$(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp \
$(SOURCE_PATH)/src/corelib/tools/qstring.cpp $(SOURCE_PATH)/src/corelib/io/qfile.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp \
$(SOURCE_PATH)/src/corelib/io/qtextstream.cpp $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp \
$(SOURCE_PATH)/src/corelib/global/qmalloc.cpp \
$(SOURCE_PATH)/src/corelib/global/qglobal.cpp $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp \
@@ -73,7 +74,7 @@ CPPFLAGS = -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 \
-Igenerators/mac -Igenerators/integrity \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \
-I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
- -I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \
+ -I$(BUILD_PATH)/src/corelib/global \
-I$(SOURCE_PATH)/tools/shared \
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \
@@ -176,6 +177,9 @@ qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp
+qfiledevice.o: $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp
+
qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 767237fcfc..f36e4fa631 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -33,9 +33,7 @@ CFLAGS_BARE = -c -Fo./ \
$(CFLAGS_EXTRA) \
-I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -Igenerators\integrity \
-I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION) -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION)\QtCore \
- -I$(SOURCE_PATH)\include -I$(SOURCE_PATH)\include\QtCore -I$(SOURCE_PATH)\include\QtCore\$(QT_VERSION) -I$(SOURCE_PATH)\include\QtCore\$(QT_VERSION)\QtCore \
-I$(BUILD_PATH)\src\corelib\global \
- -I$(BUILD_PATH)\src\corelib\xml \
-I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \
-I$(SOURCE_PATH)\tools\shared \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \
@@ -84,6 +82,7 @@ QTOBJS= \
qdatetime.obj \
qdir.obj \
qdiriterator.obj \
+ qfiledevice.obj \
qfile.obj \
qtemporaryfile.obj \
qabstractfileengine.obj \
diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++
index 585061ed26..56d8edca7d 100644
--- a/qmake/Makefile.win32-g++
+++ b/qmake/Makefile.win32-g++
@@ -2,12 +2,42 @@ ifeq "$(SOURCE_PATH)" ""
SOURCE_PATH = ..
endif
-#cmd version
-
ifeq "$(BUILD_PATH)" ""
BUILD_PATH = ..
endif
+CORESRC = $(SOURCE_PATH)/src/corelib
+TOOLSRC = $(SOURCE_PATH)/tools
+QMKSRC = $(SOURCE_PATH)/qmake
+
+# SHELL is the full path of sh.exe, unless
+# 1) it is found in the current directory
+# 2) it is not found at all
+# 3) it is overridden on the command line with an existing file
+# ... otherwise it is always sh.exe. Specifically, SHELL from the
+# environment has no effect.
+#
+# This check will fail if SHELL is explicitly set to a not
+# sh-compatible shell. This is not a problem, because configure.exe
+# will not do that.
+ifeq ($(SHELL), sh.exe)
+ ifeq ($(wildcard $(CURDIR)/sh.exe), )
+ SH = 0
+ else
+ SH = 1
+ endif
+else
+ SH = 1
+endif
+
+ifeq ($(SH), 1)
+ COPY = cp
+ DEL = rm -f
+else
+ COPY = copy
+ DEL = del /f
+endif
+
#
# specific stuff for mingw g++ make
#
@@ -17,9 +47,7 @@ CFLAGS = -c -o$@ -O \
-Igenerators/win32 -Igenerators/mac \
-Igenerators/integrity \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
- -I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION) -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
-I$(BUILD_PATH)/src/corelib/global \
- -I$(BUILD_PATH)/src/corelib/xml \
-I$(SOURCE_PATH)/mkspecs/win32-g++ \
-I$(SOURCE_PATH)/tools/shared \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT \
@@ -56,6 +84,7 @@ QTOBJS= \
qdatetime.o \
qdir.o \
qdiriterator.o \
+ qfiledevice.o \
qfile.o \
qtemporaryfile.o \
qfileinfo.o \
@@ -101,16 +130,16 @@ QTOBJS= \
qmake.exe: $(OBJS) $(QTOBJS)
$(LINKQMAKE)
- -copy qmake.exe $(BUILD_PATH)\bin\qmake.exe
+ -$(COPY) qmake.exe $(BUILD_PATH)\bin\qmake.exe
Makefile: Makefile.win32-g++
@echo "Out of date, please rerun configure"
clean::
- -del $(OBJS) $(QTOBJS) $(ADDCLEAN)
+ -$(DEL) $(OBJS) $(QTOBJS) $(ADDCLEAN)
distclean:: clean
- -del qmake
+ -$(DEL) qmake.exe
.c.o:
$(CXX) $(CFLAGS) $<
@@ -118,227 +147,11 @@ distclean:: clean
.cpp.o:
$(CXX) $(CXXFLAGS) $<
-qconfig.o: $(BUILD_PATH)/src/corelib/global/qconfig.cpp
- $(CXX) $(CXXFLAGS) $(BUILD_PATH)/src/corelib/global/qconfig.cpp
-
-qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
-
-qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings.cpp
-
-qvariant.o: $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp
-
-qurl.o: $(SOURCE_PATH)/src/corelib/io/qurl.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qurl.cpp
-
-qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp
-
-qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
-
-qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
-
-qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
-
-qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
-
-qmalloc.o: $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp
-
-qglobal.o: $(SOURCE_PATH)/src/corelib/global/qglobal.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qglobal.cpp
-
-qhash.o: $(SOURCE_PATH)/src/corelib/tools/qhash.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qhash.cpp
-
-qbytearray.o: $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp
-
-qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp
-
-qvsnprintf.o: $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp
-
-qbytearraymatcher.o: $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp
-
-qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
-
-qstring.o: $(SOURCE_PATH)/src/corelib/tools/qstring.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring.cpp
-
-qlocale.o: $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp
-
-qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp
-
-qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
-
-quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
-
-qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
-
-qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
-
-qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
-
-qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp
-
-qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp
-
-qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
-
-qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
-
-qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp
-
-qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
-
-qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
-
-qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
-
-qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
-
-qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp
-
-qtextcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp
-
-qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp
-
-qvector.o: $(SOURCE_PATH)/src/corelib/tools/qvector.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvector.cpp
-
-qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp
-
-qdir.o: $(SOURCE_PATH)/src/corelib/io/qdir.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdir.cpp
-
-qdiriterator.o: $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp
-
-qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp
-
-qfileinfo.o: $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp
-
-qdatetime.o: $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp
-
-qstringlist.o: $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp
-
-qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
-
-qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
-
-qmap.o: $(SOURCE_PATH)/src/corelib/tools/qmap.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qmap.cpp
-
-makefile.o: $(SOURCE_PATH)/qmake/generators/makefile.cpp
- $(CXX) $(CXXFLAGS) generators/makefile.cpp
-
-unixmake.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake.cpp
- $(CXX) $(CXXFLAGS) generators/unix/unixmake.cpp
-
-unixmake2.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake2.cpp
- $(CXX) $(CXXFLAGS) generators/unix/unixmake2.cpp
-
-winmakefile.o: $(SOURCE_PATH)/qmake/generators/win32/winmakefile.cpp
- $(CXX) $(CXXFLAGS) generators/win32/winmakefile.cpp
-
-borland_bmake.o: $(SOURCE_PATH)/qmake/generators/win32/borland_bmake.cpp
- $(CXX) $(CXXFLAGS) generators/win32/borland_bmake.cpp
-
-mingw_make.o: $(SOURCE_PATH)/qmake/generators/win32/mingw_make.cpp
- $(CXX) $(CXXFLAGS) generators/win32/mingw_make.cpp
-
-msvc_nmake.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_nmake.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_nmake.cpp
-
-msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_vcproj.cpp
-
-msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp
-
-msvc_vcxproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcxproj.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_vcxproj.cpp
-
-msbuild_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msbuild_objectmodel.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msbuild_objectmodel.cpp
-
-registry.o: $(SOURCE_PATH)/tools/shared/windows/registry.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/tools/shared/windows/registry.cpp
-
-gbuild.o: $(SOURCE_PATH)/qmake/generators/integrity/gbuild.cpp
- $(CXX) $(CXXFLAGS) generators/integrity/gbuild.cpp
-
-project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) project.cpp
-
-meta.o: $(SOURCE_PATH)/qmake/meta.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) meta.cpp
-
-main.o: $(SOURCE_PATH)/qmake/main.cpp $(SOURCE_PATH)/qmake/project.h
- $(CXX) $(CXXFLAGS) main.cpp
-
-option.o: $(SOURCE_PATH)/qmake/option.cpp $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) option.cpp
-
-property.o: $(SOURCE_PATH)/qmake/property.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) property.cpp
-
-projectgenerator.o: $(SOURCE_PATH)/qmake/generators/projectgenerator.cpp
- $(CXX) $(CXXFLAGS) generators/projectgenerator.cpp
-
-pbuilder_pbx.o: $(SOURCE_PATH)/qmake/generators/mac/pbuilder_pbx.cpp
- $(CXX) $(CXXFLAGS) generators/mac/pbuilder_pbx.cpp
-
-makefiledeps.o: $(SOURCE_PATH)/qmake/generators/makefiledeps.cpp
- $(CXX) $(CXXFLAGS) generators/makefiledeps.cpp
-
-metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp
- $(CXX) $(CXXFLAGS) generators/metamakefile.cpp
-
-xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp
- $(CXX) $(CXXFLAGS) generators/xmloutput.cpp
-
-qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
-
-qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
+QTVPATH = $(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin:$(BUILD_PATH)/src/corelib/global
+VPATH = $(QMKSRC):$(QMKSRC)/generators:$(QMKSRC)/generators/unix:$(QMKSRC)/generators/mac:$(QMKSRC)/generators/win32:$(QMKSRC)/generators/integrity:$(QTVPATH)
-qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
+project.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
+meta.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
+main.o: $(QMKSRC)/project.h
+option.o: $(QMKSRC)/option.h
+property.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh
deleted file mode 100644
index 6dfb486375..0000000000
--- a/qmake/Makefile.win32-g++-sh
+++ /dev/null
@@ -1,343 +0,0 @@
-ifeq "$(SOURCE_PATH)" ""
-SOURCE_PATH = ..
-endif
-
-#sh version
-
-ifeq "$(BUILD_PATH)" ""
-BUILD_PATH = ..
-endif
-
-#
-# specific stuff for mingw g++ make
-#
-CXX = g++
-CFLAGS = -c -o$@ -O \
- -I. -Igenerators -Igenerators/unix \
- -Igenerators/win32 -Igenerators/mac \
- -Igenerators/integrity \
- -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
- -I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION) -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
- -I$(BUILD_PATH)/src/corelib/global \
- -I$(BUILD_PATH)/src/corelib/xml \
- -I$(SOURCE_PATH)/mkspecs/win32-g++ \
- -I$(SOURCE_PATH)/tools/shared \
- -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT \
- -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
- -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
- -DQT_BOOTSTRAPPED
-CXXFLAGS = $(CFLAGS)
-LFLAGS = -static-libgcc -s
-LIBS = -lole32 -luuid -ladvapi32 -lkernel32
-LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS)
-ADDCLEAN =
-
-
-#qmake code
-OBJS = project.o main.o makefile.o unixmake.o unixmake2.o mingw_make.o \
- option.o winmakefile.o projectgenerator.o property.o meta.o \
- makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \
- borland_bmake.o msvc_nmake.o msvc_vcproj.o msvc_vcxproj.o \
- msvc_objectmodel.o msbuild_objectmodel.o registry.o gbuild.o
-
-ifdef QMAKE_OPENSOURCE_EDITION
-CFLAGS += -DQMAKE_OPENSOURCE_EDITION
-endif
-
-#qt code
-QTOBJS= \
- qbitarray.o \
- qbuffer.o \
- qbytearray.o \
- qcryptographichash.o \
- qvsnprintf.o \
- qbytearraymatcher.o \
- qconfig.o \
- qdatetime.o \
- qdir.o \
- qdiriterator.o \
- qfile.o \
- qtemporaryfile.o \
- qfileinfo.o \
- qabstractfileengine.o \
- qfilesystementry.o \
- qfilesystemengine.o \
- qfilesystemengine_win.o \
- qfilesystemiterator_win.o \
- qfsfileengine.o \
- qfsfileengine_iterator.o \
- qfsfileengine_win.o \
- qglobal.o \
- qhash.o \
- qiodevice.o \
- qlibraryinfo.o \
- qlist.o \
- qlinkedlist.o \
- qlocale.o \
- qlocale_tools.o \
- qlocale_win.o \
- qmalloc.o \
- qmap.o \
- qregexp.o \
- qtextcodec.o \
- qutfcodec.o \
- qstring.o \
- qstringlist.o \
- qsystemlibrary.o \
- qsystemerror.o \
- qtextstream.o \
- quuid.o \
- qvector.o \
- qurl.o \
- qsettings.o \
- qsettings_win.o \
- qvariant.o \
- qmetatype.o \
- qxmlstream.o \
- qxmlutils.o \
- qnumeric.o \
- qlogging.o
-
-qmake.exe: $(OBJS) $(QTOBJS)
- $(LINKQMAKE)
- -cp qmake.exe $(BUILD_PATH)/bin/qmake.exe
-
-Makefile: Makefile.win32-g++-sh
- @echo "Out of date, please rerun configure"
-
-clean::
- -del $(OBJS) $(QTOBJS) $(ADDCLEAN)
-
-distclean:: clean
- -del qmake
-
-.c.o:
- $(CXX) $(CFLAGS) $<
-
-.cpp.o:
- $(CXX) $(CXXFLAGS) $<
-
-qconfig.o: $(BUILD_PATH)/src/corelib/global/qconfig.cpp
- $(CXX) $(CXXFLAGS) $(BUILD_PATH)/src/corelib/global/qconfig.cpp
-
-qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
-
-qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings.cpp
-
-qvariant.o: $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp
-
-qurl.o: $(SOURCE_PATH)/src/corelib/io/qurl.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qurl.cpp
-
-qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp
-
-qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
-
-qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
-
-qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
-
-qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
-
-qmalloc.o: $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp
-
-qglobal.o: $(SOURCE_PATH)/src/corelib/global/qglobal.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qglobal.cpp
-
-qhash.o: $(SOURCE_PATH)/src/corelib/tools/qhash.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qhash.cpp
-
-qbytearray.o: $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp
-
-qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp
-
-qvsnprintf.o: $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp
-
-qbytearraymatcher.o: $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp
-
-qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp
-
-qstring.o: $(SOURCE_PATH)/src/corelib/tools/qstring.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring.cpp
-
-qlocale.o: $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp
-
-qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp
-
-qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
-
-quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
-
-qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
-
-qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
-
-qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
-
-qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp
-
-qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp
-
-qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
-
-qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp
-
-qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp
-
-qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
-
-qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
-
-qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
-
-qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
-
-qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp
-
-qtextcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp
-
-qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp
-
-qvector.o: $(SOURCE_PATH)/src/corelib/tools/qvector.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvector.cpp
-
-qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp
-
-qdir.o: $(SOURCE_PATH)/src/corelib/io/qdir.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdir.cpp
-
-qdiriterator.o: $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp
-
-qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp
-
-qfileinfo.o: $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp
-
-qdatetime.o: $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp
-
-qstringlist.o: $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp
-
-qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
-
-qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
-
-qmap.o: $(SOURCE_PATH)/src/corelib/tools/qmap.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qmap.cpp
-
-makefile.o: $(SOURCE_PATH)/qmake/generators/makefile.cpp
- $(CXX) $(CXXFLAGS) generators/makefile.cpp
-
-unixmake.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake.cpp
- $(CXX) $(CXXFLAGS) generators/unix/unixmake.cpp
-
-unixmake2.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake2.cpp
- $(CXX) $(CXXFLAGS) generators/unix/unixmake2.cpp
-
-winmakefile.o: $(SOURCE_PATH)/qmake/generators/win32/winmakefile.cpp
- $(CXX) $(CXXFLAGS) generators/win32/winmakefile.cpp
-
-borland_bmake.o: $(SOURCE_PATH)/qmake/generators/win32/borland_bmake.cpp
- $(CXX) $(CXXFLAGS) generators/win32/borland_bmake.cpp
-
-mingw_make.o: $(SOURCE_PATH)/qmake/generators/win32/mingw_make.cpp
- $(CXX) $(CXXFLAGS) generators/win32/mingw_make.cpp
-
-msvc_nmake.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_nmake.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_nmake.cpp
-
-msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_vcproj.cpp
-
-msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp
-
-msvc_vcxproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcxproj.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msvc_vcxproj.cpp
-
-msbuild_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msbuild_objectmodel.cpp
- $(CXX) $(CXXFLAGS) generators/win32/msbuild_objectmodel.cpp
-
-registry.o: $(SOURCE_PATH)/tools/shared/windows/registry.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/tools/shared/windows/registry.cpp
-
-gbuild.o: $(SOURCE_PATH)/qmake/generators/integrity/gbuild.cpp
- $(CXX) $(CXXFLAGS) generators/integrity/gbuild.cpp
-
-project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) project.cpp
-
-meta.o: $(SOURCE_PATH)/qmake/meta.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) meta.cpp
-
-main.o: $(SOURCE_PATH)/qmake/main.cpp $(SOURCE_PATH)/qmake/project.h
- $(CXX) $(CXXFLAGS) main.cpp
-
-option.o: $(SOURCE_PATH)/qmake/option.cpp $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) option.cpp
-
-property.o: $(SOURCE_PATH)/qmake/property.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
- $(CXX) $(CXXFLAGS) property.cpp
-
-projectgenerator.o: $(SOURCE_PATH)/qmake/generators/projectgenerator.cpp
- $(CXX) $(CXXFLAGS) generators/projectgenerator.cpp
-
-pbuilder_pbx.o: $(SOURCE_PATH)/qmake/generators/mac/pbuilder_pbx.cpp
- $(CXX) $(CXXFLAGS) generators/mac/pbuilder_pbx.cpp
-
-makefiledeps.o: $(SOURCE_PATH)/qmake/generators/makefiledeps.cpp
- $(CXX) $(CXXFLAGS) generators/makefiledeps.cpp
-
-metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp
- $(CXX) $(CXXFLAGS) generators/metamakefile.cpp
-
-xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp
- $(CXX) $(CXXFLAGS) generators/xmloutput.cpp
-
-qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
-
-qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
-
-qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp
index c72c120f39..895df24193 100644
--- a/qmake/generators/integrity/gbuild.cpp
+++ b/qmake/generators/integrity/gbuild.cpp
@@ -213,7 +213,7 @@ GBuildMakefileGenerator::write()
dllbase += DLLOFFSET;
}
- warn_msg(WarnParser, Option::output.fileName().toAscii());
+ warn_msg(WarnParser, Option::output.fileName().toAscii().constData());
QTextStream t(&Option::output);
QString primaryTarget(project->values("QMAKE_CXX").at(0));
@@ -425,7 +425,7 @@ GBuildMakefileGenerator::openOutput(QFile &file, const QString &build) const
outputName += QDir::separator();
outputName += fileInfo(project->projectFile()).baseName();
outputName += projectSuffix();
- warn_msg(WarnParser, outputName.toAscii());
+ warn_msg(WarnParser, outputName.toAscii().constData());
file.setFileName(outputName);
}
debug_msg(1, "file is %s", file.fileName().toLatin1().constData());
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index b78ebd136d..770a1ad34e 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -178,7 +178,6 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
}
if(tmp_proj.first("TEMPLATE") == "subdirs") {
QMakeProject *pp = new QMakeProject(&tmp_proj);
- pp->read(0);
pb_subdirs += new ProjectBuilderSubDirs(pp, dir);
} else if(tmp_proj.first("TEMPLATE") == "app" || tmp_proj.first("TEMPLATE") == "lib") {
QString pbxproj = qmake_getpwd() + Option::dir_sep + tmp_proj.first("TARGET") + projectSuffix();
@@ -508,6 +507,11 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
//HEADER
const int pbVersion = pbuilderVersion();
+ QStringList buildConfigGroups;
+ buildConfigGroups << "PROJECT";
+ if (pbVersion >= 46)
+ buildConfigGroups << "TARGET";
+
t << "// !$*UTF8*$!" << "\n"
<< "{" << "\n"
<< "\t" << writeSettings("archiveVersion", "1", SettingsNoQuote) << ";" << "\n"
@@ -810,7 +814,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
QStringList &libdirs = project->values("QMAKE_PBX_LIBPATHS"),
&frameworkdirs = project->values("QMAKE_FRAMEWORKPATH");
QString libs[] = { "QMAKE_LFLAGS", "QMAKE_LIBDIR_FLAGS", "QMAKE_FRAMEWORKPATH_FLAGS",
- "QMAKE_LIBS", QString() };
+ "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", QString() };
for(int i = 0; !libs[i].isNull(); i++) {
tmp = project->values(libs[i]);
for(int x = 0; x < tmp.count();) {
@@ -1014,28 +1018,22 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
- { //INSTALL BUILDPHASE (copy)
+ if (!project->isEmpty("DESTDIR")) {
QString phase_key = keyFor("QMAKE_PBX_TARGET_COPY_PHASE");
- QString destDir = Option::output_dir;
- if (!project->isEmpty("QMAKE_ORIG_DESTDIR"))
- destDir = project->first("QMAKE_ORIG_DESTDIR");
+ QString destDir = project->first("DESTDIR");
destDir = fixForOutput(destDir);
destDir = fileInfo(Option::fixPathToLocalOS(destDir)).absoluteFilePath();
- project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key);
+ project->values("QMAKE_PBX_BUILDPHASES").append(phase_key);
t << "\t\t" << phase_key << " = {\n"
+ << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Project Copy") << ";" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("dstPath", escapeFilePath(destDir)) << ";" << "\n"
- << "\t\t\t" << writeSettings("dstSubfolderSpec", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("files", keyFor("QMAKE_PBX_TARGET_COPY_FILE"), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXCopyFilesBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("files", QStringList(), SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("inputPaths", QStringList(), SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("outputPaths", QStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t" << "};\n"
- << "\t\t" << keyFor("QMAKE_PBX_TARGET_COPY_FILE") << " = {\n"
- << "\t\t\t" << writeSettings("fileRef", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << "settings = {\n"
- << "\t\t\t" << "};\n"
+ << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"
+ << "\t\t\t" << writeSettings("shellScript", fixForOutput("cp -r $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME " + escapeFilePath(destDir))) << ";" << "\n"
<< "\t\t" << "};\n";
}
//BUNDLE_DATA BUILDPHASE (copy)
@@ -1113,6 +1111,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("name", "Qt Preprocessor Steps") << ";" << "\n"
<< "\t\t\t" << writeSettings("productName", "Qt Preprocessor Steps") << ";" << "\n"
<< "\t\t\t" << writeSettings("productReference", keyFor("QMAKE_PBX_PRESCRIPTS_BUILDREFERENCE")) << ";" << "\n";
+ if (pbVersion >= 46)
+ t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST"), SettingsNoQuote) << ";" << "\n";
if(!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE"))
t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";" << "\n";
else
@@ -1217,28 +1217,30 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t\t\t\t" << writeSettings("CPLUSPLUS", fixForOutput(findProgram(cCompiler))) << ";" << "\n";
}
- t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("OPTIMIZATION_CFLAGS", QStringList(), SettingsAsList, 5) << ";" << "\n";
- {
- QStringList cflags = fixListForOutput("QMAKE_CFLAGS");
- const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
- for(int i = 0; i < prl_defines.size(); ++i)
- cflags += "-D" + prl_defines.at(i);
- const QStringList &defines = project->values("DEFINES");
- for(int i = 0; i < defines.size(); ++i)
- cflags += "-D" + defines.at(i);
- t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n";
- }
- {
- QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS");
- const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
- for(int i = 0; i < prl_defines.size(); ++i)
- cxxflags += "-D" + prl_defines.at(i);
- const QStringList &defines = project->values("DEFINES");
- for(int i = 0; i < defines.size(); ++i)
- cxxflags += "-D" + defines.at(i);
- t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n";
+ if (pbVersion < 46) {
+ t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("OPTIMIZATION_CFLAGS", QStringList(), SettingsAsList, 5) << ";" << "\n";
+ {
+ QStringList cflags = fixListForOutput("QMAKE_CFLAGS");
+ const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
+ for (int i = 0; i < prl_defines.size(); ++i)
+ cflags += "-D" + prl_defines.at(i);
+ const QStringList &defines = project->values("DEFINES");
+ for (int i = 0; i < defines.size(); ++i)
+ cflags += "-D" + defines.at(i);
+ t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n";
+ }
+ {
+ QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS");
+ const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
+ for (int i = 0; i < prl_defines.size(); ++i)
+ cxxflags += "-D" + prl_defines.at(i);
+ const QStringList &defines = project->values("DEFINES");
+ for (int i = 0; i < defines.size(); ++i)
+ cxxflags += "-D" + defines.at(i);
+ t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n";
+ }
}
t << "\t\t\t\t" << writeSettings("LEXFLAGS", fixListForOutput("QMAKE_LEXFLAGS")) << ";" << "\n"
<< "\t\t\t\t" << writeSettings("YACCFLAGS", fixListForOutput("QMAKE_YACCFLAGS")) << ";" << "\n"
@@ -1298,7 +1300,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
+ fixListForOutput("QMAKE_LFLAGS")
+ fixListForOutput("QMAKE_LIBDIR_FLAGS")
+ fixListForOutput("QMAKE_FRAMEWORKPATH_FLAGS")
- + fixListForOutput("QMAKE_LIBS"),
+ + fixListForOutput("QMAKE_LIBS")
+ + fixListForOutput("QMAKE_LIBS_PRIVATE"),
SettingsAsList, 6) << ";" << "\n";
}
if(!project->isEmpty("DESTDIR")) {
@@ -1318,7 +1321,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
project->isActiveConfig("lib_bundle"))
t << "\t\t\t\t" << writeSettings("FRAMEWORK_VERSION", project->first("QMAKE_FRAMEWORK_VERSION")) << ";" << "\n";
}
- if(!project->isEmpty("COMPAT_FRAMEWORKPATH"))
+ if (pbVersion < 46 && !project->isEmpty("COMPAT_FRAMEWORKPATH"))
t << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), SettingsAsList, 5) << ";" << "\n";
if(!project->isEmpty("COMPAT_VERSION"))
t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("COMPAT_VERSION")) << ";" << "\n";
@@ -1334,7 +1337,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
else
t << "\t\t\t\t" << writeSettings("SYMROOT", fixForOutput(qmake_getpwd())) << ";" << "\n";
#endif
- {
+ if (pbVersion < 46) {
QStringList archs;
if(project->isActiveConfig("x86"))
archs += "i386";
@@ -1374,7 +1377,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
tmp = project->values("QMAKE_PBX_VARS");
for(int i = 0; i < tmp.count(); i++) {
- QString var = tmp[i], val = qgetenv(var.toLatin1());
+ QString var = tmp[i], val = QString::fromAscii(qgetenv(var.toLatin1().constData()));
if(val.isEmpty() && var == "TB")
val = "/usr/bin/";
t << "\t\t\t\t" << writeSettings(var, escapeFilePath(val)) << ";" << "\n";
@@ -1385,6 +1388,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("dependencies", project->values("QMAKE_PBX_TARGET_DEPENDS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("productReference", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n"
<< "\t\t\t" << writeSettings("shouldUseHeadermap", "1", SettingsNoQuote) << ";" << "\n";
+ if (pbVersion >= 46)
+ t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_TARGET"), SettingsNoQuote) << ";" << "\n";
if(pbVersion >= 38)
t << "\t\t\t" << writeSettings("isa", "PBXNativeTarget", SettingsNoQuote) << ";" << "\n";
if(project->first("TEMPLATE") == "app") {
@@ -1493,6 +1498,16 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
settings.insert(name, value);
}
}
+ if (pbVersion >= 46) {
+ if (project->first("TEMPLATE") == "app") {
+ settings.insert("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET")));
+ } else {
+ QString lib = project->first("QMAKE_ORIG_TARGET");
+ if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib"))
+ lib.prepend("lib");
+ settings.insert("PRODUCT_NAME", escapeFilePath(lib));
+ }
+ }
QString name;
if(pbVersion >= 42)
@@ -1500,42 +1515,121 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
else
name = (as_release ? "Deployment" : "Development");
if(pbVersion >= 42) {
- QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + name);
- project->values("QMAKE_PBX_BUILDCONFIGS").append(key);
+ for (int i = 0; i < buildConfigGroups.size(); i++) {
+ QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + name + buildConfigGroups.at(i));
+ project->values("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i)).append(key);
+ t << "\t\t" << key << " = {" << "\n"
+ << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << "buildSettings = {" << "\n";
+ for (QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
+ t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n";
+ if (pbVersion >= 46) {
+ if (buildConfigGroups.at(i) == QLatin1String("PROJECT")) {
+ t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), SettingsAsList, 5) << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";" << "\n";
+ {
+ QStringList cflags = fixListForOutput("QMAKE_CFLAGS");
+ const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
+ for (int i = 0; i < prl_defines.size(); ++i)
+ cflags += "-D" + prl_defines.at(i);
+ const QStringList &defines = project->values("DEFINES");
+ for (int i = 0; i < defines.size(); ++i)
+ cflags += "-D" + defines.at(i);
+ t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n";
+ }
+ {
+ QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS");
+ const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
+ for (int i = 0; i < prl_defines.size(); ++i)
+ cxxflags += "-D" + prl_defines.at(i);
+ const QStringList &defines = project->values("DEFINES");
+ for (int i = 0; i < defines.size(); ++i)
+ cxxflags += "-D" + defines.at(i);
+ t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n";
+ }
+ if (!project->isActiveConfig("staticlib")) {
+ t << "\t\t\t\t" << writeSettings("OTHER_LDFLAGS",
+ fixListForOutput("SUBLIBS")
+ + fixListForOutput("QMAKE_LFLAGS")
+ + fixListForOutput("QMAKE_LIBDIR_FLAGS")
+ + fixListForOutput("QMAKE_FRAMEWORKPATH_FLAGS")
+ + fixListForOutput("QMAKE_LIBS")
+ + fixListForOutput("QMAKE_LIBS_PRIVATE"),
+ SettingsAsList, 6) << ";" << "\n";
+ }
+ {
+ QStringList archs;
+ if (project->isActiveConfig("x86"))
+ archs += "i386";
+ if (project->isActiveConfig("ppc")) {
+ if (!archs.isEmpty())
+ archs += " ";
+ archs += "ppc";
+ }
+ if (project->isActiveConfig("ppc64")) {
+ if (!archs.isEmpty())
+ archs += " ";
+ archs += "ppc64";
+ }
+ if (project->isActiveConfig("x86_64")) {
+ if (!archs.isEmpty())
+ archs += " ";
+ archs += "x86_64";
+ }
+ if (!archs.isEmpty())
+ t << "\t\t\t\t" << writeSettings("ARCHS", archs) << ";" << "\n";
+ }
+ } else {
+ if (project->first("TEMPLATE") == "app") {
+ if (pbVersion < 38 && project->isActiveConfig("app_bundle"))
+ t << "\t\t\t\t" << writeSettings("WRAPPER_SUFFIX", "app") << ";" << "\n";
+ t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n";
+ } else {
+ if (!project->isActiveConfig("plugin") && project->isActiveConfig("staticlib"))
+ t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "STATIC") << ";" << "\n";
+ else
+ t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "DYNAMIC") << ";" << "\n";
+ QString lib = project->first("QMAKE_ORIG_TARGET");
+ if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib"))
+ lib.prepend("lib");
+ t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", escapeFilePath(lib)) << ";" << "\n";
+ }
+ }
+ t << "\t\t\t" << "};" << "\n"
+ << "\t\t\t" << writeSettings("name", name) << ";" << "\n"
+ << "\t\t" << "};" << "\n";
+ }
+ }
+
+ QString key = keyFor("QMAKE_PBX_BUILDSTYLE_" + name);
+ if (project->isActiveConfig("debug") != (bool)as_release) {
+ project->values("QMAKE_PBX_BUILDSTYLES").append(key);
+ active_buildstyle = name;
+ } else if (pbVersion >= 42) {
+ project->values("QMAKE_PBX_BUILDSTYLES").append(key);
+ }
t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("buildRules", QStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << "buildSettings = {" << "\n";
for(QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
- t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n";
+ t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";" << "\n";
t << "\t\t\t" << "};" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXBuildStyle") << ";" << "\n"
<< "\t\t\t" << writeSettings("name", name) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
-
- QString key = keyFor("QMAKE_PBX_BUILDSTYLE_" + name);
- if(project->isActiveConfig("debug") != (bool)as_release) {
- project->values("QMAKE_PBX_BUILDSTYLES").append(key);
- active_buildstyle = name;
- } else if(pbVersion >= 42) {
- project->values("QMAKE_PBX_BUILDSTYLES").append(key);
- }
- t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("buildRules", QStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << "buildSettings = {" << "\n";
- for(QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
- t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";" << "\n";
- t << "\t\t\t" << "};" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXBuildStyle") << ";" << "\n"
- << "\t\t\t" << writeSettings("name", name) << ";" << "\n"
- << "\t\t" << "};" << "\n";
}
if(pbVersion >= 42) {
- t << "\t\t" << keyFor("QMAKE_PBX_BUILDCONFIG_LIST") << " = {" << "\n"
- << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_PBX_BUILDCONFIGS"), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n"
- << "\t\t" << "};" << "\n";
+ for (int i = 0; i < buildConfigGroups.size(); i++) {
+ t << "\t\t" << keyFor("QMAKE_PBX_BUILDCONFIG_LIST_" + buildConfigGroups.at(i)) << " = {" << "\n"
+ << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i)), SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n"
+ << "\t\t" << "};" << "\n";
+ }
}
//ROOT
t << "\t\t" << keyFor("QMAKE_PBX_ROOT") << " = {" << "\n"
@@ -1544,7 +1638,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("isa", "PBXProject", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_PBX_ROOT_GROUP")) << ";" << "\n";
if(pbVersion >= 42)
- t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST")) << ";" << "\n";
+ t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_PROJECT")) << ";" << "\n";
t << "\t\t\t" << writeSettings("projectDirPath", QStringList()) << ";" << "\n"
<< "\t\t\t" << writeSettings("targets", project->values("QMAKE_PBX_TARGETS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t" << "};" << "\n";
@@ -1693,7 +1787,11 @@ ProjectBuilderMakefileGenerator::pbuilderVersion() const
#ifdef Q_OS_DARWIN
ret = QLatin1String("34");
QCFType<CFURLRef> cfurl;
- OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl);
+ // Check for XCode 4 first
+ OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.dt.Xcode"), 0, 0, &cfurl);
+ // Now check for XCode 3
+ if (err == kLSApplicationNotFoundErr)
+ err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl);
if (err == noErr) {
QCFType<CFBundleRef> bundle = CFBundleCreate(0, cfurl);
if (bundle) {
@@ -1703,7 +1801,9 @@ ProjectBuilderMakefileGenerator::pbuilderVersion() const
QStringList versions = QCFString::toQString(str).split(QLatin1Char('.'));
int versionMajor = versions.at(0).toInt();
int versionMinor = versions.at(1).toInt();
- if (versionMajor >= 2) {
+ if (versionMajor >= 3) {
+ ret = QLatin1String("46");
+ } else if (versionMajor >= 2) {
ret = QLatin1String("42");
} else if (versionMajor == 1 && versionMinor >= 5) {
ret = QLatin1String("39");
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 59a615e63a..63367f116a 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -2235,10 +2235,6 @@ QString MakefileGenerator::buildArgs(const QString &outdir)
ret += " -win32";
}
- //configs
- for(QStringList::Iterator it = Option::user_configs.begin();
- it != Option::user_configs.end(); ++it)
- ret += " -config " + (*it);
//arguments
for(QStringList::Iterator it = Option::before_user_vars.begin();
it != Option::before_user_vars.end(); ++it) {
@@ -3178,7 +3174,7 @@ MakefileGenerator::pkgConfigPrefix() const
{
if(!project->isEmpty("QMAKE_PKGCONFIG_PREFIX"))
return project->first("QMAKE_PKGCONFIG_PREFIX");
- return QLibraryInfo::location(QLibraryInfo::PrefixPath);
+ return QLibraryInfo::rawLocation(QLibraryInfo::PrefixPath);
}
QString
diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp
index d28d48b4d0..642dd97e68 100644
--- a/qmake/generators/makefiledeps.cpp
+++ b/qmake/generators/makefiledeps.cpp
@@ -185,9 +185,9 @@ SourceFile *SourceFiles::lookupFile(const char *file)
void SourceFiles::addFile(SourceFile *p, const char *k, bool own_file)
{
- QByteArray ba = p->file.local().toLatin1();
+ const QByteArray ba = p->file.local().toLatin1();
if(!k)
- k = ba;
+ k = ba.constData();
int h = hash(k) % num_nodes;
SourceFileNode *pn = new SourceFileNode;
pn->own_file = own_file;
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index b9fec023ab..b855585500 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -238,25 +238,21 @@ MakefileGenerator
//initialize the base
QHash<QString, QStringList> basevars;
+ QStringList basecfgs;
if(!project->isEmpty(build + ".CONFIG"))
- basevars["CONFIG"] += project->values(build + ".CONFIG");
- basevars["CONFIG"] += build;
- basevars["CONFIG"] += "build_pass";
+ basecfgs = project->values(build + ".CONFIG");
+ basecfgs += build;
+ basecfgs += "build_pass";
basevars["BUILD_PASS"] = QStringList(build);
QStringList buildname = project->values(build + ".name");
basevars["BUILD_NAME"] = (buildname.isEmpty() ? QStringList(build) : buildname);
//create project
- QMakeProject *build_proj = new QMakeProject(project->properties(), basevars);
+ QMakeProject *build_proj = new QMakeProject(project->properties());
+ build_proj->setExtraVars(basevars);
+ build_proj->setExtraConfigs(basecfgs);
- //all the user configs must be set again afterwards (for .pro tests and for .prf tests)
- const QStringList old_after_user_config = Option::after_user_configs;
- const QStringList old_user_config = Option::user_configs;
- Option::after_user_configs += basevars["CONFIG"];
- Option::user_configs += basevars["CONFIG"];
build_proj->read(project->projectFile());
- Option::after_user_configs = old_after_user_config;
- Option::user_configs = old_user_config;
//done
return createMakefileGenerator(build_proj);
@@ -451,6 +447,8 @@ QT_END_INCLUDE_NAMESPACE
MakefileGenerator *
MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)
{
+ Option::postProcessProject(proj);
+
MakefileGenerator *mkfile = NULL;
if(Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT) {
mkfile = new ProjectGenerator;
@@ -496,6 +494,8 @@ MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)
MetaMakefileGenerator *
MetaMakefileGenerator::createMetaGenerator(QMakeProject *proj, const QString &name, bool op, bool *success)
{
+ Option::postProcessProject(proj);
+
MetaMakefileGenerator *ret = 0;
if ((Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
Option::qmake_mode == Option::QMAKE_GENERATE_PRL)) {
diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp
index a2eb45ef40..9a181a43f5 100644
--- a/qmake/generators/projectgenerator.cpp
+++ b/qmake/generators/projectgenerator.cpp
@@ -344,8 +344,6 @@ ProjectGenerator::writeMakefile(QTextStream &t)
t << "######################################################################" << endl;
t << "# Automatically generated by qmake (" << qmake_version() << ") " << QDateTime::currentDateTime().toString() << endl;
t << "######################################################################" << endl << endl;
- if(!Option::user_configs.isEmpty())
- t << "CONFIG += " << Option::user_configs.join(" ") << endl;
int i;
for(i = 0; i < Option::before_user_vars.size(); ++i)
t << Option::before_user_vars[i] << endl;
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index 03460551a9..c088e8e480 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -404,14 +404,14 @@ void MingwMakefileGenerator::writeObjectsPart(QTextStream &t)
QString ar_cmd = project->values("QMAKE_LIB").join(" ");
if (ar_cmd.isEmpty())
ar_cmd = "armar --create";
- objectsLinkLine = ar_cmd + " " + var("DEST_TARGET") + " --via " + ar_script_file;
+ objectsLinkLine = ar_cmd + " " + var("DEST_TARGET") + " --via " + escapeFilePath(ar_script_file);
} else {
// Strip off any options since the ar commands will be read from file.
QString ar_cmd = var("QMAKE_LIB").section(" ", 0, 0);;
if (ar_cmd.isEmpty())
ar_cmd = "ar";
createArObjectScriptFile(ar_script_file, var("DEST_TARGET"), project->values("OBJECTS"));
- objectsLinkLine = ar_cmd + " -M < " + ar_script_file;
+ objectsLinkLine = ar_cmd + " -M < " + escapeFilePath(ar_script_file);
}
} else {
QString ld_script_file = var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("TARGET");
@@ -420,10 +420,10 @@ void MingwMakefileGenerator::writeObjectsPart(QTextStream &t)
}
if (project->isActiveConfig("rvct_linker")) {
createRvctObjectScriptFile(ld_script_file, project->values("OBJECTS"));
- objectsLinkLine = QString::fromLatin1("--via ") + ld_script_file;
+ objectsLinkLine = QString::fromLatin1("--via ") + escapeFilePath(ld_script_file);
} else {
createLdObjectScriptFile(ld_script_file, project->values("OBJECTS"));
- objectsLinkLine = ld_script_file;
+ objectsLinkLine = escapeFilePath(ld_script_file);
}
}
Win32MakefileGenerator::writeObjectsPart(t);
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index 81f541f94e..e0f55a64c9 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -1615,7 +1615,7 @@ bool VCLinkerTool::parseOption(const char* option)
{
// Split up in subsystem, and version number
QStringList both = QString(option+11).split(",");
- switch (elfHash(both[0].toLatin1())) {
+ switch (elfHash(both[0].toLatin1().constData())) {
case 0x8438445: // CONSOLE
SubSystem = subSystemConsole;
break;
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index 8b1cf519ff..37d923f9c1 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -477,7 +477,7 @@ protected:
public:
void parseOptions(QStringList& options) {
for (QStringList::ConstIterator it=options.begin(); (it!=options.end()); it++)
- parseOption((*it).toLatin1());
+ parseOption((*it).toLatin1().constData());
}
static QStringList fixCommandLine(const QString &input);
};
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 109b50fd94..434d4b4559 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -1575,11 +1575,11 @@ QString VcprojGenerator::findTemplate(QString file)
QString ret;
if(!exists((ret = file)) &&
!exists((ret = QString(Option::mkfile::qmakespec + "/" + file))) &&
- !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::DataPath) + "/win32-msvc.net/" + file))) &&
- !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::DataPath) + "/win32-msvc2002/" + file))) &&
- !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::DataPath) + "/win32-msvc2003/" + file))) &&
- !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::DataPath) + "/win32-msvc2005/" + file))) &&
- !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::DataPath) + "/win32-msvc2008/" + file))))
+ !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::HostDataPath) + "/win32-msvc.net/" + file))) &&
+ !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::HostDataPath) + "/win32-msvc2002/" + file))) &&
+ !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::HostDataPath) + "/win32-msvc2003/" + file))) &&
+ !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::HostDataPath) + "/win32-msvc2005/" + file))) &&
+ !exists((ret = QString(QLibraryInfo::location(QLibraryInfo::HostDataPath) + "/win32-msvc2008/" + file))))
return "";
debug_msg(1, "Generator: MSVC.NET: Found template \'%s\'", ret.toLatin1().constData());
return ret;
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index a26be16f78..9d983ffc66 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -649,6 +649,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t)
t << "DEF_FILE = " << varList("DEF_FILE") << endl;
t << "RES_FILE = " << varList("RES_FILE") << endl; // Not on mingw, can't see why not though...
t << "COPY = " << var("QMAKE_COPY") << endl;
+ t << "SED = " << var("QMAKE_STREAM_EDITOR") << endl;
t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl;
t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl;
t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
@@ -852,7 +853,22 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
}
if(!ret.isEmpty())
ret += "\n\t";
- ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
+ const QString replace_rule("QMAKE_PKGCONFIG_INSTALL_REPLACE");
+ if (project->isEmpty(replace_rule)
+ || project->isActiveConfig("no_sed_meta_install")
+ || project->isEmpty("QMAKE_STREAM_EDITOR")) {
+ ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
+ } else {
+ ret += "-$(SED)";
+ QStringList replace_rules = project->values(replace_rule);
+ for (int r = 0; r < replace_rules.size(); ++r) {
+ const QString match = project->first(replace_rules.at(r) + ".match"),
+ replace = project->first(replace_rules.at(r) + ".replace");
+ if (!match.isEmpty() /*&& match != replace*/)
+ ret += " -e \"s," + match + "," + replace + ",g\"";
+ }
+ ret += " \"" + pkgConfigFileName(true) + "\" >\"" + dst_pc + "\"";
+ }
if(!uninst.isEmpty())
uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_pc + "\"");
diff --git a/qmake/main.cpp b/qmake/main.cpp
index 54cf9f9bdf..985afaa8e8 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -163,7 +163,7 @@ int runQMake(int argc, char **argv)
fn = fn.right(fn.length() - di - 1);
}
- if (!Option::prepareProject()) {
+ if (!Option::prepareProject(fn)) {
exit_val = 3;
break;
}
diff --git a/qmake/option.cpp b/qmake/option.cpp
index 0c649fdd77..b2a1e6982f 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -91,8 +91,6 @@ QString Option::output_dir;
Option::QMAKE_RECURSIVE Option::recursive = Option::QMAKE_RECURSIVE_DEFAULT;
QStringList Option::before_user_vars;
QStringList Option::after_user_vars;
-QStringList Option::user_configs;
-QStringList Option::after_user_configs;
QString Option::user_template;
QString Option::user_template_prefix;
QStringList Option::shellPath;
@@ -116,6 +114,7 @@ bool Option::mkfile::do_dep_heuristics = true;
bool Option::mkfile::do_preprocess = false;
bool Option::mkfile::do_stub_makefile = false;
bool Option::mkfile::do_cache = true;
+QString Option::mkfile::project_root;
QString Option::mkfile::project_build_root;
QString Option::mkfile::cachefile;
QStringList Option::mkfile::project_files;
@@ -150,8 +149,11 @@ static QString detectProjectFile(const QString &path)
static QString cleanSpec(const QString &spec)
{
QString ret = QDir::cleanPath(spec);
- if (ret.contains('/'))
- ret = QDir::cleanPath(QFileInfo(ret).absoluteFilePath());
+ if (ret.contains('/')) {
+ const QFileInfo specDirInfo(ret);
+ if (specDirInfo.exists() && specDirInfo.isDir())
+ ret = QDir::cleanPath(specDirInfo.absoluteFilePath());
+ }
return ret;
}
@@ -219,6 +221,8 @@ bool usage(const char *a0)
int
Option::parseCommandLine(int argc, char **argv, int skip)
{
+ QStringList user_configs;
+
bool before = true;
for(int x = skip; x < argc; x++) {
if(*argv[x] == '-' && strlen(argv[x]) > 1) { /* options */
@@ -303,7 +307,7 @@ Option::parseCommandLine(int argc, char **argv, int skip)
} else if(opt == "nr" || opt == "norecursive") {
Option::recursive = Option::QMAKE_RECURSIVE_NO;
} else if(opt == "config") {
- Option::user_configs += argv[++x];
+ user_configs += argv[++x];
} else {
if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
Option::qmake_mode == Option::QMAKE_GENERATE_PRL) {
@@ -376,6 +380,9 @@ Option::parseCommandLine(int argc, char **argv, int skip)
}
}
+ if (!user_configs.isEmpty())
+ Option::before_user_vars += "CONFIG += " + user_configs.join(" ");
+
return Option::QMAKE_CMDLINE_SUCCESS;
}
@@ -576,7 +583,50 @@ void Option::applyHostMode()
}
}
-bool Option::prepareProject()
+QStringList Option::mkspecPaths()
+{
+ QStringList ret;
+ const QString concat = QLatin1String("/mkspecs");
+
+ QByteArray qmakepath = qgetenv("QMAKEPATH");
+ if (!qmakepath.isEmpty()) {
+ const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath));
+ for (QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it)
+ ret << ((*it) + concat);
+ }
+ if (!Option::mkfile::project_build_root.isEmpty())
+ ret << Option::mkfile::project_build_root + concat;
+ if (!Option::mkfile::project_root.isEmpty())
+ ret << Option::mkfile::project_root + concat;
+ ret << QLibraryInfo::location(QLibraryInfo::HostDataPath) + concat;
+ ret.removeDuplicates();
+ return ret;
+}
+
+bool Option::resolveSpec(QString *spec)
+{
+ QString qmakespec = fixEnvVariables(*spec);
+ if (qmakespec.isEmpty())
+ qmakespec = "default";
+ if (QDir::isRelativePath(qmakespec)) {
+ QStringList mkspec_roots = mkspecPaths();
+ debug_msg(2, "Looking for mkspec %s in (%s)", qmakespec.toLatin1().constData(),
+ mkspec_roots.join("::").toLatin1().constData());
+ for (QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
+ QString mkspec = (*it) + QLatin1Char('/') + qmakespec;
+ if (QFile::exists(mkspec)) {
+ *spec = mkspec;
+ return true;
+ }
+ }
+ fprintf(stderr, "Could not find mkspecs for your QMAKESPEC(%s) after trying:\n\t%s\n",
+ qmakespec.toLatin1().constData(), mkspec_roots.join("\n\t").toLatin1().constData());
+ return false;
+ }
+ return true;
+}
+
+bool Option::prepareProject(const QString &pfile)
{
mkfile::project_build_root.clear();
if (mkfile::do_cache) {
@@ -601,6 +651,37 @@ bool Option::prepareProject()
}
}
no_cache:
+
+ QString srcpath = (pfile != "-")
+ ? QDir::cleanPath(QFileInfo(pfile).absolutePath()) : qmake_getpwd();
+ if (srcpath != output_dir || mkfile::project_build_root.isEmpty()) {
+ QDir srcdir(srcpath);
+ QDir dstdir(output_dir);
+ do {
+ if (!mkfile::project_build_root.isEmpty()) {
+ // If we already know the build root, just match up the source root with it.
+ if (dstdir.path() == mkfile::project_build_root) {
+ mkfile::project_root = srcdir.path();
+ break;
+ }
+ } else {
+ // Look for mkspecs/ in source and build. First to win determines the root.
+ if (dstdir.exists("mkspecs") || srcdir.exists("mkspecs")) {
+ mkfile::project_build_root = dstdir.path();
+ mkfile::project_root = srcdir.path();
+ if (mkfile::project_root == mkfile::project_build_root)
+ mkfile::project_root.clear();
+ break;
+ }
+ }
+ } while (!srcdir.isRoot() && srcdir.cdUp() && !dstdir.isRoot() && dstdir.cdUp());
+ } else {
+ mkfile::project_root.clear();
+ }
+
+ if (!resolveSpec(&Option::mkfile::qmakespec))
+ return false;
+
return true;
}
diff --git a/qmake/option.h b/qmake/option.h
index b8a3b561fa..23384877fd 100644
--- a/qmake/option.h
+++ b/qmake/option.h
@@ -46,6 +46,7 @@
#include <qstring.h>
#include <qstringlist.h>
#include <qfile.h>
+#include <qlibraryinfo.h>
QT_BEGIN_NAMESPACE
@@ -108,7 +109,8 @@ struct Option
//both of these must be called..
static int init(int argc=0, char **argv=0); //parse cmdline
static void applyHostMode();
- static bool prepareProject();
+ static QStringList mkspecPaths();
+ static bool prepareProject(const QString &pfile);
static bool postProcessProject(QMakeProject *);
enum StringFixFlags {
@@ -172,7 +174,7 @@ struct Option
static int warn_level;
enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO };
static QMAKE_RECURSIVE recursive;
- static QStringList before_user_vars, after_user_vars, user_configs, after_user_configs;
+ static QStringList before_user_vars, after_user_vars;
enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE };
static HOST_MODE host_mode;
enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE,
@@ -202,6 +204,7 @@ struct Option
static bool do_dep_heuristics;
static bool do_preprocess;
static bool do_stub_makefile;
+ static QString project_root;
static QString project_build_root;
static QString cachefile;
static int cachefile_depth;
@@ -211,33 +214,12 @@ struct Option
private:
static int parseCommandLine(int, char **, int=0);
+ static bool resolveSpec(QString *spec);
};
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }
inline QStringList splitPathList(const QString &paths) { return paths.split(Option::dirlist_sep); }
-// this is a stripped down version of the one found in QtCore
-class QLibraryInfo
-{
-public:
- enum LibraryLocation
- {
- PrefixPath,
- DocumentationPath,
- HeadersPath,
- LibrariesPath,
- BinariesPath,
- PluginsPath,
- DataPath,
- TranslationsPath,
- SettingsPath,
- ExamplesPath,
- ImportsPath,
- TestsPath
- };
- static QString location(LibraryLocation);
-};
-
QT_END_NAMESPACE
#endif // OPTION_H
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 1179812b1b..7655f05f2e 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -530,9 +530,10 @@ static void qmake_error_msg(const QString &msg)
*/
QStringList qmake_feature_paths(QMakeProperty *prop=0)
{
+ const QString mkspecs_concat = QLatin1String("/mkspecs");
+ const QString base_concat = QLatin1String("/features");
QStringList concat;
{
- const QString base_concat = QLatin1String("/features");
switch(Option::target_mode) {
case Option::TARG_MACX_MODE: //also a unix
concat << base_concat + QLatin1String("/mac");
@@ -549,7 +550,7 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
}
concat << base_concat;
}
- const QString mkspecs_concat = QLatin1String("/mkspecs");
+
QStringList feature_roots;
QByteArray mkspec_path = qgetenv("QMAKEFEATURES");
if(!mkspec_path.isNull())
@@ -574,44 +575,28 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
feature_roots << ((*it) + mkspecs_concat + (*concat_it));
}
}
- if(!Option::mkfile::qmakespec.isEmpty())
- feature_roots << Option::mkfile::qmakespec + QLatin1String("/features");
if(!Option::mkfile::qmakespec.isEmpty()) {
+ // The spec is already platform-dependent, so no subdirs here.
+ feature_roots << Option::mkfile::qmakespec + base_concat;
+
QFileInfo specfi(Option::mkfile::qmakespec);
- QDir specdir(specfi.absoluteFilePath());
- while(!specdir.isRoot()) {
- if(!specdir.cdUp() || specdir.isRoot())
- break;
- if(QFile::exists(specdir.path() + QLatin1String("/features"))) {
+ if (!specfi.isRoot()) {
+ QDir specdir(specfi.absolutePath());
+ if (specdir.exists(QLatin1String("features"))) {
for(QStringList::Iterator concat_it = concat.begin();
concat_it != concat.end(); ++concat_it)
feature_roots << (specdir.path() + (*concat_it));
- break;
}
}
}
for(QStringList::Iterator concat_it = concat.begin();
concat_it != concat.end(); ++concat_it)
- feature_roots << (QLibraryInfo::location(QLibraryInfo::DataPath) +
+ feature_roots << (QLibraryInfo::location(QLibraryInfo::HostDataPath) +
mkspecs_concat + (*concat_it));
+ feature_roots.removeDuplicates();
return feature_roots;
}
-QStringList qmake_mkspec_paths()
-{
- QStringList ret;
- const QString concat = QLatin1String("/mkspecs");
- QByteArray qmakepath = qgetenv("QMAKEPATH");
- if (!qmakepath.isEmpty()) {
- const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath));
- for(QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it)
- ret << ((*it) + concat);
- }
- ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat;
-
- return ret;
-}
-
QMakeProject::~QMakeProject()
{
if(own_prop)
@@ -630,10 +615,8 @@ QMakeProject::~QMakeProject()
void
-QMakeProject::init(QMakeProperty *p, const QHash<QString, QStringList> *vars)
+QMakeProject::init(QMakeProperty *p)
{
- if(vars)
- base_vars = *vars;
if(!p) {
prop = new QMakeProperty;
own_prop = true;
@@ -645,9 +628,11 @@ QMakeProject::init(QMakeProperty *p, const QHash<QString, QStringList> *vars)
reset();
}
-QMakeProject::QMakeProject(QMakeProject *p, const QHash<QString, QStringList> *vars)
+// Duplicate project. It is *not* allowed to call the complex read() functions on the copy.
+QMakeProject::QMakeProject(QMakeProject *p, const QHash<QString, QStringList> *_vars)
{
- init(p->properties(), vars ? vars : &p->variables());
+ init(p->properties());
+ vars = _vars ? *_vars : p->variables();
for(QHash<QString, FunctionBlock*>::iterator it = p->replaceFunctions.begin(); it != p->replaceFunctions.end(); ++it) {
it.value()->ref();
replaceFunctions.insert(it.key(), it.value());
@@ -1174,6 +1159,8 @@ QMakeProject::parse(const QString &t, QHash<QString, QStringList> &place, int nu
}
if(var == "REQUIRES") // special case to get communicated to backends!
doProjectCheckReqs(vallist, place);
+ else if (var == "_QMAKE_CACHE_")
+ Option::mkfile::cachefile = varlist.isEmpty() ? QString() : varlist.at(0);
}
return true;
}
@@ -1271,7 +1258,7 @@ QMakeProject::read(const QString &project, uchar cmd)
bool
QMakeProject::read(uchar cmd)
{
- if(cfile.isEmpty()) {
+ if ((cmd & ReadSetup) && base_vars.isEmpty()) {
// hack to get the Option stuff in there
base_vars["QMAKE_EXT_CPP"] = Option::cpp_ext;
base_vars["QMAKE_EXT_C"] = Option::c_ext;
@@ -1280,56 +1267,13 @@ QMakeProject::read(uchar cmd)
if(!Option::user_template_prefix.isEmpty())
base_vars["TEMPLATE_PREFIX"] = QStringList(Option::user_template_prefix);
- if ((cmd & ReadSetup) && Option::mkfile::do_cache) { // parse the cache
+ if (Option::mkfile::do_cache) { // parse the cache
if (Option::output_dir.startsWith(Option::mkfile::project_build_root))
Option::mkfile::cachefile_depth =
Option::output_dir.mid(Option::mkfile::project_build_root.length()).count('/');
}
- if (cmd & ReadSetup) { // parse mkspec
- QString qmakespec = fixEnvVariables(Option::mkfile::qmakespec);
- QStringList mkspec_roots = qmake_mkspec_paths();
- debug_msg(2, "Looking for mkspec %s in (%s)", qmakespec.toLatin1().constData(),
- mkspec_roots.join("::").toLatin1().constData());
- if(qmakespec.isEmpty()) {
- for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
- QString mkspec = (*it) + QLatin1String("/default");
- QFileInfo default_info(mkspec);
- if(default_info.exists() && default_info.isDir()) {
- qmakespec = mkspec;
- break;
- }
- }
- if(qmakespec.isEmpty()) {
- fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n");
- return false;
- }
- Option::mkfile::qmakespec = qmakespec;
- }
-
- if(QDir::isRelativePath(qmakespec)) {
- if (QFile::exists(Option::output_dir+"/"+qmakespec+"/qmake.conf")) {
- qmakespec = Option::mkfile::qmakespec = QFileInfo(Option::output_dir+"/"+qmakespec).absoluteFilePath();
- } else if (QFile::exists(qmakespec+"/qmake.conf")) {
- Option::mkfile::qmakespec = QFileInfo(Option::mkfile::qmakespec).absoluteFilePath();
- } else {
- bool found_mkspec = false;
- for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
- QString mkspec = (*it) + QLatin1Char('/') + qmakespec;
- if(QFile::exists(mkspec)) {
- found_mkspec = true;
- Option::mkfile::qmakespec = qmakespec = mkspec;
- break;
- }
- }
- if(!found_mkspec) {
- fprintf(stderr, "Could not find mkspecs for your QMAKESPEC(%s) after trying:\n\t%s\n",
- qmakespec.toLatin1().constData(), mkspec_roots.join("\n\t").toLatin1().constData());
- return false;
- }
- }
- }
-
- // parse qmake configuration
+ { // parse mkspec
+ QString qmakespec = Option::mkfile::qmakespec;
while(qmakespec.endsWith(QLatin1Char('/')))
qmakespec.truncate(qmakespec.length()-1);
QString spec = qmakespec + QLatin1String("/qmake.conf");
@@ -1349,6 +1293,10 @@ QMakeProject::read(uchar cmd)
vars = base_vars; // start with the base
+ for (QHash<QString, QStringList>::ConstIterator it = extra_vars.constBegin();
+ it != extra_vars.constEnd(); ++it)
+ vars.insert(it.key(), it.value());
+
if(cmd & ReadFeatures) {
debug_msg(1, "Processing default_pre: %s", vars["CONFIG"].join("::").toLatin1().constData());
doProjectInclude("default_pre", IncludeFlagFeature, vars);
@@ -1360,7 +1308,6 @@ QMakeProject::read(uchar cmd)
//before commandline
if (cmd & ReadSetup) {
- cfile = pfile;
parser.file = "(internal)";
parser.from_file = false;
parser.line_no = 1; //really arg count now.. duh
@@ -1375,12 +1322,12 @@ QMakeProject::read(uchar cmd)
}
}
- //commandline configs
- if ((cmd & ReadSetup) && !Option::user_configs.isEmpty()) {
- parser.file = "(configs)";
+ // After user configs, to override them
+ if (!extra_configs.isEmpty()) {
+ parser.file = "(extra configs)";
parser.from_file = false;
parser.line_no = 1; //really arg count now.. duh
- parse("CONFIG += " + Option::user_configs.join(" "), vars);
+ parse("CONFIG += " + extra_configs.join(" "), vars);
}
if(cmd & ReadProFile) { // parse project file
@@ -1406,12 +1353,14 @@ QMakeProject::read(uchar cmd)
}
}
- //after configs (set in BUILDS)
- if ((cmd & ReadSetup) && !Option::after_user_configs.isEmpty()) {
- parser.file = "(configs)";
+ // Again, to ensure the project does not mess with us.
+ // Specifically, do not allow a project to override debug/release within a
+ // debug_and_release build pass - it's too late for that at this point anyway.
+ if (!extra_configs.isEmpty()) {
+ parser.file = "(extra configs)";
parser.from_file = false;
parser.line_no = 1; //really arg count now.. duh
- parse("CONFIG += " + Option::after_user_configs.join(" "), vars);
+ parse("CONFIG += " + extra_configs.join(" "), vars);
}
if(cmd & ReadFeatures) {
@@ -1437,7 +1386,6 @@ QMakeProject::read(uchar cmd)
break;
}
}
- Option::postProcessProject(this); // let Option post-process
return true;
}
@@ -1487,7 +1435,7 @@ QMakeProject::resolveSpec(QString *spec, const QString &qmakespec)
if (*spec == "default") {
#ifdef Q_OS_UNIX
char buffer[1024];
- int l = readlink(qmakespec.toLatin1(), buffer, 1023);
+ int l = readlink(qmakespec.toLatin1().constData(), buffer, 1023);
if (l != -1) {
buffer[l] = '\0';
*spec = QString::fromLatin1(buffer);
@@ -1685,12 +1633,8 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
if(flags & (IncludeFlagNewProject|IncludeFlagNewParser)) {
// The "project's variables" are used in other places (eg. export()) so it's not
// possible to use "place" everywhere. Instead just set variables and grab them later
- QMakeProject proj(this, &place);
+ QMakeProject proj(prop);
if(flags & IncludeFlagNewParser) {
-#if 1
- if(proj.doProjectInclude("default_pre", IncludeFlagFeature, proj.variables()) == IncludeNoExist)
- proj.doProjectInclude("default", IncludeFlagFeature, proj.variables());
-#endif
parsed = proj.read(file, proj.variables()); // parse just that file (fromfile, infile)
} else {
parsed = proj.read(file); // parse all aux files (load/include into)
@@ -2040,7 +1984,7 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
if(args.count() > 1)
singleLine = (args[1].toLower() == "true");
QString output;
- FILE *proc = QT_POPEN(args[0].toLatin1(), "r");
+ FILE *proc = QT_POPEN(args[0].toLatin1().constData(), "r");
while(proc && !feof(proc)) {
int read_in = int(fread(buff, 1, 255, proc));
if(!read_in)
@@ -3113,19 +3057,19 @@ QStringList &QMakeProject::values(const QString &_var, QHash<QString, QStringLis
place[var] = QStringList(Option::fixPathToTargetOS(
!Option::qmake_abslocation.isEmpty()
? Option::qmake_abslocation
- : QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmake",
+ : QLibraryInfo::location(QLibraryInfo::HostBinariesPath) + "/qmake",
false));
}
#if defined(Q_OS_WIN32) && defined(Q_CC_MSVC)
else if(var.startsWith(QLatin1String("QMAKE_TARGET."))) {
QString ret, type = var.mid(13);
if(type == "arch") {
- QString paths = qgetenv("PATH");
- QString vcBin64 = qgetenv("VCINSTALLDIR");
+ QString paths = QString::fromLocal8Bit(qgetenv("PATH"));
+ QString vcBin64 = QString::fromLocal8Bit(qgetenv("VCINSTALLDIR"));
if (!vcBin64.endsWith('\\'))
vcBin64.append('\\');
vcBin64.append("bin\\amd64");
- QString vcBinX86_64 = qgetenv("VCINSTALLDIR");
+ QString vcBinX86_64 = QString::fromLocal8Bit(qgetenv("VCINSTALLDIR"));
if (!vcBinX86_64.endsWith('\\'))
vcBinX86_64.append('\\');
vcBinX86_64.append("bin\\x86_amd64");
diff --git a/qmake/project.h b/qmake/project.h
index ce90be035f..979f1480bd 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -81,10 +81,11 @@ class QMakeProject
bool recursive;
bool own_prop;
bool backslashWarned;
- QString pfile, cfile;
+ QString pfile;
QMakeProperty *prop;
void reset();
- QHash<QString, QStringList> vars, base_vars;
+ QStringList extra_configs;
+ QHash<QString, QStringList> vars, base_vars, extra_vars;
bool parse(const QString &text, QHash<QString, QStringList> &place, int line_count=1);
enum IncludeStatus {
@@ -105,19 +106,19 @@ class QMakeProject
bool doProjectCheckReqs(const QStringList &deps, QHash<QString, QStringList> &place);
bool doVariableReplace(QString &str, QHash<QString, QStringList> &place);
QStringList doVariableReplaceExpand(const QString &str, QHash<QString, QStringList> &place, bool *ok=0);
- void init(QMakeProperty *, const QHash<QString, QStringList> *);
+ void init(QMakeProperty *);
QStringList &values(const QString &v, QHash<QString, QStringList> &place);
void validateModes();
void resolveSpec(QString *spec, const QString &qmakespec);
public:
- QMakeProject() { init(0, 0); }
- QMakeProject(QMakeProperty *p) { init(p, 0); }
+ QMakeProject(QMakeProperty *p = 0) { init(p); }
QMakeProject(QMakeProject *p, const QHash<QString, QStringList> *nvars=0);
- QMakeProject(const QHash<QString, QStringList> &nvars) { init(0, &nvars); }
- QMakeProject(QMakeProperty *p, const QHash<QString, QStringList> &nvars) { init(p, &nvars); }
~QMakeProject();
+ void setExtraVars(const QHash<QString, QStringList> &_vars) { extra_vars = _vars; }
+ void setExtraConfigs(const QStringList &_cfgs) { extra_configs = _cfgs; }
+
enum { ReadProFile=0x01, ReadSetup=0x02, ReadFeatures=0x04, ReadAll=0xFF };
inline bool parse(const QString &text) { return parse(text, vars); }
bool read(const QString &project, uchar cmd=ReadAll);
diff --git a/qmake/property.cpp b/qmake/property.cpp
index 4221605545..8ed9462c60 100644
--- a/qmake/property.cpp
+++ b/qmake/property.cpp
@@ -49,10 +49,48 @@
QT_BEGIN_NAMESPACE
-QStringList qmake_mkspec_paths(); //project.cpp
+static const struct {
+ const char *name;
+ QLibraryInfo::LibraryLocation loc;
+ bool raw;
+} propList[] = {
+ { "QT_SYSROOT", QLibraryInfo::SysrootPath, true },
+ { "QT_INSTALL_PREFIX", QLibraryInfo::PrefixPath, false },
+ { "QT_INSTALL_DATA", QLibraryInfo::DataPath, false },
+ { "QT_INSTALL_DOCS", QLibraryInfo::DocumentationPath, false },
+ { "QT_INSTALL_HEADERS", QLibraryInfo::HeadersPath, false },
+ { "QT_INSTALL_LIBS", QLibraryInfo::LibrariesPath, false },
+ { "QT_INSTALL_BINS", QLibraryInfo::BinariesPath, false },
+ { "QT_INSTALL_TESTS", QLibraryInfo::TestsPath, false },
+ { "QT_INSTALL_PLUGINS", QLibraryInfo::PluginsPath, false },
+ { "QT_INSTALL_IMPORTS", QLibraryInfo::ImportsPath, false },
+ { "QT_INSTALL_TRANSLATIONS", QLibraryInfo::TranslationsPath, false },
+ { "QT_INSTALL_CONFIGURATION", QLibraryInfo::SettingsPath, false },
+ { "QT_INSTALL_EXAMPLES", QLibraryInfo::ExamplesPath, false },
+ { "QT_INSTALL_DEMOS", QLibraryInfo::ExamplesPath, false }, // Just backwards compat
+ { "QT_RAW_INSTALL_PREFIX", QLibraryInfo::PrefixPath, true },
+ { "QT_RAW_INSTALL_DATA", QLibraryInfo::DataPath, true },
+ { "QT_RAW_INSTALL_DOCS", QLibraryInfo::DocumentationPath, true },
+ { "QT_RAW_INSTALL_HEADERS", QLibraryInfo::HeadersPath, true },
+ { "QT_RAW_INSTALL_LIBS", QLibraryInfo::LibrariesPath, true },
+ { "QT_RAW_INSTALL_BINS", QLibraryInfo::BinariesPath, true },
+ { "QT_RAW_INSTALL_TESTS", QLibraryInfo::TestsPath, true },
+ { "QT_RAW_INSTALL_PLUGINS", QLibraryInfo::PluginsPath, true },
+ { "QT_RAW_INSTALL_IMPORTS", QLibraryInfo::ImportsPath, true },
+ { "QT_RAW_INSTALL_TRANSLATIONS", QLibraryInfo::TranslationsPath, true },
+ { "QT_RAW_INSTALL_CONFIGURATION", QLibraryInfo::SettingsPath, true },
+ { "QT_RAW_INSTALL_EXAMPLES", QLibraryInfo::ExamplesPath, true },
+ { "QT_HOST_PREFIX", QLibraryInfo::HostPrefixPath, true },
+ { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true },
+ { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true },
+};
QMakeProperty::QMakeProperty() : settings(0)
{
+ for (int i = 0; i < sizeof(propList)/sizeof(propList[0]); i++)
+ m_values[QString::fromLatin1(propList[i].name)] = propList[i].raw
+ ? QLibraryInfo::rawLocation(propList[i].loc)
+ : QLibraryInfo::location(propList[i].loc);
}
QMakeProperty::~QMakeProperty()
@@ -80,34 +118,11 @@ QMakeProperty::keyBase(bool version) const
QString
QMakeProperty::value(QString v, bool just_check)
{
- if(v == "QT_INSTALL_PREFIX")
- return QLibraryInfo::location(QLibraryInfo::PrefixPath);
- else if(v == "QT_INSTALL_DATA")
- return QLibraryInfo::location(QLibraryInfo::DataPath);
- else if(v == "QT_INSTALL_DOCS")
- return QLibraryInfo::location(QLibraryInfo::DocumentationPath);
- else if(v == "QT_INSTALL_HEADERS")
- return QLibraryInfo::location(QLibraryInfo::HeadersPath);
- else if(v == "QT_INSTALL_LIBS")
- return QLibraryInfo::location(QLibraryInfo::LibrariesPath);
- else if(v == "QT_INSTALL_BINS")
- return QLibraryInfo::location(QLibraryInfo::BinariesPath);
- else if(v == "QT_INSTALL_TESTS")
- return QLibraryInfo::location(QLibraryInfo::TestsPath);
- else if(v == "QT_INSTALL_PLUGINS")
- return QLibraryInfo::location(QLibraryInfo::PluginsPath);
- else if(v == "QT_INSTALL_IMPORTS")
- return QLibraryInfo::location(QLibraryInfo::ImportsPath);
- else if(v == "QT_INSTALL_TRANSLATIONS")
- return QLibraryInfo::location(QLibraryInfo::TranslationsPath);
- else if(v == "QT_INSTALL_CONFIGURATION")
- return QLibraryInfo::location(QLibraryInfo::SettingsPath);
- else if(v == "QT_INSTALL_EXAMPLES")
- return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
- else if(v == "QT_INSTALL_DEMOS")
- return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
+ QString val = m_values.value(v);
+ if (!val.isNull())
+ return val;
else if(v == "QMAKE_MKSPECS")
- return qmake_mkspec_paths().join(Option::dirlist_sep);
+ return Option::mkspecPaths().join(Option::dirlist_sep);
else if(v == "QMAKE_VERSION")
return qmake_version();
#ifdef QT_VERSION_STR
@@ -194,19 +209,8 @@ QMakeProperty::exec()
}
}
QStringList specialProps;
- specialProps.append("QT_INSTALL_PREFIX");
- specialProps.append("QT_INSTALL_DATA");
- specialProps.append("QT_INSTALL_DOCS");
- specialProps.append("QT_INSTALL_HEADERS");
- specialProps.append("QT_INSTALL_LIBS");
- specialProps.append("QT_INSTALL_BINS");
- specialProps.append("QT_INSTALL_TESTS");
- specialProps.append("QT_INSTALL_PLUGINS");
- specialProps.append("QT_INSTALL_IMPORTS");
- specialProps.append("QT_INSTALL_TRANSLATIONS");
- specialProps.append("QT_INSTALL_CONFIGURATION");
- specialProps.append("QT_INSTALL_EXAMPLES");
- specialProps.append("QT_INSTALL_DEMOS");
+ for (int i = 0; i < sizeof(propList)/sizeof(propList[0]); i++)
+ specialProps.append(QString::fromLatin1(propList[i].name));
specialProps.append("QMAKE_MKSPECS");
specialProps.append("QMAKE_VERSION");
#ifdef QT_VERSION_STR
diff --git a/qmake/property.h b/qmake/property.h
index d67d0ad09d..6195e482fb 100644
--- a/qmake/property.h
+++ b/qmake/property.h
@@ -44,6 +44,7 @@
#include <qglobal.h>
#include <qstring.h>
+#include <qhash.h>
QT_BEGIN_NAMESPACE
@@ -55,6 +56,9 @@ class QMakeProperty
void initSettings();
QString keyBase(bool =true) const;
QString value(QString, bool just_check);
+
+ QHash<QString, QString> m_values;
+
public:
QMakeProperty();
~QMakeProperty();
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index abb073c48e..dda03d43b8 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -42,6 +42,7 @@ bootstrap { #Qt code
qdatetime.cpp \
qdir.cpp \
qdiriterator.cpp \
+ qfiledevice.cpp \
qfile.cpp \
qabstractfileengine.cpp \
qfileinfo.cpp \