tools: kexttool: include directory support; pre-processor defines for internal kexts
This commit is contained in:
@@ -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,11 +150,30 @@ 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():
|
||||
|
||||
Reference in New Issue
Block a user