diff options
Diffstat (limited to 'src/Makefile.in')
-rw-r--r-- | src/Makefile.in | 125 |
1 files changed, 108 insertions, 17 deletions
diff --git a/src/Makefile.in b/src/Makefile.in index b034f1661e3..de45b2290f1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -33,6 +33,20 @@ top_builddir = @top_builddir@ # MinGW CPPFLAGS may use this. abs_top_srcdir=@abs_top_srcdir@ VPATH = $(srcdir) + +# This is not empty if this is a Makefile that will be copied to +# cross/src. +XCONFIGURE = @XCONFIGURE@ + +ifneq ($(XCONFIGURE),) +vpath %.c := $(srcdir) +vpath %.h := $(srcdir) +endif + +# abs_top_builddir is the name of the toplevel build directory under +# cross-compiled builds. +abs_top_builddir = @abs_top_builddir@ + CC = @CC@ CXX = @CXX@ CFLAGS = @CFLAGS@ @@ -48,6 +62,7 @@ LIBOBJS = @LIBOBJS@ lispsource = $(top_srcdir)/lisp lib = ../lib +hostlib = $(top_builddir)/lib libsrc = ../lib-src etc = ../etc oldXMenudir = ../oldXMenu @@ -127,6 +142,10 @@ LIB_PTHREAD=@LIB_PTHREAD@ LIBIMAGE=@LIBTIFF@ @LIBJPEG@ @LIBPNG@ @LIBGIF@ @LIBXPM@ @WEBP_LIBS@ +GIF_CFLAGS=@GIF_CFLAGS@ +JPEG_CFLAGS=@JPEG_CFLAGS@ +TIFF_CFLAGS=@TIFF_CFLAGS@ + XCB_LIBS=@XCB_LIBS@ XFT_LIBS=@XFT_LIBS@ XRENDER_LIBS=@XRENDER_LIBS@ @@ -144,10 +163,11 @@ M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@ M17N_FLT_LIBS = @M17N_FLT_LIBS@ LIB_ACL=@LIB_ACL@ -LIB_CLOCK_GETTIME=@LIB_CLOCK_GETTIME@ -LIB_EACCESS=@LIB_EACCESS@ -LIB_NANOSLEEP=@LIB_NANOSLEEP@ -LIB_TIMER_TIME=@LIB_TIMER_TIME@ +CLOCK_TIME_LIB=@CLOCK_TIME_LIB@ +EUIDACCESS_LIBGEN=@EUIDACCESS_LIBGEN@ +NANOSLEEP_LIB=@NANOSLEEP_LIB@ +QCOPY_ACL_LIB=@QCOPY_ACL_LIB@ +TIMER_TIME_LIB=@TIMER_TIME_LIB@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ @@ -240,6 +260,7 @@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ +SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ GETADDRINFO_A_LIBS = @GETADDRINFO_A_LIBS@ @@ -326,12 +347,13 @@ W32_RES_LINK=@W32_RES_LINK@ ## if HAVE_HARFBUZZ, hbfont.o is added regardless of the rest FONT_OBJ=@FONT_OBJ@ -## Empty for MinGW, cm.o for the rest. +## Empty for MinGW and Android, cm.o for the rest. CM_OBJ=@CM_OBJ@ LIBGPM = @LIBGPM@ LIBSELINUX_LIBS = @LIBSELINUX_LIBS@ +LIBSELINUX_CFLAGS = @LIBSELINUX_CFLAGS@ LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@ LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@ @@ -370,6 +392,13 @@ HAIKU_CXX_OBJ = @HAIKU_CXX_OBJ@ HAIKU_LIBS = @HAIKU_LIBS@ HAIKU_CFLAGS = @HAIKU_CFLAGS@ +ANDROID_OBJ = @ANDROID_OBJ@ +ANDROID_LIBS = @ANDROID_LIBS@ +ANDROID_LDFLAGS = @ANDROID_LDFLAGS@ +ANDROID_BUILD_CFLAGS = @ANDROID_BUILD_CFLAGS@ + +LIBGMP_CFLAGS = @LIBGMP_CFLAGS@ + DUMPING=@DUMPING@ CHECK_STRUCTS = @CHECK_STRUCTS@ HAVE_PDUMPER = @HAVE_PDUMPER@ @@ -411,7 +440,9 @@ EMACS_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \ $(HARFBUZZ_CFLAGS) $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \ $(LIBSYSTEMD_CFLAGS) $(JSON_CFLAGS) $(XSYNC_CFLAGS) $(TREE_SITTER_CFLAGS) \ $(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \ - $(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(XCOMPOSITE_CFLAGS) $(XSHAPE_CFLAGS) + $(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(XCOMPOSITE_CFLAGS) $(XSHAPE_CFLAGS) \ + $(ANDROID_BUILD_CFLAGS) $(GIF_CFLAGS) $(JPEG_CFLAGS) $(SQLITE3_CFLAGS) \ + $(LIBGMP_CFLAGS) $(TIFF_CFLAGS) $(LIBSELINUX_CFLAGS) ALL_CFLAGS = $(EMACS_CFLAGS) $(WARN_CFLAGS) $(CFLAGS) ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \ $(filter-out $(NON_OBJC_CFLAGS),$(WARN_CFLAGS)) $(CFLAGS) \ @@ -449,7 +480,7 @@ base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ $(if $(HYBRID_MALLOC),sheap.o) \ $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \ $(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ) $(JSON_OBJ) \ - $(HAIKU_OBJ) $(PGTK_OBJ) + $(HAIKU_OBJ) $(PGTK_OBJ) $(ANDROID_OBJ) doc_obj = $(base_obj) $(NS_OBJC_OBJ) obj = $(doc_obj) $(HAIKU_CXX_OBJ) @@ -466,7 +497,8 @@ SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \ w16select.o widget.o xfont.o ftfont.o xftfont.o gtkutil.o \ xsettings.o xgselect.o termcap.o hbfont.o \ - haikuterm.o haikufns.o haikumenu.o haikufont.o + haikuterm.o haikufns.o haikumenu.o haikufont.o androidterm.o androidfns.o \ + androidfont.o androidselect.c sfntfont-android.c sfntfont.c ## gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty. GMALLOC_OBJ=@GMALLOC_OBJ@ @@ -537,15 +569,19 @@ endif ## we need to remove leim-list, site-init, and site-load by hand. ## There's not much to choose between these two approaches, ## but the second one seems like it could be more future-proof. +## +## This list is placed in the toplevel build directory to prevent it +## from being unnecessarily regenerated by the successive use of this +## Makefile within cross/Makefile. shortlisp = -lisp.mk: $(lispsource)/loadup.el +$(abs_top_builddir)/src/lisp.mk: $(lispsource)/loadup.el ${AM_V_GEN}( printf 'shortlisp = \\\n'; \ sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \ sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \ echo "" ) > $@.tmp $(AM_V_at)mv -f $@.tmp $@ --include lisp.mk +-include $(abs_top_builddir)/src/lisp.mk shortlisp_filter = leim/leim-list.el site-load.elc site-init.elc shortlisp := $(filter-out ${shortlisp_filter},${shortlisp}) ## Place loaddefs.el first, so it gets generated first, since it is on @@ -558,9 +594,9 @@ lisp = $(addprefix ${lispsource}/,${shortlisp}) ## Construct full set of libraries to be linked. LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(PGTK_LIBS) $(LIBX_BASE) $(LIBIMAGE) \ $(LIBX_OTHER) $(LIBSOUND) \ - $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(LIB_CLOCK_GETTIME) \ - $(LIB_NANOSLEEP) $(WEBKIT_LIBS) \ - $(LIB_EACCESS) $(LIB_TIMER_TIME) $(DBUS_LIBS) \ + $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(CLOCK_TIME_LIB) \ + $(NANOSLEEP_LIB) $(QCOPY_ACL_LIB) $(WEBKIT_LIBS) \ + $(EUIDACCESS_LIBGEN) $(TIMER_TIME_LIB) $(DBUS_LIBS) \ $(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \ $(XDBE_LIBS) $(XSYNC_LIBS) \ $(LIBXML2_LIBS) $(LIBGPM) $(LIBS_SYSTEM) $(CAIRO_LIBS) \ @@ -569,15 +605,18 @@ LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(PGTK_LIBS) $(LIBX_BASE) $(LIBIMAGE $(LIBGNUTLS_LIBS) $(LIB_PTHREAD) $(GETADDRINFO_A_LIBS) $(LCMS2_LIBS) \ $(NOTIFY_LIBS) $(LIB_MATH) $(LIBZ) $(LIBMODULES) $(LIBSYSTEMD_LIBS) \ $(JSON_LIBS) $(LIBGMP) $(LIBGCCJIT_LIBS) $(XINPUT_LIBS) $(HAIKU_LIBS) \ - $(TREE_SITTER_LIBS) $(SQLITE3_LIBS) $(XCOMPOSITE_LIBS) $(XSHAPE_LIBS) + $(TREE_SITTER_LIBS) $(SQLITE3_LIBS) $(XCOMPOSITE_LIBS) $(XSHAPE_LIBS) \ + $(ANDROID_LIBS) ## FORCE it so that admin/unidata can decide whether this file is ## up-to-date. Although since charprop depends on bootstrap-emacs, ## and emacs depends on charprop, in practice this rule was always run ## anyway. +ifneq ($(XCONFIGURE),android) $(lispsource)/international/charprop.el: \ FORCE | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) $(MAKE) -C ../admin/unidata all EMACS="../$(bootstrap_exe)" +endif ## We require charprop.el to exist before ucs-normalize.el is ## byte-compiled, because ucs-normalize.el needs to load 2 uni-*.el files. @@ -611,7 +650,7 @@ SYSTEM_TYPE = @SYSTEM_TYPE@ ## since not all pieces are used on all platforms. But DOC depends ## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here. emacs$(EXEEXT): temacs$(EXEEXT) \ - lisp.mk $(etc)/DOC $(lisp) \ + $(abs_top_builddir)/src/lisp.mk $(etc)/DOC $(lisp) \ $(lispsource)/international/charprop.el ${charsets} ifeq ($(SYSTEM_TYPE),cygwin) find ${top_builddir} -name '*.eln' | rebase -v -O -T - @@ -658,7 +697,7 @@ $(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(doc_obj) $(SOME_MACHINE_OBJECTS) $(doc_obj) > $(etc)/DOC $(libsrc)/make-docfile$(EXEEXT) $(libsrc)/make-fingerprint$(EXEEXT): \ - $(lib)/libgnu.a + $(hostlib)/libgnu.a $(MAKE) -C $(dir $@) $(notdir $@) buildobj.h: Makefile @@ -719,6 +758,47 @@ ifeq ($(DUMPING),unexec) endif endif +ifeq ($(XCONFIGURE),android) +## The Android package internally links to a shared library named +## `libemacs.so' at startup. It is built almost the same way temacs +## is. But it is position independent, and is not dumped here. +## Instead, it dumps itself the first time it starts on the user's +## device. + +# Include ndk-build.mk in order to build Emacs dependencies. +old_top_builddir := $(top_builddir) +top_builddir := $(old_top_builddir)/.. +include $(old_top_builddir)/ndk-build/ndk-build.mk +top_builddir := $(old_top_builddir) + +## Builds using libemacs.so (Android) don't dump Emacs within this +## Makefile, but on device. Make sure the library hash changes for +## each change in shortlisp by linking an object that changes +## accordingly to it. +BUILD_COUNTER_OBJ = build-counter.o + +# This file is then compiled into libemacs.so +build-counter.c: $(abs_top_builddir)/src/lisp.mk $(lisp) + $(AM_V_GEN) $(top_srcdir)/build-aux/makecounter.sh $@ + +libemacs.so: $(ALLOBJS) $(BUILD_COUNTER_OBJ) $(LIBEGNU_ARCHIVE) \ + $(EMACSRES) $(MAKE_PDUMPER_FINGERPRINT) \ + $(NDK_BUILD_SHARED) $(NDK_BUILD_STATIC) $(etc)/DOC + $(AM_V_CCLD)$(CC) -o $@ $(ALL_CFLAGS) $(TEMACS_LDFLAGS) \ + $(ANDROID_LDFLAGS) $(LDFLAGS) -shared $(ALLOBJS) \ + $(BUILD_COUNTER_OBJ) $(LIBEGNU_ARCHIVE) $(LIBES) + $(AM_V_at)$(MAKE_PDUMPER_FINGERPRINT) $@ + +# There is also a binary named `android-emacs' which simply calls +# emacs.so. It need not link against libemacs because app_process +# will do that instead. + +android-emacs: android-emacs.c + $(AM_V_CCLD)$(CC) $(lastword $^) -o $@ \ + $(ALL_CFLAGS) $(LDFLAGS) \ + $(LIBEGNU_ARCHIVE) +endif + ## The following oldxmenu-related rules are only (possibly) used if ## HAVE_X11 && !USE_GTK, but there is no harm in always defining them. $(lwlibdir)/liblw.a: $(config_h) globals.h lisp.h FORCE @@ -747,7 +827,8 @@ ns-app: emacs$(EXEEXT) $(pdmp) .PHONY: versionclean mostlyclean: - rm -f temacs$(EXEEXT) core ./*.core \#* ./*.o + rm -f android-emacs libemacs.so + rm -f temacs$(EXEEXT) core ./*.core \#* ./*.o build-counter.c rm -f dmpstruct.h rm -f emacs.pdmp rm -f ../etc/DOC @@ -836,10 +917,16 @@ tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS $(lib)/TAGS ## To solve the freshness issue, in the past we tried various clever tricks, ## but now that we require GNU make, we can simply specify ## bootstrap-emacs$(EXEEXT) as an order-only prerequisite. +## +## bootstrap-emacs doesn't have to be built when cross-compiling +## libemacs.so for Android, however, as the Lisp files have already +## been compiled by the top level `src' Makefile. +ifneq ($(XCONFIGURE),android) %.elc: %.el | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="$(bootstrap_exe)"\ THEFILE=$< $<c +endif ifeq ($(HAVE_NATIVE_COMP):$(NATIVE_DISABLED),yes:) ## The following rules are used only when building a source tarball @@ -856,6 +943,8 @@ elnlisp := \ international/charscript.eln \ emacs-lisp/comp.eln \ emacs-lisp/comp-cstr.eln \ + emacs-lisp/comp-common.eln \ + emacs-lisp/comp-run.eln \ international/emoji-zwj.eln elnlisp := $(addprefix ${lispsource}/,${elnlisp}) $(lisp:.elc=.eln) @@ -893,8 +982,10 @@ NATIVE_COMPILATION_AOT = @NATIVE_COMPILATION_AOT@ fi endif +ifneq ($(XCONFIGURE),android) $(lispsource)/loaddefs.el: | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) $(MAKE) -C ../lisp autoloads EMACS="$(bootstrap_exe)" +endif ## Dump an Emacs executable named bootstrap-emacs containing the ## files from loadup.el in source form. |