project('micetools', 'c', default_options: [ 'buildtype=minsize', # ! Toggle /\ and \/ when building for XP (minsize=normal, static=XP) 'b_vscrt=static_from_buildtype', 'warning_level=3', ]) add_global_arguments('-DMICE_VERSION=' + '"' + get_option('mice_version') + '"', language : 'c') if get_option('win64') add_project_arguments( '/D_AMD64_', language: 'c', ) winxp = false subsystem = 'console' else add_project_arguments( '/D_X86_', language: 'c', ) winxp = true subsystem = 'console,5.01' endif if (host_machine.cpu_family() == 'x86') add_project_arguments('-DMICE_WIN32', language: 'c') endif openssl_inc = include_directories('openssl-1.0.1/include') if get_option('win64') openssl_lib = meson.get_compiler('c').find_library('libeay64', dirs: [ join_paths(meson.source_root(), 'openssl-1.0.1/lib') ], required: true) else openssl_lib = meson.get_compiler('c').find_library('libeay32', dirs: [ join_paths(meson.source_root(), 'openssl-1.0.1/lib') ], required: true) endif assert(openssl_lib.found(), 'Please download openssl!') ewfapi_lib = meson.get_compiler('c').find_library('ewfapi', dirs: [ join_paths(meson.source_root(), 'lib') ], required: true) freeglut_lib = meson.get_compiler('c').find_library('freeglut', dirs: [ join_paths(meson.source_root(), 'lib') ], required: true) add_project_link_arguments( '/FIXED:NO', '/DYNAMICBASE', '/OPT:REF', '/LTCG', '/IGNORE:4099', # no PDBs language: 'c' ) add_project_link_arguments( '/IGNORE:4099', # no PDBs language: 'cpp' ) add_project_arguments( '/DWIN32_LEAN_AND_MEAN', # Strip out headers we don't really need '/D_WIN32_WINNT=_WIN32_WINNT_WINXP', # hahahahaha I hate it '/DCIMGUI_DEFINE_ENUMS_AND_STRUCTS', # Strip out as much crud as we can to keep XP builds small '/Os', '/EHc-', '/EHa-', '/EHs-', '/GL', '/GR-', '/wd4100', # basically every hook causes "unreferenced formal parameter" '/wd4152', # hooks: function/data pointer conversion in expression '/wd4200', # zero-sized arrays '/wd4201', # ewfapi.h: nameless struct/union '/wd4204', # non-constant aggregate initializer '/wd4206', # empty C files '/wd4214', # windns.h: nonstandard extension used: bit field types other than int '/wd4706', # assignment within conditional expression '/wd4189', # lots of keychip functions aren't 100% implemented yet '/we4047', # ... differs in levels of indirection from ... '/we4057', # ... differs in levels of indirection (slightly) from ... '/we4024', # ... different types for formal and actual paramter ... '/we4013', # ... undefined; assuming extern returning int '/we4431', # missing type specifier - int assumed. '/W4', language: 'c', ) if winxp add_project_arguments( '/D_USING_V140_SDK71_', '/DSFML_STATIC', '/DYNAMICBASE:NO', language: 'c', ) endif subdir('assets') subdir('src')