# File Name
MAKEFILENAME = CADCreoParametricCreateAssembly_make

# Machine Type
PRO_MACHINE_TYPE = x86e_win64

# Executable names
EXE = CADCreoParametricCreateAssembly.exe

# Pro/Toolkit Source & Machine Loadpoint  (EXTERNAL USE - DEFAULT)
PROTOOL_SRC = $(CREO_PARAMETRIC_TOOLKIT_PARENT_DIR)\protoolkit
PROTOOL_SYS = $(PROTOOL_SRC)/$(PRO_MACHINE_TYPE)
PRODEV_SRC = $(CREO_PARAMETRIC_TOOLKIT_PARENT_DIR)\prodevelop
PRODEV_SYS = $(PRODEV_SRC)/$(PRO_MACHINE_TYPE)

ISIS_PTC_TOOLKIT_FUNCTIONS_LIB_PATH = ..\CADCreoParametricToolkitFunctions
ISIS_PTC_TOOLKIT_FUNCTIONS_INCLUDE_PATH = ..\CADCreoParametricToolkitFunctions
ISIS_PTC_COMMON_FUNCTIONS_LIB_PATH =..\CADCreoParametricCommonFunctions
ISIS_PTC_COMMON_FUNCTIONS_INCLUDE_PATH = ..\CADCreoParametricCommonFunctions
ISIS_CAD_COMMON_FUNCTIONS_INCLUDE_PATH = ..\CADCommonFunctions

RESOURCE_COMPILER = "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\rc.exe"
RESOURCE_COMPILER_INCLUDE =	"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include"
RESOURCE_COMPILER_INCLUDE_SAL_H = "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"

# Application Definitions
PROTK_EXAMP = $(PROTOOL_SRC)/protk_appls/pt_examples


# Include File Paths

INCS = -I. -I$(PROTOOL_SRC)/protk_appls/includes -I$(PROTOOL_SRC)/includes \
	-I$(ISIS_PTC_TOOLKIT_FUNCTIONS_INCLUDE_PATH)  -I$(ISIS_PTC_COMMON_FUNCTIONS_INCLUDE_PATH)  \
	-I$(ISIS_CAD_COMMON_FUNCTIONS_INCLUDE_PATH)  -I"$(UDM_PATH)/include"


# Compiler Flags
CC = cl
DEBUG = /MD
#DEBUG = /Od /Z7 -DDEBUG /MDd

MACH = -DPRO_MACHINE=36 -DPRO_OS=4

# exception handler used, but unwind semantics are not enabled. Specify /EHsc
# Note, in the following line, -D_WSTDIO_DEFINED causes errors when including <fstream>
#CCFLAGS =  -c  -GS -EHsc -fp:precise  -D_WSTDIO_DEFINED $(DEBUG)
CCFLAGS =  -c  -GS -EHsc -fp:precise  $(DEBUG) /D "UDM_DYNAMIC_LINKING"
CFLAGS = $(CCFLAGS) $(INCS) $(MACH)

# Link flags
LINK = link
#Executable applications compiled using WinMain() instead of main() should set the subsystem to windows instead of console.
LINKFLAGS = /subsystem:console /debug:none /machine:amd64

# Libraries
#LIBS = libcmt.lib kernel32.lib user32.lib wsock32.lib advapi32.lib mpr.lib winspool.lib netapi32.lib psapi.lib gdi32.lib shell32.lib comdlg32.lib ole32.lib ws2_32.lib
LIBS =  kernel32.lib user32.lib wsock32.lib advapi32.lib mpr.lib winspool.lib netapi32.lib psapi.lib gdi32.lib shell32.lib comdlg32.lib ole32.lib ws2_32.lib
#PTCLIBS = $(PRODEV_SYS)/obj/prodevelop.lib $(PROTOOL_SYS)/obj/protoolkit.lib
PTCLIBS = $(PRODEV_SYS)/obj/prodevmd.lib $(PROTOOL_SYS)/obj/protkmd.lib
ISIS_LIBS = $(ISIS_PTC_TOOLKIT_FUNCTIONS_LIB_PATH)/CADCreoParametricToolkitFunctions.lib  $(ISIS_PTC_COMMON_FUNCTIONS_LIB_PATH)/CADCreoParametricCommonFunctions.lib ../../bin/CADCommonFunctions.lib
UDM_LIB_DIR = "$(UDM_PATH)/lib"


# Object files
OBJS = CADCreoParametricCreateAssembly.obj  pt_utils.obj DiagnosticUtilities.obj AssemblyInterface.obj \
	BuildAssembly.obj AssembleComponents.obj \
	ApplyModelConstraints.obj CommonStructures.obj ISISConstants.obj XMLToProEStructures.obj \
	FiniteElementAnalysis.obj SetCADModelParamters.obj ProEStructuresUtils.obj Metrics.obj CADMetrics.obj \
	AssembleUtils.obj ModelMaterials.obj  CADEnvironmentSettings.obj MaterialProperties.obj \
	CADPostProcessingParameters.obj DataExchange.obj Computations.obj ToolKitPassThroughFunctions.obj CADCreoParametricCreateAssembly.res


$(EXE) :  $(OBJS) $(PTCLIBS)
	@echo Start at `date`
	@echo PROTOOL_SRC = $(PROTOOL_SRC)
	@echo PROTOOL_SYS = $(PROTOOL_SYS)
	$(LINK) -out:$(EXE) /LIBPATH:$(UDM_LIB_DIR)  /LIBPATH:$(BOOST_PATH)\x64\lib  $(LINKFLAGS) $(OBJS) $(PTCLIBS) $(LIBS) $(ISIS_LIBS)
	@echo Finished at `date`
	del $(OBJS)

# object dependencies

CADCreoParametricCreateAssembly.obj:  CADCreoParametricCreateAssembly.cpp
	$(CC) $(CFLAGS) $?

DiagnosticUtilities.obj:  DiagnosticUtilities.cpp
	$(CC) $(CFLAGS) $?

pt_utils.obj:  $(PROTK_EXAMP)/pt_utils/pt_utils.c
	$(CC) $(CFLAGS) $?

AssemblyInterface.obj:  AssemblyInterface.cpp
	$(CC) $(CFLAGS) $?

BuildAssembly.obj:  BuildAssembly.cpp
	$(CC) $(CFLAGS) $?
	
AssembleComponents.obj:  AssembleComponents.cpp  AssembleComponents.h
	$(CC) $(CFLAGS) AssembleComponents.cpp
	
	
ApplyModelConstraints.obj:  ApplyModelConstraints.cpp
	$(CC) $(CFLAGS) $?
	
CommonStructures.obj:  CommonStructures.cpp
	$(CC) $(CFLAGS) $?
	
	
ISISConstants.obj:  ISISConstants.cpp
	$(CC) $(CFLAGS) $?	
		
	
FiniteElementAnalysis.obj:  FiniteElementAnalysis.cpp
	$(CC) $(CFLAGS) $?

SetCADModelParamters.obj:  SetCADModelParamters.cpp
	$(CC) $(CFLAGS) $?

XMLToProEStructures.obj:  XMLToProEStructures.cpp
	$(CC) $(CFLAGS) $?

ProEStructuresUtils.obj:  ProEStructuresUtils.cpp
	$(CC) $(CFLAGS) ProEStructuresUtils.cpp

Metrics.obj:  Metrics.cpp
	$(CC) $(CFLAGS) $?


CADMetrics.obj:  CADMetrics.cpp
	$(CC) $(CFLAGS) $?

AssembleUtils.obj:  AssembleUtils.cpp
	$(CC) $(CFLAGS) $?

ModelMaterials.obj:  ModelMaterials.cpp
	$(CC) $(CFLAGS) $?


MaterialProperties.obj:  MaterialProperties.cpp
	$(CC) $(CFLAGS) $?


CADEnvironmentSettings.obj:  CADEnvironmentSettings.cpp
	$(CC) $(CFLAGS) $?

CADPostProcessingParameters.obj:  CADPostProcessingParameters.cpp
	$(CC) $(CFLAGS) $?

DataExchange.obj:  DataExchange.cpp
	$(CC) $(CFLAGS) $?

Computations.obj:  Computations.cpp
	$(CC) $(CFLAGS) $?

ToolKitPassThroughFunctions.obj:  ToolKitPassThroughFunctions.cpp
	$(CC) $(CFLAGS) $?

CADCreoParametricCreateAssembly.res:  CADCreoParametricCreateAssembly.rc
	$(RESOURCE_COMPILER) /i $(RESOURCE_COMPILER_INCLUDE)  /i $(RESOURCE_COMPILER_INCLUDE_SAL_H) /i . $?

# useful targets

clean :
	del $(OBJS)
	del $(EXE)
	nmake -f $(MAKEFILENAME)
