## Source files c_src = files( 'source/applets/album_la.c', 'source/applets/error.c', 'source/applets/friends_la.c', 'source/applets/hid_la.c', 'source/applets/libapplet.c', 'source/applets/mii_la.c', 'source/applets/nfp_la.c', 'source/applets/nifm_la.c', 'source/applets/pctlauth.c', 'source/applets/psel.c', 'source/applets/swkbd.c', 'source/applets/web.c', 'source/audio/driver.c', 'source/audio/mempool.c', 'source/audio/mix_object.c', 'source/audio/sink.c', 'source/audio/voice.c', 'source/crypto/aes.c', 'source/crypto/aes_cbc.c', 'source/crypto/aes_ctr.c', 'source/crypto/aes_xts.c', 'source/crypto/cmac.c', 'source/crypto/hmac.c', 'source/crypto/sha1.c', 'source/crypto/sha256.c', 'source/display/binder.c', 'source/display/buffer_producer.c', 'source/display/default_window.c', 'source/display/framebuffer.c', 'source/display/native_window.c', 'source/display/parcel.c', 'source/kernel/barrier.c', 'source/kernel/condvar.c', 'source/kernel/event.c', 'source/kernel/jit.c', 'source/kernel/levent.c', 'source/kernel/mutex.c', 'source/kernel/random.c', 'source/kernel/rwlock.c', 'source/kernel/semaphore.c', 'source/kernel/shmem.c', 'source/kernel/thread.c', 'source/kernel/tmem.c', 'source/kernel/uevent.c', 'source/kernel/utimer.c', 'source/kernel/virtmem.c', 'source/kernel/wait.c', 'source/nvidia/address_space.c', 'source/nvidia/channel.c', 'source/nvidia/fence.c', 'source/nvidia/gpu.c', 'source/nvidia/gpu_channel.c', 'source/nvidia/ioctl/nvchannel.c', 'source/nvidia/ioctl/nvhost-as-gpu.c', 'source/nvidia/ioctl/nvhost-ctrl.c', 'source/nvidia/ioctl/nvhost-ctrl-gpu.c', 'source/nvidia/ioctl/nvmap.c', 'source/nvidia/map.c', 'source/runtime/alloc.c', 'source/runtime/argv.c', 'source/runtime/btdev.c', 'source/runtime/devices/console.c', 'source/runtime/devices/console_debug.c', 'source/runtime/devices/console_sw.c', 'source/runtime/devices/convert_errno.c', 'source/runtime/devices/fs_dev.c', 'source/runtime/devices/path_buf.c', 'source/runtime/devices/romfs_dev.c', 'source/runtime/devices/socket.c', 'source/runtime/devices/usb_comms.c', 'source/runtime/diag.c', 'source/runtime/dynamic.c', 'source/runtime/env.c', 'source/runtime/hosversion.c', 'source/runtime/init.c', 'source/runtime/nacp.c', 'source/runtime/newlib.c', 'source/runtime/nxlink.c', 'source/runtime/nxlink_stdio.c', 'source/runtime/pad.c', 'source/runtime/resolver.c', 'source/runtime/ringcon.c', 'source/runtime/util/inet_addr.c', 'source/runtime/util/utf/decode_utf16.c', 'source/runtime/util/utf/decode_utf8.c', 'source/runtime/util/utf/encode_utf16.c', 'source/runtime/util/utf/encode_utf8.c', 'source/runtime/util/utf/utf16_to_utf32.c', 'source/runtime/util/utf/utf16_to_utf8.c', 'source/runtime/util/utf/utf32_to_utf16.c', 'source/runtime/util/utf/utf32_to_utf8.c', 'source/runtime/util/utf/utf8_to_utf16.c', 'source/runtime/util/utf/utf8_to_utf32.c', 'source/services/acc.c', 'source/services/apm.c', 'source/services/applet.c', 'source/services/async.c', 'source/services/audctl.c', 'source/services/auddev.c', 'source/services/audin.c', 'source/services/audout.c', 'source/services/audrec.c', 'source/services/audren.c', 'source/services/avm.c', 'source/services/bpc.c', 'source/services/bsd.c', 'source/services/bt.c', 'source/services/btdrv.c', 'source/services/btm.c', 'source/services/btmsys.c', 'source/services/btmu.c', 'source/services/capmtp.c', 'source/services/capsa.c', 'source/services/caps.c', 'source/services/capsc.c', 'source/services/capsdc.c', 'source/services/capssc.c', 'source/services/capssu.c', 'source/services/capsu.c', 'source/services/clkrst.c', 'source/services/csrng.c', 'source/services/ectx.c', 'source/services/fan.c', 'source/services/fatal.c', 'source/services/friends.c', 'source/services/fs.c', 'source/services/fsldr.c', 'source/services/fspr.c', 'source/services/gpio.c', 'source/services/grc.c', 'source/services/hidbus.c', 'source/services/hid.c', 'source/services/hiddbg.c', 'source/services/hidsys.c', 'source/services/htcs.c', 'source/services/hwopus.c', 'source/services/i2c.c', 'source/services/ins.c', 'source/services/irs.c', 'source/services/lbl.c', 'source/services/ldn.c', 'source/services/ldr.c', 'source/services/lp2p.c', 'source/services/lr.c', 'source/services/mii.c', 'source/services/miiimg.c', 'source/services/mm.c', 'source/services/ncm.c', 'source/services/news.c', 'source/services/nfc.c', 'source/services/nifm.c', 'source/services/nim.c', 'source/services/notif.c', 'source/services/ns.c', 'source/services/nv.c', 'source/services/pctl.c', 'source/services/pcv.c', 'source/services/pdm.c', 'source/services/pgl.c', 'source/services/pl.c', 'source/services/pm.c', 'source/services/psc.c', 'source/services/psm.c', 'source/services/ro.c', 'source/services/set.c', 'source/services/sfdnsres.c', 'source/services/sm.c', 'source/services/smm.c', 'source/services/spl.c', 'source/services/spsm.c', 'source/services/ssl.c', 'source/services/tc.c', 'source/services/time.c', 'source/services/ts.c', 'source/services/uart.c', 'source/services/usbds.c', 'source/services/usbhs.c', 'source/services/vi.c', 'source/services/wlaninf.c', 'source/sf/sessionmgr.c', ) s_src = files( 'source/arm/cache.s', 'source/kernel/svc.s', 'source/runtime/exception.s', 'source/runtime/readtp.s', 'source/runtime/switch_crt0.s', ) inc = include_directories( 'include', 'external/bsd/include', ) # Data files data_default_font = 'data/default_font.bin' # Preprocess data files bin2s = find_program('bin2s', required : true) bin2s_gen = generator(bin2s, output : ['@BASENAME@_bin.s', '@BASENAME@_bin.h'], arguments : ['-a', '8', '-H', '@BUILD_DIR@/@BASENAME@_bin.h', '@INPUT@'], capture : true, ) data_default_font_src = bin2s_gen.process(data_default_font) ## Static library # Compiler options arch_opts = ['-march=armv8-a+crc+crypto', '-mtune=cortex-a57', '-mtp=soft', '-fPIC', '-ftls-model=local-exec'] c_opts = ['-g', '-Wall', '-Werror', '-ffunction-sections', '-fdata-sections'] + arch_opts c_opts += ['-D__SWITCH__', '-DLIBNX_NO_DEPRECATION'] cpp_opts = ['-fno-rtti', '-fno-exceptions', '-std=gnu++11'] nx = static_library('nx', [c_src, s_src, data_default_font_src], include_directories : include_directories( 'include/switch', 'external/bsd/include', ), c_args : c_opts, cpp_args : cpp_opts, ) nx_dep = declare_dependency( include_directories : inc, link_with : nx ) nx_switch_specs = meson.current_source_dir() / 'switch.specs'