home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / perl / Makefile next >
Makefile  |  1995-12-11  |  9KB  |  289 lines

  1. NAME = perl
  2. PERL_VERSION = 5
  3. PERL_NAME = $(NAME)$(PERL_VERSION)
  4.  
  5. PLATFORM_OS = nextstep
  6. COMMON_APP_MAKEFILE_DIR = $(NEXT_ROOT)/NextDeveloper/Makefiles/project
  7. include $(COMMON_APP_MAKEFILE_DIR)/$(PLATFORM_OS)-specific.make
  8.  
  9. CURRENT_PERL = perl5.001m
  10. ARCHIVE      = $(CURRENT_PERL).tar.gz
  11. PERLDIR      = Perl
  12. OTHERSRCS    = Makefile
  13. CONFIG_SH    = config.sh
  14. CONFIGURE    = $(SHELL) ./Configure
  15.  
  16. OBJROOT = STD_OBJS
  17. SYMROOT = STD_SYMS
  18.  
  19. CLONED_PERL = .cloned_perl
  20.  
  21. DST_BINDIR = $(DSTROOT)/usr/bin
  22. DST_LIBDIR = $(DSTROOT)/usr/lib/perl5
  23. DST_LIBCORE = $(DST_LIBDIR)/CORE
  24. DST_GNUSOURCE = $(DSTROOT)/NextDeveloper/Source/GNU/perl
  25.  
  26. BASIC_INSTALL = $(INSTALL) -c -o root -g wheel
  27. EXEC_INSTALL  = $(BASIC_INSTALL) -m 755
  28. BIN_INSTALL   = $(BASIC_INSTALL) -m 755 -sS
  29. FILE_INSTALL  = $(BASIC_INSTALL) -m 444
  30.  
  31. SCRIPTS = c2ph h2xs x2p/s2p x2p/find2perl
  32.  
  33. #
  34. # clone_dir - expects shell vars
  35. #    'clone_type' is 'ln -s' or 'cp', 
  36. #    'clone_dest' destination directory absolute path
  37. #    'clone_src ' source directory absolute path
  38. #    'clone_files' a source of file names to clone
  39. # stdin is then output of a find
  40. #
  41. clone_dir = \
  42.     ( \
  43.         cd $$clone_src; \
  44.         eval $$clone_files | $(SED) 's|^\./||' \
  45.         | while read filepath; do \
  46.         if [ -f $$filepath ]; then \
  47.             dirpath="expr '$$filepath' : '\(.*\)/.*' '|' ' '"; \
  48.             dirpath=`eval $$dirpath`; \
  49.             src_filepath=$$clone_src/$$filepath; \
  50.             dest_filepath=$$clone_dest/$$filepath; \
  51.             dest_dirpath=$$clone_dest/$$dirpath; \
  52.             if [ -d $$dest_dirpath ]; then \
  53.             $(RM) -f $$dest_filepath; \
  54.             else \
  55.             $(ECHO) -n " $$dirpath"; \
  56.             $(MKDIRS) -m 755 $$dest_dirpath; \
  57.             fi; \
  58.             eval $$clone_type $$src_filepath $$dest_filepath; \
  59.         fi; \
  60.         done; $(ECHO); \
  61.     )
  62.  
  63. #
  64. # tar_dir - expects shell vars
  65. #    'tar_dest' destination directory absolute path
  66. #    'tar_src ' source directory absolute path
  67. #    'tar_files' a source of file names to clone
  68. # stdin is then output of a find
  69. #
  70. tar_dir = \
  71.     eval "( cd $$tar_src; $(TAR) -cf - $$tar_files)" \
  72.         | eval "( cd $$tar_dst; $(TAR) -xf -)"
  73.  
  74. all:: $(OBJROOT)/perl
  75.  
  76. symbol:: all $(SYMROOT)/filelist cleanup_clone
  77.  
  78. install:: symbol install_bin install_scripts install_lib $(DST_GNUSOURCE)
  79.  
  80. perl:  $(OBJROOT)/perl
  81.  
  82. $(OBJROOT)/perl: $(OBJROOT)/Makefile
  83.     cd $(OBJROOT); DYLD_LIBRARY_PATH=`pwd` $(MAKE)
  84.  
  85. configperl: $(OBJROOT)/Makefile
  86.  
  87. $(OBJROOT)/Makefile:: $(OBJROOT)/$(CLONED_PERL)
  88.     @( \
  89.         : Establishing absolute path names;\
  90.         abs_perldir=`(cd $(PERLDIR); pwd)`; \
  91.         :; \
  92.         cd $(OBJROOT); \
  93.         $(ECHO) Changing default build architectures to $(RC_CFLAGS); \
  94.         $(RM) -f $(CONFIG_SH); \
  95.         $(SED) "s|^mab='.*'|mab='$(RC_CFLAGS)'|" \
  96.         $$abs_perldir/$(CONFIG_SH) > $(CONFIG_SH); \
  97.         $(CONFIGURE) -S; \
  98.     )
  99.  
  100. cloneperl: $(OBJROOT)/$(CLONED_PERL)
  101.  
  102. $(OBJROOT)/$(CLONED_PERL)::
  103.     @( \
  104.         $(MKDIRS) $(OBJROOT) $(SYMROOT)/lib; \
  105.         : Establishing absolute path names;\
  106.         abs_symroot=`(cd $(SYMROOT); pwd) | sed 's|^/private||'`; \
  107.         abs_objroot=`(cd $(OBJROOT); pwd) | sed 's|^/private||'`; \
  108.         clone_list=$$abs_objroot/$(CLONED_PERL); \
  109.         cd $(PERLDIR); \
  110.         :; \
  111.         $(ECHO) Extracting list of files from $(PERLDIR); \
  112.         find . -type f -print | $(SEARCH) -v './lib' > $$clone_list; \
  113.         :; \
  114.         $(ECHO) Copying $(PERLDIR) Directory to $(OBJROOT); \
  115.         tar_src='.'; tar_dst=$$abs_objroot; \
  116.         tar_files="-T $$clone_list"; $(tar_dir); \
  117.         :; \
  118.         $(ECHO) Copying Perl/lib to $(SYMROOT)/lib; \
  119.         tar_src='lib'; tar_dst=$$abs_symroot/lib; \
  120.         tar_files="."; $(tar_dir); \
  121.         $(SYMLINK) $$abs_symroot/lib $$abs_objroot/lib; \
  122.     )
  123.     $(TOUCH) $(OBJROOT)/$(CLONED_PERL)
  124.  
  125. syms:: $(SYMROOT)/filelist
  126.  
  127. $(SYMROOT)/filelist::
  128.     @( \
  129.         abs_symroot=`(cd $(SYMROOT); pwd | sed 's|^/private||' )`; \
  130.         filelist=$$abs_symroot/filelist; \
  131.         :; \
  132.         cd $(OBJROOT); \
  133.         $(ECHO) Making $$filelist; \
  134.         ( \
  135.         include="-newer $(CLONED_PERL) -type f"; \
  136.         eval "find . $$include ! -name '*.o' -print"; \
  137.         /bin/ls ./*.h; \
  138.         ) | sort -u > $$filelist; \
  139.         :; \
  140.         $(ECHO) Moving files listed in filelist to $(SYMROOT); \
  141.         tar_src='.'; tar_dst=$$abs_symroot; \
  142.         tar_files="-T $$filelist"; $(tar_dir); \
  143.         $(CAT) $$filelist | xargs $(RM) -f; \
  144.     )
  145.  
  146. cleanup_clone::
  147.     @cd $(OBJROOT); \
  148.     $(ECHO) Cleaning out cloned files from $(OBJROOT); \
  149.     ( \
  150.         $(ECHO) $(CLONED_PERL); \
  151.         find . -type f ! -newer $(CLONED_PERL) -print; \
  152.     ) | sort -u | xargs $(RM) -f
  153.  
  154. install_bin:: $(DST_BINDIR)
  155.     $(BIN_INSTALL) $(SYMROOT)/perl     $(DST_BINDIR)/$(PERL_NAME)
  156.     $(BIN_INSTALL) $(SYMROOT)/miniperl $(DST_BINDIR)/mini$(PERL_NAME)
  157.     $(BIN_INSTALL) $(SYMROOT)/x2p/a2p  $(DST_BINDIR)/a2p
  158.     $(SYMLINK) $(PERL_NAME)     $(DST_BINDIR)/perl
  159.     $(SYMLINK) mini$(PERL_NAME) $(DST_BINDIR)/miniperl
  160.  
  161. install_scripts:: $(DST_BINDIR)
  162.     @( \
  163.         for scriptname in $(SCRIPTS); do \
  164.         $(EXEC_INSTALL) $(SYMROOT)/$$scriptname $(DST_BINDIR); \
  165.         done; \
  166.         $(SYMLINK) c2ph $(DST_BINDIR)/pstruct; \
  167.     )
  168.  
  169. install_lib:: $(DST_LIBDIR) $(DST_LIBCORE)
  170.     @( \
  171.         abs_symroot=`(cd $(SYMROOT); pwd | sed 's|^/private||' )`; \
  172.         abs_symlib=`(cd $(SYMROOT)/lib; pwd | sed 's|^/private||' )`; \
  173.         abs_dstcore=`(cd $(DST_LIBCORE); pwd | sed 's|^/private||' )`; \
  174.         abs_dstlib=`(cd $(DST_LIBDIR); pwd | sed 's|^/private||' )`; \
  175.         :; \
  176.         cd $$abs_dstlib; \
  177.         :; \
  178.         $(ECHO) -n Copying the lib directory to $(DST_LIBDIR):; \
  179.         clone_files="find . ! -type d -print"; \
  180.         clone_src=$$abs_symlib; clone_dest=$$abs_dstlib; \
  181.         clone_type="$(CP)"; $(clone_dir); \
  182.         :; \
  183.         $(ECHO) Copying the CORE directory to $(DST_LIBDIR); \
  184.         clone_files='(cd $$abs_symroot; /bin/ls *.sh *.h libperl*.*)'; \
  185.         clone_src=$$abs_symroot; clone_dest=$$abs_dstcore; \
  186.         clone_type="$(CP)"; $(clone_dir); \
  187.         ( cd $$abs_dstcore; $(SYMLINK) libperl*.dylib libperl.dylib; ); \
  188.         :; \
  189.         $(ECHO) Stripping Mach-O binaries in $(DST_LIBDIR); \
  190.         find . -type f -exec file {} \; | egrep -e 'Mach-O|library' \
  191.         | $(AWK) -F: '{print $$1}' | $(AWK) '{print $$1}' \
  192.         | sort -u | xargs -t $(STRIP) -S; \
  193.         :; \
  194.         $(ECHO) Removing write permission for files in $(DST_LIBDIR); \
  195.         find . -type f -print | xargs chmod a-w; \
  196.     )
  197.  
  198.  
  199. $(DST_GNUSOURCE):: 
  200.     $(MKDIRS) $@ || true
  201.     tar_src='.'; tar_dst=$@; tar_files='.'; $(tar_dir)
  202.     $(RM) -rf $@/SGS_ENV
  203.     $(CHOWN) -R root.wheel $@
  204.  
  205. installsrc:: $(SRCROOT)
  206.     tar_src='.'; tar_dst=$(SRCROOT); tar_files='.'; $(tar_dir)
  207.  
  208. clean::
  209.     rm -rf $(OBJROOT) $(SYMROOT); \
  210.     [ ! -r $(PERLDIR)/[Mm]akefile ] || (cd $(PERLDIR); $(MAKE) clean)
  211.  
  212. $(PERLDIR)::
  213.     @( \
  214.         $(ECHO) Removing all old source; \
  215.         $(RM) -rf $(PERLDIR) $(CURRENT_PERL); \
  216.         :; \
  217.         $(ECHO) Extracting Archive $(ARCHIVE); \
  218.         $(TAR) xzf $(ARCHIVE); \
  219.         $(MV) $(CURRENT_PERL) $(PERLDIR); \
  220.         :; \
  221.         $(ECHO) Cleaning up setgid directories in $(PERLDIR); \
  222.         find $(PERLDIR) -perm -2000 -print | xargs chmod g-s; \
  223.     )
  224.  
  225. perl_patch:: $(PERLDIR)/patched
  226.  
  227. $(PERLDIR)/patched::
  228.     @( \
  229.         $(RM) -f $@; \
  230.         abs_patch=`(cd patch; pwd | sed 's|^/private||' )`; \
  231.         abs_perl=`(cd $(PERLDIR); pwd | sed 's|^/private||' )`; \
  232.         :; \
  233.         $(ECHO) -n Installing patch files in:; \
  234.         clone_files="find . -type f ! -name '.nfs*' -print"; \
  235.         clone_src=$$abs_patch; clone_dest=$$abs_perl; \
  236.         clone_type="$(TRANSMOGRIFY)"; $(clone_dir); \
  237.         $(TOUCH) $@; \
  238.     )
  239.  
  240. $(PERLDIR)/Makefile::
  241.     cd $(PERLDIR); $(CONFIGURE) -de;
  242.  
  243. start_perl_proj:: $(PERLDIR) $(PERLDIR)/patched $(PERLDIR)/Makefile
  244.  
  245. perl_test:: /tmp/perl_test
  246. /tmp/perl_test::
  247.     @( \
  248.         if [ -z "$(DSTROOT)"     -o ! -d "$(DST_BINDIR)" \
  249.         -o ! -d "$(DST_LIBCORE)" -o ! -d "$(DST_GNUSOURCE)/$(PERLDIR)" ]; \
  250.         then \
  251.         $(ECHO) "Can't perl test suite until install is made";\
  252.         false; \
  253.         fi; \
  254.         :; \
  255.         abs_origin=`pwd`; \
  256.         abs_libdir=`(cd $(DST_LIBDIR); pwd)`; \
  257.         abs_libcore=`(cd $(DST_LIBCORE); pwd)`; \
  258.         abs_gnusrc=`(cd $(DST_GNUSOURCE); pwd)`; \
  259.         test_base=/tmp/perl_test; \
  260.         :; \
  261.         $(RM) -rf $@; \
  262.         $(MKDIRS) $@ || true; \
  263.         cd $@; \
  264.         :; \
  265.         $(ECHO) -n Cloning test dir from $(DST_GNUSOURCE)/$(PERLDIR): ; \
  266.         clone_files='find t ! -type d -print'; \
  267.         clone_src=$$abs_gnusrc/$(PERLDIR); clone_dest=$@; \
  268.         clone_type="$(SYMLINK)"; $(clone_dir); \
  269.         :; \
  270.         $(ECHO) Establishing test environment; \
  271.         $(SYMLINK) $$abs_libdir lib; \
  272.         $(SYMLINK) $(DST_GNUSOURCE)/$(PERLDIR)/Configure; \
  273.         $(SYMLINK) $(DST_BINDIR)/perl t; \
  274.         :; \
  275.         $(ECHO) Running Tests; \
  276.         cd t; DYLD_LIBRARY_PATH=$$abs_libcore ./perl TEST; \
  277.         :; \
  278.         $(ECHO) Cleaning up after Tests; \
  279.         cd $$abs_origin; $(RM) -rf $@; \
  280.     )
  281.  
  282. ROOT_DIRS = $(SRCROOT) $(OBJROOT) $(SYMROOT)
  283. DST_DIRS = $(DSTROOT) $(DST_BINDIR) $(DST_LIBDIR) $(DST_LIBCORE)
  284. $(ROOT_DIRS) $(DST_DIRS)::
  285.     $(MKDIRS) $@ || true
  286.  
  287. DUMMY_TARGETS = installhdrs
  288. $(DUMMY_TARGETS) ::
  289.