diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index 8c69c10..b41b54d 100644
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -1,7 +1,7 @@
{
"configurations": [
{
- "name": "Win32",
+ "name": "Win32 msvc",
"includePath": [
"${workspaceFolder}/**"
],
@@ -12,10 +12,24 @@
"GEN_TIME"
],
"windowsSdkVersion": "10.0.19041.0",
- // "compilerPath": "C:/Users/Ed/scoop/apps/llvm/current/bin/clang++.exe",
- "compilerPath": "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe",
+ "compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64/cl.exe",
"intelliSenseMode": "msvc-x64",
- // "intelliSenseMode": "windows-clang-x64",
+ "compileCommands": "${workspaceFolder}/project/build/compile_commands.json"
+ },
+ {
+ "name": "Win32 clang",
+ "includePath": [
+ "${workspaceFolder}/**"
+ ],
+ "defines": [
+ "_DEBUG",
+ "UNICODE",
+ "_UNICODE",
+ "GEN_TIME"
+ ],
+ "windowsSdkVersion": "10.0.19041.0",
+ "compilerPath": "C:/Users/Ed/scoop/apps/llvm/current/bin/clang++.exe",
+ "intelliSenseMode": "windows-clang-x64",
"compileCommands": "${workspaceFolder}/project/build/compile_commands.json"
}
],
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 0cde1a5..b9f0b72 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -8,7 +8,7 @@
"type": "lldb",
"request": "launch",
"name": "Debug gentime lldb",
- "program": "${workspaceFolder}/test/gen/build/gencpp.exe",
+ "program": "${workspaceFolder}/test/test.exe",
"args": [],
"cwd": "${workspaceFolder}/test/gen/",
"postRunCommands": [
@@ -18,7 +18,7 @@
"type": "cppvsdbg",
"request": "launch",
"name": "Debug gentime vsdbg",
- "program": "${workspaceFolder}/test/gen/build/gencpp.exe",
+ "program": "${workspaceFolder}/test/build/test.exe",
"args": [],
"cwd": "${workspaceFolder}/test/gen/",
"visualizerFile": "${workspaceFolder}/scripts/gencpp.natvis"
diff --git a/gencpp.vcxproj b/gencpp.vcxproj
index 05ae9f2..9df2e76 100644
--- a/gencpp.vcxproj
+++ b/gencpp.vcxproj
@@ -103,10 +103,8 @@
-
-
@@ -206,13 +204,9 @@
-
-
-
-
diff --git a/scripts/Readme.md b/scripts/Readme.md
index cbb5d08..0aac815 100644
--- a/scripts/Readme.md
+++ b/scripts/Readme.md
@@ -36,21 +36,12 @@ args:
singleheader
test
clang
- msvc
- release
+ msvc : By default this project builds with clang, specifying msvc will build with MSVC.
+ debug
+ release : By default this project builds in debug mode, specifying release will build with optimizations.
```
-**`test.gen.build.ps1`**
-Build the metaprogram for generating the test code.
-
-**`test.gen.ps1`**
-Build (if not already) the metaprogram for generating test code, then run it to generate code.
-
-**`test.build.ps1`**
-Build and run metaprogram, build test program.
-
-**`test.run.ps1`**
-Build and run metaprogram, build and run test program.
-
+**`package_release.ps1`**
+Will build the project as fast as possible, then package the release into a zip file.
*Note: My env is Windows 11 with MSVC 2022 and clang 16.0.6*
diff --git a/scripts/build.ci.ps1 b/scripts/build.ci.ps1
new file mode 100644
index 0000000..febd109
--- /dev/null
+++ b/scripts/build.ci.ps1
@@ -0,0 +1,524 @@
+# This build script was written to build on windows, however I did setup some generalization to allow for cross platform building.
+# It will most likely need a partial rewrite to segment the build process into separate script invocations based on the OS.
+# That or just rewrite it in an sh script and call it a day.
+
+Import-Module ./helpers/target_arch.psm1
+$devshell = Join-Path $PSScriptRoot 'helpers/devshell.ps1'
+
+cls
+
+#region Arguments
+ $compiler = $null
+ $release = $null
+[bool] $bootstrap = $false
+[bool] $singleheader = $false
+[bool] $test = $false
+
+[array] $compilers = @( "clang", "msvc" )
+
+# This is a really lazy way of parsing the args, could use actual params down the line...
+
+if ( $args ) { $args | ForEach-Object {
+ switch ($_){
+ { $_ -in $compilers } { $compiler = $_; break }
+ "release" { $release = $true }
+ "debug" { $release = $false }
+ "bootstrap" { $bootstrap = $true }
+ "singleheader" { $singleheader = $true }
+ "test" { $test = $true }
+ }
+}}
+#endregion Arguments
+
+#region Building
+
+if ($IsWindows) {
+ # This library was really designed to only run on 64-bit systems.
+ # (Its a development tool after all)
+ & $devshell -arch amd64
+}
+
+$path_root = git rev-parse --show-toplevel
+$path_build = Join-Path $path_root build
+$path_project = Join-Path $path_root project
+$path_scripts = Join-Path $path_root scripts
+$path_singleheader = Join-Path $path_root singleheader
+$path_test = Join-Path $path_root test
+
+
+if ( $compiler -eq $null ) {
+ write-host "No compilier specified, assuming clang available"
+ $compiler = "clang"
+}
+
+if ( $release -eq $null ) {
+ write-host "No build type specified, assuming debug"
+ $release = $false
+}
+
+if ( $bootstrap -eq $false -and $singleheader -eq $false -and $test -eq $false ) {
+ throw "No build target specified. One must be specified, this script will not assume one"
+}
+
+write-host "Building gencpp with $compiler"
+write-host "Build Type: $(if ($release) {"Release"} else {"Debug"} )"
+
+Push-Location $path_root
+
+function run-compiler
+{
+ param( $compiler, $unit, $compiler_args )
+
+ write-host "`Compiling $unit"
+ write-host "Compiler config:"
+ $compiler_args | ForEach-Object {
+ write-host $_ -ForegroundColor Cyan
+ }
+
+ $time_taken = Measure-Command {
+ & $compiler $compiler_args 2>&1 | ForEach-Object {
+ $color = 'White'
+ switch ($_){
+ { $_ -match "error" } { $color = 'Red' ; break }
+ { $_ -match "warning" } { $color = 'Yellow'; break }
+ }
+ write-host `t $_ -ForegroundColor $color
+ }
+ }
+
+ if ( Test-Path($unit) ) {
+ write-host "$unit compile finished in $($time_taken.TotalMilliseconds) ms"
+ }
+ else {
+ write-host "Compile failed for $unit" -ForegroundColor Red
+ }
+}
+
+function run-linker
+{
+ param( $linker, $binary, $linker_args )
+
+ write-host "`Linking $binary"
+ write-host "Linker config:"
+ $linker_args | ForEach-Object {
+ write-host $_ -ForegroundColor Cyan
+ }
+
+ $time_taken = Measure-Command {
+ & $linker $linker_args 2>&1 | ForEach-Object {
+ $color = 'White'
+ switch ($_){
+ { $_ -match "error" } { $color = 'Red' ; break }
+ { $_ -match "warning" } { $color = 'Yellow'; break }
+ }
+ write-host `t $_ -ForegroundColor $color
+ }
+ }
+
+ if ( Test-Path($binary) ) {
+ write-host "$binary linking finished in $($time_taken.TotalMilliseconds) ms"
+ }
+ else {
+ write-host "Linking failed for $binary" -ForegroundColor Red
+ }
+}
+
+if ( $compiler -match "clang" )
+{
+ # https://clang.llvm.org/docs/ClangCommandLineReference.html
+ $flag_compile = '-c'
+ $flag_color_diagnostics = '-fcolor-diagnostics'
+ $flag_no_color_diagnostics = '-fno-color-diagnostics'
+ $flag_debug = '-g'
+ $flag_debug_codeview = '-gcodeview'
+ $flag_define = '-D'
+ $flag_include = '-I'
+ $flag_library = '-l'
+ $flag_library_path = '-L'
+ $flag_link_win = '-Wl,'
+ $flag_link_win_subsystem_console = '/SUBSYSTEM:CONSOLE'
+ $flag_link_win_machine_32 = '/MACHINE:X86'
+ $flag_link_win_machine_64 = '/MACHINE:X64'
+ $flag_link_win_debug = '/DEBUG'
+ $flag_link_win_pdb = '/PDB:'
+ $flag_link_win_path_output = '/OUT:'
+ $flag_no_optimization = '-O0'
+ $flag_path_output = '-o'
+ $flag_preprocess_non_intergrated = '-no-integrated-cpp'
+ $flag_profiling_debug = '-fdebug-info-for-profiling'
+ $flag_target_arch = '-target'
+ $flag_wall = '-Wall'
+ $flag_warning = '-W'
+ $flag_warning_as_error = '-Werror'
+ $flag_win_nologo = '/nologo'
+
+ $ignore_warning_ms_include = 'no-microsoft-include'
+
+ $target_arch = Get-TargetArchClang
+
+ $warning_ignores = @(
+ $ignore_warning_ms_include
+ )
+
+ # https://learn.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=msvc-170
+ $libraries = @(
+ 'Kernel32' # For Windows API
+ # 'msvcrt', # For the C Runtime (Dynamically Linked)
+ # 'libucrt',
+ 'libcmt' # For the C Runtime (Static Linkage)
+ )
+
+ function build-simple
+ {
+ param( $compiler, $linker, $includes, $unit, $executable )
+
+ $object = $executable -replace '\.exe', '.obj'
+ $pdb = $executable -replace '\.exe', '.pdb'
+
+ $compiler_args = @(
+ $flag_no_color_diagnostics,
+ $flag_target_arch, $target_arch,
+ $flag_wall,
+ $flag_preprocess_non_intergrated,
+ ( $flag_define + 'GEN_TIME' ),
+ ( $flag_path_output + $object ),
+ ( $flag_include + $includes )
+ )
+ if ( $release -eq $false ) {
+ $compiler_args += ( $flag_define + 'Build_Debug' )
+ $compiler_args += $flag_debug, $flag_debug_codeview, $flag_profiling_debug
+ $compiler_args += $flag_no_optimization
+ }
+
+ $warning_ignores | ForEach-Object {
+ $compiler_args += $flag_warning + $_
+ }
+
+ $compiler_args += $flag_compile, $unit
+ run-compiler $compiler $unit $compiler_args
+
+ $linker_args = @(
+ $flag_link_win_subsystem_console,
+ $flag_link_win_machine_64,
+ $( $flag_link_win_path_output + $executable )
+ )
+ if ( $release -eq $false ) {
+ $linker_args += $flag_link_win_debug
+ $linker_args += $flag_link_win_pdb + $pdb
+ }
+ else {
+ }
+
+ $libraries | ForEach-Object {
+ $linker_args += $_ + '.lib'
+ }
+
+ $linker_args += $object
+ run-linker $linker $executable $linker_args
+ }
+
+ [array] $compiler_args = $null
+ [array] $linker_args = $null
+
+ if ( $bootstrap )
+ {
+ $path_build = join-path $path_project build
+ $path_gen = join-path $path_project gen
+
+ if ( -not(Test-Path($path_build) )) {
+ New-Item -ItemType Directory -Path $path_build
+ }
+ if ( -not(Test-Path($path_gen) )) {
+ New-Item -ItemType Directory -Path $path_gen
+ }
+
+ $includes = @( $path_project )
+ $unit = join-path $path_project "bootstrap.cpp"
+ $executable = join-path $path_build "bootstrap.exe"
+
+ build-simple clang++ lld-link $include $unit $executable
+
+ Push-Location $path_project
+ if ( Test-Path( $executable ) ) {
+ write-host "`nRunning bootstrap"
+ $time_taken = Measure-Command { & $executable
+ | ForEach-Object {
+ write-host `t $_ -ForegroundColor Green
+ }
+ }
+ write-host "`nBootstrap completed in $($time_taken.TotalMilliseconds) ms"
+ }
+ Pop-Location
+ }
+
+ if ( $singleheader )
+ {
+ $path_build = join-path $path_singleheader build
+ $path_gen = join-path $path_singleheader gen
+
+ if ( -not(Test-Path($path_build) )) {
+ New-Item -ItemType Directory -Path $path_build
+ }
+ if ( -not(Test-Path($path_gen) )) {
+ New-Item -ItemType Directory -Path $path_gen
+ }
+
+ $include = $path_project
+ $unit = join-path $path_singleheader "singleheader.cpp"
+ $executable = join-path $path_build "singleheader.exe"
+
+ build-simple clang++ lld-link $include $unit $executable
+
+ Push-Location $path_singleheader
+ if ( Test-Path( $executable ) ) {
+ write-host "`nRunning singleheader generator"
+ $time_taken = Measure-Command { & $executable
+ | ForEach-Object {
+ write-host `t $_ -ForegroundColor Green
+ }
+ }
+ write-host "`nSingleheader generator completed in $($time_taken.TotalMilliseconds) ms"
+ }
+ Pop-Location
+ }
+
+ if ( $test )
+ {
+ # ... [your test compilation code here]
+ }
+}
+
+if ( $compiler -match "msvc" )
+{
+ # https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=msvc-170
+ $flag_compile = '/c'
+ $flag_debug = '/Zi'
+ $flag_define = '/D'
+ $flag_include = '/I'
+ $flag_full_src_path = '/FC'
+ $flag_nologo = '/nologo'
+ $flag_dll = '/LD'
+ $flag_dll_debug = '/LDd'
+ $flag_linker = '/link'
+ $flag_link_debug = '/DEBUG'
+ $flag_link_pdb = '/PDB:'
+ $flag_link_machine_32 = '/MACHINE:X86'
+ $flag_link_machine_64 = '/MACHINE:X64'
+ $flag_link_path_output = '/OUT:'
+ $flag_link_rt_dll = '/MD'
+ $flag_link_rt_dll_debug = '/MDd'
+ $flag_link_rt_static = '/MT'
+ $flag_link_rt_static_debug = '/MTd'
+ $flag_link_subsystem_console = '/SUBSYSTEM:CONSOLE'
+ $flag_link_subsystem_windows = '/SUBSYSTEM:WINDOWS'
+ $flag_no_optimization = '/Od'
+ $flag_out_name = '/OUT:'
+ $flag_path_interm = '/Fo'
+ $flag_path_debug = '/Fd'
+ $flag_path_output = '/Fe'
+ $flag_preprocess_conform = '/Zc:preprocessor'
+
+ # This works because this project uses a single unit to build
+ function build-simple
+ {
+ param( $compiler, $linker, $includes, $unit, $executable )
+
+ $object = $executable -replace '\.exe', '.obj'
+ $pdb = $executable -replace '\.exe', '.pdb'
+
+ $compiler_args = @(
+ $flag_nologo,
+ $flag_preprocess_conform,
+ $flag_debug,
+ ( $flag_define + 'GEN_TIME' ),
+ $flag_full_src_path,
+ ( $flag_path_interm + $path_build + '\' ),
+ ( $flag_path_output + $path_build + '\' )
+ )
+ if ( $release -eq $false ) {
+ $compiler_args += ( $flag_define + 'Build_Debug' )
+ $compiler_args += ( $flag_path_debug + $path_build + '\' )
+ $compiler_args += $flag_link_rt_static_debug
+ $compiler_args += $flag_no_optimization
+ }
+ else {
+ $compiler_args += $flag_link_rt_static
+ }
+ $compiler_args += $includes | ForEach-Object { $flag_include + $_ }
+ $compiler_args += $flag_compile, $unit
+ run-compiler $compiler $unit $compiler_args
+
+ $linker_args = @(
+ $flag_nologo,
+ $flag_link_machine_64,
+ $flag_link_subsystem_console,
+ ( $flag_link_path_output + $executable )
+ )
+ if ( $release -eq $false ) {
+ $linker_args += $flag_link_debug
+ $linker_args += $flag_link_pdb + $pdb
+ }
+ else {
+ }
+
+ $linker_args += $object
+ run-linker $linker $executable $linker_args
+ }
+
+ [array] $compiler_args = $null
+ [array] $linker_args = $null
+
+ if ( $bootstrap )
+ {
+ $path_build = join-path $path_project build
+ $path_gen = join-path $path_project gen
+
+ if ( -not(Test-Path($path_build) )) {
+ New-Item -ItemType Directory -Path $path_build
+ }
+ if ( -not(Test-Path($path_gen) )) {
+ New-Item -ItemType Directory -Path $path_gen
+ }
+
+ $includes = @( $path_project)
+ $unit = join-path $path_project "bootstrap.cpp"
+ $executable = join-path $path_build "bootstrap.exe"
+
+ build-simple cl link $includes $unit $executable
+
+ Push-Location $path_project
+ if ( Test-Path( $executable ) ) {
+ write-host "`nRunning bootstrap"
+ $time_taken = Measure-Command { & $executable
+ | ForEach-Object {
+ write-host `t $_ -ForegroundColor Green
+ }
+ }
+ write-host "`nBootstrap completed in $($time_taken.TotalMilliseconds) ms"
+ }
+ Pop-Location
+ }
+
+ if ( $singleheader )
+ {
+ $path_build = join-path $path_singleheader build
+ $path_gen = join-path $path_singleheader gen
+
+ if ( -not(Test-Path($path_build) )) {
+ New-Item -ItemType Directory -Path $path_build
+ }
+ if ( -not(Test-Path($path_gen) )) {
+ New-Item -ItemType Directory -Path $path_gen
+ }
+
+ $includes = @($path_project)
+ $unit = join-path $path_singleheader "singleheader.cpp"
+ $executable = join-path $path_build "singleheader.exe"
+
+ build-simple cl link $includes $unit $executable
+
+ Push-Location $path_singleheader
+ if ( Test-Path($executable) ) {
+ write-host "`nRunning singleheader generator"
+ $time_taken = Measure-Command { & $executable
+ | ForEach-Object {
+ write-host `t $_ -ForegroundColor Green
+ }
+ }
+ write-host "`nSingleheader generator completed in $($time_taken.TotalMilliseconds) ms"
+ }
+ Pop-Location
+ }
+
+ if ( $test )
+ {
+ $path_gen = join-path $path_test gen
+ $path_gen_build = join-path $path_gen build
+ $path_build = join-path $path_test build
+
+ if ( -not(Test-Path($path_build) )) {
+ New-Item -ItemType Directory -Path $path_build
+ }
+ if ( -not(Test-Path($path_gen) )) {
+ New-Item -ItemType Directory -Path $path_gen
+ }
+ if ( -not(Test-Path($path_gen_build) )) {
+ New-Item -ItemType Directory -Path $path_gen_build
+ }
+
+ $path_bootstrap = join-path $path_project gen
+
+ $include = $path_bootstrap
+ $unit = join-path $path_test "test.cpp"
+ $object = join-path $path_build "test.obj"
+ $executable = join-path $path_build "test.exe"
+ $pdb = join-path $path_build "test.pdb"
+
+ build-simple cl link $include $unit $executable
+
+ Push-Location $path_test
+ if ( Test-Path( $executable ) ) {
+ write-host "`nRunning test generator"
+ $time_taken = Measure-Command { & $executable
+ | ForEach-Object {
+ write-host `t $_ -ForegroundColor Green
+ }
+ }
+ write-host "`nTest generator completed in $($time_taken.TotalMilliseconds) ms"
+ }
+ Pop-Location
+ }
+}
+#endregion Building
+
+#region Formatting
+function format-cpp
+{
+ param( $path, $include, $exclude )
+
+ # Format generated gencpp
+ Write-Host "`nBeginning format"
+ $formatParams = @(
+ '-i' # In-place
+ '-style=file:./scripts/.clang-format'
+ '-verbose'
+ )
+
+ $targetFiles = @(Get-ChildItem -Recurse -Path $path -Include $include -Exclude $exclude | Select-Object -ExpandProperty FullName)
+
+ $time_taken = Measure-Command {
+ clang-format $formatParams $targetFiles
+ }
+ Write-Host "`nFormatting complete in $($time_taken.TotalMilliseconds) ms"
+}
+
+if ( $bootstrap -and (Test-Path (Join-Path $path_project "gen/gen.hpp")) )
+{
+ $path_gen = join-path $path_project gen
+ $include = @(
+ 'gen.hpp', 'gen.cpp',
+ 'gen.dep.hpp', 'gen.dep.cpp',
+ 'gen.builder.hpp', 'gen.builder.cpp'
+ 'gen.scanner.hpp', 'gen.scanner.cpp'
+ )
+ $exclude = $null
+ format-cpp $path_gen $include $exclude
+}
+
+if ( $singleheader -and (Test-Path (Join-Path $path_singleheader "gen/gen.hpp")) )
+{
+ $path_gen = join-path $path_singleheader gen
+ $include = @(
+ 'gen.hpp'
+ )
+ $exclude = $null
+ format-cpp $path_gen $include $exclude
+}
+
+if ( $test )
+{
+
+}
+#endregion Formatting
+
+Pop-Location # $path_root
diff --git a/scripts/build.ps1 b/scripts/build.ps1
index 965f409..349c629 100644
--- a/scripts/build.ps1
+++ b/scripts/build.ps1
@@ -1,548 +1,3 @@
-# This build script was written to build on windows, however I did setup some generalization to allow for cross platform building.
-# It will most likely need a partial rewrite to segment the build process into separate script invocations based on the OS.
-# That or just rewrite it in an sh script and call it a day.
-
-Import-Module ./helpers/target_arch.psm1
-$devshell = Join-Path $PSScriptRoot 'helpers/devshell.ps1'
-
cls
-
-#region Arguments
- $compiler = $null
-[bool] $release = $false
-[bool] $bootstrap = $false
-[bool] $singleheader = $false
-[bool] $tests = $false
-
-[array] $compilers = @( "clang", "msvc" )
-
-# This is a really lazy way of parsing the args, could use actual params down the line...
-
-if ( $args ) { $args | ForEach-Object {
- switch ($_){
- { $_ -in $compilers } { $compiler = $_; break }
- "release" { $release = $true }
- "bootstrap" { $bootstrap = $true }
- "singleheader" { $singleheader = $true }
- "tests" { $tests = $true }
- }
-}}
-#endregion Arguments
-
-#region Building
-write-host "Building gencpp with $compiler"
-
-if ($IsWindows) {
- # This library was really designed to only run on 64-bit systems.
- # (Its a development tool after all)
- & $devshell -arch amd64
-}
-
-$path_root = git rev-parse --show-toplevel
-$path_build = Join-Path $path_root build
-$path_project = Join-Path $path_root project
-$path_scripts = Join-Path $path_root scripts
-$path_singleheader = Join-Path $path_root singleheader
-$path_test = Join-Path $path_root test
-
-write-host "Build Type: $(if ($release) {"Release"} else {"Debug"} )"
-
-if ( $compiler -eq $null ) {
- write-host "No compilier specified, assuming clang available"
- $compiler = "clang"
-}
-
-Push-Location $path_root
-
-function run-compiler
-{
- param( $compiler, $unit, $compiler_args )
-
- write-host "`Compiling $unit"
- write-host "Compiler config:"
- $compiler_args | ForEach-Object {
- write-host $_ -ForegroundColor Cyan
- }
-
- $time_taken = Measure-Command {
- & $compiler $compiler_args 2>&1 | ForEach-Object {
- $color = 'White'
- switch ($_){
- { $_ -match "error" } { $color = 'Red' ; break }
- { $_ -match "warning" } { $color = 'Yellow'; break }
- }
- write-host `t $_ -ForegroundColor $color
- }
- }
-
- if ( Test-Path($unit) ) {
- write-host "$unit compile finished in $($time_taken.TotalMilliseconds) ms"
- }
- else {
- write-host "Compile failed for $unit" -ForegroundColor Red
- }
-}
-
-function run-linker
-{
- param( $linker, $binary, $linker_args )
-
- write-host "`Linking $binary"
- write-host "Linker config:"
- $linker_args | ForEach-Object {
- write-host $_ -ForegroundColor Cyan
- }
-
- $time_taken = Measure-Command {
- & $linker $linker_args 2>&1 | ForEach-Object {
- $color = 'White'
- switch ($_){
- { $_ -match "error" } { $color = 'Red' ; break }
- { $_ -match "warning" } { $color = 'Yellow'; break }
- }
- write-host `t $_ -ForegroundColor $color
- }
- }
-
- if ( Test-Path($binary) ) {
- write-host "$binary linking finished in $($time_taken.TotalMilliseconds) ms"
- }
- else {
- write-host "Linking failed for $binary" -ForegroundColor Red
- }
-}
-
-if ( $compiler -match "clang" )
-{
- # https://clang.llvm.org/docs/ClangCommandLineReference.html
- $flag_compile = '-c'
- $flag_color_diagnostics = '-fcolor-diagnostics'
- $flag_no_color_diagnostics = '-fno-color-diagnostics'
- $flag_debug = '-g'
- $flag_debug_codeview = '-gcodeview'
- $flag_define = '-D'
- $flag_include = '-I'
- $flag_library = '-l'
- $flag_library_path = '-L'
- $flag_link_win = '-Wl,'
- $flag_link_win_subsystem_console = '/SUBSYSTEM:CONSOLE'
- $flag_link_win_machine_32 = '/MACHINE:X86'
- $flag_link_win_machine_64 = '/MACHINE:X64'
- $flag_link_win_debug = '/DEBUG'
- $flag_link_win_pdb = '/PDB:'
- $flag_link_win_path_output = '/OUT:'
- $flag_no_optimization = '-O0'
- $flag_path_output = '-o'
- $flag_preprocess_non_intergrated = '-no-integrated-cpp'
- $flag_profiling_debug = '-fdebug-info-for-profiling'
- $flag_target_arch = '-target'
- $flag_wall = '-Wall'
- $flag_warning = '-W'
- $flag_warning_as_error = '-Werror'
- $flag_win_nologo = '/nologo'
-
- $ignore_warning_ms_include = 'no-microsoft-include'
-
- $target_arch = Get-TargetArchClang
-
- $warning_ignores = @(
- $ignore_warning_ms_include
- )
-
- # https://learn.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=msvc-170
- $libraries = @(
- 'Kernel32' # For Windows API
- # 'msvcrt', # For the C Runtime (Dynamically Linked)
- # 'libucrt',
- 'libcmt' # For the C Runtime (Static Linkage)
- )
-
- if ( $bootstrap )
- {
- $path_build = join-path $path_project build
- $path_gen = join-path $path_project gen
-
- if ( -not(Test-Path($path_build) )) {
- New-Item -ItemType Directory -Path $path_build
- }
- if ( -not(Test-Path($path_gen) )) {
- New-Item -ItemType Directory -Path $path_gen
- }
-
- $include = $path_project
- $unit = join-path $path_project "bootstrap.cpp"
- $object = join-path $path_build "bootstrap.obj"
- $executable = join-path $path_build "bootstrap.exe"
- $pdb = join-path $path_build "bootstrap.pdb"
-
- $compiler_args = @(
- $flag_no_color_diagnostics,
- $flag_target_arch, $target_arch,
- $flag_wall,
- $flag_preprocess_non_intergrated,
- ( $flag_define + 'GEN_TIME' ),
- ( $flag_path_output + $object ),
- ( $flag_include + $include )
- )
-
- $warning_ignores | ForEach-Object {
- $compiler_args += $flag_warning + $_
- }
-
- if ( $release -eq $false ) {
- $compiler_args += ( $flag_define + 'Build_Debug' )
- $compiler_args += $flag_debug, $flag_debug_codeview, $flag_profiling_debug
- }
-
- $compiler_args += $flag_compile, $unit
- run-compiler clang++ $unit $compiler_args
-
- $linker_args = @(
- $flag_link_win_subsystem_console,
- $flag_link_win_machine_64,
- $( $flag_link_win_path_output + $executable )
- )
- if ( $release -eq $false ) {
- $linker_args += $flag_link_win_debug
- $linker_args += $flag_link_win_pdb + $pdb
- }
- else {
- }
-
- $libraries | ForEach-Object {
- $linker_args += $_ + '.lib'
- }
-
- $linker_args += $object
- run-linker lld-link $executable $linker_args
-
- Push-Location $path_project
- if ( Test-Path( $executable ) ) {
- write-host "`nRunning bootstrap"
- $time_taken = Measure-Command { & $executable
- | ForEach-Object {
- write-host `t $_ -ForegroundColor Green
- }
- }
- write-host "`nBootstrap completed in $($time_taken.TotalMilliseconds) ms"
- }
- Pop-Location
- }
-
- if ( $singleheader )
- {
- $path_build = join-path $path_singleheader build
- $path_gen = join-path $path_singleheader gen
-
- if ( -not(Test-Path($path_build) )) {
- New-Item -ItemType Directory -Path $path_build
- }
- if ( -not(Test-Path($path_gen) )) {
- New-Item -ItemType Directory -Path $path_gen
- }
-
- $include = $path_project
- $unit = join-path $path_singleheader "singleheader.cpp"
- $object = join-path $path_build "singleheader.obj"
- $executable = join-path $path_build "singleheader.exe"
- $pdb = join-path $path_build "singleheader.pdb"
-
- $compiler_args = @(
- $flag_no_color_diagnostics,
- $flag_target_arch, $target_arch,
- $flag_wall,
- $flag_preprocess_non_intergrated,
- ( $flag_define + 'GEN_TIME' ),
- ( $flag_path_output + $object ),
- ( $flag_include + $include )
- )
- if ( $release -eq $false ) {
- $compiler_args += ( $flag_define + 'Build_Debug' )
- $compiler_args += $flag_debug, $flag_debug_codeview, $flag_profiling_debug
- }
-
- $warning_ignores | ForEach-Object {
- $compiler_args += $flag_warning + $_
- }
-
- $compiler_args += $flag_compile, $unit
- run-compiler clang $unit $compiler_args
-
- $linker_args = @(
- $flag_link_win_subsystem_console,
- $flag_link_win_machine_64,
- $( $flag_link_win_path_output + $executable )
- )
- if ( $release -eq $false ) {
- $linker_args += $flag_link_win_debug
- $linker_args += $flag_link_win_pdb + $pdb
- }
- else {
- }
-
- $libraries | ForEach-Object {
- $linker_args += $_ + '.lib'
- }
-
- $linker_args += $object
- run-linker lld-link $executable $linker_args
-
- Push-Location $path_singleheader
- if ( Test-Path( $executable ) ) {
- write-host "`nRunning singleheader generator"
- $time_taken = Measure-Command { & $executable
- | ForEach-Object {
- write-host `t $_ -ForegroundColor Green
- }
- }
- write-host "`nSingleheader generator completed in $($time_taken.TotalMilliseconds) ms"
- }
- Pop-Location
- }
-
- if ( $test )
- {
- # ... [your test compilation code here]
- }
-}
-
-if ( $compiler -match "msvc" )
-{
- # https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=msvc-170
- $flag_compile = '/c'
- $flag_debug = '/Zi'
- $flag_define = '/D'
- $flag_include = '/I'
- $flag_full_src_path = '/FC'
- $flag_nologo = '/nologo'
- $flag_dll = '/LD'
- $flag_dll_debug = '/LDd'
- $flag_linker = '/link'
- $flag_link_debug = '/DEBUG'
- $flag_link_pdb = '/PDB:'
- $flag_link_machine_32 = '/MACHINE:X86'
- $flag_link_machine_64 = '/MACHINE:X64'
- $flag_link_path_output = '/OUT:'
- $flag_link_rt_dll = '/MD'
- $flag_link_rt_dll_debug = '/MDd'
- $flag_link_rt_static = '/MT'
- $flag_link_rt_static_debug = '/MTd'
- $flag_link_subsystem_console = '/SUBSYSTEM:CONSOLE'
- $flag_link_subsystem_windows = '/SUBSYSTEM:WINDOWS'
- $flag_out_name = '/OUT:'
- $flag_path_interm = '/Fo'
- $flag_path_debug = '/Fd'
- $flag_path_output = '/Fe'
- $flag_preprocess_conform = '/Zc:preprocessor'
-
- [array] $compiler_args = $null
- [array] $linker_args = $null
-
- if ( $bootstrap )
- {
- $path_build = join-path $path_project build
- $path_gen = join-path $path_project gen
-
- if ( -not(Test-Path($path_build) )) {
- New-Item -ItemType Directory -Path $path_build
- }
- if ( -not(Test-Path($path_gen) )) {
- New-Item -ItemType Directory -Path $path_gen
- }
-
- $include = $path_project
- $unit = join-path $path_project "bootstrap.cpp"
- $object = join-path $path_build "bootstrap.obj"
- $executable = join-path $path_build "bootstrap.exe"
- $pdb = join-path $path_build "bootstrap.pdb"
-
- $compiler_args = @(
- $flag_nologo,
- $flag_preprocess_conform,
- $flag_define + 'GEN_TIME',
- $flag_full_src_path,
- ( $flag_path_interm + $path_build + '\' ),
- ( $flag_path_output + $path_build + '\' ),
- ( $flag_include + $include )
- )
-
- if ( $release -eq $false ) {
- $compiler_args += ( $flag_define + 'Build_Debug' )
- $compiler_args += $flag_debug
- $compiler_args += ( $flag_path_debug + $path_build + '\' )
- $compiler_args += $flag_link_rt_static_debug
- }
- else {
- $compiler_args += $flag_link_rt_static
- }
-
- $compiler_args += $flag_compile, $unit
- run-compiler cl $unit $compiler_args
-
- $linker_args = @(
- $flag_nologo,
- $flag_link_machine_64,
- $flag_link_subsystem_console,
- ( $flag_link_path_output + $executable )
- )
- if ( $release -eq $false ) {
- $linker_args += $flag_link_debug
- $linker_args += $flag_link_pdb + $pdb
- }
- else {
- }
-
- $linker_args += $object
- run-linker link $executable $linker_args
-
- Push-Location $path_project
- if ( Test-Path( $executable ) ) {
- write-host "`nRunning bootstrap"
- $time_taken = Measure-Command { & $executable
- | ForEach-Object {
- write-host `t $_ -ForegroundColor Green
- }
- }
- write-host "`nBootstrap completed in $($time_taken.TotalMilliseconds) ms"
- }
- Pop-Location
- }
-
- if ( $singleheader )
- {
- $path_build = join-path $path_singleheader build
- $path_gen = join-path $path_singleheader gen
-
- if ( -not(Test-Path($path_build) )) {
- New-Item -ItemType Directory -Path $path_build
- }
- if ( -not(Test-Path($path_gen) )) {
- New-Item -ItemType Directory -Path $path_gen
- }
-
- $include = $path_project
- $unit = join-path $path_singleheader "singleheader.cpp"
- $object = join-path $path_build "singleheader.obj"
- $executable = join-path $path_build "singleheader.exe"
- $pdb = join-path $path_build "singleheader.pdb"
-
- $compiler_args = @(
- $flag_nologo,
- $flag_preprocess_conform,
- $flag_debug,
- ( $flag_define + 'GEN_TIME' ),
- $flag_full_src_path,
- ( $flag_path_interm + $path_build + '\' ),
- ( $flag_path_output + $path_build + '\' ),
- ( $flag_include + $include )
- )
-
- if ( $release -eq $false ) {
- $compiler_args += ( $flag_define + 'Build_Debug' )
- $compiler_args += ( $flag_path_debug + $path_build + '\' )
- $compiler_args += $flag_link_rt_static_debug
- }
- else {
- $compiler_args += $flag_link_rt_static
- }
-
- $compiler_args += $flag_compile, $unit
- run-compiler cl $unit $compiler_args
-
- $linker_args = @(
- $flag_nologo,
- $flag_link_machine_64,
- $flag_link_subsystem_console,
- ( $flag_link_path_output + $executable )
- )
- if ( $release -eq $false ) {
- $linker_args += $flag_link_debug
- $linker_args += $flag_link_pdb + $pdb
- }
- else {
- }
-
- $linker_args += $object
- run-linker link $executable $linker_args
-
- Push-Location $path_singleheader
- if ( Test-Path($executable) ) {
- write-host "`nRunning singleheader generator"
- $time_taken = Measure-Command { & $executable
- | ForEach-Object {
- write-host `t $_ -ForegroundColor Green
- }
- }
- write-host "`nSingleheader generator completed in $($time_taken.TotalMilliseconds) ms"
- }
- Pop-Location
- }
-
- if ( $test )
- {
-
- }
-}
-#endregion Building
-
-#region Formatting
-if ( $bootstrap -and (Test-Path (Join-Path $path_project "gen/gen.hpp")) )
-{
- $path_gen = join-path $path_project gen
-
- # Format generated gencpp
- Write-Host "`nBeginning format"
- $formatParams = @(
- '-i' # In-place
- '-style=file:./scripts/.clang-format'
- '-verbose'
- )
-
- $include = @(
- 'gen.hpp', 'gen.cpp',
- 'gen.dep.hpp', 'gen.dep.cpp',
- 'gen.builder.hpp', 'gen.builder.cpp'
- 'gen.scanner.hpp', 'gen.scanner.cpp'
- )
- $exclude = $null
-
- $targetFiles = @(Get-ChildItem -Recurse -Path $path_gen -Include $include -Exclude $exclude | Select-Object -ExpandProperty FullName)
-
- $time_taken = Measure-Command {
- clang-format $formatParams $targetFiles
- }
- Write-Host "`nFormatting complete in $($time_taken.TotalMilliseconds) ms"
-}
-
-if ( $singleheader -and (Test-Path (Join-Path $path_singleheader "gen/gen.hpp")) )
-{
- $path_gen = join-path $path_singleheader gen
-
- # Format generated gencpp
- Write-Host "`nBeginning format"
- $formatParams = @(
- '-i' # In-place
- '-style=file:./scripts/.clang-format'
- '-verbose'
- )
-
- $include = @(
- 'gen.hpp'
- )
- $exclude = $null
-
- $targetFiles = @(Get-ChildItem -Recurse -Path $path_gen -Include $include -Exclude $exclude | Select-Object -ExpandProperty FullName)
-
- $time_taken = Measure-Command {
- clang-format $formatParams $targetFiles
- }
- Write-Host "`nFormatting complete in $($time_taken.TotalMilliseconds) ms"
-}
-
-if ( $test )
-{
-
-}
-#endregion Formatting
-
-Pop-Location # $path_root
+$build = Join-Path $PSScriptRoot 'build.ci.ps1'
+& $build @args
diff --git a/scripts/helpers/devshell.ps1 b/scripts/helpers/devshell.ps1
index 3b97a0f..531bdfa 100644
--- a/scripts/helpers/devshell.ps1
+++ b/scripts/helpers/devshell.ps1
@@ -20,4 +20,4 @@ if ( -not (Test-Path $vs_devshell) ) {
# Launch the Visual Studio Developer Shell
Push-Location
& $vs_devshell @args
-Pop-Location
\ No newline at end of file
+Pop-Location
diff --git a/scripts/package_release.ps1 b/scripts/package_release.ps1
index 839b63d..93802f0 100644
--- a/scripts/package_release.ps1
+++ b/scripts/package_release.ps1
@@ -1,6 +1,13 @@
cls
-Invoke-Expression "& $(Join-Path $PSScriptRoot 'bootstrap.ci.ps1')"
-Invoke-Expression "& $(Join-Path $PSScriptRoot 'singleheader.ci.ps1')"
+
+$build = Join-Path $PSScriptRoot 'build.ci.ps1'
+
+if ( $IsWindows ) {
+ & $build release msvc bootstrap singleheader
+}
+else {
+ & $build release clang bootstrap singleheader
+}
$path_root = git rev-parse --show-toplevel
$path_docs = Join-Path $path_root docs
@@ -24,10 +31,10 @@ $readme_root = Join-Path $path_root Readme.md
$readme_docs = Join-Path $path_docs Readme.md
$readme_parsing = Join-Path $path_docs Parsing.md
-Copy-Item $license -Destination $(Join-Path $path_release_content "LICENSE")
-Copy-Item $readme_root -Destination $(Join-Path $path_release_content "Readme.md")
-Copy-Item $readme_docs -Destination $(Join-Path $path_release_content "Readme_Docs.md")
-Copy-Item $readme_parsing -Destination $(Join-Path $path_release_content "Parsing.md")
+Copy-Item $license -Destination (Join-Path $path_release_content "LICENSE")
+Copy-Item $readme_root -Destination (Join-Path $path_release_content "Readme.md")
+Copy-Item $readme_docs -Destination (Join-Path $path_release_content "Readme_Docs.md")
+Copy-Item $readme_parsing -Destination (Join-Path $path_release_content "Parsing.md")
# Singleheader
Copy-Item -Path $path_singleheader_gen\gen.hpp -Destination $path_release_content\gen.hpp
diff --git a/scripts/test.gen_build.ci.ps1 b/scripts/test.gen_build.ci.ps1
deleted file mode 100644
index ad708ee..0000000
--- a/scripts/test.gen_build.ci.ps1
+++ /dev/null
@@ -1,45 +0,0 @@
-[string] $type = $null
-[string] $test = $false
-
-foreach ( $arg in $args )
-{
- if ( $arg -eq "test" )
- {
- $test = $true
- }
- else
- {
- $type = $arg
- }
-}
-
-$path_root = git rev-parse --show-toplevel
-$path_build = Join-Path $path_root build
-$path_scripts = Join-Path $path_root scripts
-$path_test = Join-Path $path_root test
-$path_gen = Join-Path $path_test gen
-$path_test_build = Join-Path $path_test build
-$path_gen_build = Join-Path $path_gen build
-
-write-host "`n`nBuilding Test`n"
-
-if ( -not( Test-Path $path_gen_build ) )
-{
-# Generate build files for meta-program
-Push-Location $path_gen
- $args_meson = @()
- $args_meson += "setup"
- $args_meson += $path_gen_build
-
- & meson $args_meson
-Pop-Location
-}
-
-# Compile meta-program
-Push-Location $path_root
- $args_ninja = @()
- $args_ninja += "-C"
- $args_ninja += $path_gen_build
-
- & ninja $args_ninja
-Pop-Location
diff --git a/scripts/test.gen_build.ps1 b/scripts/test.gen_build.ps1
deleted file mode 100644
index 39814df..0000000
--- a/scripts/test.gen_build.ps1
+++ /dev/null
@@ -1,2 +0,0 @@
-cls
-Invoke-Expression "& $(Join-Path $PSScriptRoot 'test.gen_build.ci.ps1') $args"
diff --git a/scripts/test.gen_run.ps1 b/scripts/test.gen_run.ps1
deleted file mode 100644
index 2508b6e..0000000
--- a/scripts/test.gen_run.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-cls
-
-[string] $type = $null
-[string] $test = $false
-
-foreach ( $arg in $args )
-{
- if ( $arg -eq "test" )
- {
- $test = $true
- }
- else
- {
- $type = $arg
- }
-}
-
-$path_root = git rev-parse --show-toplevel
-$path_build = Join-Path $path_root build
-$path_scripts = Join-Path $path_root scripts
-$path_test = Join-Path $path_root test
-$path_gen = Join-Path $path_test gen
-$path_test_build = Join-Path $path_test build
-$path_gen_build = Join-Path $path_gen build
-
-# Invoke-Expression "& $(Join-Path $PSScriptRoot 'bootstrap.ci.ps1')"
-# Invoke-Expression "& $(Join-Path $PSScriptRoot 'singleheader.ci.ps1')"
-
-write-host "`n`nBuilding Test`n"
-
-if ( -not( Test-Path $path_gen_build ) )
-{
-# Generate build files for meta-program
-Push-Location $path_gen
- $args_meson = @()
- $args_meson += "setup"
- $args_meson += $path_gen_build
-
- & meson $args_meson
-Pop-Location
-}
-
-# Compile meta-program
-Push-Location $path_root
- $args_ninja = @()
- $args_ninja += "-C"
- $args_ninja += $path_gen_build
-
- & ninja $args_ninja
-Pop-Location
-
-Push-location $path_gen
-# Run meta-program
- $gencpp = Join-Path $path_gen_build gencpp.exe
-
- Write-Host `nRunning tests...
- & $gencpp
-
-# Format generated files
- $path_clang_format = Join-Path $path_scripts .clang-format
-
- Write-Host `nBeginning format...
- $formatParams = @(
- '-i' # In-place
- "-style=file:$path_clang_format" # Search for a .clang-format file in the parent directory of the source file.
- '-verbose'
- )
-
- $include = @('*.gen.hpp', '*.gen.cpp')
- $exclude = $null
-
- $targetFiles = @(Get-ChildItem -Recurse -Path $path_gen -Include $include -Exclude $exclude | Select-Object -ExpandProperty FullName)
-
- clang-format $formatParams $targetFiles
- Write-Host "`nFormatting complete"
-Pop-Location
-
-# Build the program depending on generated files.
-if ( -not( Test-Path $path_test_build ) )
-{
-Push-Location $path_test
- $args_meson = @()
- $args_meson += "setup"
- $args_meson += $path_test_build
-
-# & meson $args_meson
-Pop-Location
-}
-
-Push-Location $path_root
- $args_ninja = @()
- $args_ninja += "-C"
- $args_ninja += $path_test_build
-
- # ninja $args_ninja
-Pop-Location
-
-Push-Location $path_test
- $testcpp = Join-Path $path_test_build testcpp.exe
-
- # & $testcpp
-Pop-Location
diff --git a/test/SOA.cpp b/test/SOA.cpp
index 5a67519..445e022 100644
--- a/test/SOA.cpp
+++ b/test/SOA.cpp
@@ -2,8 +2,8 @@
#define GEN_ENFORCE_STRONG_CODE_TYPES
#define GEN_EXPOSE_BACKEND
#define GEN_BENCHMARK
-#include "gen/gen.hpp"
-#include "gen/gen.builder.hpp"
+#include "gen.hpp"
+#include "gen.builder.hpp"
using namespace gen;
Code gen_SOA( CodeStruct struct_def, s32 num_entries = 0 )
diff --git a/test/gen/meson.build b/test/gen/meson.build
deleted file mode 100644
index 7371645..0000000
--- a/test/gen/meson.build
+++ /dev/null
@@ -1,27 +0,0 @@
-project( 'test', 'c', 'cpp', default_options : ['buildtype=debug'] )
-
-# add_global_arguments('-E', language : 'cpp')
-
-includes = include_directories(
-[
- '../../project',
- # '../../thirdparty'
-])
-
-# get_sources = files('./get_sources.ps1')
-# sources = files(run_command('powershell', get_sources, check: true).stdout().strip().split('\n'))
-
-sources = [ '../test.cpp' ]
-
-if get_option('buildtype').startswith('debug')
-
- add_project_arguments('-DBuild_Debug', language : ['c', 'cpp'])
- # add_project_arguments('-E', language : ['c', 'cpp'])
-
-endif
- # add_project_arguments('-E', language : ['c', 'cpp'])
- # add_global_arguments( '-E', language : ['cpp'])
-
-add_project_arguments('-DGEN_TIME', language : ['c', 'cpp'])
-
-executable( 'gencpp', sources, include_directories : includes )
diff --git a/test/meson.build b/test/meson.build
deleted file mode 100644
index 589d75a..0000000
--- a/test/meson.build
+++ /dev/null
@@ -1,25 +0,0 @@
-project( 'test', 'c', 'cpp', default_options : ['buildtype=debug'] )
-
-# add_global_arguments('-E', language : 'cpp')
-
-includes = include_directories(
- [
- './gen',
- '../project',
- # '../thirdparty'
- ])
-
-# get_sources = files('./get_sources.ps1')
-# sources = files(run_command('powershell', get_sources, check: true).stdout().strip().split('\n'))
-
-sources = [ 'test.cpp' ]
-
-if get_option('buildtype').startswith('debug')
-
- add_project_arguments('-DBuild_Debug', language : ['c', 'cpp'])
-
-endif
-
-add_project_arguments('-Druntime', language : ['c', 'cpp'])
-
-executable( 'testcpp', sources, include_directories : includes )
diff --git a/test/sanity.cpp b/test/sanity.cpp
index d9309a5..da1f398 100644
--- a/test/sanity.cpp
+++ b/test/sanity.cpp
@@ -4,8 +4,8 @@
#define GEN_ENFORCE_STRONG_CODE_TYPES
#define GEN_EXPOSE_BACKEND
#define GEN_BENCHMARK
-#include "gen/gen.hpp"
-#include "gen/gen.builder.hpp"
+#include "gen.hpp"
+#include "gen.builder.hpp"
void check_sanity()
{
diff --git a/test/test.cpp b/test/test.cpp
index 11b6c77..6ca6858 100644
--- a/test/test.cpp
+++ b/test/test.cpp
@@ -2,8 +2,8 @@
#define GEN_ENFORCE_STRONG_CODE_TYPES
#define GEN_EXPOSE_BACKEND
#define GEN_BENCHMARK
-#include "gen/gen.cpp"
-#include "gen/gen.builder.cpp"
+#include "gen.cpp"
+#include "gen.builder.cpp"
#include "sanity.cpp"
#include "SOA.cpp"
#include "test.singleheader_ast.cpp"
diff --git a/test/test.singleheader_ast.cpp b/test/test.singleheader_ast.cpp
index 1c386e4..53576d4 100644
--- a/test/test.singleheader_ast.cpp
+++ b/test/test.singleheader_ast.cpp
@@ -2,9 +2,9 @@
#define GEN_ENFORCE_STRONG_CODE_TYPES
#define GEN_EXPOSE_BACKEND
#define GEN_BENCHMARK
-#include "gen/gen.hpp"
-#include "gen/gen.builder.hpp"
-#include "gen/gen.scanner.hpp"
+#include "gen.hpp"
+#include "gen.builder.hpp"
+#include "gen.scanner.hpp"
using namespace gen;
void check_singleheader_ast()