19286d7c |
1 | # Get all used packages from toolkit |
2 | foreach (MODULE ${TOOLKIT_MODULES}) |
3 | if (WIN32) |
4 | list (APPEND PRECOMPILED_DEFS "-D__${MODULE}_DLL") |
5 | endif() |
6 | list (APPEND COMPILER_DIRECTORIES "${OCCT_SOURCE_DIR}/src/${MODULE}") |
7 | endforeach() |
8 | string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}") |
9 | |
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}" ) |
16 | endif() |
17 | endforeach() |
18 | |
19 | # Get all source files from used packages |
20 | foreach (CDIR ${COMPILER_DIRECTORIES}) |
21 | get_filename_component (CDirName ${CDIR} NAME) |
22 | set (CDIR_files) |
d7b60a9f |
23 | set (HDIR_files) |
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") |
19286d7c |
31 | |
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}) |
51 | endif() |
52 | endforeach() |
53 | endif() |
54 | endif() |
55 | |
d7b60a9f |
56 | list(APPEND HDIR_files ${HFiles} ${LXXFiles} ${GXXFiles}) |
57 | list( APPEND CDIR_files ${CFiles}) |
58 | if(APPLE) |
59 | list( APPEND CDIR_files ${MFiles}) |
19286d7c |
60 | endif() |
61 | |
d7b60a9f |
62 | foreach(HFile ${HDIR_files}) |
63 | list( APPEND USED_INCFILES ${CDIR}/${HFile} ) |
64 | SOURCE_GROUP ("Header Files\\${CDirName}" FILES ${CDIR}/${HFile}) |
65 | endforeach(HFile) |
19286d7c |
66 | |
d7b60a9f |
67 | foreach(CFile ${CDIR_files}) |
68 | list( APPEND USED_SRCFILES ${CDIR}/${CFile} ) |
69 | SOURCE_GROUP ("Source Files\\${CDirName}" FILES ${CDIR}/${CFile}) |
70 | endforeach(CFile) |
71 | endforeach(CDIR) |
19286d7c |
72 | |
d7b60a9f |
73 | list( FIND USED_TOOLKITS ${PROJECT_NAME} isFOUND) |
19286d7c |
74 | |
d7b60a9f |
75 | OCCT_MAKE_BUILD_POSTFIX() |
19286d7c |
76 | # Create project for toolkit |
77 | if ("${USED_TOOLKITS}" STREQUAL "" OR NOT ${isFOUND} EQUAL -1) |
78 | foreach (MODULE ${OCCT_MODULES}) |
79 | list (FIND ${MODULE}_TOOLKITS ${PROJECT_NAME} isFOUND) |
80 | if (NOT ${isFOUND} EQUAL -1) |
81 | set (CURRENT_MODULE ${MODULE}) |
82 | endif() |
83 | endforeach() |
84 | if (isEXE) |
d7b60a9f |
85 | add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES}) |
86 | install (TARGETS ${PROJECT_NAME} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}" ) |
19286d7c |
87 | else() |
d7b60a9f |
88 | add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES}) |
19286d7c |
89 | install (TARGETS ${PROJECT_NAME} |
90 | RUNTIME DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}" |
91 | ARCHIVE DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}" |
92 | LIBRARY DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}") |
93 | if (MSVC) |
94 | install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}/${PROJECT_NAME}.pdb |
95 | CONFIGURATIONS Debug |
96 | DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}") |
97 | endif() |
98 | endif() |
99 | |
100 | set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "Modules/${CURRENT_MODULE}") |
101 | set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}") |
19286d7c |
102 | target_link_libraries (${PROJECT_NAME} ${USED_LIBS}) |
103 | endif() |