Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

targetType: dynamicLibrary includes DLL causes compiler to error #2258

Closed
rikkimax opened this issue Jun 5, 2022 · 2 comments · Fixed by #2259
Closed

targetType: dynamicLibrary includes DLL causes compiler to error #2258

rikkimax opened this issue Jun 5, 2022 · 2 comments · Fixed by #2259

Comments

@rikkimax
Copy link
Contributor

rikkimax commented Jun 5, 2022

I know this is a problem for Windows, I'm not sure about posix with .so's.

The dll should not be included, the import library should take over (it has been added).

This applies to both dmd and ldc.

I'll fix this tomorrow.

Target 'P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.dll' doesn't exist, need rebuild.
C:\Tools\D\ldc2-1.30.0-beta1-windows-multilib\bin\ldc2.exe -preview=dip1000 -preview=dip25 -shared -ofP:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.dll -d-debug -g -w -betterC --oq -od=P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\/obj -d-version=DynamicSideroBase -d-version=Have_sidero_base -IP:\ProjectSidero\basic_memory\source P:\ProjectSidero\basic_memory\source\sidero\base\allocators\alternatives\allocatorlist.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\alternatives\bucketizer.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\alternatives\fallback.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\alternatives\quantizer.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\alternatives\segregator.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\api.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\buffers\buddylist.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\buffers\defs.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\buffers\freelist.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\buffers\freetree.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\buffers\region.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\gc.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\gc_hook.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\locking.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\mapping\malloc.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\mapping\mmap.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\mapping\package.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\mapping\vars.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\mapping\virtualalloc.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\package.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\predefined.d P:\ProjectSidero\basic_memory\source\sidero\base\allocators\stats.d P:\ProjectSidero\basic_memory\source\sidero\base\bitmanip.d P:\ProjectSidero\basic_memory\source\sidero\base\dllmain.d P:\ProjectSidero\basic_memory\source\sidero\base\hash\adler32.d P:\ProjectSidero\basic_memory\source\sidero\base\hash\blake.d P:\ProjectSidero\basic_memory\source\sidero\base\hash\crc.d P:\ProjectSidero\basic_memory\source\sidero\base\hash\fletcher.d P:\ProjectSidero\basic_memory\source\sidero\base\hash\fnv.d P:\ProjectSidero\basic_memory\source\sidero\base\math\fixednum.d P:\ProjectSidero\basic_memory\source\sidero\base\parallelism\mutualexclusion.d P:\ProjectSidero\basic_memory\source\sidero\base\parallelism\rwmutex.d P:\ProjectSidero\basic_memory\source\sidero\base\parallelism\spincounter.d -relocation-model=pic -vcolumns
   Creating library P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.lib and object P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.exp
spew-dem2:base ~master: building configuration "spew-dem2-base-test-library"...
Copying target from P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.dll to P:\ProjectSidero\basic_memory
Copying target from P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.pdb to P:\ProjectSidero\basic_memory
Target 'P:\spew-dem2\.dub\build\spew-dem2-base-test-library-unittest-windows-x86_64-ldc_v1.30.0-beta1-CDB519E36DE1A2122FBA6F3F04D7EF26\spew-dem2-base-test-library.exe' doesn't exist, need rebuild.
C:\Tools\D\ldc2-1.30.0-beta1-windows-multilib\bin\ldc2.exe -preview=dip1000 -preview=dip25 -preview=dip1000 -preview=dip25 -of.dub\build\spew-dem2-base-test-library-unittest-windows-x86_64-ldc_v1.30.0-beta1-CDB519E36DE1A2122FBA6F3F04D7EF26\spew-dem2-base-test-library.exe -d-debug -g -unittest -w --oq -od=.dub\build\spew-dem2-base-test-library-unittest-windows-x86_64-ldc_v1.30.0-beta1-CDB519E36DE1A2122FBA6F3F04D7EF26\/obj -d-version=Have_spew_dem2_base -d-version=Have_bc_string -d-version=Have_sidero_base -d-version=DynamicSideroBase -Ibase -Igenerated_database\generated\base -IC:\Users\alpha\AppData\Local\dub\packages\bc-string-1.2.3\bc-string\source -IP:\ProjectSidero\basic_memory\source .dub\code\spew-dem2-base-test-library-unittest-windows-x86_64-ldc_v1.30.0-beta1-B0D25370577DDF82BA13CCCA75BEAD98_dub_test_root.d base\spewdem\base\array.d base\spewdem\base\console.d base\spewdem\base\containers\defs.d base\spewdem\base\containers\dynamicarray.d base\spewdem\base\containers\internal\tests.d base\spewdem\base\containers\list\defs.d base\spewdem\base\containers\list\linkedlist.d base\spewdem\base\containers\map\defs.d base\spewdem\base\containers\map\hash.d base\spewdem\base\containers\map\symboltable.d base\spewdem\base\datetime.d base\spewdem\base\encoding\base64.d base\spewdem\base\encoding\uri.d base\spewdem\base\logging.d base\spewdem\base\math\linear\matrix.d base\spewdem\base\math\linear\vector.d base\spewdem\base\meta.d base\spewdem\base\parallelism_old\exceptions.d base\spewdem\base\parallelism_old\mutualexclusion.d base\spewdem\base\parallelism_old\rwmutex.d base\spewdem\base\parallelism_old\spincounter.d base\spewdem\base\random\defs.d base\spewdem\base\random\distribution\basic.d base\spewdem\base\random\distribution\defs.d base\spewdem\base\random\distribution\normal.d base\spewdem\base\random\distribution\package.d base\spewdem\base\random\lfsr113.d base\spewdem\base\random\package.d base\spewdem\base\random\well512.d base\spewdem\base\range.d base\spewdem\base\reference\defs.d base\spewdem\base\reference\errors.d base\spewdem\base\reference\package.d base\spewdem\base\streams.d base\spewdem\base\string.d base\spewdem\base\system.d base\spewdem\base\text\ascii\builder.d base\spewdem\base\text\ascii\codepoints.d base\spewdem\base\text\ascii\readonly.d base\spewdem\base\text\ascii\wordbreak.d base\spewdem\base\text\format.d base\spewdem\base\text\internal\builder.d base\spewdem\base\text\unicode\codepoints.d base\spewdem\base\text\unicode\defs.d base\spewdem\base\text\unicode\normalization.d base\spewdem\base\text\wordbreak.d base\spewdem\base\uri\builder.d base\spewdem\base\uri\checks.d base\spewdem\base\uri\defs.d base\spewdem\base\uri\length_calculation.d base\spewdem\base\uri\mutation.d base\spewdem\base\uri\package.d base\spewdem\base\uri\readonly.d generated_database\generated\base\spewdem\base\text\unicode\database\DerivedNormalizationProps.d generated_database\generated\base\spewdem\base\text\unicode\database\PropList.d generated_database\generated\base\spewdem\base\text\unicode\database\SpecialCasing.d generated_database\generated\base\spewdem\base\text\unicode\database\UnicodeData.d generated_database\generated\base\spewdem\base\text\unicode\database\WordBreakProperty.d generated_database\generated\base\spewdem\base\text\unicode\database\package.d P:\ProjectSidero\basic_memory\source\sidero\base\gc_hook.d C:\Users\alpha\AppData\Local\dub\packages\bc-string-1.2.3\bc-string\.dub\build\default-unittest-windows-x86_64-ldc_v1.30.0-beta1-9CCBD5E0B8EBE55BD01E35397EB62F8F\bc-string.lib P:\ProjectSidero\basic_memory\.dub\build\library-unittest-windows-x86_64-ldc_v1.30.0-beta1-4C91E9CD4FAA51A0FCD48C4B2824049E\sidero_base.dll -vcolumns
Error: unrecognized file extension dll
FAIL .dub\build\spew-dem2-base-test-library-unittest-windows-x86_64-ldc_v1.30.0-beta1-CDB519E36DE1A2122FBA6F3F04D7EF26\ spew-dem2-base-test-library executable
C:\Tools\D\ldc2-1.30.0-beta1-windows-multilib\bin\ldc2.exe failed with exit code 1.
@rikkimax
Copy link
Contributor Author

rikkimax commented Jun 6, 2022

Found the problem: https://github.com/dlang/dub/blob/master/source/dub/generators/build.d#L105

				if (bs.targetType != TargetType.staticLibrary && !(bs.options & BuildOption.syntaxOnly)) {
					bs.addSourceFiles(target_paths[ldep].toNativeString());
				} else {
					additional_dep_files ~= target_paths[ldep];
				}

That should not be adding dll files but it does need to add so's, dylib and import lib files.

@rikkimax
Copy link
Contributor Author

rikkimax commented Jun 6, 2022

I've been able to create a test case that is able to run with ldc2 after fixing this issue.

However, the dependency shared library dll isn't being copied (or .lib or .pdb).
So there is still one blocker before I consider a PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant