Skip to content

Commit

Permalink
make all macOS dependencies universal in maclibs/
Browse files Browse the repository at this point in the history
* ffmpeg 5.0.1 build with: ./configure  --disable-programs --disable-swscale --disable-avdevice --disable-avfilter --enable-shared  --disable-xlib
* arm64 libraries build on my M1 Macbook Pro, and x86_64 build on github action
* Qt6.2 produce an uniserval binary, so delete macos-m1.yml.
* add Ad-Hoc code sign
  • Loading branch information
ngn999 committed Apr 21, 2022
1 parent f973619 commit 1c3621e
Show file tree
Hide file tree
Showing 223 changed files with 49,254 additions and 111 deletions.
20 changes: 5 additions & 15 deletions .github/workflows/macos-6.2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
strategy:
matrix:
os: [macos-11]
qt_ver: [6.2.4,6.3.0]
qt_ver: [6.2.4]
qt_arch: [clang_64]
env:
targetName: GoldenDict
Expand Down Expand Up @@ -67,25 +67,15 @@ jobs:

- name: build macos
run: |
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
tar xvjf eb-4.4.3.tar.bz2
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd ..
#brew install qt # or use official offline installer
brew install opencc hunspell ffmpeg@5 libtiff xz lzo libogg libvorbis zstd
brew uninstall opencc hunspell ffmpeg@5 ffmpeg@4 libtiff xz lzo libogg libvorbis zstd || true
brew install create-dmg
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support
make -j 8
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"
make -j$(nproc)
# 打包
- name: package
run: |
macdeployqt ${targetName}.app -qmldir=. -verbose=1
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libswresample.4.dylib" "@executable_path/../Frameworks/libswresample.4.dylib" "GoldenDict.app/Contents/Frameworks//libavcodec.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libavcodec.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavcodec.59.dylib" "@executable_path/../Frameworks/libavcodec.59.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libswresample.4.dylib" "@executable_path/../Frameworks/libswresample.4.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libswresample.4.dylib"
install_name_tool -change "/usr/local/Cellar/nettle/3.7.3/lib/libnettle.8.dylib" "@executable_path/../Frameworks/libnettle.8.dylib" "GoldenDict.app/Contents/Frameworks//libhogweed.6.dylib"
codesign --force --deep -s - GoldenDict.app
otool -L GoldenDict.app/Contents/MacOS/GoldenDict
otool -L GoldenDict.app/Contents/Frameworks/lib*
mkdir tmp
Expand Down
75 changes: 0 additions & 75 deletions .github/workflows/macos-m1.yml

This file was deleted.

16 changes: 3 additions & 13 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,25 +67,15 @@ jobs:
fetch-depth: 0
- name: build macos
run: |
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
tar xvjf eb-4.4.3.tar.bz2
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd ..
#brew install qt # or use official offline installer
brew install opencc hunspell ffmpeg@5 libtiff xz lzo libogg libvorbis zstd
brew uninstall opencc hunspell ffmpeg@5 ffmpeg@4 libtiff xz lzo libogg libvorbis zstd || true
brew install create-dmg
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support
make -j 8
make -j$(nproc)
# 打包
- name: package
run: |
macdeployqt ${targetName}.app -qmldir=. -verbose=1
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libswresample.4.dylib" "@executable_path/../Frameworks/libswresample.4.dylib" "GoldenDict.app/Contents/Frameworks//libavcodec.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libavcodec.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavcodec.59.dylib" "@executable_path/../Frameworks/libavcodec.59.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libswresample.4.dylib" "@executable_path/../Frameworks/libswresample.4.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libavformat.59.dylib"
install_name_tool -change "/usr/local/Cellar/ffmpeg/5.0.1/lib/libavutil.57.dylib" "@executable_path/../Frameworks/libavutil.57.dylib" "GoldenDict.app/Contents/Frameworks//libswresample.4.dylib"
install_name_tool -change "/usr/local/Cellar/nettle/3.7.3/lib/libnettle.8.dylib" "@executable_path/../Frameworks/libnettle.8.dylib" "GoldenDict.app/Contents/Frameworks//libhogweed.6.dylib"
codesign --force --deep -s - GoldenDict.app
otool -L GoldenDict.app/Contents/MacOS/GoldenDict
otool -L GoldenDict.app/Contents/Frameworks/lib*
mkdir tmp
Expand Down
6 changes: 1 addition & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,8 @@ And then invoke `qmake-qt5` and `make`:

### macOS
```
wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
tar xvjf eb-4.4.3.tar.bz2
cd eb-4.4.3 && ./configure && make -j 8 && sudo make install
brew install qt # or use official offline installer
brew install opencc libao hunspell ffmpeg libtiff xz lzo libogg libvorbis
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support
qmake CONFIG+=release CONFIG+=zim_support CONFIG+=chinese_conversion_support QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"
make
make install
```
Expand Down
6 changes: 3 additions & 3 deletions goldendict.pro
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ mac {
-lvorbisfile \
-lvorbis \
-logg \
-lhunspell-1.7.0 \
-lhunspell \
-llzo2
!CONFIG( no_ffmpeg_player ) {
LIBS += -lao \
Expand All @@ -197,8 +197,8 @@ mac {
}
QT_CONFIG -= no-pkg-config
CONFIG += link_pkgconfig
INCLUDEPATH = $${PWD}/maclibs/include /opt/homebrew/include /usr/local/include
LIBS += -L$${PWD}/maclibs/lib -L/opt/homebrew/lib -L/usr/local/lib -framework AppKit -framework Carbon
INCLUDEPATH = $${PWD}/maclibs/include
LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon
OBJECTIVE_SOURCES += lionsupport.mm \
machotkeywrapper.mm \
macmouseover.mm \
Expand Down
100 changes: 100 additions & 0 deletions maclibs/include/eb/appendix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/* -*- C -*-
* Copyright (c) 1997-2006 Motoyuki Kasahara
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

#ifndef EB_APPENDIX_H
#define EB_APPENDIX_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EB_BUILD_LIBRARY
#include "eb.h"
#else
#include <eb/eb.h>
#endif

/*
* Function declarations.
*/
/* appendix.c */
void eb_initialize_appendix(EB_Appendix *appendix);
void eb_finalize_appendix(EB_Appendix *appendix);
EB_Error_Code eb_bind_appendix(EB_Appendix *appendix, const char *path);
int eb_is_appendix_bound(EB_Appendix *appendix);
EB_Error_Code eb_appendix_path(EB_Appendix *appendix, char *path);

/* appsub.c */
EB_Error_Code eb_load_all_appendix_subbooks(EB_Appendix *appendix);
EB_Error_Code eb_appendix_subbook_list(EB_Appendix *appendix,
EB_Subbook_Code *subbook_list, int *subbook_count);
EB_Error_Code eb_appendix_subbook(EB_Appendix *appendix,
EB_Subbook_Code *subbook_code);
EB_Error_Code eb_appendix_subbook_directory(EB_Appendix *appendix,
char *directory);
EB_Error_Code eb_appendix_subbook_directory2(EB_Appendix *appendix,
EB_Subbook_Code subbook_code, char *directory);
EB_Error_Code eb_set_appendix_subbook(EB_Appendix *appendix,
EB_Subbook_Code subbook_code);
void eb_unset_appendix_subbook(EB_Appendix *appendix);

/* narwalt.c */
int eb_have_narrow_alt(EB_Appendix *appendix);
EB_Error_Code eb_narrow_alt_start(EB_Appendix *appendix, int *start);
EB_Error_Code eb_narrow_alt_end(EB_Appendix *appendix, int *end);
EB_Error_Code eb_narrow_alt_character_text(EB_Appendix *appendix,
int character_number, char *text);
EB_Error_Code eb_forward_narrow_alt_character(EB_Appendix *appendix,
int n, int *character_number);
EB_Error_Code eb_backward_narrow_alt_character(EB_Appendix *appendix,
int n, int *character_number);

/* stopcode.c */
int eb_have_stop_code(EB_Appendix *appendix);
EB_Error_Code eb_stop_code(EB_Appendix *appendix, int *);

/* widealt.c */
int eb_have_wide_alt(EB_Appendix *appendix);
EB_Error_Code eb_wide_alt_start(EB_Appendix *appendix, int *start);
EB_Error_Code eb_wide_alt_end(EB_Appendix *appendix, int *end);
EB_Error_Code eb_wide_alt_character_text(EB_Appendix *appendix,
int character_number, char *text);
EB_Error_Code eb_forward_wide_alt_character(EB_Appendix *appendix, int n,
int *character_number);
EB_Error_Code eb_backward_wide_alt_character(EB_Appendix *appendix, int n,
int *character_number);

/* for backward compatibility */
#define eb_suspend_appendix eb_unset_appendix_subbook
#define eb_initialize_all_appendix_subbooks eb_load_all_appendix_subbooks

#ifdef __cplusplus
}
#endif

#endif /* not EB_APPENDIX_H */
73 changes: 73 additions & 0 deletions maclibs/include/eb/binary.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/* -*- C -*-
* Copyright (c) 2001-2006 Motoyuki Kasahara
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

#ifndef EB_BINARY_H
#define EB_BINARY_H

#ifdef __cplusplus
extern "C" {
#endif

#include <sys/types.h>

#ifdef EB_BUILD_LIBRARY
#include "defs.h"
#else
#include <eb/defs.h>
#endif

/*
* Function declarations.
*/
/* binary.c */
EB_Error_Code eb_set_binary_mono_graphic(EB_Book *book,
const EB_Position *position, int width, int height);
EB_Error_Code eb_set_binary_gray_graphic(EB_Book *book,
const EB_Position *position, int width, int height);
EB_Error_Code eb_set_binary_wave(EB_Book *book,
const EB_Position *start_position, const EB_Position *end_position);
EB_Error_Code eb_set_binary_color_graphic(EB_Book *book,
const EB_Position *position);
EB_Error_Code eb_set_binary_mpeg(EB_Book *book, const unsigned int *argv);
EB_Error_Code eb_read_binary(EB_Book *book, size_t binary_max_length,
char *binary, ssize_t *binary_length);
void eb_unset_binary(EB_Book *book);

/* filename.c */
EB_Error_Code eb_compose_movie_file_name(const unsigned int *argv,
char *composed_file_name);
EB_Error_Code eb_compose_movie_path_name(EB_Book *book,
const unsigned int *argv, char *composed_path_name);
EB_Error_Code eb_decompose_movie_file_name(unsigned int *argv,
const char *composed_file_name);

#ifdef __cplusplus
}
#endif

#endif /* not EB_BINARY_H */
Loading

0 comments on commit 1c3621e

Please sign in to comment.