1## 2# Makefile for emacs 3## 4 5Extra_CC_Flags = -Wno-pointer-sign 6Extra_LD_Flags = -Wl,-headerpad,0x1000 -Wl,-no_pie -Wl,-no_function_starts 7Extra_Configure_Flags = --without-x --without-carbon ac_cv_host=mac-apple-darwin ac_cv_func_posix_memalign=no 8 9# Project info 10Project = emacs 11GNUVersion = 22.1 12UserType = Developer 13ToolType = Commands 14#CommonNoInstallSource = YES 15GnuAfterInstall = remove-dir install-dumpemacs cleanup install-plist install-default install-dsyms 16GnuNoBuild = YES 17# It's a GNU Source project 18include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make 19DSYMUTIL?=dsymutil 20RSYNC?=rsync 21Environment+= SHELL="$(SRCROOT)"/pipefail.sh 22NJOBS=$(shell sysctl -n hw.activecpu) 23 24# Automatic Extract & Patch 25AEP_Project = $(Project) 26AEP_Version = $(GNUVersion) 27AEP_ProjVers = $(AEP_Project)-$(AEP_Version) 28AEP_Filename = $(AEP_ProjVers).tar.gz 29AEP_ExtractDir = $(AEP_ProjVers) 30AEP_Patches = Apple.diff files.el.diff \ 31 CVE-2007-6109.diff darwin.h.diff vcdiff.diff lread.c.diff \ 32 fast-lock.el.diff python.el.diff src_Makefile.in.diff \ 33 lisp_Makefile.in.diff xdisp.c.diff lib-src_update-game-score.c.diff \ 34 src_fileio.c.diff src_search.c.diff lib-src_etags.c.diff \ 35 src_regex.c.diff 36 37# Extract the source. 38install_source:: 39 $(TAR) --exclude "*.elc" --exclude info -C "$(SRCROOT)" -zxf "$(SRCROOT)/$(AEP_Filename)" 40 $(RMDIR) "$(SRCROOT)/$(AEP_Project)" 41 $(MV) "$(SRCROOT)/$(AEP_ExtractDir)" "$(SRCROOT)/$(AEP_Project)" 42 $(CHMOD) -R go-w "$(SRCROOT)/$(Project)" 43 for patchfile in $(AEP_Patches); do \ 44 cd "$(SRCROOT)/$(Project)" && patch -lp0 -F0 < "$(SRCROOT)/patches/$$patchfile" || exit 1; \ 45 done 46 $(INSTALL_FILE) "$(SRCROOT)/mac.h" "$(SRCROOT)/$(AEP_Project)/src/m" 47 $(INSTALL_FILE) "$(SRCROOT)/unexmacosx.c" "$(SRCROOT)/$(AEP_Project)/src" 48 for f in $(EXTRAEL); do $(RM) "$(SRCROOT)/$$f"; done 49 50OSV = $(DSTROOT)/usr/local/OpenSourceVersions 51OSL = $(DSTROOT)/usr/local/OpenSourceLicenses 52 53EXTRAEL= emacs/lisp/cus-load.el \ 54 emacs/lisp/eshell/esh-groups.el \ 55 emacs/lisp/finder-inf.el \ 56 emacs/lisp/loaddefs.el \ 57 emacs/lisp/mh-e/mh-loaddefs.el \ 58 emacs/lisp/subdirs.el 59 60#installsrc : 61# if test ! -d $(SRCROOT) ; then mkdir -p $(SRCROOT); fi; 62# --include to workaround .cvsignores 63# rsync -aC --include '*.ps' --include configure --include Resources --include index.texi ./ $(SRCROOT)/ 64 65remove-dir : 66 rm $(DSTROOT)/usr/share/info/dir 67 68$(OBJROOT)/bo.h: 69 printf "char bo[] = {\n" > $@ 70 hexdump -ve '1/1 "0x%02x,"' < $(OBJROOT)/src/buildobj.lst >> $@ 71 printf "};\n" >> $@ 72 73$(OBJROOT)/runit.o: $(SRCROOT)/runit.c 74 $(CC) -c $(CFLAGS) -o $@ $^ 75 76$(OBJROOT)/dumpemacs.o: $(OBJROOT)/bo.h $(OBJROOT)/src/version.h 77 $(CC) -I $(OBJROOT) -DkEmacsVersion=$(patsubst %,'"%"', $(GNUVersion)) $(CFLAGS) -o $@ -g -c $(SRCROOT)/dumpemacs.c 78 79$(SYMROOT)/dumpemacs: $(OBJROOT)/dumpemacs.o $(OBJROOT)/runit.o 80 $(CC) $(CFLAGS) -o $@ -g $^ 81 82install-dumpemacs: $(SYMROOT)/dumpemacs 83 $(INSTALL) -s -o root -g wheel -m 555 $(SYMROOT)/dumpemacs $(DSTROOT)/usr/libexec/dumpemacs 84 $(DSYMUTIL) $(SYMROOT)/dumpemacs 85 $(INSTALL) -s -o root -g wheel -m 555 $(SYMROOT)/emacs $(DSTROOT)/usr/bin/emacs 86 $(INSTALL) -d "$(DSTROOT)"/usr/share/man/man{1,8} 87 $(INSTALL) -m 444 -o root -g wheel $(SRCROOT)/dumpemacs.8 "$(DSTROOT)"/usr/share/man/man8 88 $(INSTALL) -m 444 -o root -g wheel $(SRCROOT)/emacs-undumped.1 "$(DSTROOT)"/usr/share/man/man1 89 90build:: 91 find "$(OBJROOT)" -name Makefile -exec $(SRCROOT)/fixMakefile {} \; 92 @echo "Bootstraping $(Project)..." 93 $(MKDIR) $(OBJROOT)/src/arch 94ifeq (ppc,$(filter ppc,$(RC_ARCHS))) 95 $(CC) $(CFLAGS) -c -o $(OBJROOT)/emacs-ppc.o $(SRCROOT)/emacs-ppc.c 96 $(CC) $(CFLAGS) -o $(OBJROOT)/src/arch/emacs-ppc $(OBJROOT)/emacs-ppc.o 97 lipo $(OBJROOT)/src/arch/emacs-ppc -extract_family ppc -output $(OBJROOT)/src/arch/emacs-ppc 98endif 99 ruby version.rb emacs > $(OBJROOT)/src/version.h 100 $(_v) $(MAKE) -j $(NJOBS) -C $(BuildDirectory) $(Environment) bootstrap 101 $(CP) $(OBJROOT)/src/emacs $(SYMROOT) 102 $(DSYMUTIL) $(SYMROOT)/emacs # Use current objs 103 @echo "Change default LoadPath for installed emacs-undumped" 104 $(MV) $(OBJROOT)/src/lread.o $(OBJROOT)/src/lread.o+save 105 $(MV) $(OBJROOT)/src/temacs $(OBJROOT)/src/temacs+save 106 $(RM) $(DSTROOT)/usr/bin/emacs-undumped 107 $(_v) $(MAKE) -C $(BuildDirectory)/src $(Environment) MYCPPFLAGS=-DEMACS_UNDUMPED temacs 108 $(INSTALL_FILE) $(OBJROOT)/src/temacs $(OBJROOT)/src/emacs-undumped 109 $(INSTALL_FILE) $(OBJROOT)/src/emacs-undumped $(SYMROOT) 110 $(DSYMUTIL) $(SYMROOT)/emacs-undumped 111# Don't rebuild anything else 112 $(MV) -f $(OBJROOT)/src/lread.o+save $(OBJROOT)/src/lread.o 113 $(MV) -f $(OBJROOT)/src/temacs+save $(OBJROOT)/src/temacs 114 115cleanup: # Return sources to pristine state 116 @echo "Cleaning $(Project)..." 117 find $(SRCROOT) -type f -name '*.el[c~]' -delete 118 $(RM) -r $(SRCROOT)/emacs/info 119 $(RM) "$(DSTROOT)/usr/bin/ctags" "$(DSTROOT)/usr/share/man/man1/ctags.1" 120 $(RM) "$(DSTROOT)/usr/bin/"{b2m,ebrowse,grep-changelog,rcs-checkin} 121 $(RM) -r "$(DSTROOT)/usr/var" 122 for f in $(EXTRAEL); do $(RM) -f "$(SRCROOT)/$$f"; done 123 124install-plist: 125 $(INSTALL) -d $(OSV) 126 $(INSTALL_FILE) $(SRCROOT)/$(Project).plist $(OSV)/$(Project).plist 127 $(INSTALL) -d $(OSL) 128 $(INSTALL_FILE) $(Sources)/COPYING $(OSL)/$(Project).txt 129 130install-default: 131 $(INSTALL) -o root -g wheel -m 644 default.el "$(DSTROOT)"/usr/share/emacs/site-lisp 132 $(INSTALL) -o root -g wheel -m 644 site-start.el "$(DSTROOT)"/usr/share/emacs/site-lisp 133 134install-dsyms: 135 for f in emacsclient etags cvtmail digest-doc fakemail hexl movemail profile sorted-doc update-game-score; do \ 136 $(RSYNC) -ia $(OBJROOT)/lib-src/$$f $(SYMROOT)/; \ 137 $(DSYMUTIL) $(SYMROOT)/$$f; \ 138 done 139 140