Last active
July 4, 2022 13:08
-
-
Save mcs07/6194763 to your computer and use it in GitHub Desktop.
A patch for the InChI 1.04 makefile to support Mac OS X. This is needed because the OS X linker does not support `soname` or `version-script`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/INCHI_API/gcc_so_makefile/libinchi.map b/INCHI_API/gcc_so_makefile/libinchi.map | |
index 0526992..0f768c8 100755 | |
--- a/INCHI_API/gcc_so_makefile/libinchi.map | |
+++ b/INCHI_API/gcc_so_makefile/libinchi.map | |
@@ -1,5 +1,32 @@ | |
-{ | |
-global: CheckINCHI; CheckINCHIKey; FreeINCHI; FreeStdINCHI; FreeStructFromINCHI; FreeStructFromStdINCHI; Free_inchi_Input; Free_std_inchi_Input; GetINCHI; GetINCHIKeyFromINCHI; GetINCHIfromINCHI; GetStdINCHI; GetStdINCHIKeyFromStdINCHI; GetStringLength; GetStructFromINCHI; GetStructFromStdINCHI; Get_inchi_Input_FromAuxInfo; Get_std_inchi_Input_FromAuxInfo; INCHIGEN_Create; INCHIGEN_Destroy; INCHIGEN_DoCanonicalization; INCHIGEN_DoNormalization; INCHIGEN_DoSerialization; INCHIGEN_Reset; INCHIGEN_Setup; STDINCHIGEN_Create; STDINCHIGEN_Destroy; STDINCHIGEN_DoCanonicalization; STDINCHIGEN_DoNormalization; STDINCHIGEN_DoSerialization; STDINCHIGEN_Reset; STDINCHIGEN_Setup; | |
-local: *; | |
-}; | |
- | |
+_CheckINCHI | |
+_CheckINCHIKey | |
+_FreeINCHI | |
+_FreeStdINCHI | |
+_FreeStructFromINCHI | |
+_FreeStructFromStdINCHI | |
+_Free_inchi_Input | |
+_Free_std_inchi_Input | |
+_GetINCHI | |
+_GetINCHIKeyFromINCHI | |
+_GetINCHIfromINCHI | |
+_GetStdINCHI | |
+_GetStdINCHIKeyFromStdINCHI | |
+_GetStringLength | |
+_GetStructFromINCHI | |
+_GetStructFromStdINCHI | |
+_Get_inchi_Input_FromAuxInfo | |
+_Get_std_inchi_Input_FromAuxInfo | |
+_INCHIGEN_Create | |
+_INCHIGEN_Destroy | |
+_INCHIGEN_DoCanonicalization | |
+_INCHIGEN_DoNormalization | |
+_INCHIGEN_DoSerialization | |
+_INCHIGEN_Reset | |
+_INCHIGEN_Setup | |
+_STDINCHIGEN_Create | |
+_STDINCHIGEN_Destroy | |
+_STDINCHIGEN_DoCanonicalization | |
+_STDINCHIGEN_DoNormalization | |
+_STDINCHIGEN_DoSerialization | |
+_STDINCHIGEN_Reset | |
+_STDINCHIGEN_Setup | |
diff --git a/INCHI_API/gcc_so_makefile/makefile b/INCHI_API/gcc_so_makefile/makefile | |
index 92e5911..3def22c 100755 | |
--- a/INCHI_API/gcc_so_makefile/makefile | |
+++ b/INCHI_API/gcc_so_makefile/makefile | |
@@ -19,16 +19,17 @@ endif | |
# In addition, inchi.map restricts set of expoorted from .so | |
# functions to those which belong to InChI API | |
ifndef windir | |
-LINUX_MAP = ,--version-script=libinchi.map | |
+LINUX_MAP = ,-exported_symbols_list,libinchi.map | |
ifdef ISLINUX | |
-LINUX_FPIC = -fPIC | |
-LINUX_Z_RELRO = ,-z,relro | |
+LINUX_FPIC = -fPIC -fno-common | |
+LINUX_Z_RELRO = | |
endif | |
endif | |
# === version === | |
MAIN_VERSION = .1 | |
VERSION = $(MAIN_VERSION).04.00 | |
+COMPATIBILITY_VERSION = 1.04.00 | |
# === executable & library directory === | |
ifndef LIB_DIR | |
@@ -55,17 +56,17 @@ INCHI_MAIN_PATHNAME = $(LIB_DIR)/$(INCHI_MAIN_NAME) | |
# === Linker to create (Shared) InChI library ==== | |
ifndef SHARED_LINK | |
- SHARED_LINK = gcc -shared | |
+ SHARED_LINK = gcc -dynamiclib | |
endif | |
# === Linker to create Main program ===== | |
ifndef LINKER | |
ifndef windir | |
ifdef ISLINUX | |
- LINKER_CWD_PATH = -Wl,-R,"" | |
+ LINKER_CWD_PATH = | |
endif | |
endif | |
- LINKER = gcc -s $(LINKER_CWD_PATH) | |
+ LINKER = gcc $(LINKER_CWD_PATH) | |
endif | |
ifndef P_LIBR | |
@@ -136,9 +137,9 @@ $(INCHI_MAIN_PATHNAME) : $(INCHI_MAIN_OBJS) $(INCHI_LIB_PATHNAME).a | |
else | |
-$(INCHI_MAIN_PATHNAME) : $(INCHI_MAIN_OBJS) $(INCHI_LIB_PATHNAME).so$(VERSION) | |
+$(INCHI_MAIN_PATHNAME) : $(INCHI_MAIN_OBJS) $(INCHI_LIB_PATHNAME)$(VERSION).dylib $(INCHI_LIB_PATHNAME)_static.a | |
$(LINKER) -o $(INCHI_MAIN_PATHNAME) $(INCHI_MAIN_OBJS) \ | |
- $(INCHI_LIB_PATHNAME).so$(VERSION) -lm | |
+ $(INCHI_LIB_PATHNAME)$(VERSION).dylib -lm | |
endif | |
@@ -209,13 +210,17 @@ $(INCHI_LIB_PATHNAME).a: $(INCHI_LIB_OBJS) | |
else | |
-$(INCHI_LIB_PATHNAME).so$(VERSION): $(INCHI_LIB_OBJS) | |
+$(INCHI_LIB_PATHNAME)$(VERSION).dylib: $(INCHI_LIB_OBJS) | |
$(SHARED_LINK) $(SHARED_LINK_PARM) -o \ | |
- $(INCHI_LIB_PATHNAME).so$(VERSION) \ | |
+ $(INCHI_LIB_PATHNAME)$(VERSION).dylib \ | |
$(INCHI_LIB_OBJS) \ | |
- -Wl$(LINUX_MAP)$(LINUX_Z_RELRO),-soname,$(INCHI_LIB_NAME).so$(MAIN_VERSION) | |
- ln -fs $(INCHI_LIB_NAME).so$(VERSION) \ | |
- $(INCHI_LIB_PATHNAME).so$(MAIN_VERSION) | |
+ -Wl$(LINUX_MAP)$(LINUX_Z_RELRO),-install_name,$(LIBDIR)/$(INCHI_LIB_NAME)$(MAIN_VERSION).dylib -Wl,-compatibility_version,$(COMPATIBILITY_VERSION) | |
+ ln -fs $(INCHI_LIB_NAME)$(VERSION).dylib \ | |
+ $(INCHI_LIB_PATHNAME)$(MAIN_VERSION).dylib | |
+ | |
+$(INCHI_LIB_PATHNAME)_static.a: $(INCHI_LIB_OBJS) | |
+ ar qc $(INCHI_LIB_PATHNAME)_static.a $(INCHI_LIB_OBJS) | |
+ ranlib $(INCHI_LIB_PATHNAME)_static.a | |
endif | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment