summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-01-03 16:40:30 +0100
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-01-06 20:09:08 +0000
commit52d64fca662d0e488801fc40dffdc0a732cfdbd5 (patch)
treef50f35fa5df16dca9e43ac95d23cb7c39422dd5d /qmake
parent17b6967f6811cb3adeb8c7eb79a422d2c10ee0d1 (diff)
revert to building qmake with qconfig.cpp
turns out that just appending builtin-qt.conf isn't a good idea: executable-editing tools (objcopy, prelink, etc.) will happily drop the "attachment". a safe method would be adding a proper section to the executable, but there doesn't appear to be an objcopy equivalent in msvc, and using entirely different methods of embedding the file with different toolchains seems like a rather bad idea. so instead go back to the old method of building qmake with a generated qconfig.cpp. of course, as said file is now created by qmake itself, we have to compile qlibraryinfo.cpp a second time, and link a second qmake executable. Task-number: QTBUG-57803 Change-Id: I9e232693550aa870cec154e49cc06add13017cc2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/Makefile.unix16
-rw-r--r--qmake/Makefile.win3221
-rw-r--r--qmake/option.cpp5
-rw-r--r--qmake/qmake-aux.pro8
4 files changed, 31 insertions, 19 deletions
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 72431f51ea..8eb54f554e 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -16,7 +16,7 @@ QOBJS=qtextcodec.o qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtext
qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \
qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o \
qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o \
- qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o \
+ qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o \
qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o \
qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o \
qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o \
@@ -109,19 +109,24 @@ LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS)
first all: $(BUILD_PATH)/bin/qmake$(EXEEXT)
qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT)
+binary: $(BUILD_PATH)/qmake/qmake$(EXEEXT)
-$(BUILD_PATH)/bin/qmake$(EXEEXT): $(OBJS) $(QOBJS)
- $(CXX) -o "$@" $(OBJS) $(QOBJS) $(LFLAGS)
+$(BUILD_PATH)/bin/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo.o
+ $(CXX) -o "$@" $(OBJS) $(QOBJS) qlibraryinfo.o $(LFLAGS)
+
+$(BUILD_PATH)/qmake/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo_final.o
+ $(CXX) -o "$@" $(OBJS) $(QOBJS) qlibraryinfo_final.o $(LFLAGS)
Makefile: $(SOURCE_PATH)/qmake/Makefile.unix
@echo "Out of date, please rerun configure"
clean::
- $(RM_F) $(OBJS) $(QOBJS)
+ $(RM_F) $(OBJS) $(QOBJS) qlibraryinfo.o qlibraryinfo_final.o
distclean:: clean
$(RM_RF) .deps
$(RM_F) $(BUILD_PATH)/bin/qmake$(EXEEXT)
+ $(RM_F) $(BUILD_PATH)/qmake/qmake$(EXEEXT)
$(RM_F) Makefile
depend:
@@ -227,6 +232,9 @@ qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) -DQT_BUILD_QMAKE_BOOTSTRAP $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
+
+qlibraryinfo_final.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(BUILD_PATH)/src/corelib/global/qconfig.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 9e1f5136ef..c2e32dfc20 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -108,7 +108,6 @@ QTOBJS= \
quuid.obj \
qvector.obj \
qsettings.obj \
- qlibraryinfo.obj \
qvariant.obj \
qsettings_win.obj \
qmetatype.obj \
@@ -124,12 +123,16 @@ QTOBJS= \
qjsonvalue.obj
first all: $(BUILD_PATH)\bin\qmake.exe
+binary: $(BUILD_PATH)\qmake\qmake.exe
-$(BUILD_PATH)\bin\qmake.exe: $(OBJS) $(QTOBJS)
- $(LINKER) $(LFLAGS) /OUT:$(BUILD_PATH)\bin\qmake.exe $(OBJS) $(QTOBJS) $(PCH_OBJECT) $(LIBS)
+$(BUILD_PATH)\bin\qmake.exe: $(OBJS) $(QTOBJS) qlibraryinfo.obj
+ $(LINKER) $(LFLAGS) /OUT:$(BUILD_PATH)\bin\qmake.exe $(OBJS) $(QTOBJS) qlibraryinfo.obj $(PCH_OBJECT) $(LIBS)
+
+$(BUILD_PATH)\qmake\qmake.exe: $(OBJS) $(QTOBJS) qlibraryinfo_final.obj
+ $(LINKER) $(LFLAGS) /OUT:$(BUILD_PATH)\qmake\qmake.exe $(OBJS) $(QTOBJS) qlibraryinfo_final.obj $(PCH_OBJECT) $(LIBS)
clean::
- -del $(QTOBJS)
+ -del $(QTOBJS) qlibraryinfo.obj qlibraryinfo_final.obj
-del $(OBJS)
-del qmake_pch.obj
-del qmake_pch.pch
@@ -139,6 +142,7 @@ clean::
distclean:: clean
-del $(BUILD_PATH)\bin\qmake.exe
+ -del $(BUILD_PATH)\qmake\qmake.exe
-del Makefile
.cpp.obj:
@@ -148,6 +152,9 @@ $(OBJS): $(PCH_OBJECT)
$(QTOBJS): $(PCH_OBJECT)
+qlibraryinfo.obj: $(PCH_OBJECT)
+qlibraryinfo_final.obj: $(PCH_OBJECT)
+
qmake_pch.obj:
$(CXX) $(CXXFLAGS_BARE) -c -Yc -Fpqmake_pch.pch -TP $(QMKSRC)\qmake_pch.h
@@ -199,3 +206,9 @@ qmake_pch.obj:
# Make sure qstring_compat.obj isn't compiled with PCH enabled
qstring_compat.obj: $(SOURCE_PATH)\src\corelib\tools\qstring_compat.cpp
$(CXX) -c $(CXXFLAGS_BARE) $(SOURCE_PATH)\src\corelib\tools\qstring_compat.cpp
+
+qlibraryinfo.obj: $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp
+ $(CXX) $(CXXFLAGS) -DQT_BUILD_QMAKE_BOOTSTRAP $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp
+
+qlibraryinfo_final.obj: $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp $(BUILD_PATH)\src\corelib\global\qconfig.cpp
+ $(CXX) $(CXXFLAGS) -Foqlibraryinfo_final.obj $(SOURCE_PATH)\src\corelib\global\qlibraryinfo.cpp
diff --git a/qmake/option.cpp b/qmake/option.cpp
index b8102ecf06..fb49f5a100 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -638,11 +638,6 @@ qmakeAddCacheClear(qmakeCacheClearFunc func, void **data)
cache_items.append(new QMakeCacheClearItem(func, data));
}
-QString qmake_absoluteLocation()
-{
- return Option::globals->qmake_abslocation;
-}
-
QString qmake_libraryInfoFile()
{
if (!Option::globals->qtconf.isEmpty())
diff --git a/qmake/qmake-aux.pro b/qmake/qmake-aux.pro
index 357ebc7367..f432fab05d 100644
--- a/qmake/qmake-aux.pro
+++ b/qmake/qmake-aux.pro
@@ -9,14 +9,10 @@ win32: EXTENSION = .exe
!build_pass {
qmake_exe.target = $$OUT_PWD/qmake$$EXTENSION
- qmake_exe.depends = ../bin/qmake$$EXTENSION builtin-qt.conf
- equals(QMAKE_DIR_SEP, /): \
- qmake_exe.commands = cat ../bin/qmake$$EXTENSION builtin-qt.conf > qmake$$EXTENSION && chmod +x qmake$$EXTENSION
- else: \
- qmake_exe.commands = copy /B ..\bin\qmake$$EXTENSION + builtin-qt.conf qmake$$EXTENSION
+ qmake_exe.commands = $(MAKE) binary
+ qmake_exe.CONFIG = phony
QMAKE_EXTRA_TARGETS += qmake_exe
- QMAKE_CLEAN += builtin-qt.conf
QMAKE_DISTCLEAN += qmake$$EXTENSION
first.depends += qmake_exe