1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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
|