Fixed bugreport:5990 OSX compiling error / warnings

Bug in Detail:
 - Misplaced LDFLAGS uage in some Makefile templates (by passing them to the compiler not to the linker.)
 - Wrong usage of volatile (a functions return value couldnt be declared to return volatile :D )
 - Unsupported Inline ASM using lock xchg operation on llvm-gcc .. (apple loves this ..)

Fixed by:
 - Removed unnecessary LDFLAGS 
 - Removed unnecessary volatile declarator
 - Replaced InterlockedExchange and InterlockedExchange64 with gcc intrinsics. 



git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16270 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
blacksirius 2012-06-11 23:31:19 +00:00
parent 04bc22ca40
commit b3b21e6e8c
5 changed files with 18 additions and 36 deletions

View File

@ -23,4 +23,4 @@ help:
%.o: %.c $(LIBCONFIG_H)
@echo " CC $<"
@@CC@ @CFLAGS@ @DEFS@ @LDFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CC@ @CFLAGS@ @DEFS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<

View File

@ -23,4 +23,4 @@ help:
%.o: %.c $(MT19937AR_H)
@echo " CC $<"
@@CC@ @CFLAGS@ @LDFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CC@ @CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<

View File

@ -83,11 +83,11 @@ common_sql: obj_sql $(COMMON_SQL_OBJ) obj_sql/common_sql.a
obj_all/%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H)
@echo " CC $<"
@@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @LDFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
obj_all/mini%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H)
@echo " CC $<"
@@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) -DMINICORE @LDFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CC@ @CFLAGS@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
obj_sql/%.o: %.c $(COMMON_H) $(COMMON_SQL_H) $(LIBCONFIG_H)
@echo " CC $<"

View File

@ -86,71 +86,53 @@ forceinline volatile int64 InterlockedExchange64(volatile int64 *target, int64 v
#error Your Target Platfrom is not supported
#endif
static forceinline volatile int64 InterlockedExchangeAdd64(volatile int64 *addend, int64 increment){
static forceinline int64 InterlockedExchangeAdd64(volatile int64 *addend, int64 increment){
return __sync_fetch_and_add(addend, increment);
}//end: InterlockedExchangeAdd64()
static forceinline volatile int32 InterlockedExchangeAdd(volatile int32 *addend, int32 increment){
static forceinline int32 InterlockedExchangeAdd(volatile int32 *addend, int32 increment){
return __sync_fetch_and_add(addend, increment);
}//end: InterlockedExchangeAdd()
static forceinline volatile int64 InterlockedIncrement64(volatile int64 *addend){
static forceinline int64 InterlockedIncrement64(volatile int64 *addend){
return __sync_add_and_fetch(addend, 1);
}//end: InterlockedIncrement64()
static forceinline volatile int32 InterlockedIncrement(volatile int32 *addend){
static forceinline int32 InterlockedIncrement(volatile int32 *addend){
return __sync_add_and_fetch(addend, 1);
}//end: InterlockedIncrement()
static forceinline volatile int64 InterlockedDecrement64(volatile int64 *addend){
static forceinline int64 InterlockedDecrement64(volatile int64 *addend){
return __sync_sub_and_fetch(addend, 1);
}//end: InterlockedDecrement64()
static forceinline volatile int32 InterlockedDecrement(volatile int32 *addend){
static forceinline int32 InterlockedDecrement(volatile int32 *addend){
return __sync_sub_and_fetch(addend, 1);
}//end: InterlockedDecrement()
static forceinline volatile int64 InterlockedCompareExchange64(volatile int64 *dest, int64 exch, int64 cmp){
static forceinline int64 InterlockedCompareExchange64(volatile int64 *dest, int64 exch, int64 cmp){
return __sync_val_compare_and_swap(dest, cmp, exch);
}//end: InterlockedCompareExchange64()
static forceinline volatile int32 InterlockedCompareExchange(volatile int32 *dest, int32 exch, int32 cmp){
return __sync_val_compare_and_swap(dest, cmp, exch);
static forceinline int32 InterlockedCompareExchange(volatile int32 *dest, int32 exch, int32 cmp){
return __sync_val_compare_and_swap(dest, cmp, exch);
}//end: InterlockedCompareExchnage()
static forceinline volatile int64 InterlockedExchange64(volatile int64 *target, int64 val){
int ret;
__asm__ __volatile__(
"lock xchg %2, (%1)"
:"=r" (ret)
:"r" (target), "0" (val)
:"memory"
);
return ret;
static forceinline int64 InterlockedExchange64(volatile int64 *target, int64 val){
return __sync_lock_test_and_set(target, val);
}//end: InterlockedExchange64()
static forceinline volatile int32 InterlockedExchange(volatile int32 *target, int32 val){
int ret;
__asm__ __volatile__(
"lock xchgl %2, (%1)"
:"=r" (ret)
:"r" (target), "0" (val)
:"memory"
);
return ret;
static forceinline int32 InterlockedExchange(volatile int32 *target, int32 val){
return __sync_lock_test_and_set(target, val);
}//end: InterlockedExchange()

View File

@ -44,7 +44,7 @@ obj_all:
obj_all/%.o: %.c $(COMMON_H) $(LIBCONFIG_H)
@echo " CC $<"
@@CC@ @CFLAGS@ $(LIBCONFIG_INCLUDE) @LDFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CC@ @CFLAGS@ $(LIBCONFIG_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
# missing common object files
../common/obj_all/%.o: