Adjust Makefile for Perl build

Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/98bb6c2c
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/98bb6c2c
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/98bb6c2c

Branch: refs/heads/master
Commit: 98bb6c2c6505a5aa5544cd71785d31a201f4eaa1
Parents: 5befbd2
Author: Nick Wellnhofer <[email protected]>
Authored: Wed Oct 29 22:15:23 2014 +0100
Committer: Nick Wellnhofer <[email protected]>
Committed: Sun Nov 30 17:11:01 2014 +0100

----------------------------------------------------------------------
 runtime/common/charmonizer.main | 43 +++++++++++++++++++++++++++---------
 1 file changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/98bb6c2c/runtime/common/charmonizer.main
----------------------------------------------------------------------
diff --git a/runtime/common/charmonizer.main b/runtime/common/charmonizer.main
index 9c59db5..4c2bcd5 100644
--- a/runtime/common/charmonizer.main
+++ b/runtime/common/charmonizer.main
@@ -158,6 +158,11 @@ int main(int argc, const char **argv) {
     if (chaz_CLI_defined(cli, "enable-makefile")) {
         cfish_MakeFile *mf = cfish_MakeFile_new(cli);
         cfish_MakeFile_write(mf);
+        /* Export filenames. */
+        chaz_ConfWriter_add_def("SHARED_LIB_FILENAME",
+                                mf->shared_lib_filename);
+        chaz_ConfWriter_add_def("STATIC_LIB_FILENAME",
+                                mf->static_lib_filename);
         cfish_MakeFile_destroy(mf);
     }
 
@@ -215,12 +220,6 @@ S_add_compiler_flags(struct chaz_CLI *cli) {
 
 static cfish_MakeFile*
 cfish_MakeFile_new(chaz_CLI *cli) {
-    static const char *c_autogen_src_files[] = {
-        "cfish_parcel",
-        "testcfish_parcel",
-        NULL
-    };
-
     const char *dir_sep = chaz_OS_dir_sep();
 
     cfish_MakeFile *self = malloc(sizeof(cfish_MakeFile));
@@ -229,14 +228,33 @@ cfish_MakeFile_new(chaz_CLI *cli) {
     self->cli      = cli;
 
     self->base_dir = "..";
-    self->host_src_dir = "src";
     self->core_dir = chaz_Util_join(dir_sep, self->base_dir, "core", NULL);
     self->autogen_src_dir = chaz_Util_join(dir_sep, "autogen", "source", NULL);
     self->autogen_inc_dir
         = chaz_Util_join(dir_sep, "autogen", "include", NULL);
     self->autogen_target
         = chaz_Util_join(dir_sep, "autogen", "hierarchy.json", NULL);
-    self->autogen_src_files = c_autogen_src_files;
+
+    if (chaz_CLI_defined(cli, "enable-perl")) {
+        static const char *perl_autogen_src_files[] = {
+            "boot",
+            "callbacks",
+            "cfish_parcel",
+            "testcfish_parcel",
+            NULL
+        };
+        self->host_src_dir = "xs";
+        self->autogen_src_files = perl_autogen_src_files;
+    }
+    else {
+        static const char *c_autogen_src_files[] = {
+            "cfish_parcel",
+            "testcfish_parcel",
+            NULL
+        };
+        self->host_src_dir = "src";
+        self->autogen_src_files = c_autogen_src_files;
+    }
 
     self->shared_lib = chaz_Lib_new("cfish", chaz_Lib_SHARED, cfish_version,
                                     cfish_major_version);
@@ -306,6 +324,7 @@ cfish_MakeFile_write(cfish_MakeFile *self) {
     }
 
     chaz_CFlags_add_include_dir(makefile_cflags, ".");
+    chaz_CFlags_add_include_dir(makefile_cflags, self->host_src_dir);
     chaz_CFlags_add_include_dir(makefile_cflags, self->autogen_inc_dir);
 
     var = chaz_MakeFile_add_var(self->makefile, "CFLAGS", NULL);
@@ -336,7 +355,9 @@ cfish_MakeFile_write(cfish_MakeFile *self) {
     chaz_MakeFile_add_rule(self->makefile, "all", scratch);
     free(scratch);
 
-    cfish_MakeFile_write_c_cfc_rules(self);
+    if (!chaz_CLI_defined(self->cli, "enable-perl")) {
+        cfish_MakeFile_write_c_cfc_rules(self);
+    }
 
     /* Needed for parallel builds. */
     for (i = 0; self->autogen_src_files[i] != NULL; ++i) {
@@ -363,7 +384,9 @@ cfish_MakeFile_write(cfish_MakeFile *self) {
     chaz_MakeFile_add_static_lib(self->makefile, self->static_lib,
                                  "$(CLOWNFISH_OBJS)");
 
-    cfish_MakeFile_write_c_test_rules(self);
+    if (!chaz_CLI_defined(self->cli, "enable-perl")) {
+        cfish_MakeFile_write_c_test_rules(self);
+    }
 
     clean_rule = chaz_MakeFile_clean_rule(self->makefile);
     chaz_MakeRule_add_rm_command(clean_rule, "$(CLOWNFISH_OBJS)");

Reply via email to