tools: kexttool: include directory support; pre-processor defines for internal kexts
This commit is contained in:
6
Makefile
6
Makefile
@@ -48,12 +48,14 @@ CWARNINGS := -Wall -Werror -pedantic -Wno-language-extension-token -Wno-unused-f
|
||||
OPTIMISATION_LEVEL := -O2
|
||||
|
||||
CFLAGS := $(CFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu17 \
|
||||
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include $(CWARNINGS)
|
||||
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include $(CWARNINGS) \
|
||||
$(INTERNAL_KEXT_INCLUDES) $(INTERNAL_KEXT_DEFINES)
|
||||
|
||||
KERNEL_DEFINES := -DSOCKS_INTERNAL=1
|
||||
|
||||
CXXFLAGS := $(CXXFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu++17 \
|
||||
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include -Wno-language-extension-token $(CWARNINGS)
|
||||
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include -Wno-language-extension-token $(CWARNINGS) \
|
||||
$(INTERNAL_KEXT_INCLUDES) $(INTERNAL_KEXT_DEFINES)
|
||||
|
||||
ASMFLAGS := $(ASMFLAGS) -DBUILD_ID=\"$(BUILD_ID)\"
|
||||
LDFLAGS := $(LDFLAGS) -g -lgcc $(OPTIMISATION_LEVEL)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import yaml
|
||||
import os
|
||||
import re
|
||||
from kexttool.kext import KextSource
|
||||
|
||||
|
||||
@@ -84,6 +85,12 @@ def write_external_kext_variables(fp, kexts):
|
||||
fp.write('\n')
|
||||
|
||||
|
||||
def c_define_from_kext_id(ident):
|
||||
out = ident.upper()
|
||||
out = re.sub('[^0-9a-zA-Z]+', '_', out)
|
||||
return 'KEXT_{}'.format(out)
|
||||
|
||||
|
||||
def create_kext_makefile():
|
||||
all_kexts = KextSource.scan(os.path.join(os.getcwd(), 'kexts'))
|
||||
selection_info = {}
|
||||
@@ -102,6 +109,7 @@ def create_kext_makefile():
|
||||
return
|
||||
|
||||
internal_source_files = []
|
||||
internal_kexts = []
|
||||
external_kexts = []
|
||||
|
||||
print('the following kernel extensions will be built:')
|
||||
@@ -119,6 +127,7 @@ def create_kext_makefile():
|
||||
continue
|
||||
|
||||
if build_info['build'] == 'internal':
|
||||
internal_kexts.append(kext_info)
|
||||
internal_source_files += kext_info.sources_filepath()
|
||||
elif build_info['build'] == 'external':
|
||||
external_kexts.append(kext_info)
|
||||
@@ -141,13 +150,32 @@ def create_kext_makefile():
|
||||
makefile_fp.write(' \\')
|
||||
makefile_fp.write('\n')
|
||||
|
||||
if len(internal_kexts) > 0:
|
||||
makefile_fp.write('INTERNAL_KEXT_DEFINES := \\\n')
|
||||
|
||||
for i, kext_info in enumerate(internal_kexts):
|
||||
makefile_fp.write('\t-D{}=1'.format(c_define_from_kext_id(kext_info.id())))
|
||||
|
||||
if i != len(internal_kexts) - 1:
|
||||
makefile_fp.write(' \\')
|
||||
makefile_fp.write('\n')
|
||||
|
||||
if len(internal_kexts) > 0:
|
||||
makefile_fp.write('INTERNAL_KEXT_INCLUDES := \\\n')
|
||||
|
||||
for i, kext_info in enumerate(internal_kexts):
|
||||
makefile_fp.write('\t-I{}'.format(os.path.join('$(ROOT_DIR)', kext_info.src_dirpath(), 'include')))
|
||||
|
||||
if i != len(selection_info.items()) - 1:
|
||||
makefile_fp.write(' \\')
|
||||
makefile_fp.write('\n')
|
||||
|
||||
write_external_kext_variables(makefile_fp, external_kexts)
|
||||
|
||||
for kext in external_kexts:
|
||||
makefile_fp.write('\nkexts/{}: $({})\n'.format(kext.id(), external_kext_obj_variable_name(kext)))
|
||||
|
||||
|
||||
|
||||
def select_kexts():
|
||||
if os.path.isfile(selection_file_path):
|
||||
create_kext_makefile()
|
||||
|
||||
Reference in New Issue
Block a user