@@ -83,16 +83,18 @@ ARFLAGS= crs
8383IMPLIB = emximp
8484EXPLIB = emxexp
8585EXEOPT = emxbind
86+ PY_DEF = -DPy_BUILD_CORE
8687
8788
8889# adjust C compiler settings based on build options
8990ifeq ($(MODE ) ,debug)
9091 CFLAGS+ = -g -O
9192 LDFLAGS+ = -g
9293else
93- CFLAGS+ = -s -O2
94+ CFLAGS+ = -s -O2 -fomit-frame-pointer
9495 LDFLAGS+ = -s
9596endif
97+ CFLAGS+ = $(PY_DEF )
9698ifeq ($(ASSERTIONS ) ,no)
9799 CFLAGS+ = -DNDEBUG
98100endif
@@ -474,12 +476,16 @@ EXTERNDLLS+= $(addsuffix $(MODULE.EXT),$(patsubst %module,%,$(HARDEXTMODULES)))
474476
475477# Targets
476478all : $(OUT ) $(PYTHON.LIB ) $(PYTHON.DEF ) $(PYTHON.IMPLIB ) $(PYTHON.DLL ) \
477- $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) $(EXTERNDLLS)
479+ python_noncore
480+
481+ python_noncore :
482+ make PY_DEF= $(PYTHON.EXE ) $(PYTHONPM.EXE ) $(PGEN.EXE ) $(EXTERNDLLS )
478483
479484clean :
480485 rm -f $(OUT ) *
481486 rm -f $(PYTHON.LIB ) $(PYTHON.IMPLIB ) $(PYTHON.EXEIMP ) $(PYTHON.DLL ) \
482487 $(PYTHON.EXE ) $(PYTHONPM.EXE ) $(PGEN.EXE ) * $(MODULE.EXT )
488+ find ../../Lib -name " *.py[co]" -exec rm {} " ;"
483489
484490lx :
485491 @echo Packing everything with lxLite...
@@ -498,14 +504,39 @@ $(PYTHON.LIB): $(OBJ.LIB)
498504 rm.exe -f $@
499505 $(AR ) $(ARFLAGS ) $@ $^
500506
507+ # the Python core DLL .def file needs to have a number of non-static
508+ # symbols that aren't part of the Python C API removed (commented out)
509+ # from the DLL export list.
501510$(PYTHON.DEF ) : $(PYTHON.LIB )
502511 @echo Creating .DEF file: $@
503512 @echo LIBRARY $(PYTHON_LIB ) INITINSTANCE TERMINSTANCE > $@
504513 @echo DESCRIPTION $(DQUOTE ) Python $(PYTHON_VER ) Core DLL$(DQUOTE ) >> $@
505514 @echo PROTMODE >> $@
506515 @echo DATA MULTIPLE NONSHARED >> $@
507516 @echo EXPORTS >> $@
508- $(EXPLIB ) -u $(PYTHON.LIB ) >> $@
517+ $(EXPLIB ) -u $(PYTHON.LIB ) | \
518+ sed -e " / .init.*/s/^ /; /" \
519+ -e " / .pcre_.*/s/^ /; /" \
520+ -e " / .array_methods/s/^ /; /" \
521+ -e " / .fast_save_leave/s/^ /; /" \
522+ -e " / .dlopen/s/^ /; /" \
523+ -e " / .dlsym/s/^ /; /" \
524+ -e " / .dlclose/s/^ /; /" \
525+ -e " / .dlerror/s/^ /; /" \
526+ -e " / .cycle_type/s/^ /; /" \
527+ -e " / .dropwhile_type/s/^ /; /" \
528+ -e " / .takewhile_type/s/^ /; /" \
529+ -e " / .islice_type/s/^ /; /" \
530+ -e " / .starmap_type/s/^ /; /" \
531+ -e " / .imap_type/s/^ /; /" \
532+ -e " / .chain_type/s/^ /; /" \
533+ -e " / .ifilter_type/s/^ /; /" \
534+ -e " / .ifilterfalse_type/s/^ /; /" \
535+ -e " / .count_type/s/^ /; /" \
536+ -e " / .izip_type/s/^ /; /" \
537+ -e " / .repeat_type/s/^ /; /" \
538+ -e " / ._Py_re_.*/s/^ /; /" \
539+ -e " / ._Py_MD5.*/s/^ /; /" >> $@
509540
510541$(PYTHON.IMPLIB ) : $(PYTHON.DEF )
511542 $(IMPLIB ) -o $@ $^
@@ -627,7 +658,7 @@ readline$(MODULE.EXT): $(OUT)readline$O $(OUT)readline_m.def $(PYTHON.IMPLIB)
627658
628659# _tkinter$(MODULE.EXT): $(OUT)_tkinter$O $(OUT)tclNotify$O $(OUT)tkappinit$O
629660_tkinter$(MODULE.EXT ) : $(OUT ) _tkinter$O $(OUT ) tclNotify$O \
630- $(OUT)_tkinter_m.def $(PYTHON.IMPLIB)
661+ $(OUT ) _tkinter_m.def $(PYTHON.IMPLIB )
631662 $(LD ) $(LDFLAGS.DLL ) -o $@ $(^^ ) $(L^ ) $(LIBS ) $(TK_LIBS )
632663
633664zlib$(MODULE.EXT ) : $(OUT ) zlibmodule$O $(OUT ) zlib_m.def $(PYTHON.IMPLIB )
0 commit comments