[svn:parrot] r36931 - trunk/tools/dev

fperrad at svn.parrot.org fperrad at svn.parrot.org
Sun Feb 22 16:41:42 UTC 2009


Author: fperrad
Date: Sun Feb 22 16:41:40 2009
New Revision: 36931
URL: https://trac.parrot.org/parrot/changeset/36931

Log:
[install] remove deprecated dynpmc.pl & dynoplibs.pl

Modified:
   trunk/tools/dev/mk_language_shell.pl

Modified: trunk/tools/dev/mk_language_shell.pl
==============================================================================
--- trunk/tools/dev/mk_language_shell.pl	Sun Feb 22 10:10:01 2009	(r36930)
+++ trunk/tools/dev/mk_language_shell.pl	Sun Feb 22 16:41:40 2009	(r36931)
@@ -28,9 +28,13 @@
     STATUS
     Configure.pl
     xyz.pir
+    config/makefiles/ops.in
+    config/makefiles/pmc.in
     config/makefiles/root.in
     doc/running.pod
     doc/Xyz.pod
+    dynext/.ignore
+    library/.ignore
     src/builtins/say.pir
     src/parser/grammar.pg
     src/parser/grammar-oper.pg
@@ -162,13 +166,57 @@
 use warnings;
 use 5.008;
 
-my $build_dir = '../..';
-my $hll       = '@lclang@';
-my $cmd       = qq{$^X -Ilib tools/dev/reconfigure.pl --step=gen::languages --languages=$hll};
-
-print "Running '$cmd' in $build_dir\n";
-chdir $build_dir;
-`$cmd`
+#  Get a list of parrot-configs to invoke.
+my @parrot_config_exe = (
+    'parrot/parrot_config',
+    '../../parrot_config',
+    'parrot_config',
+);
+
+#  Get configuration information from parrot_config
+my %config = read_parrot_config(@parrot_config_exe);
+unless (%config) {
+    die "Unable to locate parrot_config.";
+}
+
+#  Create the Makefile using the information we just got
+create_makefiles(%config);
+
+sub read_parrot_config {
+    my @parrot_config_exe = @_;
+    my %config = ();
+    for my $exe (@parrot_config_exe) {
+        no warnings;
+        if (open my $PARROT_CONFIG, '-|', "$exe --dump") {
+            print "Reading configuration information from $exe\n";
+            while (<$PARROT_CONFIG>) {
+                $config{$1} = $2 if (/(\w+) => '(.*)'/);
+            }
+            close $PARROT_CONFIG;
+            last if %config;
+        }
+    }
+    %config;
+}
+
+
+#  Generate Makefiles from a configuration
+sub create_makefiles {
+    my %config = @_;
+    my %makefiles = (
+        'config/makefiles/root.in' => 'Makefile',
+        'config/makefiles/pmc.in'  => 'src/pmc/Makefile',
+        'config/makefiles/ops.in'  => 'src/ops/Makefile',
+    );
+    my $build_tool = $config{libdir} . $config{versiondir}
+                   . '/tools/dev/gen_makefile.pl';
+
+    foreach my $template (keys %makefiles) {
+        my $makefile = $makefiles{$template};
+        print "Creating $makefile\n";
+        system($config{perl}, $build_tool, $template, $makefile);
+    }
+}
 
 # Local Variables:
 #   mode: cperl
@@ -177,6 +225,175 @@
 # End:
 # vim: expandtab shiftwidth=4:
 
+__config/makefiles/ops.in__
+## @Id@
+
+# values from parrot_config
+VERSION_DIR   = @versiondir@
+INCLUDE_DIR   = @includedir@$(VERSION_DIR)
+LIB_DIR       = @libdir@$(VERSION_DIR)
+#STAGING_DIR   = ../../dynext
+STAGING_DIR   = @build_dir@/runtime/parrot/dynext
+#INSTALL_DIR   = $(LIB_DIR)/languages/@lclang@/dynext
+INSTALL_DIR   = $(LIB_DIR)/dynext
+
+# Set up extensions
+LOAD_EXT      = @load_ext@
+O             = @o@
+
+# Setup some commands
+PERL          = @perl@
+RM_F          = @rm_f@
+CHMOD         = @chmod@
+CP            = @cp@
+CC            = @cc@ -c
+LD            = @ld@
+LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@ @linkflags@
+LD_LOAD_FLAGS = @ld_load_flags@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CC_OUT        = @cc_o_out@
+LD_OUT        = @ld_out@
+#IF(parrot_is_shared):LIBPARROT     = @libparrot_ldflags@
+#ELSE:LIBPARROT     =
+
+BUILD_TOOLS_DIR = $(LIB_DIR)/tools/build
+OPS2C           = $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl
+
+INCLUDES        = -I$(INCLUDE_DIR) -I$(INCLUDE_DIR)/pmc
+LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT)
+
+OPS_FILE = @lclang at .ops
+
+
+all: staging
+
+generate: $(OPS_FILE)
+	$(OPS2C) C --dynamic $(OPS_FILE)
+	$(OPS2C) CSwitch --dynamic $(OPS_FILE)
+#IF(cg_flag):	$(OPS2C) CGoto --dynamic $(OPS_FILE)
+#IF(cg_flag):	$(OPS2C) CGP --dynamic $(OPS_FILE)
+
+compile: generate
+	$(CC) $(CC_OUT) @lclang at _ops$(O) $(INCLUDES) $(CFLAGS) @lclang at _ops.c
+	$(CC) $(CC_OUT) @lclang at _ops_switch$(O) $(INCLUDES) $(CFLAGS) @lclang at _ops_switch.c
+#IF(cg_flag):	$(CC) $(CC_OUT) @lclang at _ops_cg$(O) $(INCLUDES) $(CFLAGS) @lclang at _ops_cg.c
+#IF(cg_flag):	$(CC) $(CC_OUT) @lclang at _ops_cgp$(O) $(INCLUDES) $(CFLAGS) @lclang at _ops_cgp.c
+
+linklibs: compile
+	$(LD) $(LD_OUT) @lclang at _ops$(LOAD_EXT) @lclang at _ops$(O) $(LINKARGS)
+	$(LD) $(LD_OUT) @lclang at _ops_switch$(LOAD_EXT) @lclang at _ops_switch$(O) $(LINKARGS)
+#IF(cg_flag):	$(LD) $(LD_OUT) @lclang at _ops_cg$(LOAD_EXT) @lclang at _ops_cg$(O) $(LINKARGS)
+#IF(cg_flag):	$(LD) $(LD_OUT) @lclang at _ops_cgp$(LOAD_EXT) @lclang at _ops_cgp$(O) $(LINKARGS)
+
+staging: linklibs
+#IF(cygwin or hpux):	CHMOD 0775 "*$(LOAD_EXT)"
+	$(CP) "*$(LOAD_EXT)" $(STAGING_DIR)
+
+install:
+#IF(cygwin or hpux):	CHMOD 0775 "*$(LOAD_EXT)"
+	$(CP) "*$(LOAD_EXT)" $(INSTALL_DIR)
+
+Makefile: ../../config/makefiles/ops.in
+	cd ../.. && $(PERL) Configure.pl
+
+clean:
+	$(RM_F) "*$(LOAD_EXT)" "*$(O)" "*.c" "*.h" \
+	    "$(STAGING_DIR)/@lclang at _ops*$(LOAD_EXT)"
+
+realclean: clean
+	$(RM_F) Makefile
+
+uninstall:
+	$(RM_F) "$(INSTALL_DIR)/@lclang at _ops*$(LOAD_EXT)"
+
+__config/makefiles/pmc.in__
+## @Id@
+
+# values from parrot_config
+VERSION_DIR   = @versiondir@
+INCLUDE_DIR   = @includedir@$(VERSION_DIR)
+LIB_DIR       = @libdir@$(VERSION_DIR)
+SRC_DIR       = @srcdir@$(VERSION_DIR)
+TOOLS_DIR     = @libdir@$(VERSION_DIR)/tools/lib
+#STAGING_DIR   = ../../dynext
+STAGING_DIR   = @build_dir@/runtime/parrot/dynext
+#INSTALL_DIR   = $(LIB_DIR)/languages/@lclang@/dynext
+INSTALL_DIR   = $(LIB_DIR)/dynext
+
+# Set up extensions
+LOAD_EXT      = @load_ext@
+O             = @o@
+
+# Setup some commands
+PERL          = @perl@
+RM_F          = @rm_f@
+CHMOD         = @chmod@
+CP            = @cp@
+CC            = @cc@ -c
+LD            = @ld@
+LDFLAGS       = @ldflags@ @ld_debug@
+LD_LOAD_FLAGS = @ld_load_flags@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CC_OUT        = @cc_o_out@
+LD_OUT        = @ld_out@
+#IF(parrot_is_shared):LIBPARROT     = @libparrot_ldflags@
+#ELSE:LIBPARROT     =
+
+BUILD_TOOLS_DIR = $(LIB_DIR)/tools/build
+PMC2C_INCLUDES  = --include $(SRC_DIR) --include $(SRC_DIR)/pmc
+PMC2C           = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl
+PMC2CD          = $(PMC2C) --dump $(PMC2C_INCLUDES)
+PMC2CC          = $(PMC2C) --c $(PMC2C_INCLUDES)
+
+INCLUDES        = -I$(INCLUDE_DIR) -I$(INCLUDE_DIR)/pmc
+LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT)
+
+PMC_SOURCES = \
+  @lclang at .pmc
+
+ at uclang@_GROUP = @lclang at _group
+
+OBJS = \
+  lib-$(@uclang at _GROUP)$(O) \
+  @lclang@$(O)
+
+
+all : staging
+
+generate : $(PMC_SOURCES)
+	$(PMC2CD) @lclang at .pmc
+	$(PMC2CC) @lclang at .pmc
+	$(PMC2C) --library $(@uclang at _GROUP) --c $(PMC_SOURCES)
+
+compile : generate
+	$(CC) $(CC_OUT) @lclang@$(O) $(INCLUDES) $(CFLAGS) @lclang at .c
+	$(CC) $(CC_OUT) lib-$(@uclang at _GROUP)$(O) $(INCLUDES) $(CFLAGS) $(@uclang at _GROUP).c
+
+linklibs : compile
+	$(LD) $(LD_OUT) $(@uclang at _GROUP)$(LOAD_EXT) $(OBJS) $(LINKARGS)
+
+staging : linklibs
+#IF(cygwin or hpux):	CHMOD 0775 "*$(LOAD_EXT)"
+	$(CP) "*$(LOAD_EXT)" $(STAGING_DIR)
+
+install :
+#IF(cygwin or hpux):	CHMOD 0775 "*$(LOAD_EXT)"
+	$(CP) "*$(LOAD_EXT)" $(INSTALL_DIR)
+
+Makefile: ../../config/makefiles/pmc.in
+	cd ../.. && $(PERL) Configure.pl
+
+clean:
+	$(RM_F) "*$(LOAD_EXT)" "*$(O)" "*.c" "*.h" "*.dump" \
+	    "$(STAGING_DIR)/$(@uclang at _GROUP)$(LOAD_EXT)"
+#IF(win32):	$(RM_F) "*.exp" "*.ilk" "*.manifext" "*.pdb" "*.lib"
+
+realclean: clean
+	$(RM_F) Makefile
+
+uninstall:
+	$(RM_F) "$(INSTALL_DIR)/$(@uclang at _GROUP)$(LOAD_EXT)"
+
 __config/makefiles/root.in__
 ## @Id@
 
@@ -184,47 +401,47 @@
 PARROT_ARGS   =
 
 ## configuration settings
-BUILD_DIR     = @build_dir@
-LOAD_EXT      = @load_ext@
-O             = @o@
 VERSION       = @versiondir@
 BIN_DIR       = @bin_dir@
 LIB_DIR       = @lib_dir@$(VERSION)
 DOC_DIR       = @doc_dir@$(VERSION)
 MANDIR        = @mandir@$(VERSION)
-PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+
+# Set up extensions
+LOAD_EXT      = @load_ext@
+O             = @o@
+
+# Various paths
+PERL6GRAMMAR  = $(LIB_DIR)/library/PGE/Perl6Grammar.pbc
+NQP           = $(LIB_DIR)/languages/nqp/nqp.pbc
+PCT           = $(LIB_DIR)/library/PCT.pbc
+PMC_DIR       = src/pmc
+OPS_DIR       = src/ops
 
 ## Setup some commands
+MAKE          = @make_c@
 PERL          = @perl@
-RM_F          = @rm_f@
-CP            = @cp@
-CHMOD         = @chmod@
 CAT           = @cat@
+CHMOD         = @chmod@
+CP            = @cp@
 MKPATH        = @mkpath@
+RM_F          = @rm_f@
+RM_RF         = @rm_rf@
 POD2MAN       = pod2man
 #IF(parrot_is_shared and not(cygwin or win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
 PARROT        = ../../parrot at exe@
 PBC_TO_EXE    = ../../pbc_to_exe at exe@
-PMCBUILD      = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
-OPSBUILD      = $(PERL) $(BUILD_DIR)/tools/build/dynoplibs.pl
 #IF(darwin):
 #IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
 #IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
 
-## places to look for things
-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
-PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
-NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
-
-PMC_DIR       = src/pmc
-OPS_DIR       = src/ops
-OPSLIB        = @lclang@
-
 @UCLANG at _GROUP = $(PMC_DIR)/@lclang at _group$(LOAD_EXT)
 @UCLANG at _OPS = $(OPS_DIR)/@lclang at _ops$(LOAD_EXT)
 
-build: $(@UCLANG at _GROUP) $(@UCLANG at _OPS) @lclang at .pbc
+build: \
+  $(@UCLANG at _OPS) \
+  $(@UCLANG at _GROUP) \
+  @lclang at .pbc
 
 all: build @lclang@@exe@ installable
 
@@ -240,7 +457,7 @@
 PMCS = @lclang@
 PMC_SOURCES = $(PMC_DIR)/@lclang at .pmc
 OPS_SOURCES = $(OPS_DIR)/@lclang at .ops
-DOCS = MAINTAINER README TODO
+DOCS = MAINTAINER README
 
 # the default target
 @lclang at .pbc: $(SOURCES)
@@ -262,17 +479,11 @@
 src/gen_builtins.pir: $(BUILTINS_PIR)
 	$(CAT) $(BUILTINS_PIR) > src/gen_builtins.pir
 
-$(@UCLANG at _GROUP): $(PMC_SOURCES)
-	@cd $(PMC_DIR) && $(PMCBUILD) generate $(PMCS)
-	@cd $(PMC_DIR) && $(PMCBUILD) compile  $(PMCS)
-	@cd $(PMC_DIR) && $(PMCBUILD) linklibs $(PMCS)
-	@cd $(PMC_DIR) && $(PMCBUILD) copy "--destination=$(PARROT_DYNEXT)" $(PMCS)
-
-$(@UCLANG at _OPS): $(OPS_SOURCES)
-	@cd $(OPS_DIR) && $(OPSBUILD) generate $(OPSLIB)
-	@cd $(OPS_DIR) && $(OPSBUILD) compile  $(OPSLIB)
-	@cd $(OPS_DIR) && $(OPSBUILD) linklibs $(OPSLIB)
-	@cd $(OPS_DIR) && $(OPSBUILD) copy "--destination=$(PARROT_DYNEXT)" $(OPSLIB)
+$(@UCLANG at _GROUP): $(PMC_SOURCES) config/makefiles/pmc.in
+	$(MAKE) $(PMC_DIR)
+
+$(@UCLANG at _OPS) : $(OPS_SOURCES) config/makefiles/ops.in
+	$(MAKE) $(OPS_DIR)
 
 installable: installable_ at lclang@@exe@
 
@@ -317,10 +528,10 @@
 	echo "1" | ./installable_ at lclang@@exe@
 
 install: installable
+	$(MAKE) $(OPS_DIR) install
+	$(MAKE) $(PMC_DIR) install
 	$(CP) installable_ at lclang@@exe@ $(BIN_DIR)/parrot- at lclang@@exe@
 	$(CHMOD) 0755 $(BIN_DIR)/parrot- at lclang@@exe@
-	@cd $(OPS_DIR) && $(OPSBUILD) copy "--destination=$(LIB_DIR)/dynext" $(OPSLIB)
-	@cd $(PMC_DIR) && $(PMCBUILD) copy "--destination=$(LIB_DIR)/dynext" $(PMCS)
 	-$(MKPATH) $(LIB_DIR)/languages/@lclang@
 	$(CP) @lclang at .pbc $(LIB_DIR)/languages/@lclang@/@lclang at .pbc
 	-$(MKPATH) $(MANDIR)/man1
@@ -328,12 +539,20 @@
 	-$(MKPATH) $(DOC_DIR)/languages/@lclang@
 	$(CP) $(DOCS) $(DOC_DIR)/languages/@lclang@
 
+uninstall:
+	$(MAKE) $(OPS_DIR) uninstall
+	$(MAKE) $(PMC_DIR) uninstall
+	$(RM_F) $(BIN_DIR)/parrot- at lclang@@exe@
+	$(RM_RF) $(LIB_DIR)/languages/@lclang@
+	$(RM_F) $(MANDIR)/man1/parrot- at lclang@.1
+	$(RM_RF) $(DOC_DIR)/languages/@lclang@
+
 win32-inno-installer: installable
 	-$(MKPATH) man/man1
 	$(POD2MAN) doc/running.pod > man/man1/parrot- at lclang@.1
 	-$(MKPATH) man/html
 	pod2html --infile doc/running.pod --outfile man/html/parrot- at lclang@.html
-	$(CP) installable_ at lclang@@exe@ parrot- at lclang@@exe@
+	$(CP) installable_ at lclang@@exe@ parrot- at lclang@.exe
 	cd @build_dir@ && $(PERL) tools/dev/mk_inno_language.pl @lclang@
 	cd @build_dir@ && iscc parrot- at lclang@.iss
 
@@ -343,33 +562,20 @@
 CLEANUPS = \
   @lclang at .pbc \
   "src/gen_*.pir" \
+  "*.c" \
+  "*$(O)" \
   @lclang@@exe@ \
+IF(win32):  parrot- at lclang@.exe \
   installable_ at lclang@@exe@
 
-PMC_CLEANUPS = \
-  "$(PMC_DIR)/*.h" \
-  "$(PMC_DIR)/*.c" \
-  "$(PMC_DIR)/*.dump" \
-  "$(PMC_DIR)/*$(O)" \
-#IF(win32):  "$(PMC_DIR)/*.exp" \
-#IF(win32):  "$(PMC_DIR)/*.ilk" \
-#IF(win32):  "$(PMC_DIR)/*.manifest" \
-#IF(win32):  "$(PMC_DIR)/*.pdb" \
-#IF(win32):  "$(PMC_DIR)/*.lib" \
-  "$(PMC_DIR)/*$(LOAD_EXT)"
-
-OPS_CLEANUPS = \
-  "$(OPS_DIR)/*.c" \
-  "$(OPS_DIR)/*.h" \
-  "$(OPS_DIR)/*$(O)" \
-  "$(OPS_DIR)/*$(LOAD_EXT)"
-
 clean: testclean
+	$(MAKE) $(OPS_DIR) clean
+	$(MAKE) $(PMC_DIR) clean
 	$(RM_F) $(CLEANUPS)
-	$(RM_F) $(PMC_CLEANUPS)
-	$(RM_F) $(OPS_CLEANUPS)
 
 realclean: clean
+	$(MAKE) $(OPS_DIR) realclean
+	$(MAKE) $(PMC_DIR) realclean
 	$(RM_F) Makefile
 
 distclean: realclean
@@ -420,6 +626,11 @@
 #   fill-column:78
 # End:
 # vim: expandtab shiftwidth=4:
+
+__dynext/.ignore__
+
+__library/.ignore__
+
 __ at lclang@.pir__
 =head1 TITLE
 


More information about the parrot-commits mailing list