add_library(db
    dbBTerm.cpp 
    dbStream.cpp 
    dbBTermItr.cpp 
    dbBPinItr.cpp 
    dbBlock.cpp 
    dbBlockItr.cpp 
    dbBox.cpp 
    dbBoxItr.cpp 
    dbChip.cpp 
    dbDatabase.cpp 
    dbITerm.cpp 
    dbITermItr.cpp 
    dbInst.cpp 
    dbInstHdr.cpp 
    dbLib.cpp 
    dbMPin.cpp 
    dbMPinItr.cpp 
    dbMTerm.cpp 
    dbMaster.cpp 
    dbNet.cpp 
    dbSearch.cpp
    dbTech.cpp  
    dbTechLayerSpacingRule.cpp 
    dbTechLayerAntennaRule.cpp 
    dbTechMinCutOrAreaRule.cpp 
    dbTechLayerItr.cpp 
    dbTechVia.cpp 
    dbTypes.cpp 
    dbVia.cpp 
    dbWire.cpp 
    dbWireCodec.cpp 
    dbTrackGrid.cpp 
    dbBlockage.cpp 
    dbObstruction.cpp 
    dbObject.cpp 
    dbInstShapeItr.cpp 
    dbTransform.cpp 
    dbITermShapeItr.cpp 
    dbSWire.cpp 
    dbSBox.cpp 
    dbSWireItr.cpp 
    dbSBoxItr.cpp 
    dbDiff.cpp 
    dbSite.cpp 
    dbCCSeg.cpp 
    dbCCSegItr.cpp 
    dbWireShapeItr.cpp 
    dbWirePathItr.cpp 
    dbTarget.cpp 
    dbTargetItr.cpp 
    dbTechNonDefaultRule.cpp 
    dbTechLayerRule.cpp 
    dbCapNode.cpp 
    dbCapNodeItr.cpp 
    dbRSeg.cpp 
    dbRSegItr.cpp 
    dbTechSameNetRule.cpp 
    dbRow.cpp
    dbFill.cpp
    dbShape.cpp 
    dbWireGraph.cpp 
    dbJournal.cpp 
    dbJournalLog.cpp 
    dbBlockCallBackObj.cpp 
    dbRtTree.cpp 
    dbRegion.cpp 
    dbRegionInstItr.cpp 
    dbExtControl.cpp 
    dbNullIterator.cpp 
    dbBPin.cpp 
    dbHierInstShapeItr.cpp 
    dbHier.cpp 
    dbTechViaRule.cpp 
    dbTechViaLayerRule.cpp 
    dbTechViaGenerateRule.cpp 
    dbViaParams.cpp 
    dbNameCache.cpp 
    dbProperty.cpp 
    dbPropertyItr.cpp 
    dbUtil.cpp
    gs.cpp
    grids.cpp
    tmg_conn.cpp
    tmg_conn_g.cpp
    tmg_conn_s.cpp
    tmg_conn_w.cpp
    wOrder.cpp
    dbGroupPowerNetItr.cpp
    dbGroupGroundNetItr.cpp
    # Generator Code Begin cpp
    dbTechLayer.cpp
    dbTechLayerSpacingEolRule.cpp
    dbTechLayerMinStepRule.cpp
    dbTechLayerCornerSpacingRule.cpp
    dbTechLayerSpacingTablePrlRule.cpp
    dbTechLayerEolKeepOutRule.cpp
    dbTechLayerCutClassRule.cpp
    dbTechLayerCutSpacingRule.cpp
    dbTechLayerCutSpacingTableOrthRule.cpp
    dbTechLayerCutSpacingTableDefRule.cpp
    dbTechLayerCutEnclosureRule.cpp
    dbTechLayerEolExtensionRule.cpp
    dbTechLayerArraySpacingRule.cpp
    dbTechLayerWidthTableRule.cpp
    dbTechLayerMinCutRule.cpp
    dbGuide.cpp
    dbMetalWidthViaMap.cpp
    dbTechLayerAreaRule.cpp
    dbModule.cpp
    dbModInst.cpp
    dbGroup.cpp
    dbGCellGrid.cpp
    dbAccessPoint.cpp
    dbGlobalConnect.cpp
    dbPowerDomain.cpp
    dbLogicPort.cpp
    dbPowerSwitch.cpp
    dbIsolation.cpp
    dbModuleInstItr.cpp
    dbModuleModInstItr.cpp
    dbGroupModInstItr.cpp
    dbGroupItr.cpp
    dbRegionGroupItr.cpp
    dbGroupInstItr.cpp
    dbGuideItr.cpp
    # Generator Code End cpp
)

target_link_libraries(db
    PUBLIC
        lefout
        defout
        tm
        zutil
        ${TCL_LIBRARY}
)

target_include_directories(db
    PUBLIC
        ${PROJECT_SOURCE_DIR}/include
        ${PROJECT_SOURCE_DIR}/include/odb
        ${TCL_INCLUDE_PATH}
)

set_target_properties(db
  PROPERTIES
    # python requirement
    POSITION_INDEPENDENT_CODE ON
)


#messages(
#  TARGET db
#  OUTPUT_DIR ../..
#)
