Skip to content
Extraits de code Groupes Projets
meson.build 3,93 Kio
project( 'lektor'
       , 'c'
       , version: '0.1.0'
       , license: 'ISC'
       , default_options: [ 'c_std=c18'
                          , 'cpp_std=c++17'
                          , 'warning_level=3'
                          , 'werror=true'
                          , 'strip=true'
                          , 'debug=true'
                          , 'buildtype=debug'
                          , 'b_sanitize=undefined'
                          ]
       )

libdl   = meson.get_compiler('c').find_library('dl')
dep_x11 = dependency('x11', required : false)
dep_mpv = dependency('mpv', required : false)
dep_sdl = dependency('sdl2', required : false)

## Sources for the server
core_sources =  [ 'src/mkv/bufferfd.c'
                , 'src/mkv/write.c'
                , 'src/commands.c'
                , 'src/database/stickers.c'
                , 'src/database/open.c'
                , 'src/database/queue.c'
                , 'src/database/update.c'
                , 'src/database/find.c'
                , 'src/database/config.c'
                , 'src/database/playlist.c'
                , 'src/database/user.c'
                , 'src/mkv/mkv.c'
                , 'src/net/command.c'
                , 'src/net/listen.c'
                , 'src/net/message.c'
                , 'src/config.c'
                , 'src/utils.c'
                , 'src/uri.c'
                , 'src/ini/ini.c'
                , 'src/repo/curl.c'
                , 'src/repo/async.c'
                , 'src/thread.c'
                ]

# Global includes
includes = include_directories('inc')

# Server
core_deps = [ dependency('sqlite3', version : '>= 3.31.0')
            , dependency('libcurl')
            , dependency('json-c')
            , dependency('threads', required : true)
            ]

lib = static_library( meson.project_name()
                    , files(core_sources)
                    , include_directories : includes
                    , dependencies : [ core_deps, libdl ]
                    )

bin_deps =  core_deps + [ declare_dependency( link_with: lib, include_directories: includes) ]

srv = executable( meson.project_name() + 'd'
                , files('src/main/server.c')
                , include_directories : includes
                , dependencies : [ bin_deps ]
                , install : true
                )

# Admin executable
metadata = executable( 'lktadm'
                     , files('src/main/lktadm.c', 'src/cmd.c')
                     , include_directories : includes
                     , dependencies : bin_deps
                     , install : true
                     )

# Client executable
lkt = executable( 'lkt'
                , files('src/main/lkt.c', 'src/cmd.c')
                , include_directories : includes
                , install : true
                )

# X11 window module
if dep_x11.found() and dep_mpv.found()
  lib_mod_x11 = shared_library ( '_module_x11'
                               , files(['src/module/module_x11.c', 'src/module/mpv.c'])
                               , include_directories : includes
                               , dependencies : [ dep_x11, dep_mpv ]
                               , link_with : lib
                               , install : true
                               , install_dir : 'lib/lektor'
                               )
endif

# SQL2 window module
if dep_sdl.found() and dep_mpv.found()
  lib_mod_sdl = shared_library ( '_module_sdl2'
                               , files(['src/module/module_sdl2.c', 'src/module/mpv.c'])
                               , include_directories : includes
                               , dependencies : [ dep_sdl, dep_mpv ]
                               , link_with : lib
                               , install : true
                               , install_dir : 'lib/lektor'
                               )
endif

# Install
install_data('scripts/init.sql', install_dir : 'share/lektor')
install_man('doc/lektord.1')
meson.add_install_script('scripts/install.sh')