[8cc501] | 1 | # -*- mode: cmake; -*- |
---|
| 2 | # |
---|
| 3 | |
---|
| 4 | function(whereami MSG) |
---|
| 5 | message(STATUS "====== ${MSG} ======") |
---|
| 6 | endfunction() |
---|
| 7 | |
---|
| 8 | ################################################################# |
---|
| 9 | ### create the Singular version file version.h.tmp |
---|
| 10 | ### and copy it only if it has changed |
---|
| 11 | ### the reduces the number of recompiles |
---|
| 12 | ### |
---|
| 13 | function(singular_mk_version GEN_H_FILE) |
---|
| 14 | set(_filenameTmp ${CMAKE_CURRENT_BINARY_DIR}/version.h.tmp) |
---|
| 15 | set(_GEN_H_FILE ${CMAKE_CURRENT_BINARY_DIR}/version.h) |
---|
| 16 | message(STATUS "Creating version file '${_GEN_H_FILE}'") |
---|
| 17 | #set(_CC_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE} ${ADD_DEFS}") |
---|
| 18 | #set(_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE} ${ADD_DEFS}") |
---|
| 19 | set(_CC_FLAGS "${CMAKE_C_FLAGS} ${ADD_DEFS}") |
---|
| 20 | set(_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADD_DEFS}") |
---|
| 21 | set(_CC "${CMAKE_C_COMPILER} ${_CC_FLAGS}") |
---|
| 22 | set(_CXX "${CMAKE_CXX_COMPILER} ${_CXX_FLAGS}") |
---|
| 23 | |
---|
| 24 | set(_version_file "${CMAKE_CURRENT_SOURCE_DIR}/svnver") |
---|
| 25 | if(EXISTS ${_version_file}) |
---|
| 26 | file(READ ${_version_file} _data) |
---|
| 27 | string(REGEX REPLACE "\n$" "" _version ${_data}) |
---|
| 28 | else(EXISTS ${_version_file}) |
---|
| 29 | set(_version "2009102101") |
---|
| 30 | endif(EXISTS ${_version_file}) |
---|
| 31 | |
---|
| 32 | write_file(${_filenameTmp} "/* generated by cmake */\n") |
---|
| 33 | write_file(${_filenameTmp} "#define feVersionId \"${_version}\"" APPEND) |
---|
| 34 | write_file(${_filenameTmp} "#define CC \"${_CC}\"" APPEND) |
---|
| 35 | write_file(${_filenameTmp} "#define CXX \"${_CXX}\"" APPEND) |
---|
| 36 | write_file(${_filenameTmp} "#define CC_FLAGS \"${_CC_FLAGS}\"" APPEND) |
---|
| 37 | write_file(${_filenameTmp} "#define CXX_FLAGS \"${_CXX_FLAGS}\"" APPEND) |
---|
| 38 | execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different |
---|
| 39 | "${_filenameTmp}" "${_GEN_H_FILE}" |
---|
| 40 | #OUTPUT_QUIET ERROR_QUIET |
---|
| 41 | ) |
---|
| 42 | set(${GEN_H_FILE} ${${GEN_H_FILE}} PARENT_SCOPE) |
---|
| 43 | endfunction() |
---|
| 44 | |
---|
| 45 | # |
---|
| 46 | # |
---|
| 47 | # |
---|
| 48 | macro(singular_generate_incfile TARGET GEN_FILE GENCMD NAME ) |
---|
| 49 | message(STATUS "generate incfile ${NAME}.inc ...") |
---|
| 50 | #set(_GEN_TARGET "${NAME}-inc") |
---|
| 51 | set(_GEN_FILE ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.inc) |
---|
| 52 | message(STATUS "Generate ${GENCMD} to ${_GEN_FILE}.") |
---|
| 53 | |
---|
| 54 | add_custom_command(OUTPUT ${_GEN_FILE} |
---|
| 55 | #add_custom_target(${TARGET} |
---|
| 56 | COMMAND ${GENCMD} |
---|
| 57 | DEPENDS ${GENCMD} |
---|
| 58 | COMMENT "Creating '${NAME}.inc'..." |
---|
| 59 | ) |
---|
| 60 | add_custom_target(${TARGET} |
---|
| 61 | DEPENDS ${_GEN_FILE} |
---|
| 62 | ) |
---|
| 63 | |
---|
| 64 | # add_custom_target(${TARGET} DEPENDS ${GEN_FILE}) |
---|
| 65 | set(${GEN_FILE} ${_GEN_FILE}) |
---|
| 66 | #set(${GEN_TARGET} ${_GEN_TARGET} PARENT_SCOPE) |
---|
| 67 | endmacro() |
---|
| 68 | |
---|
| 69 | # |
---|
| 70 | # |
---|
| 71 | # |
---|
| 72 | function(add_index GEN_FILE FEOPT_CMD INFILE ) |
---|
| 73 | message(STATUS "add_index ${INFILE}...") |
---|
| 74 | set(_GEN_FILE ${CMAKE_CURRENT_BINARY_DIR}/${INFILE}.inc) |
---|
| 75 | #set(_GEN_CMD ${CMAKE_CURRENT_BINARY_DIR}/${INFILE}) |
---|
| 76 | message(STATUS "Generate ${FEOPT_CMD}.") |
---|
| 77 | |
---|
| 78 | #set(_cmd_srcs ${CMAKE_CURRENT_SOURCE_DIR}/feOpt.cc mod2.h) |
---|
| 79 | #add_definitions( -DGENERATE_OPTION_INDEX ${ADDDEFINE} ) |
---|
| 80 | #include_directories(${CMAKE_SOURCE_DIR}/kernel) |
---|
| 81 | #add_executable(${INFILE} ${_cmd_srcs}) |
---|
| 82 | # //-DGENERATE_OPTION_INDEX -I../kernel |
---|
| 83 | add_custom_command( |
---|
| 84 | OUTPUT ${_GEN_FILE} |
---|
| 85 | COMMAND ${FEOPT_CMD} |
---|
| 86 | DEPENDS ${FEOPT_CMD} |
---|
| 87 | COMMENT "Compiling '${INFILE}'..." |
---|
| 88 | ) |
---|
| 89 | |
---|
| 90 | set(${GEN_FILE} ${_GEN_FILE} PARENT_SCOPE) |
---|
| 91 | endfunction() |
---|
| 92 | |
---|
| 93 | # |
---|
| 94 | # generate iparith table |
---|
| 95 | # |
---|
| 96 | function(singular_gen_iparith GEN_TARGET GEN_FILE GEN_CMD ) |
---|
| 97 | message(STATUS "singular_gen_iparith ${INFILE}...") |
---|
| 98 | set(_GEN_TARGET "iparith-inc") |
---|
| 99 | set(_GEN_FILE "${CMAKE_CURRENT_BINARY_DIR}/iparith.inc") |
---|
| 100 | set(_GEN_CMD "gentable") |
---|
| 101 | |
---|
| 102 | message(STATUS "out: ${_GEN_FILE}") |
---|
| 103 | message(STATUS "in: ${INFILES}") |
---|
| 104 | #message(STATUS "dep: ${DEPENDENCIES}") |
---|
| 105 | message(STATUS "argv: ${ARGV}") |
---|
| 106 | message(STATUS "argn: ${ARGC}") |
---|
| 107 | message(STATUS "argn: '${ARGN}'") |
---|
| 108 | message(STATUS "cxxFlags: '${CXX_FLAGS}'") |
---|
| 109 | set(_gen_srcs ${ARGN}) |
---|
| 110 | |
---|
| 111 | # set(_gen_srcs claptmpl.cc iparith.cc ipconv.cc tok.h mpsr_Tok.cc grammar.h mod2.h) |
---|
| 112 | #set(_gen_srcs ${ARGN}) |
---|
| 113 | #add_executable(${_GEN_CMD} ${_gen_srcs}) |
---|
| 114 | #set_target_properties(gentable PROPERTIES COMPILE_FLAGS "-DGENTABLE") |
---|
| 115 | # |
---|
| 116 | # ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} -DGENTABLE \ |
---|
| 117 | # -o gentable claptmpl.o iparith.cc tesths.cc mpsr_Tok.cc \ |
---|
| 118 | # ${OBJS} ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o |
---|
| 119 | # ./gentable |
---|
| 120 | # /bin/rm -f gentable gentable.exe |
---|
| 121 | |
---|
| 122 | message(STATUS "src: '${_gen_srcs}'") |
---|
| 123 | add_custom_command( |
---|
| 124 | OUTPUT ${_GEN_FILE} |
---|
| 125 | COMMAND ${GEN_CMD} |
---|
| 126 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
---|
| 127 | DEPENDS ${GEN_CMD} |
---|
| 128 | MAIN_DEPENDENCY ${GEN_CMD} ${_gen_srcs} |
---|
| 129 | COMMENT "generating arithmetic table '${_GEN_FILE}'...") |
---|
| 130 | |
---|
| 131 | message(STATUS "src: '${_gen_srcs}'") |
---|
| 132 | set(${GEN_FILE} ${_GEN_FILE} PARENT_SCOPE) |
---|
| 133 | set(${GEN_TARGET} ${_GEN_TARGET} PARENT_SCOPE) |
---|
| 134 | endfunction() |
---|
| 135 | |
---|
| 136 | ################################################################# |
---|
| 137 | ### copy/install Singular(LIB)s -files |
---|
| 138 | ### |
---|
| 139 | function(singular_copy_LIB FILES) |
---|
| 140 | |
---|
| 141 | message(STATUS "Copying Singular library files.") |
---|
| 142 | foreach(loop_var ${ARGV}) |
---|
| 143 | #message(STATUS "Copying ${loop_var}") |
---|
| 144 | execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different |
---|
| 145 | "${loop_var}" "${CMAKE_CURRENT_BINARY_DIR}" |
---|
| 146 | #OUTPUT_QUIET ERROR_QUIET |
---|
| 147 | ) |
---|
| 148 | #configure_file(${loop_var} ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) |
---|
| 149 | endforeach(loop_var ${ARGV}) |
---|
| 150 | endfunction() |
---|
| 151 | |
---|
| 152 | ################################################################# |
---|
| 153 | ### create the Singular LIB file all.lib |
---|
| 154 | ### |
---|
| 155 | macro(singular_mk_allLIB TARGET OUT_FILE LIBFILES) |
---|
| 156 | #set(_GEN_TARGET "all.lib") |
---|
| 157 | #set(${GEN_FILE} "all.lib") |
---|
| 158 | set(_tmplFile "${CMAKE_CURRENT_SOURCE_DIR}/${OUT_FILE}.tmpl") |
---|
| 159 | set(_tmpFile "${CMAKE_CURRENT_BINARY_DIR}/${OUT_FILE}.tmp") |
---|
| 160 | set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${OUT_FILE}") |
---|
| 161 | |
---|
| 162 | set(i 0) |
---|
| 163 | file(WRITE ${_tmpFile} "") |
---|
| 164 | message(STATUS "Creating '${OUT_FILE}' ${_tmpFile}") |
---|
| 165 | execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${_tmplFile}" "${_tmpFile}") |
---|
| 166 | foreach(loop_var ${ARGV}) |
---|
| 167 | math(EXPR i ${i}+1) |
---|
| 168 | if( ${i} GREATER 3) |
---|
| 169 | string(REGEX REPLACE "^.*/" "" filename ${loop_var}) |
---|
| 170 | write_file(${_tmpFile} "LIB \"${filename}\";" APPEND) |
---|
| 171 | endif( ${i} GREATER 2) |
---|
| 172 | endforeach(loop_var) |
---|
| 173 | |
---|
| 174 | execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different |
---|
| 175 | "${_tmpFile}" "${_outFile}" |
---|
| 176 | ) |
---|
| 177 | #COMMAND ${CMAKE_COMMAND} -E remove "${_tmpFile}" |
---|
| 178 | add_custom_target(${TARGET}) |
---|
| 179 | endmacro() |
---|
| 180 | |
---|