You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							53 lines
						
					
					
						
							1.8 KiB
						
					
					
				| # The libcontext library is only included inside common, so we create it as an | |
| # object library and then add the objects to common. | |
|  | |
| # Link-time optimization (LTO) on GCC conflicts with embedded assembly (__asm), | |
| # following GCC's recommendation to disable LTO per translation unit. | |
| if( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | |
|     set_source_files_properties( libcontext.cpp PROPERTIES | |
|         COMPILE_FLAGS "-fno-lto" | |
|         ) | |
| endif() | |
|  | |
| list(APPEND LIBCONTEXT_SOURCES | |
|     libcontext.cpp | |
|     ) | |
|  | |
| if( MSVC ) | |
|     # we need our assembly helper until cmake 2.26.1 becomes standard on MSVC | |
|     include( MSVCAssemblyHelper ) | |
|  | |
|     if ( KICAD_BUILD_ARCH_X86 ) | |
|         list(APPEND LIBCONTEXT_ASM_SOURCES | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/make_i386_ms_pe_masm.asm | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/jump_i386_ms_pe_masm.asm | |
|             ) | |
|     elseif( KICAD_BUILD_ARCH_X64 ) | |
|         list(APPEND LIBCONTEXT_ASM_SOURCES | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/make_x86_64_ms_pe_masm.asm | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/jump_x86_64_ms_pe_masm.asm | |
|             ) | |
|     elseif( KICAD_BUILD_ARCH_ARM64 ) | |
|         list(APPEND LIBCONTEXT_ASM_SOURCES | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/make_arm64_aapcs_pe_armasm.asm | |
|             ${CMAKE_CURRENT_SOURCE_DIR}/jump_arm64_aapcs_pe_armasm.asm | |
|             ) | |
|     endif() | |
|  | |
|     if( KICAD_BUILD_ARCH_ARM64 ) | |
|         # ARM64 needs to use the compile_asm workaround | |
|         compile_asm( TARGET libcontext ASM_FILES ${LIBCONTEXT_ASM_SOURCES} OUTPUT_OBJECTS ASM_SOURCES_OBJECTS ) | |
|  | |
|         list(APPEND LIBCONTEXT_SOURCES ${ASM_SOURCES_OBJECTS}) | |
|     else() | |
|         list(APPEND LIBCONTEXT_SOURCES ${LIBCONTEXT_ASM_SOURCES}) | |
|     endif() | |
| endif() | |
|  | |
| add_library( libcontext STATIC | |
|     ${LIBCONTEXT_SOURCES} | |
|     ) | |
|  | |
| target_include_directories( libcontext PUBLIC | |
|     ${CMAKE_CURRENT_SOURCE_DIR} | |
|     )
 |