mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-31 07:25:22 +01:00 
			
		
		
		
	Fix FTBFS on GNU/Hurd platform
Minetest fails to build on GNU/Hurd due to a name clash with OSX/Apple, both are defining the __MACH__ keyword. This commit fixes the issue.
This commit is contained in:
		
				
					committed by
					
						 Craig Robbins
						Craig Robbins
					
				
			
			
				
	
			
			
			
						parent
						
							60fa5807b9
						
					
				
				
					commit
					93e5ab367a
				
			| @@ -45,7 +45,7 @@ | |||||||
| #define __BYTE_ORDER 0 | #define __BYTE_ORDER 0 | ||||||
| #define __LITTLE_ENDIAN 0 | #define __LITTLE_ENDIAN 0 | ||||||
| #define __BIG_ENDIAN 1 | #define __BIG_ENDIAN 1 | ||||||
| #elif __MACH__ | #elif defined(__MACH__) && defined(__APPLE__) | ||||||
| #include <machine/endian.h> | #include <machine/endian.h> | ||||||
| #elif defined(__FreeBSD__) | #elif defined(__FreeBSD__) | ||||||
| #include <sys/endian.h> | #include <sys/endian.h> | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ | |||||||
| 
 | 
 | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #elif __MACH__ | #elif defined(__MACH__) && defined(__APPLE__) | ||||||
| #include <mach/mach.h> | #include <mach/mach.h> | ||||||
| #include <mach/task.h> | #include <mach/task.h> | ||||||
| #include <mach/semaphore.h> | #include <mach/semaphore.h> | ||||||
| @@ -43,7 +43,7 @@ | |||||||
| class Event { | class Event { | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| 	HANDLE hEvent; | 	HANDLE hEvent; | ||||||
| #elif __MACH__ | #elif defined(__MACH__) && defined(__APPLE__) | ||||||
| 	semaphore_t sem; | 	semaphore_t sem; | ||||||
| #else | #else | ||||||
| 	sem_t sem; | 	sem_t sem; | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., | |||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| #define MAX_SEMAPHORE_COUNT 1024 | #define MAX_SEMAPHORE_COUNT 1024 | ||||||
| #elif __MACH__ | #elif defined(__MACH__) && defined(__APPLE__) | ||||||
| #include <pthread.h> | #include <pthread.h> | ||||||
| #include <mach/mach.h> | #include <mach/mach.h> | ||||||
| #include <mach/task.h> | #include <mach/task.h> | ||||||
| @@ -52,7 +52,7 @@ public: | |||||||
| private: | private: | ||||||
| #if defined(WIN32) | #if defined(WIN32) | ||||||
| 	HANDLE m_hSemaphore; | 	HANDLE m_hSemaphore; | ||||||
| #elif __MACH__ | #elif defined(__MACH__) && defined(__APPLE__) | ||||||
| 	semaphore_t m_semaphore; | 	semaphore_t m_semaphore; | ||||||
| 	int semcount; | 	int semcount; | ||||||
| #else | #else | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
| 
 | 
 | ||||||
| #define UNUSED(expr) do { (void)(expr); } while (0) | #define UNUSED(expr) do { (void)(expr); } while (0) | ||||||
| 
 | 
 | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| #undef sem_t | #undef sem_t | ||||||
| #define sem_t semaphore_t | #define sem_t semaphore_t | ||||||
| #undef sem_init | #undef sem_init | ||||||
|   | |||||||
| @@ -20,13 +20,13 @@ with this program; if not, write to the Free Software Foundation, Inc., | |||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include <sys/time.h> | #include <sys/time.h> | ||||||
| #include "jthread/jsemaphore.h" | #include "jthread/jsemaphore.h" | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define UNUSED(expr) do { (void)(expr); } while (0) | #define UNUSED(expr) do { (void)(expr); } while (0) | ||||||
| 
 | 
 | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| #undef sem_t | #undef sem_t | ||||||
| #undef sem_init | #undef sem_init | ||||||
| #undef sem_wait | #undef sem_wait | ||||||
| @@ -44,7 +44,7 @@ JSemaphore::JSemaphore() { | |||||||
| 	int sem_init_retval = sem_init(&m_semaphore,0,0); | 	int sem_init_retval = sem_init(&m_semaphore,0,0); | ||||||
| 	assert(sem_init_retval == 0); | 	assert(sem_init_retval == 0); | ||||||
| 	UNUSED(sem_init_retval); | 	UNUSED(sem_init_retval); | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	semcount = 0; | 	semcount = 0; | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| @@ -73,7 +73,7 @@ void JSemaphore::Post() { | |||||||
| 	int sem_post_retval = sem_post(&m_semaphore); | 	int sem_post_retval = sem_post(&m_semaphore); | ||||||
| 	assert(sem_post_retval == 0); | 	assert(sem_post_retval == 0); | ||||||
| 	UNUSED(sem_post_retval); | 	UNUSED(sem_post_retval); | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	pthread_mutex_lock(&semcount_mutex); | 	pthread_mutex_lock(&semcount_mutex); | ||||||
| 	semcount++; | 	semcount++; | ||||||
| 	pthread_mutex_unlock(&semcount_mutex); | 	pthread_mutex_unlock(&semcount_mutex); | ||||||
| @@ -84,7 +84,7 @@ void JSemaphore::Wait() { | |||||||
| 	int sem_wait_retval = sem_wait(&m_semaphore); | 	int sem_wait_retval = sem_wait(&m_semaphore); | ||||||
| 	assert(sem_wait_retval == 0); | 	assert(sem_wait_retval == 0); | ||||||
| 	UNUSED(sem_wait_retval); | 	UNUSED(sem_wait_retval); | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	pthread_mutex_lock(&semcount_mutex); | 	pthread_mutex_lock(&semcount_mutex); | ||||||
| 	semcount--; | 	semcount--; | ||||||
| 	pthread_mutex_unlock(&semcount_mutex); | 	pthread_mutex_unlock(&semcount_mutex); | ||||||
| @@ -92,7 +92,7 @@ void JSemaphore::Wait() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool JSemaphore::Wait(unsigned int time_ms) { | bool JSemaphore::Wait(unsigned int time_ms) { | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	mach_timespec_t waittime; | 	mach_timespec_t waittime; | ||||||
| 	waittime.tv_sec = time_ms / 1000; | 	waittime.tv_sec = time_ms / 1000; | ||||||
| 	waittime.tv_nsec = 1000000 * (time_ms % 1000); | 	waittime.tv_nsec = 1000000 * (time_ms % 1000); | ||||||
| @@ -106,14 +106,14 @@ bool JSemaphore::Wait(unsigned int time_ms) { | |||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| #ifndef __MACH__ | #if !(defined(__MACH__) && defined(__APPLE__)) | ||||||
| 	waittime.tv_nsec = ((time_ms % 1000) * 1000 * 1000) + (now.tv_usec * 1000); | 	waittime.tv_nsec = ((time_ms % 1000) * 1000 * 1000) + (now.tv_usec * 1000); | ||||||
| 	waittime.tv_sec  = (time_ms / 1000) + (waittime.tv_nsec / (1000*1000*1000)) + now.tv_sec; | 	waittime.tv_sec  = (time_ms / 1000) + (waittime.tv_nsec / (1000*1000*1000)) + now.tv_sec; | ||||||
| 	waittime.tv_nsec %= 1000*1000*1000; | 	waittime.tv_nsec %= 1000*1000*1000; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 	errno = 0; | 	errno = 0; | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	int sem_wait_retval = semaphore_timedwait(m_semaphore, waittime); | 	int sem_wait_retval = semaphore_timedwait(m_semaphore, waittime); | ||||||
| 	if (sem_wait_retval == KERN_OPERATION_TIMED_OUT) { | 	if (sem_wait_retval == KERN_OPERATION_TIMED_OUT) { | ||||||
| 		errno = ETIMEDOUT; | 		errno = ETIMEDOUT; | ||||||
| @@ -128,7 +128,7 @@ bool JSemaphore::Wait(unsigned int time_ms) { | |||||||
| 
 | 
 | ||||||
| 	if (sem_wait_retval == 0) | 	if (sem_wait_retval == 0) | ||||||
| 	{ | 	{ | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 		pthread_mutex_lock(&semcount_mutex); | 		pthread_mutex_lock(&semcount_mutex); | ||||||
| 		semcount--; | 		semcount--; | ||||||
| 		pthread_mutex_unlock(&semcount_mutex); | 		pthread_mutex_unlock(&semcount_mutex); | ||||||
| @@ -144,7 +144,7 @@ bool JSemaphore::Wait(unsigned int time_ms) { | |||||||
| 
 | 
 | ||||||
| int JSemaphore::GetValue() { | int JSemaphore::GetValue() { | ||||||
| 	int retval = 0; | 	int retval = 0; | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| 	pthread_mutex_lock(&semcount_mutex); | 	pthread_mutex_lock(&semcount_mutex); | ||||||
| 	retval = semcount; | 	retval = semcount; | ||||||
| 	pthread_mutex_unlock(&semcount_mutex); | 	pthread_mutex_unlock(&semcount_mutex); | ||||||
|   | |||||||
| @@ -60,7 +60,7 @@ with this program; if not, write to the Free Software Foundation, Inc., | |||||||
| 	#include <unistd.h> | 	#include <unistd.h> | ||||||
| 	#include <stdint.h> //for uintptr_t | 	#include <stdint.h> //for uintptr_t | ||||||
| 
 | 
 | ||||||
| 	#if (defined(linux) || defined(__linux)) && !defined(_GNU_SOURCE) | #if (defined(linux) || defined(__linux) || defined(__GNU__)) && !defined(_GNU_SOURCE) | ||||||
| 		#define _GNU_SOURCE | 		#define _GNU_SOURCE | ||||||
| 	#endif | 	#endif | ||||||
| 
 | 
 | ||||||
| @@ -228,7 +228,7 @@ void initIrrlicht(irr::IrrlichtDevice * ); | |||||||
| #else // Posix
 | #else // Posix
 | ||||||
| #include <sys/time.h> | #include <sys/time.h> | ||||||
| #include <time.h> | #include <time.h> | ||||||
| #ifdef __MACH__ | #if defined(__MACH__) && defined(__APPLE__) | ||||||
| #include <mach/clock.h> | #include <mach/clock.h> | ||||||
| #include <mach/mach.h> | #include <mach/mach.h> | ||||||
| #endif | #endif | ||||||
| @@ -258,7 +258,7 @@ void initIrrlicht(irr::IrrlichtDevice * ); | |||||||
| 	{ | 	{ | ||||||
| 		struct timespec ts; | 		struct timespec ts; | ||||||
| 		// from http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x
 | 		// from http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x
 | ||||||
| #ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
 | #if defined(__MACH__) && defined(__APPLE__) // OS X does not have clock_gettime, use clock_get_time
 | ||||||
| 		clock_serv_t cclock; | 		clock_serv_t cclock; | ||||||
| 		mach_timespec_t mts; | 		mach_timespec_t mts; | ||||||
| 		host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); | 		host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); | ||||||
| @@ -358,7 +358,7 @@ inline u32 getDeltaMs(u32 old_time_ms, u32 new_time_ms) | |||||||
| 	inline void setThreadName(const char *name) { | 	inline void setThreadName(const char *name) { | ||||||
| 		pthread_setname_np(name); | 		pthread_setname_np(name); | ||||||
| 	} | 	} | ||||||
| #elif defined(_WIN32) | #elif defined(_WIN32) || defined(__GNU__) | ||||||
| 	inline void setThreadName(const char* name) {} | 	inline void setThreadName(const char* name) {} | ||||||
| #else | #else | ||||||
| 	#warning "Unrecognized platform, thread names will not be available." | 	#warning "Unrecognized platform, thread names will not be available." | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user