forked from hertog/godot-module-template
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| from misc.utility.scons_hints import *
 | |
| 
 | |
| Import("env")
 | |
| 
 | |
| env_png = env.Clone()
 | |
| 
 | |
| # Thirdparty source files
 | |
| 
 | |
| thirdparty_obj = []
 | |
| 
 | |
| if env["builtin_libpng"]:
 | |
|     thirdparty_dir = "#thirdparty/libpng/"
 | |
|     thirdparty_sources = [
 | |
|         "png.c",
 | |
|         "pngerror.c",
 | |
|         "pngget.c",
 | |
|         "pngmem.c",
 | |
|         "pngpread.c",
 | |
|         "pngread.c",
 | |
|         "pngrio.c",
 | |
|         "pngrtran.c",
 | |
|         "pngrutil.c",
 | |
|         "pngset.c",
 | |
|         "pngtrans.c",
 | |
|         "pngwio.c",
 | |
|         "pngwrite.c",
 | |
|         "pngwtran.c",
 | |
|         "pngwutil.c",
 | |
|     ]
 | |
|     thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
 | |
| 
 | |
|     env_png.Prepend(CPPPATH=[thirdparty_dir])
 | |
|     # Needed for drivers includes and in platform/web.
 | |
|     env.Prepend(CPPPATH=[thirdparty_dir])
 | |
| 
 | |
|     env_thirdparty = env_png.Clone()
 | |
|     env_thirdparty.disable_warnings()
 | |
|     env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
 | |
| 
 | |
|     if env["arch"].startswith("arm"):
 | |
|         if env.msvc:  # Can't compile assembly files with MSVC.
 | |
|             env_thirdparty.Append(CPPDEFINES=[("PNG_ARM_NEON_OPT", 0)])
 | |
|         else:
 | |
|             env_neon = env_thirdparty.Clone()
 | |
|             if "S_compiler" in env:
 | |
|                 env_neon["CC"] = env["S_compiler"]
 | |
|             neon_sources = []
 | |
|             neon_sources.append(env_neon.Object(thirdparty_dir + "arm/arm_init.c"))
 | |
|             neon_sources.append(env_neon.Object(thirdparty_dir + "arm/filter_neon_intrinsics.c"))
 | |
|             neon_sources.append(env_neon.Object(thirdparty_dir + "arm/palette_neon_intrinsics.c"))
 | |
|             thirdparty_obj += neon_sources
 | |
|     elif env["arch"].startswith("x86"):
 | |
|         env_thirdparty.Append(CPPDEFINES=["PNG_INTEL_SSE"])
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "intel/intel_init.c")
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "intel/filter_sse2_intrinsics.c")
 | |
|     elif env["arch"] == "loongarch64":
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "loongarch/loongarch_lsx_init.c")
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "loongarch/filter_lsx_intrinsics.c")
 | |
|     elif env["arch"] == "ppc64":
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "powerpc/powerpc_init.c")
 | |
|         env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "powerpc/filter_vsx_intrinsics.c")
 | |
| 
 | |
|     env.drivers_sources += thirdparty_obj
 | |
| 
 | |
| 
 | |
| # Godot source files
 | |
| 
 | |
| driver_obj = []
 | |
| 
 | |
| env_png.add_source_files(driver_obj, "*.cpp")
 | |
| env.drivers_sources += driver_obj
 | |
| 
 | |
| # Needed to force rebuilding the driver files when the thirdparty library is updated.
 | |
| env.Depends(driver_obj, thirdparty_obj)
 | 
