diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutogenLibOrder.java b/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutogenLibOrder.java index 11469a6c49..8fb1be5cbe 100644 --- a/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutogenLibOrder.java +++ b/Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutogenLibOrder.java @@ -223,8 +223,18 @@ public class AutogenLibOrder { // Append the remaining library instance to the end of sorted list // for (int i = 0; i < libInstanceList.length; ++i) { + if (libInstanceConsumedBy.get(libInstanceList[i]).size() > 0 && libInstanceList[i].hasConstructor()) { + EdkLog.log(EdkLog.EDK_ERROR, libInstanceList[i].getName() + + " with constructor has a circular dependency!"); + // throw new AutoGenException("Circular dependency in library instances is found!"); + } + if (!orderList.contains(libInstanceList[i])) { - orderList.add(libInstanceList[i]); + if (libInstanceList[i].getName().equals("UefiBootServicesTableLib")) { + orderList.addFirst(libInstanceList[i]); + } else { + orderList.add(libInstanceList[i]); + } } } return orderList;