Heres the code:
glm::f32 x = size.x / 2.0f;
glm::f32 y = size.y / 2.0f;
glm::f32 z = size.z / 2.0f;
glm::vec3 a0 = glm::vec3(+x, +y, +z);
glm::vec3 a1 = glm::vec3(-x, +y, +z);
glm::vec3 a2 = glm::vec3(-x, -y, +z);
glm::vec3 a3 = glm::vec3(+x, -y, +z);
glm::vec3 a4 = glm::vec3(+x, +y, -z);
glm::vec3 a5 = glm::vec3(-x, +y, -z);
glm::vec3 a6 = glm::vec3(-x, -y, -z);
glm::vec3 a7 = glm::vec3(+x, -y, -z);
glm::vec3 verts[] = {
a1, a2, a3, a3, a0, a1,
a2, a6, a7, a7, a3, a2,
a6, a5, a4, a4, a7, a6,
a5, a1, a0, a0, a4, a5,
a0, a3, a7, a7, a4, a0,
a5, a6, a2, a2, a1, a5
};
glm::vec3 norm[36];
for (int i = 0; i < 36; i += 3)
{
glm::vec3 normal = glm::normalize(
glm::cross(
glm::vec3(verts[i + 1]) - glm::vec3(verts[i]),
glm::vec3(verts[i + 2]) - glm::vec3(verts[i])));
norm[i] = normal;
norm[i + 1] = normal;
norm[i + 2] = normal;
}