summaryrefslogtreecommitdiffstats
path: root/Makefile.pre.in
diff options
context:
space:
mode:
authorNed Deily <nad@python.org>2020-05-18 13:17:22 (GMT)
committerGitHub <noreply@github.com>2020-05-18 13:17:22 (GMT)
commit0da546665075aefbb476e192ed64122d340164f4 (patch)
tree7b8ab1370800158880c8bbd210ac36956c768ad7 /Makefile.pre.in
parentc444108dd62672f2b41539bcc8f15da44501f405 (diff)
downloadcpython-0da546665075aefbb476e192ed64122d340164f4.zip
cpython-0da546665075aefbb476e192ed64122d340164f4.tar.gz
cpython-0da546665075aefbb476e192ed64122d340164f4.tar.bz2
bpo-26317: Support OBJC and OBJCXX configure command line variables (GH-20176)
Add support to the configure script for OBJC and OBJCXX command line options so that the macOS builds can use the clang compiler for the macOS-specific Objective C source files. This allows third-party compilers, like GNU gcc, to be used to build the rest of the project since some of the Objective C system header files are not compilable by GNU gcc. Co-authored-by: Jeffrey Kintscher <websurfer@surf2c.net> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Diffstat (limited to 'Makefile.pre.in')
-rw-r--r--Makefile.pre.in13
1 files changed, 12 insertions, 1 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index dbfd805..339cbfd 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -35,6 +35,7 @@ abs_builddir= @abs_builddir@
CC= @CC@
CXX= @CXX@
+OBJC= @OBJC@
MAINCC= @MAINCC@
LINKCC= @LINKCC@
AR= @AR@
@@ -613,12 +614,22 @@ $(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl
$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+# _scproxy.o needs to be built outside of setup.py so that we can force
+# the use of the OBJC compiler when the CC compiler is different. For
+# example, it allows _scproxy.c to be compiled using the clang compiler
+# while the rest of the project uses the GNU C compiler.
+#
+# see issue #26317 for details
+@SCPROXY@Modules/_scproxy.o: $(srcdir)/Modules/_scproxy.c $(srcdir)/Include/Python.h
+@SCPROXY@ $(OBJC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $<
+@NOSCPROXY@.PHONY: Modules/_scproxy.o
+
# Build the shared modules
# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
# -s, --silent or --quiet is always the first char.
# Under BSD make, MAKEFLAGS might be " -s -v x=y".
# Ignore macros passed by GNU make, passed after --
-sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
+sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o Modules/_scproxy.o
@case "`echo X $$MAKEFLAGS | sed 's/^X //;s/ -- .*//'`" in \
*\ -s*|s*) quiet="-q";; \
*) quiet="";; \