Fix build failures with OPT = 0 due to inline functions (#19767)
				
					
				
			Co-authored-by: Joel Challis <git@zvecr.com>
This commit is contained in:
		
							parent
							
								
									b1f4d49c43
								
							
						
					
					
						commit
						584b7cf801
					
				| @ -2,6 +2,8 @@ PLATFORM_COMMON_DIR = $(PLATFORM_PATH)/$(PLATFORM_KEY) | ||||
| 
 | ||||
| TMK_COMMON_SRC +=	\
 | ||||
| 	$(PLATFORM_PATH)/suspend.c \
 | ||||
| 	$(PLATFORM_PATH)/synchronization_util.c \
 | ||||
| 	$(PLATFORM_PATH)/timer.c \
 | ||||
| 	$(PLATFORM_COMMON_DIR)/hardware_id.c \
 | ||||
| 	$(PLATFORM_COMMON_DIR)/platform.c \
 | ||||
| 	$(PLATFORM_COMMON_DIR)/suspend.c \
 | ||||
|  | ||||
							
								
								
									
										17
									
								
								platforms/synchronization_util.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								platforms/synchronization_util.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| // Copyright 2023 Sergey Vlasov (@sigprof)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include "synchronization_util.h" | ||||
| 
 | ||||
| // Generate out-of-line copies for inline functions defined in synchronization_util.h.
 | ||||
| 
 | ||||
| #if !defined(PLATFORM_SUPPORTS_SYNCHRONIZATION) | ||||
| #    if defined(SPLIT_KEYBOARD) | ||||
| extern inline void split_shared_memory_lock(void); | ||||
| extern inline void split_shared_memory_unlock(void); | ||||
| #    endif | ||||
| #endif | ||||
| 
 | ||||
| #if defined(SPLIT_KEYBOARD) | ||||
| QMK_IMPLEMENT_AUTOUNLOCK_HELPERS(split_shared_memory) | ||||
| #endif | ||||
| @ -29,6 +29,12 @@ inline void split_shared_memory_unlock(void){}; | ||||
|         prefix##_unlock();                                                  \ | ||||
|     } | ||||
| 
 | ||||
| /* Generate an out-of-line implementation in case the inline functions defined
 | ||||
|  * by the above macro don't actually get inlined. */ | ||||
| #define QMK_IMPLEMENT_AUTOUNLOCK_HELPERS(prefix)                  \ | ||||
|     extern inline unsigned prefix##_autounlock_lock_helper(void); \ | ||||
|     extern inline void     prefix##_autounlock_unlock_helper(unsigned* unused_guard); | ||||
| 
 | ||||
| /* Convinience macro the automatically generate the correct RAII-style
 | ||||
|  * lock_autounlock function macro */ | ||||
| #define QMK_DECLARE_AUTOUNLOCK_CALL(prefix) unsigned prefix##_guard __attribute__((unused, cleanup(prefix##_autounlock_unlock_helper))) = prefix##_autounlock_lock_helper | ||||
|  | ||||
							
								
								
									
										8
									
								
								platforms/timer.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								platforms/timer.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| // Copyright 2023 Sergey Vlasov (@sigprof)
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include "timer.h" | ||||
| 
 | ||||
| // Generate out-of-line copies for inline functions defined in timer.h.
 | ||||
| extern inline fast_timer_t timer_read_fast(void); | ||||
| extern inline fast_timer_t timer_elapsed_fast(fast_timer_t last); | ||||
| @ -24,7 +24,7 @@ | ||||
| #include "debug.h" | ||||
| #include "mousekey.h" | ||||
| 
 | ||||
| inline int8_t times_inv_sqrt2(int8_t x) { | ||||
| static inline int8_t times_inv_sqrt2(int8_t x) { | ||||
|     // 181/256 is pretty close to 1/sqrt(2)
 | ||||
|     // 0.70703125                 0.707106781
 | ||||
|     // 1 too small for x=99 and x=198
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user