Freestyle: Use precompiled headers with MSVC.

This brings down the build time for freestyle with MSVC from a
minute to 10-20 seconds.

vs2019 bf_freestyle debug   before: 60464 ms  after: 11028 ms
vs2019 bf_freestyle release before: 56984 ms  after: 20526 ms

Differential Revision: https://developer.blender.org/D2606

Reviewed By: brecht , sergey
This commit is contained in:
Ray Molenkamp 2019-06-05 19:05:16 -06:00
parent 8b2b79c210
commit 9c76b2c3b6
4 changed files with 56 additions and 0 deletions

@ -1220,3 +1220,11 @@ macro(WINDOWS_SIGN_TARGET target)
endif()
endif()
endmacro()
MACRO(blender_precompile_headers target cpp header)
if (MSVC AND NOT MSVC_CLANG)
target_sources(${target} PRIVATE ${cpp} ${header})
set_target_properties(${target} PROPERTIES COMPILE_FLAGS "/Yu${header} /FI${header}")
set_source_files_properties(${cpp} PROPERTIES COMPILE_FLAGS "/Yc${header}")
endif()
ENDMACRO()

@ -586,3 +586,4 @@ if(WIN32)
endif()
blender_add_lib(bf_freestyle "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
blender_precompile_headers(bf_freestyle FRS_precomp.cpp FRS_precomp.h)

@ -0,0 +1 @@
#include "FRS_precomp.h"

@ -0,0 +1,46 @@
#include <Python.h>
#include <pthread.h>
#include <string>
#include <vector>
#include <iostream>
#include <math.h>
#include <stdbool.h>
#include <algorithm>
#include <time.h>
#include <iterator>
#include <memory>
#include <set>
#include <map>
#include <list>
#include <deque>
#include <sstream>
#include <stdarg.h>
#include <fstream>
#include <iomanip>
#include <stack>
#include "intern/python/BPy_BBox.h"
#include "intern/python/BPy_BinaryPredicate0D.h"
#include "intern/python/BPy_BinaryPredicate1D.h"
#include "intern/python/BPy_ContextFunctions.h"
#include "intern/python/BPy_Convert.h"
#include "intern/python/BPy_Freestyle.h"
#include "intern/python/BPy_FrsMaterial.h"
#include "intern/python/BPy_FrsNoise.h"
#include "intern/python/BPy_Id.h"
#include "intern/python/BPy_IntegrationType.h"
#include "intern/python/BPy_Interface0D.h"
#include "intern/python/BPy_Interface1D.h"
#include "intern/python/BPy_Iterator.h"
#include "intern/python/BPy_MediumType.h"
#include "intern/python/BPy_Nature.h"
#include "intern/python/BPy_Operators.h"
#include "intern/python/BPy_SShape.h"
#include "intern/python/BPy_StrokeAttribute.h"
#include "intern/python/BPy_StrokeShader.h"
#include "intern/python/BPy_UnaryFunction0D.h"
#include "intern/python/BPy_UnaryFunction1D.h"
#include "intern/python/BPy_UnaryPredicate0D.h"
#include "intern/python/BPy_UnaryPredicate1D.h"
#include "intern/python/BPy_ViewMap.h"
#include "intern/python/BPy_ViewShape.h"
#include "intern/python/Director.h"