1 | # -*- mode: cmake; -*- |
---|
2 | # |
---|
3 | # |
---|
4 | # |
---|
5 | function(factory_header GEN_H_FILE TEMPLATE_FILE) |
---|
6 | string(REGEX REPLACE ".template" "" TEMPLATE_BASE ${TEMPLATE_FILE}) |
---|
7 | set(_GEN_H_FILE ${CMAKE_CURRENT_BINARY_DIR}/${TEMPLATE_BASE}.h) |
---|
8 | set(MAKEHEADER_CMD "${CMAKE_CURRENT_SOURCE_DIR}/bin/makeheader") |
---|
9 | |
---|
10 | set(_OPT "-I${CMAKE_CURRENT_SOURCE_DIR}") |
---|
11 | set(_OPT "${_OPT} -I${CMAKE_CURRENT_BINARY_DIR}") |
---|
12 | add_custom_command(OUTPUT ${_GEN_H_FILE} |
---|
13 | COMMAND ${MAKEHEADER_CMD} ${_OPT} ${CMAKE_CURRENT_SOURCE_DIR}/${TEMPLATE_FILE} ${_GEN_H_FILE} |
---|
14 | |
---|
15 | DEPENDS ${TEMPLATE_FILE} |
---|
16 | COMMENT "Compiling '${TEMPLATE_FILE}'..." |
---|
17 | ) |
---|
18 | |
---|
19 | set(${GEN_H_FILE} ${_GEN_H_FILE} PARENT_SCOPE) |
---|
20 | endfunction() |
---|
21 | |
---|
22 | function(factory_gen_gmp_header GEN_TARGET GEN_H_FILE) |
---|
23 | set(_GEN_H_FILE ${CMAKE_CURRENT_BINARY_DIR}/cf_gmp.h) |
---|
24 | #try_compile(RESULT_VAR bindir srcdir |
---|
25 | # projectName <targetname> [CMAKE_FLAGS <Flags>] |
---|
26 | # [OUTPUT_VARIABLE var]) |
---|
27 | #try_compile(RESULT_VAR ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} |
---|
28 | # projectName cf_gmp |
---|
29 | execute_process(COMMAND ${CMAKE_CXX_COMPILER} -M ${CMAKE_CURRENT_SOURCE_DIR}/gen_cf_gmp.cc |
---|
30 | RESULT_VARIABLE RESULT_VAR |
---|
31 | OUTPUT_VARIABLE OUTPUT_VAR) |
---|
32 | string(REGEX REPLACE "gen_cf_gmp.o:" "" OUTPUT_VAR ${OUTPUT_VAR}) |
---|
33 | string(REGEX REPLACE "[\\\n]" " " OUTPUT_VAR ${OUTPUT_VAR}) |
---|
34 | string(REGEX REPLACE "[ ]+" ";" _OUTPUT_VAR ${OUTPUT_VAR}) |
---|
35 | |
---|
36 | set(_gmp_headers "") |
---|
37 | |
---|
38 | foreach(_loop_var ${_OUTPUT_VAR}) |
---|
39 | if( ${_loop_var} MATCHES "gmp.*h") |
---|
40 | message(STATUS "==${_loop_var}=") |
---|
41 | set(_gmp_headers ${_gmp_headers} ${_loop_var}) |
---|
42 | #list(APPEND _gmp_headers ${_loop_var}) |
---|
43 | endif( ${_loop_var} MATCHES "gmp.*h") |
---|
44 | endforeach(_loop_var) |
---|
45 | message(STATUS "'${_gmp_headers}'") |
---|
46 | |
---|
47 | add_custom_command(OUTPUT ${_GEN_H_FILE} |
---|
48 | COMMAND cat ${_gmp_headers} | grep -v __GMP_DECLSPEC_XX > ${_GEN_H_FILE} |
---|
49 | |
---|
50 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
---|
51 | COMMENT "Create cf_gmp.h" |
---|
52 | ) |
---|
53 | message(STATUS "====================================") |
---|
54 | message(STATUS "'${RESULT_VAR}'") |
---|
55 | #message(STATUS "'${_OUTPUT_VAR}'") |
---|
56 | message(STATUS "====================================") |
---|
57 | |
---|
58 | set(${GEN_TARGET} "generate_factory" PARENT_SCOPE) |
---|
59 | add_custom_target(generate_factory DEPENDS ${_GEN_H_FILE} ) |
---|
60 | set(${GEN_H_FILE} ${_GEN_H_FILE} PARENT_SCOPE) |
---|
61 | endfunction() |
---|