| From d25e8cea94e811159605490e7b383521024c563b 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 074/N] 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 | 29 ++++++++++++++++++++++++----- |
| configure.ac | 10 ++++++++++ |
| 2 files changed, 34 insertions(+), 5 deletions(-) |
| |
| diff --git a/Makefile.pre.in b/Makefile.pre.in |
| index 126131c..7c1a775 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,24 @@ 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) |
| |
| +pythonnt_rc.h: |
| + @echo '#define PYTHON_DLL_NAME "$(DLLLIBRARY)"' >> $@ |
| + |
| +python_exe.o: pythonnt_rc.h $(srcdir)/PC/python_exe.rc |
| + $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/python_exe.rc $@ |
| + |
| +pythonw_exe.o: pythonnt_rc.h $(srcdir)/PC/pythonw_exe.rc |
| + $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/pythonw_exe.rc $@ |
| + |
| +python_nt.o: pythonnt_rc.h $(srcdir)/PC/python_nt.rc |
| + $(WINDRES) $(RCFLAGS) -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 +726,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 +1343,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 25aecf9..cea888c 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -1350,6 +1350,9 @@ fi |
| |
| AC_MSG_RESULT($LDLIBRARY) |
| |
| +AC_SUBST(WINDRES) |
| +AC_CHECK_TOOL(WINDRES, windres) |
| + |
| AC_SUBST(AR) |
| AC_CHECK_TOOLS(AR, ar aal, ar) |
| |
| @@ -5870,10 +5873,17 @@ AC_MSG_RESULT(done) |
| case $host in |
| *-*-mingw*) |
| LIBS="$LIBS -lversion -lshlwapi -lpathcch" |
| + RCFLAGS="$RCFLAGS -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.32.0 |
| |