diff --git a/fdpp/hdr b/fdpp/hdr new file mode 120000 index 00000000..a82761a8 --- /dev/null +++ b/fdpp/hdr @@ -0,0 +1 @@ +../hdr \ No newline at end of file diff --git a/fdpp/include b/fdpp/include new file mode 120000 index 00000000..f5030fe8 --- /dev/null +++ b/fdpp/include @@ -0,0 +1 @@ +../include \ No newline at end of file diff --git a/fdpp/kernel/hdr b/fdpp/kernel/hdr new file mode 120000 index 00000000..a82761a8 --- /dev/null +++ b/fdpp/kernel/hdr @@ -0,0 +1 @@ +../hdr \ No newline at end of file diff --git a/fdpp/kernel/include b/fdpp/kernel/include new file mode 120000 index 00000000..f5030fe8 --- /dev/null +++ b/fdpp/kernel/include @@ -0,0 +1 @@ +../include \ No newline at end of file diff --git a/fdpp/kernel.ld b/fdpp/kernel/kernel.ld similarity index 100% rename from fdpp/kernel.ld rename to fdpp/kernel/kernel.ld diff --git a/fdpp/kernel/makefile b/fdpp/kernel/makefile index e5985785..f36025c0 100644 --- a/fdpp/kernel/makefile +++ b/fdpp/kernel/makefile @@ -50,7 +50,7 @@ endif # given the names are fixed. Also $(TARGET).% won't work that way at all: # you need to explicitly list all files that are created simultaneously, # and yet use pattern in all of them. -DEPS_OF_ELF = $(srcdir)/$(T)/kernel.ld $(OBJS) $(PPOBJS) $(DOBJS) +DEPS_OF_ELF = $(srcdir)/kernel.ld $(OBJS) $(PPOBJS) $(DOBJS) need = 4.3 ifneq ($(filter $(need),$(firstword $(sort $(MAKE_VERSION) $(need)))),) $(T)/$(TARGET).elf $(T)/$(TARGET).map &: $(DEPS_OF_ELF) diff --git a/fdpp/kernel/meson.build b/fdpp/kernel/meson.build index 6d739e6c..51178f35 100644 --- a/fdpp/kernel/meson.build +++ b/fdpp/kernel/meson.build @@ -1,10 +1,9 @@ project('kernel', ['nasm', 'c'], version: '1.7') -TOP = '../..' -PD = TOP / 'fdpp/parsers/parse_decls.sh' -SRC = TOP / 'kernel' -DSRC = SRC / 'drivers' -kernel_ld = TOP / 'kernel.ld' -rel_inc = TOP / 'include/fdpp' +PD = 'parsers/parse_decls.sh' +SRC = 'src' +DSRC = 'src/drivers' +kernel_ld = meson.current_source_dir() / 'kernel.ld' +rel_inc = 'include/fdpp' abs_inc = meson.current_source_dir() / rel_inc incdir = include_directories(rel_inc) cpp = meson.get_compiler('c') @@ -17,16 +16,17 @@ BVER = cpp.get_define('BPRM_VER', FVER = AVER + '.' + BVER TARGET = 'fdppkrnl.' + FVER GIT_DESCRIBE = run_command('git', 'describe', check: true).stdout().strip() -hdr = [TOP / 'kernel', TOP / 'hdr', TOP / 'fdpp', rel_inc] +hdr = ['src', 'hdr', rel_inc] incdir2 = include_directories(hdr) sfiles = cpp.preprocess(['cdata.S', 'plt.S'], output : '@BASENAME@.asm', include_directories: incdir2, - compile_args : [ - '-D__ASSEMBLER__', - '-DKERNEL_VERSION=' + meson.project_version() + + dependencies: declare_dependency( + compile_args : [ + '-D__ASSEMBLER__', + '-DKERNEL_VERSION=' + meson.project_version() + ' [GIT: ' + GIT_DESCRIBE + ']', - '-DCMA=,', '-P']) + '-DCMA=,', '-P'])) env = environment() env.set('CPP', 'cpp') env.set('srcdir', meson.current_source_dir() / '../parsers') @@ -83,3 +83,5 @@ custom_target(TARGET + '.elf', install_dir: get_option('datadir') / 'fdpp', install_mode: 'rw-r--r--', build_by_default: true) + +VERSION = meson.project_version() diff --git a/fdpp/kernel/parsers b/fdpp/kernel/parsers new file mode 120000 index 00000000..4babbe45 --- /dev/null +++ b/fdpp/kernel/parsers @@ -0,0 +1 @@ +../parsers \ No newline at end of file diff --git a/fdpp/kernel/src b/fdpp/kernel/src new file mode 120000 index 00000000..5cd551cf --- /dev/null +++ b/fdpp/kernel/src @@ -0,0 +1 @@ +../src \ No newline at end of file diff --git a/fdpp/kernel/thunks_priv.h b/fdpp/kernel/thunks_priv.h new file mode 120000 index 00000000..ccaa6dd2 --- /dev/null +++ b/fdpp/kernel/thunks_priv.h @@ -0,0 +1 @@ +../thunks_priv.h \ No newline at end of file diff --git a/fdpp/kernel/toolchain.ini b/fdpp/kernel/toolchain.ini index 0ba25d6a..f58ff14c 100644 --- a/fdpp/kernel/toolchain.ini +++ b/fdpp/kernel/toolchain.ini @@ -2,6 +2,7 @@ nasm = 'nasm-segelf' c = 'gcc' strip = 'llvm-strip' +pkg-config = 'pkg-config' [constants] arch = 'i386-linux-gnu' diff --git a/fdpp/loader/include b/fdpp/loader/include new file mode 120000 index 00000000..f5030fe8 --- /dev/null +++ b/fdpp/loader/include @@ -0,0 +1 @@ +../include \ No newline at end of file diff --git a/fdpp/loader/meson.build b/fdpp/loader/meson.build index 5e7846b2..e6b7c1d9 100644 --- a/fdpp/loader/meson.build +++ b/fdpp/loader/meson.build @@ -1,6 +1,5 @@ project('loader', 'c', version: '0.1') -TOP = '../..' -rel_inc = TOP / 'include/fdpp' +rel_inc = 'include/fdpp' abs_inc = meson.current_source_dir() / rel_inc lelf = dependency('libelf') incdir = include_directories(rel_inc) @@ -13,7 +12,7 @@ BVER = cpp.get_define('BPRM_VER', prefix: '#include "bprm.h"') FVER = AVER + '.' + BVER TARGET = 'fdppkrnl.' + FVER -shared_library('fdldr', 'elf.c', 'loader.c', +LIBLOADER = shared_library('fdldr', 'elf.c', 'loader.c', dependencies: lelf, include_directories: incdir, version: FVER, c_args: [ diff --git a/fdpp/meson.build b/fdpp/meson.build index 09d22971..6fdb0e55 100644 --- a/fdpp/meson.build +++ b/fdpp/meson.build @@ -1,13 +1,13 @@ project('libfdpp', ['c', 'cpp'], version: '0.1') -TOP = '..' MF = meson.current_source_dir() / 'parsers/mkfar.sh' MA = meson.current_source_dir() / 'parsers/mkasmdefs.sh' PD = meson.current_source_dir() / 'parsers/parse_decls.sh' M4 = meson.current_source_dir() / 'parsers/thunks.m4' -TG = './thunk_gen/build/thunk_gen' +tg = subproject('thunk_gen') +TG = tg.get_variable('TG') TFLAGS = ['-a', '2', '-p', '2'] -SRC = TOP / 'kernel' -rel_inc = TOP / 'include/fdpp' +SRC = 'src' +rel_inc = 'include/fdpp' abs_inc = meson.current_source_dir() / rel_inc incdir = include_directories(rel_inc) cpp = meson.get_compiler('c') @@ -61,7 +61,7 @@ ccfiles = ccgen.process(CFILES) gad = custom_target('glob_asmdefs.h', output: 'glob_asmdefs.h', - input: SRC / 'glob_asm.h', + input: 'src/glob_asm.h', command: [MA, '@INPUT@'], capture: true) @@ -135,9 +135,9 @@ ppccf = ccgen.process(FDPP_CFILES) FDPP_CCFILES = ['thunks.cc', 'thunks_c.cc', 'thunks_a.cc', 'thunks_p.cc', 'dosobj.cc'] CPPFILES = ['objhlp.cpp', 'ctors.cpp', 'farhlp.cpp', 'objtrace.cpp'] -hdr = [TOP / 'kernel', TOP / 'hdr', TOP / 'fdpp', rel_inc] +hdr = ['src', 'hdr', '.', rel_inc] incdir2 = include_directories(hdr) -shared_library('fdpp', [ccfiles, ppccf, FDPP_CCFILES, CPPFILES], +LIBFDPP = shared_library('fdpp', [ccfiles, ppccf, FDPP_CCFILES, CPPFILES], include_directories: incdir2, version: FVER, sources: [gad, pac, pap, tc, ta], diff --git a/fdpp/src b/fdpp/src new file mode 120000 index 00000000..195d3889 --- /dev/null +++ b/fdpp/src @@ -0,0 +1 @@ +../kernel \ No newline at end of file diff --git a/fdpp/subprojects/thunk_gen b/fdpp/subprojects/thunk_gen new file mode 120000 index 00000000..112baaac --- /dev/null +++ b/fdpp/subprojects/thunk_gen @@ -0,0 +1 @@ +../thunk_gen \ No newline at end of file diff --git a/fdpp/thunk_gen/meson.build b/fdpp/thunk_gen/meson.build index dbaf0c71..e8b64724 100644 --- a/fdpp/thunk_gen/meson.build +++ b/fdpp/thunk_gen/meson.build @@ -13,4 +13,4 @@ pgen = generator(bison, arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']) pfiles = pgen.process('thunk_gen.y') -executable('thunk_gen', lfiles, pfiles) +TG = executable('thunk_gen', lfiles, pfiles) diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..f19b8039 --- /dev/null +++ b/meson.build @@ -0,0 +1,12 @@ +project('fdpp', ['cpp', 'c', 'nasm'], version: '0.1') +li = subproject('libfdpp') +LIBFDPP = li.get_variable('LIBFDPP') +lo = subproject('loader') +LIBLOADER = lo.get_variable('LIBLOADER') +ke = subproject('kernel') +VERSION = ke.get_variable('VERSION') + +pkg = import('pkgconfig') +pkg.generate(LIBFDPP, + libraries: LIBLOADER, + version: VERSION) diff --git a/subprojects/kernel b/subprojects/kernel new file mode 120000 index 00000000..570e9ea9 --- /dev/null +++ b/subprojects/kernel @@ -0,0 +1 @@ +../fdpp/kernel \ No newline at end of file diff --git a/subprojects/libfdpp b/subprojects/libfdpp new file mode 120000 index 00000000..48ac35da --- /dev/null +++ b/subprojects/libfdpp @@ -0,0 +1 @@ +../fdpp \ No newline at end of file diff --git a/subprojects/loader b/subprojects/loader new file mode 120000 index 00000000..dabaa729 --- /dev/null +++ b/subprojects/loader @@ -0,0 +1 @@ +../fdpp/loader \ No newline at end of file