Commit graph

191 commits

Author SHA1 Message Date
Dominik Riebeling
ce3da6238f rbutil: Fix linking zlib on Windows.
With Qt4 zlib was linked implicitly (and explicitly linking it caused
errors). This was a Qt issue that has been resolved with (at least
current) Qt5, now we need to explicitly link zlib on native Windows.

Change-Id: Ia5a6bdc83a39f6f5629c34ed835d2272a887f161
2020-10-21 21:33:39 +02:00
Dominik Riebeling
a05d061aa3 rbutil: Pass isysroot to rbutil libs on macOS.
On macOS we pass the full path to the compiler. On recent versions this
causes the compiler to not find its SDK path, this needs to get passed
via the isysroot option.

Change-Id: Iea2820e1755cc80e12691119dfa31d70938ea511
2020-10-18 19:16:27 +02:00
Dominik Riebeling
2037b837f8 sbtools: convert crypto to libtomcrypt.
Replace the use of crypto++ with tomcrypt, which is much smaller and C.
This gets rid of various build issues for systems that don't ship
crypo++ (i.e. everything except Linux.)

Change-Id: Ic0799e17b94935c71b14765cf9a2a7ea2b0adc7a
2020-10-18 19:08:32 +02:00
Dominik Riebeling
c8fa53050d rbutil: Add project file for building multiple binaries.
To use ipodpatcher and sansapatcher as external binaries (so we can do
proper permission elevation) we need to build them using qmake as part
of the main build. Add a subdirs template based project file to do that,
and project files for the patchers.

Move Linux appimage rules one level up, since it needs to include the
patchers as well.

Change-Id: I63ee59372668f4319402df65a77a6f04521d133b
2020-10-11 09:42:13 +02:00
Dominik Riebeling
d5820ff779 rbutil: Qt6: allow building without Multimedia module.
Qt6 beta doesn't include the Multimedia module. Allow building without,
and disable on Qt6 for now.

Change-Id: Ie2ad25c81d9c62c8c6e8efaf8309b3600afce1d0
2020-08-16 12:14:30 +02:00
Dominik Riebeling
c425d4627e rbutil: Drop Qt4 support.
The last version of Qt4 was released in 2011, time to officially move to
Qt5.

Change-Id: I57d2261bfa44ec824ef4a406f60ce1bd9bc52589
2020-08-08 10:01:42 +02:00
Dominik Riebeling
2fe046c380 rbutil: Drop support for libusb0.
libusb1 is maintained and stable since years. No need to keep the old
implementation around.

Change-Id: I25a4c5643fc9a88eaad3e8f2f7e1dd705be080e0
2020-08-07 22:18:41 +02:00
Dominik Riebeling
82f98dea2b rbutil: Explicitly link bzip2 only on non-Windows.
When building for Windows (at least using mxe) bzip2 clashes with
existing symbols. This seems to be a similar issue as with zlib. Don't
link it explicitly, so the linker uses the existing symbols.

Fixes building for Windows.

Change-Id: I7a1e980542961f3e7f8febedd6c0b8f04a6f6ec0
2020-08-06 20:43:15 +02:00
Dominik Riebeling
b820c648c8 rbutil: Always use Qt Multimedia to play TTS preview.
We're using it on Windows and macOS, there's no reason to not do so on
Linux.

Change-Id: I6e4d9006eff22fd4bf6b882407a5497b2f8cdd2f
2020-07-26 15:12:17 +02:00
Dominik Riebeling
82716bbe20 rbutil: Fix filename for additional rule to create dmg image on macOS. 2020-06-30 19:22:45 +02:00
Dominik Riebeling
7f3142fc5c rbutil: Fix compiling 32bit Rockbox Utility on 64bit Linux.
Pass the machine options for libs to the c++ compiler as well.

Change-Id: I56bfbbe4aca4b3a7b86bb0d5323a1f7d78d4f60c
2020-06-21 09:14:23 +02:00
Dominik Riebeling
b2749d0f77 rbutil: Add extra build rule on Linux to create AppImage.
Build the "appimage" target to create an AppImage file from the binary.
The needed linuxdeploy tools will be downloaded first.

Change-Id: Ia1e8977ea7689fb547c5d1a6abe6448a94f1b1af
2020-06-20 12:20:21 +02:00
Solomon Peachy
8d2d6f4ca5 rbutil: Add bspatch and libbzip2
This is to enable binary patching of Hiby-based firmware files

  Note that noting in rbutil uses this yet.

Change-Id: I03ac824dd7402d508eb4e857ad78f184eb0d0243
2020-04-09 02:24:49 +02:00
Franklin Wei
a8be52c62a rbutil: fix windows release build
This fixes two of them: not finding the lrelease binary and not
compiling for C++11 (which is required by some Qt headers now).

Change-Id: I3c0eb3c2002c3ce7a2eeea877db5fa6942c9b2ba
2019-11-10 19:53:36 -05:00
Franklin Wei
a5f228eee2 rbutil: fix windows cross compile (via M cross environment)
This fixes a couple of issues when cross-compiling for windows:
 - lib builds (i.e. mks5lboot) were overriding the cross CC/CXX with the
   native CC, producing incompatible binaries.
 - Qt made the accessibility plugin part of the core library, so we no
   longer need to import it.

Change-Id: I9d884aee62dfa51d3624a3fa9b99c23b3b375f20
2019-11-09 20:54:57 -05:00
Cástor Muñoz
e43ef1f3e7 rbutil: add support for iPod Classic 6G bootloader
Change-Id: I0e237a81098a2d4df8d9f5d6deaaab3863a84fc6
2019-10-28 00:09:35 -04:00
Solomon Peachy
07084f62c4 Fix host build of mkimxboot, mknwzboot, nwztools, and rbutil with crypto++
Necessary to get working builds on my Fedora 29 system.

Change-Id: Ia6232427c959629ade9a85fc412738f688facedb
2019-01-25 12:58:18 +01:00
Dominik Riebeling
bbb46a885d Improve handling of Qt5 subversions on OS X.
Qt 5.6 on OS X requires targeting at least OS X 10.7, while for earlier
versions we can still target 10.6. Handle this case and inform the user about
the used target version.

Change-Id: I78e426037e2966241ab9a63105e04e7366b469ed
2016-03-27 12:38:18 +02:00
Dominik Riebeling
e606ee42c2 Make lrelease detection work on Windows.
Make sure to expand variable before testing.

Change-Id: I6b6f11782677c178fe3f2209f84887084940976a
2015-05-30 19:16:11 +02:00
Dominik Riebeling
ef21b30454 Make lrelease detection work on Windows.
Windows doesn't have which, so building natively on Windows didn't create
translations anymore. Use a which-less approach instead.

Change-Id: I7b4c40b26d68da54277a148e8e2d76ac81061c8b
2015-05-30 19:01:33 +02:00
Dominik Riebeling
a213c1828f Extend project file message output and always run lrelease.
Check for lrelease and always try to run it if found. If not found show a
warning. This avoids build problems for certain setups which previously
required -config dbg to complete.

Change-Id: I60f0f49adc8455743afc5e4d23294ce0729f38d2
2015-05-18 22:44:36 +02:00
Dominik Riebeling
44fcebb988 Fix libs path for building with MSVC.
Change-Id: Iaa0a20c8bff1faaa191de70d6f02c62dafec1591
2015-05-13 23:00:49 +02:00
Dominik Riebeling
09a25deeea Apply -Wno-unused-local-typedefs for gcc only.
Change-Id: I098882ea1c1a3f5265a763046400d79aed8eb43f
2015-05-02 16:52:14 +02:00
Dominik Riebeling
9ecfe6151b Separate logger / quazip project file parts.
Move to separate project include file for better readability and reusability.

Change-Id: If75805be8fad4aec8ede600f5c616a9412ac0505
2015-05-02 16:52:14 +02:00
Dominik Riebeling
b230cf3aa2 Update quazip to release 0.7.1.
Update to latest quazip release. Note that quazip is now LGPL and not GPL /
LGPL dual licensed anymore.

Change-Id: Ie1e975b5b546dd31218eef9df472527493fe81e0
2015-05-02 16:52:14 +02:00
Dominik Riebeling
3136465c42 Improve MSVC support in project file.
Enable MSVC specifics by checking QMAKESPEC instead of depending on a qmake
command line switch.

Change-Id: I77f72acd6661d5d7bc5776cc2dc877a11920dc7e
2014-03-23 20:47:45 +01:00
Dominik Riebeling
d85a84fc83 Add msvc qmake config option for building with MSVC.
When building with MSVC we need to add the msvc folder to the include list, and
remove the libraries from the dependencies since they need to get built
separately.

Change-Id: I297787f32495da4541c67bfef549b4d1ad68dd18
2014-03-22 22:20:48 +01:00
Dominik Riebeling
c18908d6bd OS X: update project file for Qt5 support.
- Qt5 doesn't support PPC anymore, so always build for x86 only.
- Qt5 requires the use of the multimedia module (as Windows).

Change-Id: I7d54faffe9d2fb557f55234ba7b81a508d92a38b
2014-03-20 22:26:24 +01:00
Dominik Riebeling
646f74937f Fix compiling with MSVC.
MSVC doesn't understand the gcc specific -Wno-unused-local-typedefs option.
Don't add it in this case.

Change-Id: I7ffb6c0c9c797eaad85975199c386020c464ca7b
2013-11-04 23:32:57 +01:00
Dominik Riebeling
2b054e6135 Fix cutelogger with MSVC.
We're compiling cutelogger directly, not as DLL. Therefore we must not add
__declspec attributes to the header.

Change-Id: I41b87fd4ba34dfbcd0d37245ff1c1f279139bb33
2013-11-04 23:32:57 +01:00
Dominik Riebeling
4d2ce949b3 Use cutelogger for Rockbox Utility internal trace.
Change tracing from qDebug() to use cutelogger, which is available under the
LGPL2.1. This allows to automatically add filename and line number to the log,
and also provides multiple log levels.

Change-Id: I5dbdaf902ba54ea99f07ae10a07467c52fdac910
2013-11-04 23:32:52 +01:00
Dominik Riebeling
11280e20cc Don't pass -Wno-unused-local-typedefs on OS X.
OS X' gcc 4.0 (still used to be able building fat binaries) doesn't ignore that
option and instead errors out.

Change-Id: Id5927ff04dc606480af9add554eeaa75c169510f
2013-06-09 19:45:16 +02:00
Dominik Riebeling
9edc63b0d4 Suppress unused-local-typedefs warning with Qt4.
gcc 4.8 introduces this new warning which some Qt4 headers triggers. Since we
don't want to change Qt simply disable it. The warning doesn't show up when
compiling with Qt5, so only disable it for Qt4.

Change-Id: Ia8fcf0859e0a370def36bc9b43ed4d096a80db28
2013-06-09 16:54:59 +02:00
Dominik Riebeling
7ab7f865dc Restructure options passed to libs Makefile.
Setup AR before checking for ccache to avoid adding ccache to ar. Setup CC and
CFLAGS in the beginning as well. Quote ar and system speex options to fix
building with ccache enabled.

Change-Id: I21714f0849e990abeac72dcda52c81474e090934
2013-05-10 12:02:18 +02:00
Dominik Riebeling
f7d8b2db93 Only pass AR to extralibs Makefile if the compiler is gcc.
We need this only for cross compiling. Trying to figure the compiler prefix
fails if the compiler isn't gcc (i.e. clang), and we only support gcc when
cross compiling.

Change-Id: I822e1b47ec7e9d7e9fdeae8ccf3b8d417a472ef9
2013-05-09 17:23:42 +02:00
Dominik Riebeling
8a1cd81b3a Move building libraries to separate Makefile.
Previously several additional rules were added by qmake to build the required
libraries. This has a couple of problems on Windows, requiring the use of a
msys shell.

Additional variables are passed as environment variables. Windows doesn't
understand this. Passing the variables via make command line argument works but
make won't be able to change those variables anymore, breaking things. Use
intermediate variables passed via make command line that are then exported by
the called Makefile. This doesn't work in the generated Makefile since the
export lines must not be part of a rule.

Also cleans up the project file a bit.

Change-Id: Iaffb059ce8bafe17a35bd1e0a74ae7acd966c138
2013-05-04 21:41:50 +02:00
Dominik Riebeling
891351db60 Fix Qt5 / MinGW problems.
Add missing multimedia module and update some includes.

Change-Id: I98c65c4f2e21e6a63d552669468b1da313520499
2013-04-04 22:42:22 +02:00
Dominik Riebeling
13c5c463d0 Update project file for Qt5 compatibility.
Qt5 splits widgets out of the QtGui to a new QtWidgets module.

Change-Id: I35c6437a2e69c25b90989611a683855dfe31da80
2013-01-27 20:11:17 +01:00
Dominik Riebeling
45e5b05574 Windows: always define UNICODE.
Change-Id: Id188cc03118d7dd769d838f8481e44ba31406dbf
2012-05-14 23:39:17 +02:00
Dominik Riebeling
8bdecac0b0 Don't assume the compiler to be gcc / g++.
When setting up qmake to use ccache keep using the compiler as defined in the
qmakespec instead of assuming it always to be gcc / g++.

Change-Id: I00ce32158ca4a5d67517347cae2e86b77051b3c9
2012-04-28 16:49:09 +02:00
Dominik Riebeling
f7fdf13468 Move manual tab contents to separate widget.
Create a new widget which holds the contents of the manual tab and its logic.
Unify its display / download code. Fixes FS#12587, which was caused by
duplicated code.

Change-Id: I5721d2a95ebeaf80481c1fd149eda22cf1328501
2012-02-14 21:10:54 +01:00
Dominik Riebeling
3e0f2b3e1c Use relative paths to quazip includes.
Shorten the include list a bit by using relative paths.

Change-Id: I91fa7b292179c9f8cd0c257ef9b8d26bca34963b
2012-01-29 22:55:18 +01:00
Dominik Riebeling
c6dcec4e0d Update OS X library building.
- As done with libucl and librbspeex, create universal libraries using ar
  instead of building twice and using lipo. This notably simplifies things.
- Allow overwriting the compiler via command line. This is required for
  building on OS X.
- Update Rockbox Utility to the changed library rules. Fixes building which was
  broken by the previous Makefile changes.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31588 a1c6a512-1295-4272-9138-f99709370657
2012-01-05 22:26:08 +00:00
Dominik Riebeling
61f999a16e Rockbox Utility: add support for mkimxboot bootloader.
Reworked version of FS#12402 by Jean-Louis Biasini.

Since the mkimxboot process takes quite a while which blocks the UI it has been
adjusted to perform the actual firmware patching in a separate process. Various
other small changes have been made to make it fit better into Rockbox Utility's
dialogs / messages and update the code to latest changes.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31580 a1c6a512-1295-4272-9138-f99709370657
2012-01-04 19:19:02 +00:00
Dominik Riebeling
97ac4c0e34 Rockbox Utility: update building libs.
- Build libs in a libs/ folder below the build folder. This makes it easier to
  remove them when cleaning the build directory.
- Pass flags via environment instead as parameters to make. Hopefully fixes
  problems when using QtCreator on Windows.
- Respect silent config option when calling the lib Makefiles.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31525 a1c6a512-1295-4272-9138-f99709370657
2012-01-02 16:59:29 +00:00
Dominik Riebeling
13b2f53813 Rename libchinachip to libchinachippatcher.
Use the same name for output file / library and folder to simplify
dependencies.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31334 a1c6a512-1295-4272-9138-f99709370657
2011-12-16 21:34:48 +00:00
Dominik Riebeling
8be58fd8ec Rockbox Utility: use libsansapatcher.
Instead of building sansapatcher sources directly build and use the library.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31329 a1c6a512-1295-4272-9138-f99709370657
2011-12-16 20:10:36 +00:00
Dominik Riebeling
d992536285 Rockbox Utility: use libipodpatcher.
Instead of building the sources directly build and link libipodpatcher.a as
done for other tools.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31326 a1c6a512-1295-4272-9138-f99709370657
2011-12-16 19:34:18 +00:00
Dominik Riebeling
911a355d76 Pass version when building libmktccboot for Rockbox Utility.
On OS X if no version is passed a string containing a space gets generated in
some situation, which will break building. Explicitly set version to some known
string as done for other libs.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31262 a1c6a512-1295-4272-9138-f99709370657
2011-12-14 22:24:41 +00:00
Dominik Riebeling
0d4af186c7 Rockbox Utility: pass BUILD_DIR to libs Makefiles.
Pass a subdirectory of the build folder as BUILD_DIR to the called Makefiles.
Not all do respect the value yet.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31260 a1c6a512-1295-4272-9138-f99709370657
2011-12-14 22:00:23 +00:00