1 # Get all used packages from toolkit
2 foreach (MODULE ${TOOLKIT_MODULES})
4 list (APPEND PRECOMPILED_DEFS "-D__${MODULE}_DLL")
6 list (APPEND COMPILER_DIRECTORIES "${OCCT_SOURCE_DIR}/src/${MODULE}")
8 string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}")
10 # Get from toolkits EXTERNLIB all used libs
11 OCCT_TOOLKIT_DEP (${PROJECT_NAME} ${PROJECT_NAME}_DEPS)
12 foreach (DEP ${${PROJECT_NAME}_DEPS})
13 IS_OCCT_TOOLKIT (${DEP} OCCT_MODULES FOUND_TOOLKIT)
14 if ("${FOUND_TOOLKIT}" STREQUAL "ON")
15 list ( APPEND USED_LIBS "${DEP}" )
19 # Get all source files from used packages
20 foreach (CDIR ${COMPILER_DIRECTORIES})
21 get_filename_component (CDirName ${CDIR} NAME)
24 file(STRINGS "${CDIR}/FILES" FLEX_Files REGEX ".+[.]lex")
25 file(STRINGS "${CDIR}/FILES" BISON_Files REGEX ".+[.]yacc")
26 file(STRINGS "${CDIR}/FILES" CFiles REGEX ".+[.]c")
27 file(STRINGS "${CDIR}/FILES" MFiles REGEX ".+[.]mm")
28 file(STRINGS "${CDIR}/FILES" HFiles REGEX ".+[.]h")
29 file(STRINGS "${CDIR}/FILES" LXXFiles REGEX ".+[.]lxx")
30 file(STRINGS "${CDIR}/FILES" GXXFiles REGEX ".+[.]gxx")
32 # Generate Flex and Bison files
33 if (${BUILD_BISON_FLEX_FILES})
34 list (LENGTH FLEX_Files FLength)
35 list (LENGTH BISON_Files BLength)
36 list (SORT FLEX_Files)
37 list (SORT BISON_Files)
38 if (${FLength} EQUAL ${BLength} AND NOT ${FLength} EQUAL 0)
39 math (EXPR FLength "${FLength} - 1")
40 foreach (FileIndex RANGE ${FLength})
41 list (GET FLEX_Files ${FileIndex} FLEX_File)
42 list (GET BISON_Files ${FileIndex} BISON_File)
43 get_filename_component (FLEX_Name ${FLEX_File} NAME_WE)
44 get_filename_component (BISON_Name ${BISON_File} NAME_WE)
45 string (COMPARE EQUAL ${FLEX_Name} ${BISON_Name} isEQUAL)
46 if (EXISTS "${FLEX_File}" AND EXISTS "${BISON_File}" AND ${isEQUAL})
47 BISON_TARGET (Parser_${BISON_Name} ${BISON_File} ${CDIR}/${BISON_Name}.tab.c)
48 FLEX_TARGET (Scanner_${FLEX_Name} ${FLEX_File} ${CDIR}/lex.${FLEX_Name}.c)
49 ADD_FLEX_BISON_DEPENDENCY (Scanner_${FLEX_Name} Parser_${BISON_Name})
50 list (APPEND CDIR_files ${BISON_Parser_${BISON_Name}_OUTPUTS} ${FLEX_Scanner_${FLEX_Name}_OUTPUTS})
56 list(APPEND HDIR_files ${HFiles} ${LXXFiles} ${GXXFiles})
57 list( APPEND CDIR_files ${CFiles})
59 list( APPEND CDIR_files ${MFiles})
62 foreach(HFile ${HDIR_files})
63 list( APPEND USED_INCFILES ${CDIR}/${HFile} )
64 SOURCE_GROUP ("Header Files\\${CDirName}" FILES ${CDIR}/${HFile})
67 foreach(CFile ${CDIR_files})
68 list( APPEND USED_SRCFILES ${CDIR}/${CFile} )
69 SOURCE_GROUP ("Source Files\\${CDirName}" FILES ${CDIR}/${CFile})
73 list( FIND USED_TOOLKITS ${PROJECT_NAME} isFOUND)
75 # Create project for toolkit
76 if ("${USED_TOOLKITS}" STREQUAL "" OR NOT ${isFOUND} EQUAL -1)
77 foreach (MODULE ${OCCT_MODULES})
78 list (FIND ${MODULE}_TOOLKITS ${PROJECT_NAME} isFOUND)
79 if (NOT ${isFOUND} EQUAL -1)
80 set (CURRENT_MODULE ${MODULE})
84 add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES})
85 install (TARGETS ${PROJECT_NAME}
86 CONFIGURATIONS Release
87 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
88 install (TARGETS ${PROJECT_NAME}
89 CONFIGURATIONS RelWithDebInfo
90 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
91 install (TARGETS ${PROJECT_NAME}
93 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
95 add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES})
96 install (TARGETS ${PROJECT_NAME}
97 CONFIGURATIONS Release
98 RUNTIME DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin"
99 ARCHIVE DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
100 LIBRARY DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
101 install (TARGETS ${PROJECT_NAME}
102 CONFIGURATIONS RelWithDebInfo
103 RUNTIME DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin"
104 ARCHIVE DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
105 LIBRARY DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
106 install (TARGETS ${PROJECT_NAME}
108 RUNTIME DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind"
109 ARCHIVE DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd"
110 LIBRARY DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
112 install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
114 DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
118 set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "Modules/${CURRENT_MODULE}")
119 set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}")
120 target_link_libraries (${PROJECT_NAME} ${USED_LIBS})