|
@@ -34,6 +34,7 @@ interface
|
|
procedure export_unit(u:tmodule);
|
|
procedure export_unit(u:tmodule);
|
|
procedure load_packages;
|
|
procedure load_packages;
|
|
procedure add_package(const name:string;ignoreduplicates:boolean);
|
|
procedure add_package(const name:string;ignoreduplicates:boolean);
|
|
|
|
+ procedure add_package_unit_ref(package:tpackage);
|
|
procedure add_package_libs(l:tlinker);
|
|
procedure add_package_libs(l:tlinker);
|
|
|
|
|
|
implementation
|
|
implementation
|
|
@@ -441,10 +442,22 @@ implementation
|
|
new(entry);
|
|
new(entry);
|
|
entry^.package:=nil;
|
|
entry^.package:=nil;
|
|
entry^.realpkgname:=name;
|
|
entry^.realpkgname:=name;
|
|
|
|
+ entry^.usedunits:=0;
|
|
packagelist.add(upper(name),entry);
|
|
packagelist.add(upper(name),entry);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
+ procedure add_package_unit_ref(package: tpackage);
|
|
|
|
+ var
|
|
|
|
+ pkgentry : ppackageentry;
|
|
|
|
+ begin
|
|
|
|
+ pkgentry:=ppackageentry(packagelist.find(package.packagename^));
|
|
|
|
+ if not assigned(pkgentry) then
|
|
|
|
+ internalerror(2015100301);
|
|
|
|
+ inc(pkgentry^.usedunits);
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+
|
|
procedure add_package_libs(l:tlinker);
|
|
procedure add_package_libs(l:tlinker);
|
|
var
|
|
var
|
|
pkgentry : ppackageentry;
|
|
pkgentry : ppackageentry;
|
|
@@ -454,14 +467,19 @@ implementation
|
|
for i:=0 to packagelist.count-1 do
|
|
for i:=0 to packagelist.count-1 do
|
|
begin
|
|
begin
|
|
pkgentry:=ppackageentry(packagelist[i]);
|
|
pkgentry:=ppackageentry(packagelist[i]);
|
|
- //writeln('package used: ',pkgentry^.realpkgname);
|
|
|
|
- pkgname:=pkgentry^.package.pplfilename;
|
|
|
|
- if copy(pkgname,1,length(target_info.sharedlibprefix))=target_info.sharedlibprefix then
|
|
|
|
- delete(pkgname,1,length(target_info.sharedlibprefix));
|
|
|
|
- if copy(pkgname,length(pkgname)-length(target_info.sharedlibext)+1,length(target_info.sharedlibext))=target_info.sharedlibext then
|
|
|
|
- delete(pkgname,length(pkgname)-length(target_info.sharedlibext)+1,length(target_info.sharedlibext));
|
|
|
|
- //writeln('adding library: ', pkgname);
|
|
|
|
- l.sharedlibfiles.concat(pkgname);
|
|
|
|
|
|
+ if pkgentry^.usedunits>0 then
|
|
|
|
+ begin
|
|
|
|
+ //writeln('package used: ',pkgentry^.realpkgname);
|
|
|
|
+ pkgname:=pkgentry^.package.pplfilename;
|
|
|
|
+ if copy(pkgname,1,length(target_info.sharedlibprefix))=target_info.sharedlibprefix then
|
|
|
|
+ delete(pkgname,1,length(target_info.sharedlibprefix));
|
|
|
|
+ if copy(pkgname,length(pkgname)-length(target_info.sharedlibext)+1,length(target_info.sharedlibext))=target_info.sharedlibext then
|
|
|
|
+ delete(pkgname,length(pkgname)-length(target_info.sharedlibext)+1,length(target_info.sharedlibext));
|
|
|
|
+ //writeln('adding library: ', pkgname);
|
|
|
|
+ l.sharedlibfiles.concat(pkgname);
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ {writeln('ignoring package: ',pkgentry^.realpkgname)};
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|