Grease and dust with flour in a 13×9 baking dish and set aside. Make sure you use a deep pan; otherwise, the batter will overflow in the oven. This is very important.
In a large mixing bowl, whisk together all-purpose flour, sugar, baking powder, baking soda, and salt until combined.
Using an electric hand or stand mixer, beat softened butter into the flour mixture until it is combined and crumbly.
Add eggs, vanilla, and buttermilk and beat until thoroughly combined; the mixture should be fluffy.
Pour the batter into the prepared baking dish and spread it evenly.
Mix the softened butter, flour, sugar, and cinnamon in a small bowl using a fork until soft crumbs form.
Sprinkle the cinnamon evenly over the cake batter. Set aside.
In a large mixing bowl, beat cream cheese; once creamy, beat it in sugar.
Once combined, beat in eggs and vanilla extract until light and fluffy, about 3-5 minutes.
Scoop the cheesecake filling over the cinnamon filling and, using a spatula, spread it evenly.
In a large bowl, mix sugar with cinnamon and salt. Add in the melted butter and combine using a fork.
Once the butter is thoroughly combined, add the flour and mix with a fork or using your hands until thoroughly combined.
Sprinkle streusel topping over the cheesecake layer until evenly distributed.
Bake cake in a 350-degree oven for about 60-75 minutes, until fully cooked. Do the toothpick test! No raw cake batter should come up!
Cool completely, and then refrigerate it for 3-4 hours for the cheesecake layer to settle fully before serving.
Add the powdered sugar to a medium bowl. Add two tablespoons of milk and the vanilla extract. Mix until fully combined with no lumps. If the mixture is too thick, add one more tablespoon of milk. I like the glaze on the thicker side yet pourable, so it will look white and shiny, not transparent.
Use a fork or spoon to drizzle the icing over the cake.
Slice and serve!