summarylogtreecommitdiffstats
path: root/0062-build-link-win-resource-files-and-build-pythonw.patch
diff options
context:
space:
mode:
Diffstat (limited to '0062-build-link-win-resource-files-and-build-pythonw.patch')
-rw-r--r--0062-build-link-win-resource-files-and-build-pythonw.patch147
1 files changed, 147 insertions, 0 deletions
diff --git a/0062-build-link-win-resource-files-and-build-pythonw.patch b/0062-build-link-win-resource-files-and-build-pythonw.patch
new file mode 100644
index 000000000000..afd02349ff36
--- /dev/null
+++ b/0062-build-link-win-resource-files-and-build-pythonw.patch
@@ -0,0 +1,147 @@
+From 17ac3e7063af45b116396303f85be4eb95f0e9d9 Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Thu, 17 Jun 2021 18:52:16 +0530
+Subject: [PATCH 062/N] build: link win resource files and build pythonw
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Co-authored-by: Алексей <alexey.pawlow@gmail.com>
+---
+ Makefile.pre.in | 26 +++++++++++++++++++++-----
+ configure.ac | 26 ++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index e351cae..afeee0e 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -38,6 +38,7 @@ CXX= @CXX@
+ MAINCC= @MAINCC@
+ LINKCC= @LINKCC@
+ AR= @AR@
++WINDRES= @WINDRES@
+ READELF= @READELF@
+ SOABI= @SOABI@
+ LDVERSION= @LDVERSION@
+@@ -119,6 +120,7 @@ PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+ PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+ # Strict or non-strict aliasing flags used to compile dtoa.c, see above
+ CFLAGS_ALIASING=@CFLAGS_ALIASING@
++RCFLAGS=@RCFLAGS@
+
+
+ # Machine-dependent subdirectories
+@@ -260,6 +262,7 @@ LIBOBJS= @LIBOBJS@
+
+ PYTHON= python$(EXE)
+ BUILDPYTHON= python$(BUILDEXE)
++BUILDPYTHONW= pythonw$(BUILDEXE)
+
+ PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@
+ UPDATE_FILE=@PYTHON_FOR_REGEN@ $(srcdir)/Tools/scripts/update_file.py
+@@ -482,7 +485,7 @@ DTRACE_DEPS = \
+
+ # Default target
+ all: @DEF_MAKE_ALL_RULE@
+-build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
++build_all: check-clean-src $(BUILDPYTHON) $(BUILDPYTHONW) oldsharedmods sharedmods gdbhooks \
+ Programs/_testembed python-config
+
+ # Check that the source is clean when building out of source.
+@@ -596,9 +599,21 @@ coverage-report: regen-grammar regen-token regen-importlib
+ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+ $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
+
++python_exe.o: $(srcdir)/PC/python_exe.rc
++ $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/python_exe.rc $@
++
++pythonw_exe.o: $(srcdir)/PC/pythonw_exe.rc
++ $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/pythonw_exe.rc $@
++
++python_nt.o: $(srcdir)/PC/python_nt.rc
++ $(WINDRES) $(RCFLAGS) -DORIGINAL_FILENAME=\\\"$(DLLLIBRARY)\\\" -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/python_nt.rc $@
++
++$(BUILDPYTHONW): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) pythonw_exe.o
++ $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -mwindows -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) pythonw_exe.o
++
+ # Build the interpreter
+-$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+- $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
++$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) python_exe.o
++ $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) python_exe.o
+
+ platform: $(BUILDPYTHON) pybuilddir.txt
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+@@ -708,10 +723,10 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+
+ # This rule builds the Cygwin Python DLL and import library if configured
+ # for a shared core library; otherwise, this rule is a noop.
+-$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
++$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) python_nt.o
+ if test -n "$(DLLLIBRARY)"; then \
+ $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+- $(LIBS) $(MODLIBS) $(SYSLIBS); \
++ $(LIBS) $(MODLIBS) $(SYSLIBS) python_nt.o; \
+ else true; \
+ fi
+
+@@ -1325,6 +1340,7 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@
+ done
+ if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
++ $(INSTALL_PROGRAM) $(BUILDPYTHONW) $(DESTDIR)$(BINDIR)/python3w$(EXE); \
+ else \
+ $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+ fi
+diff --git a/configure.ac b/configure.ac
+index 4316338..be8ede9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1343,6 +1343,9 @@ fi
+
+ AC_MSG_RESULT($LDLIBRARY)
+
++AC_SUBST(WINDRES)
++AC_CHECK_TOOL(WINDRES, windres)
++
+ AC_SUBST(AR)
+ AC_CHECK_TOOLS(AR, ar aal, ar)
+
+@@ -5865,10 +5868,33 @@ AC_MSG_RESULT(done)
+ case $host in
+ *-*-mingw*)
+ LIBS="$LIBS -lversion -lshlwapi -lpathcch"
++ AC_PROG_AWK
++ if test "$AWK" = "gawk"; then
++ awk_extra_flag="--non-decimal-data"
++ fi
++ AC_MSG_CHECKING([FIELD3])
++ FIELD3=$($AWK $awk_extra_flag '\
++ /^#define PY_RELEASE_LEVEL_/ {levels[$2]=$3} \
++ /^#define PY_MICRO_VERSION[[:space:]]+/ {micro=$3} \
++ /^#define PY_RELEASE_LEVEL[[:space:]]+/ {level=levels[$3]} \
++ /^#define PY_RELEASE_SERIAL[[:space:]]+/ {serial=$3} \
++ END {print micro * 1000 + level * 10 + serial}' \
++ $srcdir/Include/patchlevel.h
++ )
++
++ AC_MSG_RESULT([${FIELD3}])
++ RCFLAGS="$RCFLAGS -DFIELD3=$FIELD3 -O COFF"
++
++ case $host in
++ i686*) RCFLAGS="$RCFLAGS --target=pe-i386" ;;
++ x86_64*) RCFLAGS="$RCFLAGS --target=pe-x86-64" ;;
++ *) ;;
++ esac
+ ;;
+ *)
+ ;;
+ esac
++AC_SUBST(RCFLAGS)
+
+ # Availability of -O2:
+ AC_MSG_CHECKING(for -O2)
+--
+2.33.0
+