Open phofman opened 12 years ago
It will change the save format and will prevent games saved with lzma encoding from being opened on playbook. Otherwise the workaround sounds fine. I'm not sure what's wrong with the lzma .project, but I'm not available to investigate at the moment. I will check it out when I get back. Thanks for letting me know.
----- Original Message ----- From: Pawel Hofman [mailto:reply@reply.github.com] Sent: Wednesday, December 28, 2011 09:08 PM To: Jeremy Nicholl Subject: [OpenTTD] Invalid recipe for lzma library build (#3)
Inside ther folder "3rdparty\lzma" one might find the README recipe, how to add liblzma to the OpenTTD project. However I have found following issues with this guide:
1) the mentioned "xz-5.0.3.tar.gz" won't unzip on Windows 7 using WinRar 4.01 nor TotalCommander 8; the "xz-5.0.3.tar.bzip2" looks much better and the "common" and "liblzma" folders are inside
2) the mentioned library won't build due to some C99 constructs used inside the source code and also sue to missing defines. At the end I was forced to manually add that switch to the qcc compiler plus some header search paths. Are you sure the .project for lzma is setup correctly? As then I ended up with some blocking errors preventing build of the final library...
MY WORKAROUND: Then my workaround was to completely remove the reference to that library from OpenTTD project (by removing the WITH_LZMA define from the compiler switches and lzma from linker library dependencies). Then it builds and runs on the device like a charm (with the "-b 32bpp-optimized -r 1024x600" of course).
Reply to this email directly or view it on GitHub: https://github.com/blackberry/OpenTTD/issues/3
This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
No rush. I can wait for fix (or tip) till next year (no matter how funny it sounds :D).
I was able to get this running using the Native SDK v2.1 beta with the above mentioned workaround also. As jnicholl says, games saved with lzma do not load (including the "game" that is loaded for ambiance behind the opening menu).
The problem as mentioned in phofman's post #2 is related to a missing config.h file. This file can be found in the xz distribution under a "dos" folder. You can also get the config.h file to appear if you run the ./configure script inside the xz distribution (presumably it uses the dos config.h as a template and changes things depending on configure options). The problem is, I have no idea what the configure options need to be for the playbook environment. It appears that it would only change what is #define'd in the config.h file. I would be happy to make the necessary changes and commit them here, except I don't know how to determine the correct configure settings.
Is there a way to set proper environment variables so the configure script will automatically generate the correct values? I'm doing this in Ubuntu, and have no problem setting environment variables and such. I just don't know which ones to set and what values they need.
Edit: I just found this: Blackberry Native Porting Guide And I remember seeing the bbndk-env.sh script. Duh. I'll work on this more soon.
I've attached the config.h that I originally used. I'm not certain it has entirely correct values, but it seemed to work. I think it was actually generated from running configure on Linux and then changing a few values. Alternatively, you can look at the buildForPlaybook.sh script in SDL to see how configure could be run in a cross-compilation way on Linux for PlayBook.
-----Original Message----- From: cycletronic [mailto:reply@reply.github.com] Sent: Thursday, June 21, 2012 5:41 PM To: Jeremy Nicholl Subject: Re: [OpenTTD] Invalid recipe for lzma library build (#3)
I was able to get this running using the Native SDK v2.1 beta with the above mentioned workaround also. As jnicholl says, games saved with lzma do not load (including the "game" that is loaded for ambiance behind the opening menu).
The problem as mentioned in phofman's post #2 is related to a missing config.h file. This file can be found in the xz distribution under a "dos" folder. You can also get the config.h file to appear if you run the ./configure script inside the xz distribution (presumably it uses the dos config.h as a template and changes things depending on configure options). The problem is, I have no idea what the configure options need to be for the playbook environment. It appears that it would only change what is #define'd in the config.h file. I would be happy to make the necessary changes and commit them here, except I don't know how to determine the correct configure settings.
Is there a way to set proper environment variables so the configure script will automatically generate the correct values? I'm doing this in Ubuntu, and have no problem setting environment variables and such. I just don't know which ones to set and what values they need.
Reply to this email directly or view it on GitHub: https://github.com/blackberry/OpenTTD/issues/3#issuecomment-6495237
This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
/* config.h. Generated from config.h.in by configure. / / config.h.in. Generated from configure.ac by autoheader. */
/* Define if building universal (internal helper macro) / / #undef AC_APPLE_UNIVERSAL_BUILD */
/* How many MiB of RAM to assume if the real amount cannot be determined. */
/* Define to 1 if translation of program messages to the user's native language is requested. / / #define ENABLE_NLS 1 */
/* Define to 1 if bswap16 is available. / /_ #define HAVE_BSWAP_16 1 */
/* Define to 1 if bswap32 is available. / /_ #define HAVE_BSWAP_32 1 */
/* Define to 1 if bswap64 is available. / /_#define HAVE_BSWAP_64 1*/
/* Define to 1 if you have the
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. / / #undef HAVE_CFLOCALECOPYCURRENT */
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. / / #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
/* Define to 1 if crc32 integrity check is enabled. */
/* Define to 1 if crc64 integrity check is enabled. */
/* Define to 1 if sha256 integrity check is enabled. */
/* Define if the GNU dcgettext() function is already present or preinstalled. */
/* Define to 1 if you have the declaration of `program_invocationname', and to 0 if you don't. / /_#define HAVE_DECL_PROGRAM_INVOCATION_NAME 1*/
/* Define to 1 if arm decoder is enabled. */
/* Define to 1 if armthumb decoder is enabled. */
/* Define to 1 if delta decoder is enabled. */
/* Define to 1 if ia64 decoder is enabled. */
/* Define to 1 if lzma1 decoder is enabled. */
/* Define to 1 if lzma2 decoder is enabled. */
/* Define to 1 if powerpc decoder is enabled. */
/* Define to 1 if sparc decoder is enabled. */
/* Define to 1 if x86 decoder is enabled. */
/* Define to 1 if you have the
/* Define to 1 if arm encoder is enabled. */
/* Define to 1 if armthumb encoder is enabled. */
/* Define to 1 if delta encoder is enabled. */
/* Define to 1 if ia64 encoder is enabled. */
/* Define to 1 if lzma1 encoder is enabled. */
/* Define to 1 if lzma2 encoder is enabled. */
/* Define to 1 if powerpc encoder is enabled. */
/* Define to 1 if sparc encoder is enabled. */
/* Define to 1 if x86 encoder is enabled. */
/* Define to 1 if you have the
/* Define to 1 if you have the `futimens' function. */
/* Define to 1 if you have the `futimes' function. / / #undef HAVE_FUTIMES */
/* Define to 1 if you have the `futimesat' function. / / #undef HAVE_FUTIMESAT */
/* Define to 1 if you have the
/* Define to 1 if you have the `getopt_long' function. */
/* Define if the GNU gettext() function is already present or preinstalled. */
/* Define if you have the iconv() function. / / #undef HAVE_ICONV */
/* Define to 1 if you have the
/* Define to 1 if you have the
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
/* Define to 1 if you have the
/* Define to 1 to enable bt2 match finder. */
/* Define to 1 to enable bt3 match finder. */
/* Define to 1 to enable bt4 match finder. */
/* Define to 1 to enable hc3 match finder. */
/* Define to 1 to enable hc4 match finder. */
/* Define to 1 if getopt.h declares extern int optreset. / / #undef HAVE_OPTRESET */
/* Define if you have POSIX threads libraries and header files. */
/* Define to 1 if optimizing for size. / / #undef HAVE_SMALL */
/* Define to 1 if stdbool.h conforms to C99. */
/* Define to 1 if you have the
/* Define to 1 if you have the
/* Define to 1 if you have the
/* Define to 1 if you have the
/* Define to 1 if st_atimensec' is a member of
struct stat'. /
/ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC */
/* Define to 1 if st_atimespec.tv_nsec' is a member of
struct stat'. /
/ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC */
/* Define to 1 if st_atim.st__tim.tv_nsec' is a member of
struct stat'. /
/ #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC */
/* Define to 1 if st_atim.tv_nsec' is a member of
struct stat'. */
/* Define to 1 if st_uatime' is a member of
struct stat'. /
/ #undef HAVE_STRUCT_STAT_ST_UATIME */
/* Define to 1 if you have the <sys/byteorder.h> header file. / / #undef HAVE_SYS_BYTEORDER_H */
/* Define to 1 if you have the <sys/endian.h> header file. / / #undef HAVE_SYS_ENDIAN_H */
/* Define to 1 if you have the <sys/param.h> header file. */
/* Define to 1 if you have the <sys/stat.h> header file. */
/* Define to 1 if you have the <sys/time.h> header file. */
/* Define to 1 if you have the <sys/types.h> header file. */
/* Define to 1 if the system has the type `uintptr_t'. */
/* Define to 1 if you have the
/* Define to 1 if you have the `utime' function. / / #undef HAVE_UTIME */
/* Define to 1 if you have the `utimes' function. / / #undef HAVE_UTIMES */
/* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */
/* Define to 1 if you have the `wcwidth' function. */
/* Define to 1 if the system has the type `_Bool'. */
/* Define to the sub-directory in which libtool stores uninstalled libraries. */
/* Define to 1 to disable debugging code. */
/* Define to 1 if your C compiler doesn't accept -c and -o together. / / #undef NO_MINUS_C_MINUS_O */
/* Name of package */
/* Define to the address where bug reports for this package should be sent. */
/* Define to the full name of this package. */
/* Define to the full name and version of this package. */
/* Define to the one symbol short name of this package. */
/* Define to the home page for this package. */
/* Define to the version of this package. */
/* Define to necessary symbol if this constant uses a non-standard name on your system. / / #undef PTHREAD_CREATE_JOINABLE */
/* The size of `size_t', as computed by sizeof. */
/* Define to 1 if you have the ANSI C header files. */
/* Define to 1 if the number of available CPU cores can be detected with pstatgetdynamic(). / /_ #undef TUKLIB_CPUCORES_PSTAT_GETDYNAMIC */
/* Define to 1 if the number of available CPU cores can be detected with sysconf(_SC_NPROCESSORS_ONLN) or sysconf(_SC_NPROCONLN). / /_ #define TUKLIB_CPUCORES_SYSCONF 1 */
/* Define to 1 if the number of available CPU cores can be detected with sysctl(). / / #undef TUKLIB_CPUCORES_SYSCTL */
/* Define to 1 if the system supports fast unaligned access to 16-bit and 32-bit integers. */
/* Define to 1 if the amount of physical memory can be detected with _systemconfiguration.physmem. / /_ #undef TUKLIB_PHYSMEM_AIX */
/* Define to 1 if the amount of physical memory can be detected with getinventr(). / /_ #undef TUKLIB_PHYSMEM_GETINVENT_R */
/* Define to 1 if the amount of physical memory can be detected with getsysinfo(). / / #undef TUKLIB_PHYSMEM_GETSYSINFO */
/* Define to 1 if the amount of physical memory can be detected with pstatgetstatic(). / /_ #undef TUKLIB_PHYSMEM_PSTAT_GETSTATIC */
/* Define to 1 if the amount of physical memory can be detected with sysconf(_SC_PAGESIZE) and sysconf(_SC_PHYSPAGES). / /_ #define TUKLIB_PHYSMEM_SYSCONF 1 */
/* Define to 1 if the amount of physical memory can be detected with sysctl(). / / #undef TUKLIB_PHYSMEM_SYSCTL */
/* Define to 1 if the amount of physical memory can be detected with Linux sysinfo(). / / #undef TUKLIB_PHYSMEM_SYSINFO */
/* Enable extensions on AIX 3, Interix. */
/* Enable GNU extensions on systems that have them. */
/* Enable threading extensions on Solaris. */
/* Enable extensions on HP NonStop. */
/* Enable general extensions on Solaris. */
/* Version number of package */
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */
/* # undef WORDS_BIGENDIAN */
/* Number of bits in a file offset, on hosts where this is settable. */
/* Define for large files, on AIX-style hosts. / / #undef _LARGE_FILES */
/* Define to 1 if on MINIX. / / #undef _MINIX */
/* Define to 2 if the system does not provide POSIX.1 features except with this defined. / / #undef _POSIX_1_SOURCE */
/* Define to 1 if you need to in order for `stat' and other things to work. / / #undef _POSIX_SOURCE */
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
I wrote a nice comment last night but I must have forgotten to click submit or something...
I actually did exactly that last night. The NDK porting guide I linked to above has a nice little section on exactly what to do to run configure scripts for a playbook environment. So I generated the config.h file, commented out #defines that led to errors (things related to using multiple cores, or tuklib), and it worked just fine.
Inside ther folder "3rdparty\lzma" one might find the README recipe, how to add liblzma to the OpenTTD project. However I have found following issues with this guide:
1) the mentioned "xz-5.0.3.tar.gz" won't unzip on Windows 7 using WinRar 4.01 nor TotalCommander 8; the "xz-5.0.3.tar.bzip2" looks much better and the "common" and "liblzma" folders are inside
2) the mentioned library won't build due to some C99 constructs used inside the source code and also sue to missing defines. At the end I was forced to manually add that switch to the qcc compiler plus some header search paths. Are you sure the .project for lzma is setup correctly? As then I ended up with some blocking errors preventing build of the final library...
MY WORKAROUND: Then my workaround was to completely remove the reference to that library from OpenTTD project (by removing the WITH_LZMA define from the compiler switches and lzma from linker library dependencies). Then it builds and runs on the device like a charm (with the "-b 32bpp-optimized -r 1024x600" of course).