home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OpenStep 4.2J (Developer)
/
os42jdev.iso
/
NextDeveloper
/
Source
/
GNU
/
perl
/
Makefile
next >
Wrap
Makefile
|
1995-12-11
|
9KB
|
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) ::