Skip to content

Commit

Permalink
Remove qmake-related code from configure
Browse files Browse the repository at this point in the history
This leaves a very simple script that delegates the heavy configure work
to a CMake script.

This also removes the Makefile templates that were used for
bootstrapping qmake.

Task-number: QTBUG-88742
Change-Id: Iab9c477e0bb611d680bda2cf8aaa7ad88356a8d1
Reviewed-by: Kai Koehne <[email protected]>
  • Loading branch information
jobor committed Dec 21, 2020
1 parent ec7eb1e commit 31396f0
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 1,833 deletions.
712 changes: 21 additions & 691 deletions configure

Large diffs are not rendered by default.

204 changes: 2 additions & 202 deletions configure.bat
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,6 @@ set QTSRC=%~dp0
set QTSRC=%QTSRC:~0,-1%
set QTDIR=%CD%

rem Make sure qmake is not confused by these. Recursion via Makefiles would
rem be still affected, so just unsetting them here is not an option.
if not "%QMAKESPEC%" == "" goto envfail
if not "%XQMAKESPEC%" == "" goto envfail
if not "%QMAKEPATH%" == "" goto envfail
if not "%QMAKEFEATURES%" == "" goto envfail
goto envok
:envfail
echo >&2 Please make sure to unset the QMAKESPEC, XQMAKESPEC, QMAKEPATH,
echo >&2 and QMAKEFEATURES environment variables prior to building Qt.
exit /b 1
:envok

rem Parse command line

set TOPLEVEL=false
Expand Down Expand Up @@ -88,15 +75,6 @@ goto doneargs
if /i "%~1" == "-redo" goto redo
if /i "%~1" == "--redo" goto redo

if /i "%~1" == "-platform" goto platform
if /i "%~1" == "--platform" goto platform

if /i "%~1" == "-no-syncqt" goto nosyncqt
if /i "%~1" == "--no-syncqt" goto nosyncqt

if /i "%~1" == "-make-tool" goto maketool
if /i "%~1" == "--make-tool" goto maketool

if /i "%~1" == "-cmake" goto cmake
if /i "%~1" == "--cmake" goto cmake

Expand Down Expand Up @@ -130,193 +108,15 @@ goto doneargs
echo No config.opt present - cannot redo configuration. >&2
exit /b 1

:platform
shift
set PLATFORM=%~1
if "%PLATFORM:~0,10%" == "win32-msvc" goto msvc
goto nextarg
:msvc
echo. >&2
echo Notice: re-mapping requested qmake spec to unified 'win32-msvc'. >&2
echo. >&2
set PLATFORM=win32-msvc
goto nextarg

:nosyncqt
set SYNCQT=false
goto nextarg

:maketool
shift
set MAKE=%~1
goto nextarg

:cmake
set CMAKE=true
goto nextarg

:qmake
set CMAKE=false
goto nextarg

:doneargs

if "%CMAKE%" == "true" goto cmake

echo ERROR: You cannot configure Qt 6 with qmake anymore. Please configure with -cmake instead. >&2
exit /b 1

rem Find various executables
for %%C in (clang-cl.exe clang.exe cl.exe icl.exe g++.exe perl.exe jom.exe) do set %%C=%%~$PATH:C

rem Determine host spec

if "%PLATFORM%" == "" (
if not "%icl.exe%" == "" (
set PLATFORM=win32-icc
) else if not "%cl.exe%" == "" (
set PLATFORM=win32-msvc
) else if not "%clang-cl.exe%" == "" (
set PLATFORM=win32-clang-msvc
) else if not "%clang.exe%" == "" (
set PLATFORM=win32-clang-g++
) else if not "%g++.exe%" == "" (
set PLATFORM=win32-g++
) else (
echo Cannot detect host toolchain. Please use -platform. Aborting. >&2
exit /b 1
)
)
if not exist "%QTSRC%\mkspecs\%PLATFORM%\qmake.conf" (
echo Host platform '%PLATFORM%' is invalid. Aborting. >&2
echo ERROR: You cannot configure Qt 6 with qmake anymore. >&2
exit /b 1
)
if "%PLATFORM:g++=%" == "%PLATFORM%" (
if "%MAKE%" == "" (
if not "%jom.exe%" == "" (
set MAKE=jom
) else (
set MAKE=nmake
)
)
set tmpl=win32
) else (
if "%MAKE%" == "" (
set MAKE=mingw32-make
)
set tmpl=unix
)

rem Prepare build dir

if not exist mkspecs (
md mkspecs
if errorlevel 1 exit /b
)
if not exist bin (
md bin
if errorlevel 1 exit /b
)
if not exist qmake (
md qmake
if errorlevel 1 exit /b
)

rem Extract Qt's version from .qmake.conf
for /f "eol=# tokens=1,2,3,4 delims=.= " %%i in (%QTSRC%\.qmake.conf) do (
if %%i == MODULE_VERSION (
set QTVERMAJ=%%j
set QTVERMIN=%%k
set QTVERPAT=%%l
)
)
set QTVERSION=%QTVERMAJ%.%QTVERMIN%.%QTVERPAT%

rem Create forwarding headers

if "%SYNCQT%" == "" (
if exist "%QTSRC%\.git" (
set SYNCQT=true
) else (
set SYNCQT=false
)
)
if "%SYNCQT%" == "true" (
if not "%perl.exe%" == "" (
echo Running syncqt ...
"%perl.exe%" -w "%QTSRC%\bin\syncqt.pl" -minimal -version %QTVERSION% -module QtCore -outdir "%QTDIR%" %QTSRC%
if errorlevel 1 exit /b
) else (
echo Perl not found in PATH. Aborting. >&2
exit /b 1
)
)

rem Build qmake

echo Bootstrapping qmake ...

cd qmake
if errorlevel 1 exit /b

echo #### Generated by configure.bat - DO NOT EDIT! ####> Makefile
echo/>> Makefile
echo BUILD_PATH = ..>> Makefile
if "%tmpl%" == "win32" (
echo SOURCE_PATH = %QTSRC%>> Makefile
) else (
echo SOURCE_PATH = %QTSRC:\=/%>> Makefile
)
if exist "%QTSRC%\.git" (
echo INC_PATH = ../include>> Makefile
) else (
echo INC_PATH = $^(SOURCE_PATH^)/include>> Makefile
)
echo QT_VERSION = %QTVERSION%>> Makefile
rem These must have trailing spaces to avoid misinterpretation as 5>>, etc.
echo QT_MAJOR_VERSION = %QTVERMAJ% >> Makefile
echo QT_MINOR_VERSION = %QTVERMIN% >> Makefile
echo QT_PATCH_VERSION = %QTVERPAT% >> Makefile
if "%tmpl%" == "win32" (
echo QMAKESPEC = %PLATFORM%>> Makefile
) else (
echo QMAKESPEC = $^(SOURCE_PATH^)/mkspecs/%PLATFORM%>> Makefile
echo CONFIG_CXXFLAGS = -std=c++17 -ffunction-sections>> Makefile
echo CONFIG_LFLAGS = -Wl,--gc-sections>> Makefile
type "%QTSRC%\qmake\Makefile.unix.win32" >> Makefile
type "%QTSRC%\qmake\Makefile.unix.mingw" >> Makefile
)
echo/>> Makefile
type "%QTSRC%\qmake\Makefile.%tmpl%" >> Makefile

%MAKE%
if errorlevel 1 (cd .. & exit /b 1)

cd ..

rem Generate qt.conf

> "%QTDIR%\bin\qt.conf" (
@echo [EffectivePaths]
@echo Prefix=..
@echo [Paths]
@echo TargetSpec=dummy
@echo HostSpec=%PLATFORM%
)
if not "%QTDIR%" == "%QTSRC%" (
>> "%QTDIR%\bin\qt.conf" (
@echo [EffectiveSourcePaths]
@echo Prefix=%QTSRC:\=/%
)
)

rem Launch qmake-based configure

cd "%TOPQTDIR%"
"%QTDIR%\bin\qmake.exe" "%TOPQTSRC%" -- %ARGS%
goto :eof
:doneargs

:cmake
cd "%TOPQTDIR%"

rem Write config.opt if we're not currently -redo'ing
Expand Down
Loading

0 comments on commit 31396f0

Please sign in to comment.