-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmeson.build
More file actions
81 lines (70 loc) · 2.41 KB
/
meson.build
File metadata and controls
81 lines (70 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
project('acm-paris', 'c',
version : '1.0.0',
default_options : ['warning_level=3',
'c_std=c99'])
# Option pour activer/désactiver la compilation de la visualisation
option_visualization = get_option('enable_visualization')
# Dépendances de base
deps = [dependency('threads')]
# Dépendance argp (gestion spéciale pour macOS)
cc = meson.get_compiler('c')
argp_dep = dependency('', required: false)
# Essayer de trouver argp-standalone avec pkg-config
argp_standalone = dependency('argp', required: false)
if argp_standalone.found()
deps += argp_standalone
elif cc.has_header('argp.h') and cc.has_function('argp_parse', prefix: '#include <argp.h>')
# argp est disponible dans la libc (Linux)
message('Using system argp')
else
# Sur macOS, essayer de lier directement avec argp-standalone
argp_lib = cc.find_library('argp', required: false)
if argp_lib.found()
deps += argp_lib
message('Found argp library')
else
# Essayer le chemin standard de Homebrew
homebrew_include = '/opt/homebrew/include'
homebrew_lib = '/opt/homebrew/lib'
if cc.has_header('argp.h', args: ['-I' + homebrew_include])
add_project_arguments('-I' + homebrew_include, language: 'c')
add_project_link_arguments('-L' + homebrew_lib, '-largp', language: 'c')
message('Using Homebrew argp')
else
error('argp library not found. On macOS, install with: brew install argp-standalone')
endif
endif
endif
# Sources communes
common_sources = [
'src/array_list.c',
'src/bin_builder.c',
'src/cprintf.c',
'src/csv_parser.c',
'src/data_t.c',
'src/delaunay.c',
'src/graph.c',
'src/handler.c',
'src/min_heap.c',
'src/triangle.c'
]
# Configuration pour la visualisation
visualization_sources = []
visualization_deps = []
if option_visualization
# Dépendances SDL2 pour la visualisation
sdl2_dep = dependency('sdl2', required: true)
sdl2_ttf_dep = dependency('SDL2_ttf', required: true)
visualization_deps = [sdl2_dep, sdl2_ttf_dep]
visualization_sources = ['src/visualise.c', 'src/sdl_wrapper.c']
# Définir la macro pour activer la visualisation
add_project_arguments('-DENABLE_VISUALIZATION', language: 'c')
endif
# Exécutable principal
executable('main',
sources: ['src/main.c'] + common_sources + visualization_sources,
dependencies: deps + visualization_deps,
include_directories: include_directories('include'),
install: true)
# Tests
subdir('tests')