home *** CD-ROM | disk | FTP | other *** search
Makefile | 1995-12-11 | 8.6 KB | 289 lines |
- NAME = perl
- PERL_VERSION = 5
- PERL_NAME = $(NAME)$(PERL_VERSION)
-
- PLATFORM_OS = nextstep
- COMMON_APP_MAKEFILE_DIR = $(NEXT_ROOT)/NextDeveloper/Makefiles/project
- include $(COMMON_APP_MAKEFILE_DIR)/$(PLATFORM_OS)-specific.make
-
- CURRENT_PERL = perl5.001m
- ARCHIVE = $(CURRENT_PERL).tar.gz
- PERLDIR = Perl
- OTHERSRCS = Makefile
- CONFIG_SH = config.sh
- CONFIGURE = $(SHELL) ./Configure
-
- OBJROOT = STD_OBJS
- SYMROOT = STD_SYMS
-
- CLONED_PERL = .cloned_perl
-
- DST_BINDIR = $(DSTROOT)/usr/bin
- DST_LIBDIR = $(DSTROOT)/usr/lib/perl5
- DST_LIBCORE = $(DST_LIBDIR)/CORE
- DST_GNUSOURCE = $(DSTROOT)/NextDeveloper/Source/GNU/perl
-
- BASIC_INSTALL = $(INSTALL) -c -o root -g wheel
- EXEC_INSTALL = $(BASIC_INSTALL) -m 755
- BIN_INSTALL = $(BASIC_INSTALL) -m 755 -sS
- FILE_INSTALL = $(BASIC_INSTALL) -m 444
-
- SCRIPTS = c2ph h2xs x2p/s2p x2p/find2perl
-
- #
- # clone_dir - expects shell vars
- # 'clone_type' is 'ln -s' or 'cp',
- # 'clone_dest' destination directory absolute path
- # 'clone_src ' source directory absolute path
- # 'clone_files' a source of file names to clone
- # stdin is then output of a find
- #
- clone_dir = \
- ( \
- cd $$clone_src; \
- eval $$clone_files | $(SED) 's|^\./||' \
- | while read filepath; do \
- if [ -f $$filepath ]; then \
- dirpath="expr '$$filepath' : '\(.*\)/.*' '|' ' '"; \
- dirpath=`eval $$dirpath`; \
- src_filepath=$$clone_src/$$filepath; \
- dest_filepath=$$clone_dest/$$filepath; \
- dest_dirpath=$$clone_dest/$$dirpath; \
- if [ -d $$dest_dirpath ]; then \
- $(RM) -f $$dest_filepath; \
- else \
- $(ECHO) -n " $$dirpath"; \
- $(MKDIRS) -m 755 $$dest_dirpath; \
- fi; \
- eval $$clone_type $$src_filepath $$dest_filepath; \
- fi; \
- done; $(ECHO); \
- )
-
- #
- # tar_dir - expects shell vars
- # 'tar_dest' destination directory absolute path
- # 'tar_src ' source directory absolute path
- # 'tar_files' a source of file names to clone
- # stdin is then output of a find
- #
- tar_dir = \
- eval "( cd $$tar_src; $(TAR) -cf - $$tar_files)" \
- | eval "( cd $$tar_dst; $(TAR) -xf -)"
-
- all:: $(OBJROOT)/perl
-
- symbol:: all $(SYMROOT)/filelist cleanup_clone
-
- install:: symbol install_bin install_scripts install_lib $(DST_GNUSOURCE)
-
- perl: $(OBJROOT)/perl
-
- $(OBJROOT)/perl: $(OBJROOT)/Makefile
- cd $(OBJROOT); DYLD_LIBRARY_PATH=`pwd` $(MAKE)
-
- configperl: $(OBJROOT)/Makefile
-
- $(OBJROOT)/Makefile:: $(OBJROOT)/$(CLONED_PERL)
- @( \
- : Establishing absolute path names;\
- abs_perldir=`(cd $(PERLDIR); pwd)`; \
- :; \
- cd $(OBJROOT); \
- $(ECHO) Changing default build architectures to $(RC_CFLAGS); \
- $(RM) -f $(CONFIG_SH); \
- $(SED) "s|^mab='.*'|mab='$(RC_CFLAGS)'|" \
- $$abs_perldir/$(CONFIG_SH) > $(CONFIG_SH); \
- $(CONFIGURE) -S; \
- )
-
- cloneperl: $(OBJROOT)/$(CLONED_PERL)
-
- $(OBJROOT)/$(CLONED_PERL)::
- @( \
- $(MKDIRS) $(OBJROOT) $(SYMROOT)/lib; \
- : Establishing absolute path names;\
- abs_symroot=`(cd $(SYMROOT); pwd) | sed 's|^/private||'`; \
- abs_objroot=`(cd $(OBJROOT); pwd) | sed 's|^/private||'`; \
- clone_list=$$abs_objroot/$(CLONED_PERL); \
- cd $(PERLDIR); \
- :; \
- $(ECHO) Extracting list of files from $(PERLDIR); \
- find . -type f -print | $(SEARCH) -v './lib' > $$clone_list; \
- :; \
- $(ECHO) Copying $(PERLDIR) Directory to $(OBJROOT); \
- tar_src='.'; tar_dst=$$abs_objroot; \
- tar_files="-T $$clone_list"; $(tar_dir); \
- :; \
- $(ECHO) Copying Perl/lib to $(SYMROOT)/lib; \
- tar_src='lib'; tar_dst=$$abs_symroot/lib; \
- tar_files="."; $(tar_dir); \
- $(SYMLINK) $$abs_symroot/lib $$abs_objroot/lib; \
- )
- $(TOUCH) $(OBJROOT)/$(CLONED_PERL)
-
- syms:: $(SYMROOT)/filelist
-
- $(SYMROOT)/filelist::
- @( \
- abs_symroot=`(cd $(SYMROOT); pwd | sed 's|^/private||' )`; \
- filelist=$$abs_symroot/filelist; \
- :; \
- cd $(OBJROOT); \
- $(ECHO) Making $$filelist; \
- ( \
- include="-newer $(CLONED_PERL) -type f"; \
- eval "find . $$include ! -name '*.o' -print"; \
- /bin/ls ./*.h; \
- ) | sort -u > $$filelist; \
- :; \
- $(ECHO) Moving files listed in filelist to $(SYMROOT); \
- tar_src='.'; tar_dst=$$abs_symroot; \
- tar_files="-T $$filelist"; $(tar_dir); \
- $(CAT) $$filelist | xargs $(RM) -f; \
- )
-
- cleanup_clone::
- @cd $(OBJROOT); \
- $(ECHO) Cleaning out cloned files from $(OBJROOT); \
- ( \
- $(ECHO) $(CLONED_PERL); \
- find . -type f ! -newer $(CLONED_PERL) -print; \
- ) | sort -u | xargs $(RM) -f
-
- install_bin:: $(DST_BINDIR)
- $(BIN_INSTALL) $(SYMROOT)/perl $(DST_BINDIR)/$(PERL_NAME)
- $(BIN_INSTALL) $(SYMROOT)/miniperl $(DST_BINDIR)/mini$(PERL_NAME)
- $(BIN_INSTALL) $(SYMROOT)/x2p/a2p $(DST_BINDIR)/a2p
- $(SYMLINK) $(PERL_NAME) $(DST_BINDIR)/perl
- $(SYMLINK) mini$(PERL_NAME) $(DST_BINDIR)/miniperl
-
- install_scripts:: $(DST_BINDIR)
- @( \
- for scriptname in $(SCRIPTS); do \
- $(EXEC_INSTALL) $(SYMROOT)/$$scriptname $(DST_BINDIR); \
- done; \
- $(SYMLINK) c2ph $(DST_BINDIR)/pstruct; \
- )
-
- install_lib:: $(DST_LIBDIR) $(DST_LIBCORE)
- @( \
- abs_symroot=`(cd $(SYMROOT); pwd | sed 's|^/private||' )`; \
- abs_symlib=`(cd $(SYMROOT)/lib; pwd | sed 's|^/private||' )`; \
- abs_dstcore=`(cd $(DST_LIBCORE); pwd | sed 's|^/private||' )`; \
- abs_dstlib=`(cd $(DST_LIBDIR); pwd | sed 's|^/private||' )`; \
- :; \
- cd $$abs_dstlib; \
- :; \
- $(ECHO) -n Copying the lib directory to $(DST_LIBDIR):; \
- clone_files="find . ! -type d -print"; \
- clone_src=$$abs_symlib; clone_dest=$$abs_dstlib; \
- clone_type="$(CP)"; $(clone_dir); \
- :; \
- $(ECHO) Copying the CORE directory to $(DST_LIBDIR); \
- clone_files='(cd $$abs_symroot; /bin/ls *.sh *.h libperl*.*)'; \
- clone_src=$$abs_symroot; clone_dest=$$abs_dstcore; \
- clone_type="$(CP)"; $(clone_dir); \
- ( cd $$abs_dstcore; $(SYMLINK) libperl*.dylib libperl.dylib; ); \
- :; \
- $(ECHO) Stripping Mach-O binaries in $(DST_LIBDIR); \
- find . -type f -exec file {} \; | egrep -e 'Mach-O|library' \
- | $(AWK) -F: '{print $$1}' | $(AWK) '{print $$1}' \
- | sort -u | xargs -t $(STRIP) -S; \
- :; \
- $(ECHO) Removing write permission for files in $(DST_LIBDIR); \
- find . -type f -print | xargs chmod a-w; \
- )
-
-
- $(DST_GNUSOURCE)::
- $(MKDIRS) $@ || true
- tar_src='.'; tar_dst=$@; tar_files='.'; $(tar_dir)
- $(RM) -rf $@/SGS_ENV
- $(CHOWN) -R root.wheel $@
-
- installsrc:: $(SRCROOT)
- tar_src='.'; tar_dst=$(SRCROOT); tar_files='.'; $(tar_dir)
-
- clean::
- rm -rf $(OBJROOT) $(SYMROOT); \
- [ ! -r $(PERLDIR)/[Mm]akefile ] || (cd $(PERLDIR); $(MAKE) clean)
-
- $(PERLDIR)::
- @( \
- $(ECHO) Removing all old source; \
- $(RM) -rf $(PERLDIR) $(CURRENT_PERL); \
- :; \
- $(ECHO) Extracting Archive $(ARCHIVE); \
- $(TAR) xzf $(ARCHIVE); \
- $(MV) $(CURRENT_PERL) $(PERLDIR); \
- :; \
- $(ECHO) Cleaning up setgid directories in $(PERLDIR); \
- find $(PERLDIR) -perm -2000 -print | xargs chmod g-s; \
- )
-
- perl_patch:: $(PERLDIR)/patched
-
- $(PERLDIR)/patched::
- @( \
- $(RM) -f $@; \
- abs_patch=`(cd patch; pwd | sed 's|^/private||' )`; \
- abs_perl=`(cd $(PERLDIR); pwd | sed 's|^/private||' )`; \
- :; \
- $(ECHO) -n Installing patch files in:; \
- clone_files="find . -type f ! -name '.nfs*' -print"; \
- clone_src=$$abs_patch; clone_dest=$$abs_perl; \
- clone_type="$(TRANSMOGRIFY)"; $(clone_dir); \
- $(TOUCH) $@; \
- )
-
- $(PERLDIR)/Makefile::
- cd $(PERLDIR); $(CONFIGURE) -de;
-
- start_perl_proj:: $(PERLDIR) $(PERLDIR)/patched $(PERLDIR)/Makefile
-
- perl_test:: /tmp/perl_test
- /tmp/perl_test::
- @( \
- if [ -z "$(DSTROOT)" -o ! -d "$(DST_BINDIR)" \
- -o ! -d "$(DST_LIBCORE)" -o ! -d "$(DST_GNUSOURCE)/$(PERLDIR)" ]; \
- then \
- $(ECHO) "Can't perl test suite until install is made";\
- false; \
- fi; \
- :; \
- abs_origin=`pwd`; \
- abs_libdir=`(cd $(DST_LIBDIR); pwd)`; \
- abs_libcore=`(cd $(DST_LIBCORE); pwd)`; \
- abs_gnusrc=`(cd $(DST_GNUSOURCE); pwd)`; \
- test_base=/tmp/perl_test; \
- :; \
- $(RM) -rf $@; \
- $(MKDIRS) $@ || true; \
- cd $@; \
- :; \
- $(ECHO) -n Cloning test dir from $(DST_GNUSOURCE)/$(PERLDIR): ; \
- clone_files='find t ! -type d -print'; \
- clone_src=$$abs_gnusrc/$(PERLDIR); clone_dest=$@; \
- clone_type="$(SYMLINK)"; $(clone_dir); \
- :; \
- $(ECHO) Establishing test environment; \
- $(SYMLINK) $$abs_libdir lib; \
- $(SYMLINK) $(DST_GNUSOURCE)/$(PERLDIR)/Configure; \
- $(SYMLINK) $(DST_BINDIR)/perl t; \
- :; \
- $(ECHO) Running Tests; \
- cd t; DYLD_LIBRARY_PATH=$$abs_libcore ./perl TEST; \
- :; \
- $(ECHO) Cleaning up after Tests; \
- cd $$abs_origin; $(RM) -rf $@; \
- )
-
- ROOT_DIRS = $(SRCROOT) $(OBJROOT) $(SYMROOT)
- DST_DIRS = $(DSTROOT) $(DST_BINDIR) $(DST_LIBDIR) $(DST_LIBCORE)
- $(ROOT_DIRS) $(DST_DIRS)::
- $(MKDIRS) $@ || true
-
- DUMMY_TARGETS = installhdrs
- $(DUMMY_TARGETS) ::
-