@@ -861,6 +861,10 @@ def generate_clion_run_configs(self, configs):
861861 if 'folder' in config :
862862 attrib ["folderName" ] = config ["folder" ]
863863 clion_config = ET .SubElement (root , "configuration" , attrib )
864+ if 'env' in config :
865+ envs = ET .SubElement (clion_config , "envs" )
866+ for key , value in config ['env' ].items ():
867+ ET .SubElement (envs , "env" , name = key , value = value )
864868 method = ET .SubElement (clion_config , "method" , v = "2" )
865869 ET .SubElement (method , "option" ,
866870 name = "com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" ,
@@ -1045,6 +1049,7 @@ def generate_run_configs(self):
10451049 ]
10461050 })
10471051
1052+ num_cores = os .cpu_count () or 1
10481053 self .prompt_option ("boost_src_dir" )
10491054 if self .options .boost_src_dir and os .path .exists (self .options .boost_src_dir ):
10501055 boost_libs = os .path .join (self .options .boost_src_dir , 'libs' )
@@ -1057,24 +1062,52 @@ def generate_run_configs(self):
10571062 "name" : f"Boost.{ lib .title ()} Documentation" ,
10581063 "target" : "mrdocs" ,
10591064 "args" : [
1060- '" ../CMakeLists.txt" ' ,
1061- f'--config=" { self .options .boost_src_dir } /libs/{ lib } /doc/mrdocs.yml" ' ,
1062- f'--output=" { self .options .boost_src_dir } /libs/{ lib } /doc/modules/reference/pages" ' ,
1065+ '../CMakeLists.txt' ,
1066+ f'--config={ self .options .boost_src_dir } /libs/{ lib } /doc/mrdocs.yml' ,
1067+ f'--output={ self .options .boost_src_dir } /libs/{ lib } /doc/modules/reference/pages' ,
10631068 f'--generator=adoc' ,
1064- f'--addons=" { self .options .mrdocs_src_dir } /share/mrdocs/addons" ' ,
1065- f'--stdlib-includes=" { self .options .llvm_install_dir } /include/c++/v1" ' ,
1066- f'--stdlib-includes=" { self .options .llvm_install_dir } /lib/clang/20/include" ' ,
1067- f'--libc-includes=" { self .options .mrdocs_src_dir } /share/mrdocs/headers/libc-stubs" ' ,
1069+ f'--addons={ self .options .mrdocs_src_dir } /share/mrdocs/addons' ,
1070+ f'--stdlib-includes={ self .options .llvm_install_dir } /include/c++/v1' ,
1071+ f'--stdlib-includes={ self .options .llvm_install_dir } /lib/clang/20/include' ,
1072+ f'--libc-includes={ self .options .mrdocs_src_dir } /share/mrdocs/headers/libc-stubs' ,
10681073 f'--tagfile=reference.tag.xml' ,
10691074 '--multipage=true' ,
1070- '--concurrency=32 ' ,
1075+ f '--concurrency={ num_cores } ' ,
10711076 '--log-level=debug'
10721077 ]
10731078 })
10741079 else :
10751080 print (
10761081 f"Warning: Boost source directory '{ self .options .boost_src_dir } ' does not contain 'libs' directory. Skipping Boost documentation target generation." )
10771082
1083+ # Target to generate the documentation for MrDocs itself
1084+ configs .append ({
1085+ "name" : f"MrDocs Self-Reference" ,
1086+ "target" : "mrdocs" ,
1087+ "args" : [
1088+ '../CMakeLists.txt' ,
1089+ f'--config={ self .options .mrdocs_src_dir } /docs/mrdocs.yml' ,
1090+ f'--output={ self .options .mrdocs_src_dir } /docs/modules/reference/pages' ,
1091+ f'--generator=adoc' ,
1092+ f'--addons={ self .options .mrdocs_src_dir } /share/mrdocs/addons' ,
1093+ f'--stdlib-includes={ self .options .llvm_install_dir } /include/c++/v1' ,
1094+ f'--stdlib-includes={ self .options .llvm_install_dir } /lib/clang/20/include' ,
1095+ f'--libc-includes={ self .options .mrdocs_src_dir } /share/mrdocs/headers/libc-stubs' ,
1096+ f'--tagfile=reference.tag.xml' ,
1097+ '--multipage=true' ,
1098+ f'--concurrency={ num_cores } ' ,
1099+ '--log-level=debug'
1100+ ],
1101+ "env" : {
1102+ "LLVM_ROOT" : self .options .llvm_install_dir ,
1103+ "Clang_ROOT" : self .options .llvm_install_dir ,
1104+ "duktape_ROOT" : self .options .duktape_install_dir ,
1105+ "Duktape_ROOT" : self .options .duktape_install_dir ,
1106+ "libxml2_ROOT" : self .options .libxml2_install_dir ,
1107+ "LibXml2_ROOT" : self .options .libxml2_install_dir
1108+ }
1109+ })
1110+
10781111 # bootstrap.py targets
10791112 configs .append ({
10801113 "name" : f"MrDocs Bootstrap Help" ,
0 commit comments