From b723a43c45175826e286b2d16665760ac0b32750 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Sun, 10 Sep 2023 23:30:05 +0000 Subject: [PATCH] Create .frameworks for macOS and iOS differently FossilOrigin-Name: 5abbdc7a0a39925071a56d373ab4b27ac1b952b782b923d6cf6ab8c2fb459583 --- build-aux/m4/buildsys.m4 | 4 +- buildsys.mk.in | 87 ++++++++++++++++++++++++++-------------- 2 files changed, 59 insertions(+), 32 deletions(-) diff --git a/build-aux/m4/buildsys.m4 b/build-aux/m4/buildsys.m4 index aa66e59..3ec1cc5 100644 --- a/build-aux/m4/buildsys.m4 +++ b/build-aux/m4/buildsys.m4 @@ -153,6 +153,7 @@ AC_DEFUN([BUILDSYS_CHECK_IOS], [ #endif ], [ host_is_ios="yes" + AC_SUBST(HOST_IS_IOS, yes) ], [ host_is_ios="no" ]) @@ -318,11 +319,10 @@ AC_DEFUN([BUILDSYS_FRAMEWORK], [ case "$host_os" in darwin*) + FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' AS_IF([test x"$host_is_ios" = x"yes"], [ - FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}' ], [ - FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}' ]) diff --git a/buildsys.mk.in b/buildsys.mk.in index 8002787..1e9ee98 100644 --- a/buildsys.mk.in +++ b/buildsys.mk.in @@ -208,37 +208,64 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK} ${FRAMEWORK_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${LINK_STATUS} out="$@"; \ - if rm -fr $@ && \ - ${MKDIR_P} $@/Versions/${LIB_MAJOR} && \ - ${LN_S} ${LIB_MAJOR} $@/Versions/Current && \ - ${MAKE} @MAKEFLAGS_SILENT@ \ - COPY_HEADERS_IF_SUBDIR=${includesubdir} \ - COPY_HEADERS_DESTINATION=$$PWD/$@/Versions/${LIB_MAJOR}/Headers\ - copy-headers-into-framework && \ - ${LN_S} Versions/Current/Headers $@/Headers && \ - if test -f Info.plist; then \ - ${MKDIR_P} $@/Versions/${LIB_MAJOR}/Resources && \ - ${INSTALL} -m 644 Info.plist \ - $@/Versions/${LIB_MAJOR}/Resources/Info.plist && \ - ${LN_S} Versions/Current/Resources $@/Resources; \ - fi && \ - if test -f module.modulemap; then \ - ${MKDIR_P} $@/Versions/${LIB_MAJOR}/Modules && \ - ${INSTALL} -m 644 module.modulemap \ - $@/Versions/${LIB_MAJOR}/Modules/module.modulemap && \ - ${LN_S} Versions/Current/Modules $@/Modules; \ - fi && \ - ${LD} -o $@/Versions/${LIB_MAJOR}/$${out%.framework} ${LIB_OBJS} \ - ${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \ - ${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \ - ${FRAMEWORK_LIBS} && \ - ${LN_S} Versions/Current/$${out%.framework} \ - $@/$${out%.framework} && \ - ${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \ - ${LINK_OK}; \ + if test x"@HOST_IS_IOS@" = x"yes"; then \ + if rm -fr $@ && \ + ${MAKE} @MAKEFLAGS_SILENT@ \ + COPY_HEADERS_IF_SUBDIR=${includesubdir} \ + COPY_HEADERS_DESTINATION=$$PWD/$@/Headers \ + copy-headers-into-framework && \ + if test -f Info.plist; then \ + ${INSTALL} -m 644 Info.plist $@/Info.plist; \ + fi && \ + if test -f module.modulemap; then \ + ${MKDIR_P} $@/Modules && \ + ${INSTALL} -m 644 module.modulemap \ + $@/Modules/module.modulemap; \ + fi && \ + ${LD} -o $@/$${out%.framework} \ + ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \ + ${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \ + ${FRAMEWORK_LIBS} && \ + ${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \ + ${LINK_OK}; \ + else \ + rm -fr $$out; false; \ + ${LINK_FAILED}; \ + fi; \ else \ - rm -fr $$out; false; \ - ${LINK_FAILED}; \ + versiondir="$@/Versions/${LIB_MAJOR}"; \ + if rm -fr $@ && \ + ${MKDIR_P} $$versiondir && \ + ${LN_S} ${LIB_MAJOR} $@/Versions/Current && \ + ${MAKE} @MAKEFLAGS_SILENT@ \ + COPY_HEADERS_IF_SUBDIR=${includesubdir} \ + COPY_HEADERS_DESTINATION=$$PWD/$$versiondir/Headers \ + copy-headers-into-framework && \ + ${LN_S} Versions/Current/Headers $@/Headers && \ + if test -f Info.plist; then \ + ${MKDIR_P} $$versiondir/Resources && \ + ${INSTALL} -m 644 Info.plist \ + $$versiondir/Resources/Info.plist && \ + ${LN_S} Versions/Current/Resources $@/Resources; \ + fi && \ + if test -f module.modulemap; then \ + ${MKDIR_P} $$versiondir/Modules && \ + ${INSTALL} -m 644 module.modulemap \ + $$versiondir/Modules/module.modulemap && \ + ${LN_S} Versions/Current/Modules $@/Modules; \ + fi && \ + ${LD} -o $$versiondir/$${out%.framework} \ + ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${FRAMEWORK_LDFLAGS} \ + ${FRAMEWORK_LDFLAGS_INSTALL_NAME} ${LDFLAGS} \ + ${FRAMEWORK_LIBS} && \ + ${LN_S} Versions/Current/$${out%.framework} \ + $@/$${out%.framework} && \ + ${CODESIGN} -fs ${CODESIGN_IDENTITY} $@; then \ + ${LINK_OK}; \ + else \ + rm -fr $$out; false; \ + ${LINK_FAILED}; \ + fi; \ fi copy-headers-into-framework: