You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2013/05/28 19:49:10 UTC

[lucy-commits] [2/4] git commit: refs/heads/master - Regenerate charmonizer.c

Regenerate charmonizer.c


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

Branch: refs/heads/master
Commit: dbf9d5b97ef486ed94ff46b7cd986bd73810f5a7
Parents: 5edffba
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Tue May 28 19:44:26 2013 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Tue May 28 19:44:26 2013 +0200

----------------------------------------------------------------------
 clownfish/compiler/common/charmonizer.c |   42 ++++++++++++++++++++++----
 clownfish/runtime/common/charmonizer.c  |   42 ++++++++++++++++++++++----
 common/charmonizer.c                    |   42 ++++++++++++++++++++++----
 3 files changed, 108 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/dbf9d5b9/clownfish/compiler/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/common/charmonizer.c b/clownfish/compiler/common/charmonizer.c
index 2d1b7c1..f15eae0 100644
--- a/clownfish/compiler/common/charmonizer.c
+++ b/clownfish/compiler/common/charmonizer.c
@@ -3579,6 +3579,7 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
                              const char *sources, chaz_CFlags *link_flags) {
     chaz_CFlags   *local_flags  = chaz_CC_new_cflags();
     const char    *link         = chaz_CC_link_command();
+    const char    *shlib_ext    = chaz_OS_shared_lib_ext();
     const char    *link_flags_string = "";
     const char    *local_flags_string;
     chaz_MakeRule *rule;
@@ -3591,13 +3592,25 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
     if (link_flags) {
         link_flags_string = chaz_CFlags_get_string(link_flags);
     }
+
     if (chaz_CC_msvc_version_num()) {
         chaz_CFlags_append(local_flags, "/nologo");
     }
     chaz_CFlags_link_shared_library(local_flags);
+    if (strcmp(shlib_ext, ".dylib") == 0) {
+        /* Set temporary install name with full path on Darwin. */
+        const char *dir_sep = chaz_OS_dir_sep();
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *install_name = chaz_Util_join("", "-install_name $(CURDIR)",
+                                            dir_sep, major_v_name, NULL);
+        chaz_CFlags_append(local_flags, install_name);
+        free(major_v_name);
+        free(install_name);
+    }
     chaz_CFlags_set_shared_library_version(local_flags, lib);
     chaz_CFlags_set_link_output(local_flags, filename);
     local_flags_string = chaz_CFlags_get_string(local_flags);
+
     command = chaz_Util_join(" ", link, sources, link_flags_string,
                              local_flags_string, NULL);
     chaz_MakeRule_add_command(rule, command);
@@ -3605,14 +3618,31 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
 
     chaz_MakeRule_add_rm_command(makefile->clean, filename);
 
-    if (strcmp(chaz_OS_shared_lib_ext(), ".so") == 0) {
-        /* Add symlink for soname. */
-        char *soname = chaz_SharedLib_major_version_filename(lib);
-        command = chaz_Util_join(" ", "ln -sf", filename, soname, NULL);
+    /* Add symlinks. */
+    if (strcmp(shlib_ext, ".dll") != 0) {
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *no_v_name    = chaz_SharedLib_no_version_filename(lib);
+
+        command = chaz_Util_join(" ", "ln -sf", filename, major_v_name, NULL);
         chaz_MakeRule_add_command(rule, command);
         free(command);
-        chaz_MakeRule_add_rm_command(makefile->clean, soname);
-        free(soname);
+
+        if (strcmp(shlib_ext, ".dylib") == 0) {
+            command = chaz_Util_join(" ", "ln -sf", filename, no_v_name,
+                                     NULL);
+        }
+        else {
+            command = chaz_Util_join(" ", "ln -sf", major_v_name, no_v_name,
+                                     NULL);
+        }
+        chaz_MakeRule_add_command(rule, command);
+        free(command);
+
+        chaz_MakeRule_add_rm_command(makefile->clean, major_v_name);
+        chaz_MakeRule_add_rm_command(makefile->clean, no_v_name);
+
+        free(major_v_name);
+        free(no_v_name);
     }
 
     if (chaz_CC_msvc_version_num()) {

http://git-wip-us.apache.org/repos/asf/lucy/blob/dbf9d5b9/clownfish/runtime/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/clownfish/runtime/common/charmonizer.c b/clownfish/runtime/common/charmonizer.c
index 74a2f98..67a6de2 100644
--- a/clownfish/runtime/common/charmonizer.c
+++ b/clownfish/runtime/common/charmonizer.c
@@ -3773,6 +3773,7 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
                              const char *sources, chaz_CFlags *link_flags) {
     chaz_CFlags   *local_flags  = chaz_CC_new_cflags();
     const char    *link         = chaz_CC_link_command();
+    const char    *shlib_ext    = chaz_OS_shared_lib_ext();
     const char    *link_flags_string = "";
     const char    *local_flags_string;
     chaz_MakeRule *rule;
@@ -3785,13 +3786,25 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
     if (link_flags) {
         link_flags_string = chaz_CFlags_get_string(link_flags);
     }
+
     if (chaz_CC_msvc_version_num()) {
         chaz_CFlags_append(local_flags, "/nologo");
     }
     chaz_CFlags_link_shared_library(local_flags);
+    if (strcmp(shlib_ext, ".dylib") == 0) {
+        /* Set temporary install name with full path on Darwin. */
+        const char *dir_sep = chaz_OS_dir_sep();
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *install_name = chaz_Util_join("", "-install_name $(CURDIR)",
+                                            dir_sep, major_v_name, NULL);
+        chaz_CFlags_append(local_flags, install_name);
+        free(major_v_name);
+        free(install_name);
+    }
     chaz_CFlags_set_shared_library_version(local_flags, lib);
     chaz_CFlags_set_link_output(local_flags, filename);
     local_flags_string = chaz_CFlags_get_string(local_flags);
+
     command = chaz_Util_join(" ", link, sources, link_flags_string,
                              local_flags_string, NULL);
     chaz_MakeRule_add_command(rule, command);
@@ -3799,14 +3812,31 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
 
     chaz_MakeRule_add_rm_command(makefile->clean, filename);
 
-    if (strcmp(chaz_OS_shared_lib_ext(), ".so") == 0) {
-        /* Add symlink for soname. */
-        char *soname = chaz_SharedLib_major_version_filename(lib);
-        command = chaz_Util_join(" ", "ln -sf", filename, soname, NULL);
+    /* Add symlinks. */
+    if (strcmp(shlib_ext, ".dll") != 0) {
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *no_v_name    = chaz_SharedLib_no_version_filename(lib);
+
+        command = chaz_Util_join(" ", "ln -sf", filename, major_v_name, NULL);
         chaz_MakeRule_add_command(rule, command);
         free(command);
-        chaz_MakeRule_add_rm_command(makefile->clean, soname);
-        free(soname);
+
+        if (strcmp(shlib_ext, ".dylib") == 0) {
+            command = chaz_Util_join(" ", "ln -sf", filename, no_v_name,
+                                     NULL);
+        }
+        else {
+            command = chaz_Util_join(" ", "ln -sf", major_v_name, no_v_name,
+                                     NULL);
+        }
+        chaz_MakeRule_add_command(rule, command);
+        free(command);
+
+        chaz_MakeRule_add_rm_command(makefile->clean, major_v_name);
+        chaz_MakeRule_add_rm_command(makefile->clean, no_v_name);
+
+        free(major_v_name);
+        free(no_v_name);
     }
 
     if (chaz_CC_msvc_version_num()) {

http://git-wip-us.apache.org/repos/asf/lucy/blob/dbf9d5b9/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/common/charmonizer.c b/common/charmonizer.c
index 99740a8..eda0a12 100644
--- a/common/charmonizer.c
+++ b/common/charmonizer.c
@@ -3773,6 +3773,7 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
                              const char *sources, chaz_CFlags *link_flags) {
     chaz_CFlags   *local_flags  = chaz_CC_new_cflags();
     const char    *link         = chaz_CC_link_command();
+    const char    *shlib_ext    = chaz_OS_shared_lib_ext();
     const char    *link_flags_string = "";
     const char    *local_flags_string;
     chaz_MakeRule *rule;
@@ -3785,13 +3786,25 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
     if (link_flags) {
         link_flags_string = chaz_CFlags_get_string(link_flags);
     }
+
     if (chaz_CC_msvc_version_num()) {
         chaz_CFlags_append(local_flags, "/nologo");
     }
     chaz_CFlags_link_shared_library(local_flags);
+    if (strcmp(shlib_ext, ".dylib") == 0) {
+        /* Set temporary install name with full path on Darwin. */
+        const char *dir_sep = chaz_OS_dir_sep();
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *install_name = chaz_Util_join("", "-install_name $(CURDIR)",
+                                            dir_sep, major_v_name, NULL);
+        chaz_CFlags_append(local_flags, install_name);
+        free(major_v_name);
+        free(install_name);
+    }
     chaz_CFlags_set_shared_library_version(local_flags, lib);
     chaz_CFlags_set_link_output(local_flags, filename);
     local_flags_string = chaz_CFlags_get_string(local_flags);
+
     command = chaz_Util_join(" ", link, sources, link_flags_string,
                              local_flags_string, NULL);
     chaz_MakeRule_add_command(rule, command);
@@ -3799,14 +3812,31 @@ chaz_MakeFile_add_shared_lib(chaz_MakeFile *makefile, chaz_SharedLib *lib,
 
     chaz_MakeRule_add_rm_command(makefile->clean, filename);
 
-    if (strcmp(chaz_OS_shared_lib_ext(), ".so") == 0) {
-        /* Add symlink for soname. */
-        char *soname = chaz_SharedLib_major_version_filename(lib);
-        command = chaz_Util_join(" ", "ln -sf", filename, soname, NULL);
+    /* Add symlinks. */
+    if (strcmp(shlib_ext, ".dll") != 0) {
+        char *major_v_name = chaz_SharedLib_major_version_filename(lib);
+        char *no_v_name    = chaz_SharedLib_no_version_filename(lib);
+
+        command = chaz_Util_join(" ", "ln -sf", filename, major_v_name, NULL);
         chaz_MakeRule_add_command(rule, command);
         free(command);
-        chaz_MakeRule_add_rm_command(makefile->clean, soname);
-        free(soname);
+
+        if (strcmp(shlib_ext, ".dylib") == 0) {
+            command = chaz_Util_join(" ", "ln -sf", filename, no_v_name,
+                                     NULL);
+        }
+        else {
+            command = chaz_Util_join(" ", "ln -sf", major_v_name, no_v_name,
+                                     NULL);
+        }
+        chaz_MakeRule_add_command(rule, command);
+        free(command);
+
+        chaz_MakeRule_add_rm_command(makefile->clean, major_v_name);
+        chaz_MakeRule_add_rm_command(makefile->clean, no_v_name);
+
+        free(major_v_name);
+        free(no_v_name);
     }
 
     if (chaz_CC_msvc_version_num()) {