-
Notifications
You must be signed in to change notification settings - Fork 330
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Incorporate some fixes to the meson build definition
Notably the missing gphoto2-endian.h generation was missing
- Loading branch information
Showing
8 changed files
with
369 additions
and
12 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
project('ambs-lgp2-frontend', 'c') | ||
|
||
executable( | ||
'ambs-lgp2-frontend', | ||
'main.c', | ||
dependencies: [ dependency('libgphoto2') ], | ||
install: true, | ||
) |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,305 @@ | ||
/* This file is generated automatically by configure */ | ||
/* It is valid only for the system type it has been | ||
* generated for */ | ||
|
||
#ifndef GP_BYTEORDER_H | ||
#define GP_BYTEORDER_H | ||
|
||
#include "config.h" | ||
|
||
#mesondefine HAS_LE32TOH | ||
#mesondefine HAS_NTOHL_ARPA_INET | ||
#mesondefine HAS_NTOHL_NETINET_IN | ||
#mesondefine HAS_SWAP32 | ||
#mesondefine HAS_BYTE_SWAP_LONG | ||
#mesondefine HAS_NXSWAPLONG | ||
|
||
/* extended byte swapping macros are already available */ | ||
#if HAS_LE32TOH | ||
# include <machine/endian.h> | ||
# define MACHINE_ENDIAN_INCLUDED | ||
#elif HAS_NTOHL_ARPA_INET | ||
# include <arpa/inet.h> | ||
# define __HAVE_NTOHL | ||
#elif HAS_NTOHL_NETINET_IN | ||
# include <netinet/in.h> | ||
# define __HAVE_NTOHL | ||
#endif | ||
|
||
/* Define generic byte swapping functions */ | ||
#if HAS_SWAP32 | ||
# if !MACHINE_ENDIAN_INCLUDED | ||
# include <machine/endian.h> | ||
# endif | ||
# define swap16(x) bswap16(x) | ||
# define swap32(x) bswap32(x) | ||
# define swap64(x) bswap64(x) | ||
#elif HAS_BYTE_SWAP_LONG | ||
# include <sys/types.h> | ||
# define swap16(x) __byte_swap_word(x) | ||
# define swap32(x) __byte_swap_long(x) | ||
/* No optimized 64 bit byte swapping macro is available */ | ||
# define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \ | ||
((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \ | ||
((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \ | ||
((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \ | ||
((x) >> 8) & 0x00000000ff000000ULL | \ | ||
((x) >> 24) & 0x0000000000ff0000ULL | \ | ||
((x) >> 40) & 0x000000000000ff00ULL | \ | ||
((x) >> 56) & 0x00000000000000ffULL)) | ||
#elif HAS_NXSWAPLONG | ||
/* Define generic byte swapping functions */ | ||
# include <machine/byte_order.h> | ||
# define swap16(x) NXSwapShort(x) | ||
# define swap32(x) NXSwapLong(x) | ||
# define swap64(x) NXSwapLongLong(x) | ||
#elif WORDS_BIGENDIAN | ||
/* No other byte swapping functions are available on this big-endian system */ | ||
# define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) | ||
# define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \ | ||
((uint32_t)(x) << 8) & 0x00ff0000UL | \ | ||
((x) >> 8) & 0x0000ff00UL | \ | ||
((x) >> 24) & 0x000000ffUL)) | ||
# define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \ | ||
((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \ | ||
((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \ | ||
((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \ | ||
((x) >> 8) & 0x00000000ff000000ULL | \ | ||
((x) >> 24) & 0x0000000000ff0000ULL | \ | ||
((x) >> 40) & 0x000000000000ff00ULL | \ | ||
((x) >> 56) & 0x00000000000000ffULL)) | ||
#else | ||
/* Use these as generic byteswapping macros on this little endian system */ | ||
/* on windows we might not have ntohs / ntohl without including winsock.dll, | ||
* so use generic macros */ | ||
# ifdef __HAVE_NTOHL | ||
# define swap16(x) htons(x) | ||
# define swap32(x) htonl(x) | ||
# else | ||
# define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) | ||
# define swap32(x) ((uint32_t)((((uint32_t)(x) << 24) & 0xff000000UL) | \ | ||
(((uint32_t)(x) << 8) & 0x00ff0000UL) | \ | ||
(((x) >> 8) & 0x0000ff00UL) | \ | ||
(((x) >> 24) & 0x000000ffUL))) | ||
# endif | ||
/* No optimized 64 bit byte swapping macro is available */ | ||
# define swap64(x) ((uint64_t)((((uint64_t)(x) << 56) & 0xff00000000000000ULL) | \ | ||
(((uint64_t)(x) << 40) & 0x00ff000000000000ULL) | \ | ||
(((uint64_t)(x) << 24) & 0x0000ff0000000000ULL) | \ | ||
(((uint64_t)(x) << 8) & 0x000000ff00000000ULL) | \ | ||
(((x) >> 8) & 0x00000000ff000000ULL) | \ | ||
(((x) >> 24) & 0x0000000000ff0000ULL) | \ | ||
(((x) >> 40) & 0x000000000000ff00ULL) | \ | ||
(((x) >> 56) & 0x00000000000000ffULL))) | ||
#endif | ||
|
||
/* The byte swapping macros have the form: */ | ||
/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */ | ||
/* le (little-endian), NN is 16 or 32 (number of bits) and a, */ | ||
/* if present, indicates that the endian side is a pointer to an */ | ||
/* array of uint8_t bytes instead of an integer of the specified length. */ | ||
/* h refers to the host's ordering method. */ | ||
|
||
/* So, to convert a 32-bit integer stored in a buffer in little-endian */ | ||
/* format into a uint32_t usable on this machine, you could use: */ | ||
/* uint32_t value = le32atoh(&buf[3]); */ | ||
/* To put that value back into the buffer, you could use: */ | ||
/* htole32a(&buf[3], value); */ | ||
|
||
/* Define aliases for the standard byte swapping macros */ | ||
/* Arguments to these macros must be properly aligned on natural word */ | ||
/* boundaries in order to work properly on all architectures */ | ||
#ifndef htobe16 | ||
# ifdef __HAVE_NTOHL | ||
# define htobe16(x) htons(x) | ||
# else | ||
# ifdef WORDS_BIGENDIAN | ||
# define htobe16(x) (x) | ||
# else | ||
# define htobe16(x) swap16(x) | ||
# endif | ||
# endif | ||
#endif | ||
#ifndef htobe32 | ||
# ifdef __HAVE_NTOHL | ||
# define htobe32(x) htonl(x) | ||
# else | ||
# ifdef WORDS_BIGENDIAN | ||
# define htobe32(x) (x) | ||
# else | ||
# define htobe32(x) swap32(x) | ||
# endif | ||
# endif | ||
#endif | ||
#ifndef be16toh | ||
# define be16toh(x) htobe16(x) | ||
#endif | ||
#ifndef be32toh | ||
# define be32toh(x) htobe32(x) | ||
#endif | ||
|
||
#define HTOBE16(x) (x) = htobe16(x) | ||
#define HTOBE32(x) (x) = htobe32(x) | ||
#define BE32TOH(x) (x) = be32toh(x) | ||
#define BE16TOH(x) (x) = be16toh(x) | ||
|
||
#if WORDS_BIGENDIAN | ||
/* Define our own extended byte swapping macros for big-endian machines */ | ||
# ifndef htole16 | ||
# define htole16(x) swap16(x) | ||
# endif | ||
# ifndef htole32 | ||
# define htole32(x) swap32(x) | ||
# endif | ||
# ifndef htole64 | ||
# define htole64(x) swap64(x) | ||
# endif | ||
# ifndef le16toh | ||
# define le16toh(x) swap16(x) | ||
# endif | ||
# ifndef le32toh | ||
# define le32toh(x) swap32(x) | ||
# endif | ||
# ifndef le64toh | ||
# define le64toh(x) swap64(x) | ||
# endif | ||
|
||
# ifndef htobe64 | ||
# define htobe64(x) (x) | ||
# endif | ||
# ifndef be64toh | ||
# define be64toh(x) (x) | ||
# endif | ||
|
||
# define HTOLE16(x) (x) = htole16(x) | ||
# define HTOLE32(x) (x) = htole32(x) | ||
# define HTOLE64(x) (x) = htole64(x) | ||
# define LE16TOH(x) (x) = le16toh(x) | ||
# define LE32TOH(x) (x) = le32toh(x) | ||
# define LE64TOH(x) (x) = le64toh(x) | ||
|
||
# define HTOBE64(x) (void) (x) | ||
# define BE64TOH(x) (void) (x) | ||
|
||
#else | ||
/* On little endian machines, these macros are null */ | ||
# ifndef htole16 | ||
# define htole16(x) (x) | ||
# endif | ||
# ifndef htole32 | ||
# define htole32(x) (x) | ||
# endif | ||
# ifndef htole64 | ||
# define htole64(x) (x) | ||
# endif | ||
# ifndef le16toh | ||
# define le16toh(x) (x) | ||
# endif | ||
# ifndef le32toh | ||
# define le32toh(x) (x) | ||
# endif | ||
# ifndef le64toh | ||
# define le64toh(x) (x) | ||
# endif | ||
|
||
# define HTOLE16(x) (void) (x) | ||
# define HTOLE32(x) (void) (x) | ||
# define HTOLE64(x) (void) (x) | ||
# define LE16TOH(x) (void) (x) | ||
# define LE32TOH(x) (void) (x) | ||
# define LE64TOH(x) (void) (x) | ||
|
||
/* These don't have standard aliases */ | ||
# ifndef htobe64 | ||
# define htobe64(x) swap64(x) | ||
# endif | ||
# ifndef be64toh | ||
# define be64toh(x) swap64(x) | ||
# endif | ||
|
||
# define HTOBE64(x) (x) = htobe64(x) | ||
# define BE64TOH(x) (x) = be64toh(x) | ||
|
||
/* Define the C99 standard length-specific integer types */ | ||
#include <stdint.h> | ||
|
||
#endif | ||
|
||
/* Here are some macros to create integers from a byte array */ | ||
/* These are used to get and put integers from/into a uint8_t array */ | ||
/* with a specific endianness. This is the most portable way to generate */ | ||
/* and read messages to a network or serial device. Each member of a */ | ||
/* packet structure must be handled separately. */ | ||
|
||
#if CAN_CAST_BYTES_TO_MEM | ||
/* The i386 and compatibles can handle unaligned memory access, */ | ||
/* so use the optimized macros above to do this job */ | ||
# ifndef be16atoh | ||
# define be16atoh(x) be16toh(*(uint16_t*)(x)) | ||
# endif | ||
# ifndef be32atoh | ||
# define be32atoh(x) be32toh(*(uint32_t*)(x)) | ||
# endif | ||
# ifndef be64atoh | ||
# define be64atoh(x) be64toh(*(uint64_t*)(x)) | ||
# endif | ||
# ifndef le16atoh | ||
# define le16atoh(x) le16toh(*(uint16_t*)(x)) | ||
# endif | ||
# ifndef le32atoh | ||
# define le32atoh(x) le32toh(*(uint32_t*)(x)) | ||
# endif | ||
# ifndef le64atoh | ||
# define le64atoh(x) le64toh(*(uint64_t*)(x)) | ||
# endif | ||
|
||
# ifndef htob16a | ||
# define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x) | ||
# endif | ||
# ifndef htobe32a | ||
# define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x) | ||
# endif | ||
# ifndef htobe64a | ||
# define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x) | ||
# endif | ||
# ifndef htole16a | ||
# define htole16a(a,x) *(uint16_t*)(a) = htole16(x) | ||
# endif | ||
# ifndef htole32a | ||
# define htole32a(a,x) *(uint32_t*)(a) = htole32(x) | ||
# endif | ||
# ifndef htole64a | ||
# define htole64a(a,x) *(uint64_t*)(a) = htole64(x) | ||
# endif | ||
|
||
#else | ||
|
||
/* Non-optimized but portable macros */ | ||
# define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1])) | ||
# define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])) | ||
# define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<<shift) | ||
# define be64atoh(x) ((uint64_t)(be64atoh_x(x,0,56)|be64atoh_x(x,1,48)|be64atoh_x(x,2,40)| \ | ||
be64atoh_x(x,3,32)|be64atoh_x(x,4,24)|be64atoh_x(x,5,16)|be64atoh_x(x,6,8)|((x)[7]))) | ||
# define le16atoh(x) ((uint16_t)(((x)[1]<<8)|(x)[0])) | ||
# define le32atoh(x) ((uint32_t)(((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0])) | ||
# define le64atoh_x(x,off,shift) (((uint64_t)(x)[off])<<shift) | ||
# define le64atoh(x) ((uint64_t)(le64atoh_x(x,7,56)|le64atoh_x(x,6,48)|le64atoh_x(x,5,40)| \ | ||
le64atoh_x(x,4,32)|le64atoh_x(x,3,24)|le64atoh_x(x,2,16)|le64atoh_x(x,1,8)|((x)[0]))) | ||
|
||
# define htobe16a(a,x) (a)[0]=(uint8_t)((x)>>8), (a)[1]=(uint8_t)(x) | ||
# define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \ | ||
(a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x) | ||
# define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \ | ||
(a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \ | ||
(a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \ | ||
(a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x) | ||
# define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) | ||
# define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \ | ||
(a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) | ||
# define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \ | ||
(a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \ | ||
(a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \ | ||
(a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) | ||
#endif | ||
|
||
#endif /* GP_BYTEORDER_H */ |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ libgphoto2_port_lib = library( | |
ltdl_dep, | ||
lockdev_dep, | ||
m_dep, | ||
intl_dep, | ||
config_dep, | ||
], | ||
) | ||
|
This file contains 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
This file contains 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
Oops, something went wrong.