diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..1923fdf
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,396 @@
+project('flashromutils', 'c',
+  version : '1.0',
+  license : 'GPL-2.0+',
+  meson_version : '>=0.47.0',
+  default_options : ['warning_level=2', 'c_std=c99'],
+)
+
+# libtool versioning
+lt_current = '1'
+lt_revision = '0'
+lt_age = '0'
+lt_version = '@0@.@1@.@2@'.format(lt_current, lt_age, lt_revision)
+
+# hide some warnings
+warning_flags = [
+  '-Wno-unused-parameter',
+  '-Wno-sign-compare',
+  '-Wno-address-of-packed-member',
+  '-Wno-enum-conversion',
+  '-Wno-missing-field-initializers',
+  '-Wno-missing-braces',
+]
+
+conf = configuration_data()
+
+cc = meson.get_compiler('c')
+add_project_arguments(cc.get_supported_arguments(warning_flags), language : 'c')
+add_project_arguments('-D_DEFAULT_SOURCE', language : 'c')
+add_project_arguments('-D_POSIX_C_SOURCE', language : 'c') # required for fileno
+add_project_arguments('-D_BSD_SOURCE', language : 'c') # required for glibc < v2.19
+add_project_arguments('-DFLASHROM_VERSION="' + meson.project_version() + '"', language : 'c')
+
+# get defaults from configure
+config_atahpt = get_option('config_atahpt')
+config_atapromise = get_option('config_atapromise')
+config_atavia = get_option('config_atavia')
+config_buspirate_spi = get_option('config_buspirate_spi')
+config_ch341a_spi = get_option('config_ch341a_spi')
+config_dediprog = get_option('config_dediprog')
+config_developerbox_spi = get_option('config_developerbox_spi')
+config_digilent_spi = get_option('config_digilent_spi')
+config_drkaiser = get_option('config_drkaiser')
+config_dummy = get_option('config_dummy')
+config_ft2232_spi = get_option('config_ft2232_spi')
+config_gfxnvidia = get_option('config_gfxnvidia')
+config_internal = get_option('config_internal')
+config_it8212 = get_option('config_it8212')
+config_linux_mtd = get_option('config_linux_mtd')
+config_linux_spi = get_option('config_linux_spi')
+config_mstarddc_spi = get_option('config_mstarddc_spi')
+config_nic3com = get_option('config_nic3com')
+config_nicintel_eeprom = get_option('config_nicintel_eeprom')
+config_nicintel = get_option('config_nicintel')
+config_nicintel_spi = get_option('config_nicintel_spi')
+config_nicnatsemi = get_option('config_nicnatsemi')
+config_nicrealtek = get_option('config_nicrealtek')
+config_ogp_spi = get_option('config_ogp_spi')
+config_pickit2_spi = get_option('config_pickit2_spi')
+config_pony_spi = get_option('config_pony_spi')
+config_rayer_spi = get_option('config_rayer_spi')
+config_satamv = get_option('config_satamv')
+config_satasii = get_option('config_satasii')
+config_serprog = get_option('config_serprog')
+config_usbblaster_spi = get_option('config_usbblaster_spi')
+
+cargs = []
+deps = []
+srcs = []
+
+need_libusb0 = false
+need_raw_access = false
+need_serial = false
+
+# check for required symbols
+if cc.has_function('clock_gettime')
+  add_project_arguments('-DHAVE_CLOCK_GETTIME=1', language : 'c')
+endif
+if cc.has_function('strnlen')
+  add_project_arguments('-DHAVE_STRNLEN=1', language : 'c')
+endif
+if cc.check_header('sys/utsname.h')
+  add_project_arguments('-DHAVE_UTSNAME=1', language : 'c')
+endif
+
+# some programmers require libusb
+if get_option('usb')
+  srcs += 'usbdev.c'
+  deps += dependency('libusb-1.0')
+else
+  config_ch341a_spi = false
+  config_dediprog = false
+  config_digilent_spi = false
+  config_developerbox_spi = false
+endif
+
+# some programmers require libpci
+if get_option('pciutils')
+  srcs += 'pcidev.c'
+  deps += dependency('libpci')
+  cargs += '-DNEED_PCI=1'
+else
+  config_atahpt = false
+  config_atapromise = false
+  config_atavia = false
+  config_drkaiser = false
+  config_gfxnvidia = false
+  config_internal = false
+  config_it8212 = false
+  config_nic3com = false
+  config_nicintel_eeprom = false
+  config_nicintel = false
+  config_nicintel_spi = false
+  config_nicnatsemi = false
+  config_nicrealtek = false
+  config_ogp_spi = false
+  config_rayer_spi = false
+  config_satamv = false
+  config_satasii = false
+endif
+
+# set defines for configured programmers
+if config_atahpt
+  srcs += 'atahpt.c'
+  cargs += '-DCONFIG_ATAHPT=1'
+endif
+if config_atapromise
+  srcs += 'atapromise.c'
+  cargs += '-DCONFIG_ATAPROMISE=1'
+endif
+if config_atavia
+  srcs += 'atavia.c'
+  cargs += '-DCONFIG_ATAVIA=1'
+endif
+if config_buspirate_spi
+  srcs += 'buspirate_spi.c'
+  cargs += '-DCONFIG_BUSPIRATE_SPI=1'
+  need_serial = true
+endif
+if config_ch341a_spi
+  srcs += 'ch341a_spi.c'
+  cargs += '-DCONFIG_CH341A_SPI=1'
+endif
+if config_dediprog
+  srcs += 'dediprog.c'
+  cargs += '-DCONFIG_DEDIPROG=1'
+endif
+if config_developerbox_spi
+  srcs += 'developerbox_spi.c'
+  cargs += '-DCONFIG_DEVELOPERBOX_SPI=1'
+endif
+if config_digilent_spi
+  srcs += 'digilent_spi.c'
+  cargs += '-DCONFIG_DIGILENT_SPI=1'
+endif
+if config_drkaiser
+  srcs += 'drkaiser.c'
+  cargs += '-DCONFIG_DRKAISER=1'
+endif
+if config_dummy
+  srcs += 'dummyflasher.c'
+  cargs += '-DCONFIG_DUMMY=1'
+endif
+if config_ft2232_spi
+  srcs += 'ft2232_spi.c'
+  cargs += '-DCONFIG_FT2232_SPI=1'
+  deps += dependency('libftdi1')
+  cargs += '-DHAVE_FT232H=1'
+endif
+if config_gfxnvidia
+  srcs += 'gfxnvidia.c'
+  cargs += '-DCONFIG_GFXNVIDIA=1'
+endif
+if config_internal
+  srcs += 'board_enable.c'
+  srcs += 'cbtable.c'
+  srcs += 'chipset_enable.c'
+  srcs += 'internal.c'
+  srcs += 'processor_enable.c'
+  if target_machine.cpu_family() == 'x86' or target_machine.cpu_family() == 'x86_64'
+    srcs += 'amd_imc.c'
+    srcs += 'dmi.c'
+    srcs += 'ichspi.c'
+    srcs += 'it85spi.c'
+    srcs += 'it87spi.c'
+    srcs += 'mcp6x_spi.c'
+    srcs += 'sb600spi.c'
+    srcs += 'wbsio_spi.c'
+  endif
+  config_bitbang_spi = true
+  cargs += '-DCONFIG_INTERNAL=1'
+  if get_option('config_internal_dmi')
+    # Use internal DMI/SMBIOS decoder by default instead of relying on dmidecode.
+    cargs += '-DCONFIG_INTERNAL_DMI=1'
+  endif
+endif
+if config_it8212
+  srcs += 'it8212.c'
+  cargs += '-DCONFIG_IT8212=1'
+endif
+if config_linux_mtd
+  srcs += 'linux_mtd.c'
+  cargs += '-DCONFIG_LINUX_MTD=1'
+endif
+if config_linux_spi
+  srcs += 'linux_spi.c'
+  cargs += '-DCONFIG_LINUX_SPI=1'
+endif
+if config_mstarddc_spi
+  srcs += 'mstarddc_spi.c'
+  cargs += '-DCONFIG_MSTARDDC_SPI=1'
+endif
+if config_nic3com
+  srcs += 'nic3com.c'
+  cargs += '-DCONFIG_NIC3COM=1'
+endif
+if config_nicintel
+  srcs += 'nicintel.c'
+  cargs += '-DCONFIG_NICINTEL=1'
+endif
+if config_nicintel_eeprom
+  srcs += 'nicintel_eeprom.c'
+  cargs += '-DCONFIG_NICINTEL_EEPROM=1'
+endif
+if config_nicintel_spi
+  srcs += 'nicintel_spi.c'
+  config_bitbang_spi = true
+  cargs += '-DCONFIG_NICINTEL_SPI=1'
+endif
+if config_nicnatsemi
+  srcs += 'nicnatsemi.c'
+  cargs += '-DCONFIG_NICNATSEMI=1'
+endif
+if config_nicrealtek
+  srcs += 'nicrealtek.c'
+  cargs += '-DCONFIG_NICREALTEK=1'
+endif
+if config_ogp_spi
+  config_bitbang_spi = true
+  srcs += 'ogp_spi.c'
+  cargs += '-DCONFIG_OGP_SPI=1'
+endif
+if config_pickit2_spi
+  srcs += 'pickit2_spi.c'
+  cargs += '-DCONFIG_PICKIT2_SPI=1'
+  need_libusb0 = true
+endif
+if config_pony_spi
+  srcs += 'pony_spi.c'
+  need_serial = true
+  config_bitbang_spi = true
+  cargs += '-DCONFIG_PONY_SPI=1'
+endif
+if config_rayer_spi
+  srcs += 'rayer_spi.c'
+  config_bitbang_spi = true
+  need_raw_access = true
+  cargs += '-DCONFIG_RAYER_SPI=1'
+endif
+if config_satamv
+  srcs += 'satamv.c'
+  cargs += '-DCONFIG_SATAMV=1'
+endif
+if config_satasii
+  srcs += 'satasii.c'
+  cargs += '-DCONFIG_SATASII=1'
+endif
+if config_serprog
+  srcs += 'serprog.c'
+  cargs += '-DCONFIG_SERPROG=1'
+  need_serial = true
+endif
+if config_usbblaster_spi
+  srcs += 'usbblaster_spi.c'
+  cargs += '-DCONFIG_USBBLASTER_SPI=1'
+endif
+
+# bitbanging SPI infrastructure
+if config_bitbang_spi
+  srcs += 'bitbang_spi.c'
+  cargs += '-DCONFIG_BITBANG_SPI=1'
+endif
+
+# raw memory, MSR or PCI port I/O access
+if need_raw_access
+  srcs += 'hwaccess.c'
+  srcs += 'physmap.c'
+  cargs += '-DNEED_RAW_ACCESS=1'
+endif
+
+# raw serial IO
+if need_serial
+  srcs += 'custom_baud.c'
+  srcs += 'serial.c'
+endif
+
+# raw deprecated and old USB library
+if need_libusb0
+  deps += dependency('libusb')
+endif
+
+prefix = get_option('prefix')
+sbindir = join_paths(prefix, get_option('sbindir'))
+libdir = join_paths(prefix, get_option('libdir'))
+
+install_headers([
+    'libflashrom.h',
+  ],
+)
+
+# core modules needed by both the library and the CLI
+srcs += '82802ab.c'
+srcs += 'at45db.c'
+srcs += 'edi.c'
+srcs += 'en29lv640b.c'
+srcs += 'flashchips.c'
+srcs += 'flashrom.c'
+srcs += 'fmap.c'
+srcs += 'helpers.c'
+srcs += 'ich_descriptors.c'
+srcs += 'jedec.c'
+srcs += 'layout.c'
+srcs += 'libflashrom.c'
+srcs += 'opaque.c'
+srcs += 'print.c'
+srcs += 'programmer.c'
+srcs += 'sfdp.c'
+srcs += 'spi25.c'
+srcs += 'spi25_statusreg.c'
+srcs += 'spi.c'
+srcs += 'sst28sf040.c'
+srcs += 'sst49lfxxxc.c'
+srcs += 'sst_fwhub.c'
+srcs += 'stm50.c'
+srcs += 'udelay.c'
+srcs += 'w29ee011.c'
+srcs += 'w39.c'
+
+mapfile = 'libflashrom.map'
+vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
+flashrom = shared_library(
+  'flashrom',
+  sources : [
+    srcs,
+  ],
+  soversion : lt_current,
+  version : lt_version,
+  dependencies : [
+    deps,
+  ],
+  c_args : [
+    cargs,
+  ],
+  install : true,
+  link_args : vflag,
+  link_depends : mapfile,
+)
+
+pkgg = import('pkgconfig')
+pkgg.generate(
+  libraries : flashrom,
+  version : meson.project_version(),
+  name : 'libflashrom',
+  filebase : 'libflashrom',
+  description : 'libflashrom',
+)
+
+flashrom_dep = declare_dependency(
+  link_with : flashrom,
+  include_directories : include_directories('.'),
+  dependencies : deps
+)
+
+# we can't just link_with libflashrom as we require all the internal symbols...
+executable(
+  'flashrom',
+  sources : [
+    srcs,
+    'cli_classic.c',
+    'cli_common.c',
+    'cli_output.c',
+    'flashrom.c',
+  ],
+  dependencies : [
+    deps,
+  ],
+  c_args : [
+    cargs,
+    '-DSTANDALONE',
+    '-DCONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_INVALID',
+    '-DCONFIG_DEFAULT_PROGRAMMER_ARGS=""',
+  ],
+  install : true,
+  install_dir : sbindir,
+)
+
+subdir('util')
