mesonize libcubescript
parent
a36144ead6
commit
e58c69bc99
|
@ -1,3 +1,4 @@
|
||||||
|
subprojects/libostd
|
||||||
*.o
|
*.o
|
||||||
*.core
|
*.core
|
||||||
*.so
|
*.so
|
||||||
|
|
46
Makefile
46
Makefile
|
@ -1,46 +0,0 @@
|
||||||
OSTD_PATH = ../libostd
|
|
||||||
|
|
||||||
LIBCS_CXXFLAGS = \
|
|
||||||
-std=c++1z -Wall -Wextra -Wshadow -Wold-style-cast -Iinclude -Isrc -g \
|
|
||||||
-fvisibility=hidden -I$(OSTD_PATH)
|
|
||||||
|
|
||||||
LIBCS_LDFLAGS = $(OSTD_PATH)/libostd.a
|
|
||||||
|
|
||||||
LIBCS_OBJ = \
|
|
||||||
src/cubescript.o \
|
|
||||||
src/cs_gen.o \
|
|
||||||
src/cs_vm.o \
|
|
||||||
src/cs_val.o \
|
|
||||||
src/cs_util.o \
|
|
||||||
src/lib_str.o \
|
|
||||||
src/lib_math.o \
|
|
||||||
src/lib_list.o
|
|
||||||
|
|
||||||
LIBCS_LIB = libcubescript.a
|
|
||||||
|
|
||||||
.cc.o:
|
|
||||||
$(CXX) $(CXXFLAGS) $(LIBCS_CXXFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
all: library repl
|
|
||||||
|
|
||||||
library: $(LIBCS_LIB)
|
|
||||||
|
|
||||||
$(LIBCS_LIB): $(LIBCS_OBJ)
|
|
||||||
ar rcs $(LIBCS_LIB) $(LIBCS_OBJ)
|
|
||||||
|
|
||||||
repl: $(LIBCS_LIB) tools/repl.cc tools/linenoise.cc tools/linenoise.hh
|
|
||||||
$(CXX) $(CXXFLAGS) $(LIBCS_CXXFLAGS) \
|
|
||||||
-DCS_REPL_USE_LINENOISE tools/linenoise.cc tools/repl.cc \
|
|
||||||
$(LDFLAGS) $(LIBCS_LDFLAGS) -o repl $(LIBCS_LIB)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(LIBCS_LIB) $(LIBCS_OBJ) repl
|
|
||||||
|
|
||||||
src/cubescript.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_vm.hh
|
|
||||||
src/cs_gen.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_vm.hh src/cs_util.hh
|
|
||||||
src/cs_vm.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_vm.hh src/cs_util.hh
|
|
||||||
src/cs_val.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_vm.hh src/cs_util.hh
|
|
||||||
src/cs_util.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_util.hh
|
|
||||||
src/lib_str.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh
|
|
||||||
src/lib_math.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh
|
|
||||||
src/lib_list.o: include/cubescript/cubescript.hh include/cubescript/cubescript_conf.hh src/cs_util.hh
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
project('libcubescript', ['cpp'],
|
||||||
|
version: '0.1.0',
|
||||||
|
default_options: ['buildtype=plain', 'cpp_std=c++17'],
|
||||||
|
meson_version: '>=0.46'
|
||||||
|
)
|
||||||
|
|
||||||
|
dir_prefix = get_option('prefix')
|
||||||
|
dir_include = join_paths(dir_prefix, get_option('includedir'))
|
||||||
|
dir_data = join_paths(dir_prefix, get_option('datadir'))
|
||||||
|
dir_lib = join_paths(dir_prefix, get_option('libdir'))
|
||||||
|
|
||||||
|
dir_package_include = join_paths(dir_include, 'cubescript')
|
||||||
|
|
||||||
|
libcubescript_includes = [include_directories('include')]
|
||||||
|
|
||||||
|
tgt_compiler_id = meson.get_compiler('cpp').get_id()
|
||||||
|
if tgt_compiler_id == 'gcc' or tgt_compiler_id == 'clang'
|
||||||
|
extra_cxxflags = ['-Wextra', '-Wshadow', '-Wold-style-cast']
|
||||||
|
else
|
||||||
|
extra_cxxflags = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
subdir('src')
|
||||||
|
subdir('tools')
|
||||||
|
|
||||||
|
pkg = import('pkgconfig')
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libraries: libcubescript_lib,
|
||||||
|
version: meson.project_version(),
|
||||||
|
name: 'libcubescript',
|
||||||
|
filebase: 'libcubescript',
|
||||||
|
url: 'https://git.octaforge.org/octaforge/libcubescript',
|
||||||
|
description: 'OctaForge C++ utility library'
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
option('readline',
|
||||||
|
type: 'boolean',
|
||||||
|
value: false,
|
||||||
|
description: 'Use GNU readline for the REPL'
|
||||||
|
)
|
||||||
|
|
||||||
|
option('linenoise',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'Use linenoise for the REPL'
|
||||||
|
)
|
|
@ -0,0 +1,38 @@
|
||||||
|
libcubescript_header_src = [
|
||||||
|
'../include/cubescript/cubescript.hh',
|
||||||
|
'../include/cubescript/cubescript_conf.hh'
|
||||||
|
]
|
||||||
|
|
||||||
|
libcubescript_src = [
|
||||||
|
'cs_gen.cc',
|
||||||
|
'cs_util.cc',
|
||||||
|
'cs_val.cc',
|
||||||
|
'cs_vm.cc',
|
||||||
|
'cubescript.cc',
|
||||||
|
'lib_list.cc',
|
||||||
|
'lib_math.cc',
|
||||||
|
'lib_str.cc'
|
||||||
|
]
|
||||||
|
|
||||||
|
libostd_dep = dependency('libostd', fallback: ['libostd', 'libostd_static'])
|
||||||
|
|
||||||
|
libcubescript_lib = both_libraries('cubescript',
|
||||||
|
libcubescript_src,
|
||||||
|
dependencies: libostd_dep,
|
||||||
|
include_directories: libcubescript_includes + [include_directories('.')],
|
||||||
|
cpp_args: extra_cxxflags,
|
||||||
|
install: true,
|
||||||
|
version: meson.project_version()
|
||||||
|
)
|
||||||
|
|
||||||
|
libcubescript = declare_dependency(
|
||||||
|
include_directories: libcubescript_includes,
|
||||||
|
link_with: libcubescript_lib.get_shared_lib()
|
||||||
|
)
|
||||||
|
|
||||||
|
libcubescript_static = declare_dependency(
|
||||||
|
include_directories: libcubescript_includes,
|
||||||
|
link_with: libcubescript_lib.get_static_lib()
|
||||||
|
)
|
||||||
|
|
||||||
|
install_headers(libcubescript_header_src, install_dir: dir_package_include)
|
|
@ -0,0 +1,4 @@
|
||||||
|
[wrap-git]
|
||||||
|
directory = libostd
|
||||||
|
url = https://git.octaforge.org/OctaForge/libostd.git
|
||||||
|
revision = head
|
|
@ -0,0 +1,22 @@
|
||||||
|
repl_src = [
|
||||||
|
'repl.cc'
|
||||||
|
]
|
||||||
|
|
||||||
|
repl_deps = [libostd_dep, libcubescript]
|
||||||
|
repl_flags = []
|
||||||
|
|
||||||
|
if get_option('readline')
|
||||||
|
repl_deps += [dependency('readline')]
|
||||||
|
repl_flags = ['-DCS_REPL_USE_READLINE']
|
||||||
|
elif get_option('linenoise')
|
||||||
|
repl_src += ['linenoise.cc']
|
||||||
|
repl_flags = ['-DCS_REPL_USE_LINENOISE']
|
||||||
|
endif
|
||||||
|
|
||||||
|
executable('cubescript',
|
||||||
|
repl_src,
|
||||||
|
dependencies: repl_deps,
|
||||||
|
include_directories: libcubescript_includes + [include_directories('.')],
|
||||||
|
cpp_args: extra_cxxflags + repl_flags,
|
||||||
|
install: true
|
||||||
|
)
|
Loading…
Reference in New Issue