Changes On Branch cmake
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch cmake Excluding Merge-Ins

This is equivalent to a diff from 1128509646 to d167b79e66

2011-06-17
13:37
Fix the temporary filename generator so that it does not get stuck in a loop. Ticket [006e1df642d6246a03]. check-in: d3a1663a09 user: drh tags: trunk
2011-06-16
23:14
A CMake file from Thomas Schnurrenberger. Saved for reference. After some experimentation with cmake, the thinking is we will probably go in a different direction. Closed-Leaf check-in: d167b79e66 user: drh tags: cmake
23:12
Fix an issue with makeheaders that causes problems for windows when full pathnames are use with a colon in the device name. check-in: 1128509646 user: drh tags: trunk
19:51
Updates to the VC++ makefile. check-in: 82d741db3e user: drh tags: trunk

Added CMakeLists.txt.

            1  +PROJECT(Fossil C)
            2  +
            3  +CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
            4  +
            5  +# Build options.
            6  +OPTION(FOSSIL_BUILD_STATIC "Build Fossil static" TRUE)
            7  +OPTION(FOSSIL_ENABLE_SSL "Enable SSL support" FALSE)
            8  +
            9  +# Include some macros.
           10  +INCLUDE(CheckIncludeFile)
           11  +
           12  +# Source files which gets processed by the translate program.
           13  +SET(TRANS_SRCS
           14  +  add allrepo attach bag bisect blob branch browse captcha cgi checkin
           15  +  checkout clearsign clone comformat configure content db delta deltacmd
           16  +  descendants diff diffcmd doc encode event export file finfo glob graph gzip
           17  +  http http_socket http_transport import info leaf login main manifest md5
           18  +  merge merge3 name path pivot popen pqueue printf rebuild report rss schema
           19  +  search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main
           20  +  timeline tkt tktsetup undo update url user verify vfile wiki wikiformat
           21  +  winhttp xfer zip http_ssl
           22  +)
           23  +
           24  +# Additional source files.
           25  +SET(OTHER_SRCS
           26  +  src/sqlite3.c src/shell.c src/th.c src/th_lang.c
           27  +)
           28  +
           29  +# Add the resource file on windows to the source files.
           30  +IF(WIN32)
           31  +  SET(OTHER_SRCS ${OTHER_SRCS} win/fossil.rc)
           32  +ENDIF(WIN32)
           33  +
           34  +# Set compile definitions for src/shell.c.
           35  +SET(SHELL_COMP_DEFS
           36  +  main=sqlite3_shell
           37  +  SQLITE_OMIT_LOAD_EXTENSION=1
           38  +)
           39  +SET_SOURCE_FILES_PROPERTIES(src/shell.c
           40  +  PROPERTIES COMPILE_DEFINITIONS "${SHELL_COMP_DEFS}"
           41  +)
           42  +
           43  +# Set compile definitions for src/sqlite.c.
           44  +SET(SQLITE3_COMP_DEFS
           45  +  SQLITE_OMIT_LOAD_EXTENSION=1
           46  +  SQLITE_THREADSAFE=0
           47  +  SQLITE_DEFAULT_FILE_FORMAT=4
           48  +  SQLITE_ENABLE_STAT2
           49  +  SQLITE_ENABLE_LOCKING_STYLE=0
           50  +  localtime=fossil_localtime
           51  +)
           52  +SET_SOURCE_FILES_PROPERTIES(src/sqlite3.c
           53  +  PROPERTIES COMPILE_DEFINITIONS "${SQLITE3_COMP_DEFS}"
           54  +)
           55  +
           56  +# Build the makeheaders program.
           57  +ADD_EXECUTABLE(makeheaders src/makeheaders.c)
           58  +GET_TARGET_PROPERTY(MAKEHEADERS_LOC makeheaders LOCATION)
           59  +
           60  +# Build the translate program.
           61  +ADD_EXECUTABLE(translate src/translate.c)
           62  +GET_TARGET_PROPERTY(TRANSLATE_LOC translate LOCATION)
           63  +
           64  +# Build the mkindex program.
           65  +ADD_EXECUTABLE(mkindex src/mkindex.c)
           66  +GET_TARGET_PROPERTY(MKINDEX_LOC mkindex LOCATION)
           67  +
           68  +# Build the version program.
           69  +ADD_EXECUTABLE(version win/version.c)
           70  +GET_TARGET_PROPERTY(VERSION_LOC version LOCATION)
           71  +
           72  +# Custom command to build the VERSION.h include file.
           73  +ADD_CUSTOM_COMMAND(
           74  +  OUTPUT  ${PROJECT_BINARY_DIR}/VERSION.h
           75  +  DEPENDS version
           76  +          ${PROJECT_SOURCE_DIR}/manifest.uuid
           77  +          ${PROJECT_SOURCE_DIR}/manifest
           78  +  COMMAND ${VERSION_LOC}
           79  +  ARGS    ${PROJECT_SOURCE_DIR}/manifest.uuid
           80  +          ${PROJECT_SOURCE_DIR}/manifest
           81  +        > ${PROJECT_BINARY_DIR}/VERSION.h
           82  +  COMMENT "Generating VERSION.h ..."
           83  +)
           84  +
           85  +# Custom commands to build the translated sources.
           86  +FOREACH(SRC ${TRANS_SRCS})
           87  +
           88  +  ADD_CUSTOM_COMMAND(
           89  +    OUTPUT  ${PROJECT_BINARY_DIR}/${SRC}_.c
           90  +    DEPENDS translate
           91  +            ${PROJECT_SOURCE_DIR}/src/${SRC}.c
           92  +    COMMAND ${TRANSLATE_LOC}
           93  +    ARGS    ${PROJECT_SOURCE_DIR}/src/${SRC}.c
           94  +          > ${PROJECT_BINARY_DIR}/${SRC}_.c
           95  +    COMMENT "Translating src/${SRC}.c ..."
           96  +  )
           97  +
           98  +  # Build a list of all the results.
           99  +  SET(TRANS_SRC ${TRANS_SRC} ${PROJECT_BINARY_DIR}/${SRC}_.c)
          100  +
          101  +ENDFOREACH(SRC)
          102  +
          103  +# Custom command to build page_index.h.
          104  +ADD_CUSTOM_COMMAND(
          105  +  OUTPUT  ${PROJECT_BINARY_DIR}/page_index.h
          106  +  DEPENDS mkindex
          107  +          ${TRANS_SRC}
          108  +  COMMAND ${MKINDEX_LOC}
          109  +  ARGS    ${TRANS_SRC}
          110  +        > ${PROJECT_BINARY_DIR}/page_index.h
          111  +  COMMENT "Generating page_index.h ..."
          112  +)
          113  +ADD_CUSTOM_TARGET(page_index DEPENDS ${PROJECT_BINARY_DIR}/page_index.h)
          114  +
          115  +# Create an input file for the makeheaders program.
          116  +FILE(WRITE ${PROJECT_BINARY_DIR}/mkhdr.dat
          117  +"# Warning: this file is automatically generated by CMake.
          118  +${PROJECT_SOURCE_DIR}/src/sqlite3.h
          119  +${PROJECT_SOURCE_DIR}/src/th.h
          120  +${PROJECT_BINARY_DIR}/VERSION.h\n"
          121  +)
          122  +FOREACH(SRC ${TRANS_SRCS})
          123  +  FILE(APPEND ${PROJECT_BINARY_DIR}/mkhdr.dat
          124  +    "${PROJECT_BINARY_DIR}/${SRC}_.c:${PROJECT_BINARY_DIR}/${SRC}.h\n"
          125  +  )
          126  +  # Build a list of all the generated header files.
          127  +  SET(GEN_HDRS ${GEN_HDRS} ${PROJECT_BINARY_DIR}/${SRC}.h)
          128  +ENDFOREACH(SRC)
          129  +
          130  +# Custom commands to build the header files.
          131  +ADD_CUSTOM_COMMAND(
          132  +  OUTPUT  ${PROJECT_BINARY_DIR}/headers ${GEN_HDRS}
          133  +  DEPENDS makeheaders
          134  +          ${PROJECT_SOURCE_DIR}/src/sqlite3.h
          135  +          ${PROJECT_SOURCE_DIR}/src/th.h
          136  +          ${PROJECT_BINARY_DIR}/VERSION.h
          137  +          ${TRANS_SRC}
          138  +  COMMAND ${MAKEHEADERS_LOC}
          139  +  ARGS    -f mkhdr.dat
          140  +  COMMAND ${CMAKE_COMMAND}
          141  +  ARGS    -E echo Headers generated > ${PROJECT_BINARY_DIR}/headers
          142  +  COMMENT "Generating header files..."
          143  +)
          144  +ADD_CUSTOM_TARGET(hdr_files DEPENDS ${PROJECT_BINARY_DIR}/headers)
          145  +
          146  +# Make sure that the CMake output directory and the source file directory
          147  +# gets searched for include files.
          148  +SET(FOSSIL_INCL_DIRS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/src)
          149  +
          150  +# Disable internationalization.
          151  +SET(FOSSIL_COMP_DEFS FOSSIL_I18N=0)
          152  +
          153  +# Fossil requires the Zlib library.
          154  +CHECK_INCLUDE_FILE(zlib.h ZLIB_INTRINSIC)
          155  +IF(ZLIB_INTRINSIC)
          156  +  SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} z)
          157  +ELSE(ZLIB_INTRINSIC)
          158  +  FIND_PACKAGE(ZLIB REQUIRED)
          159  +  IF(ZLIB_FOUND)
          160  +    SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${ZLIB_LIBRARIES})
          161  +    SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${ZLIB_INCLUDE_DIRS})
          162  +  ENDIF(ZLIB_FOUND)
          163  +ENDIF(ZLIB_INTRINSIC)
          164  +
          165  +IF(FOSSIL_ENABLE_SSL)
          166  +  CHECK_INCLUDE_FILE(openssl/ssl.h OPENSSL_INTRINSIC)
          167  +  IF(OPENSSL_INTRINSIC)
          168  +    SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ssl crypto)
          169  +  ELSE(OPENSSL_INTRINSIC)
          170  +    FIND_PACKAGE(OpenSSL REQUIRED)
          171  +    IF(OPENSSL_FOUND)
          172  +      SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${OPENSSL_LIBRARIES})
          173  +      SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${OPENSSL_INCLUDE_DIR})
          174  +    ENDIF(OPENSSL_FOUND)
          175  +  ENDIF(OPENSSL_INTRINSIC)
          176  +  SET(FOSSIL_COMP_DEFS ${FOSSIL_COMP_DEFS} FOSSIL_ENABLE_SSL=1)
          177  +ENDIF(FOSSIL_ENABLE_SSL)
          178  +
          179  +# On Windows, Fossil requires the socket library.
          180  +IF(WIN32)
          181  +  SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ws2_32)
          182  +ENDIF(WIN32)
          183  +
          184  +# Set the include diretories.
          185  +INCLUDE_DIRECTORIES(BEFORE ${FOSSIL_INCL_DIRS})
          186  +
          187  +# Build the Fossil program.
          188  +ADD_EXECUTABLE(fossil ${TRANS_SRC} ${OTHER_SRCS})
          189  +
          190  +# Fossil depends on the generated header files.
          191  +ADD_DEPENDENCIES(fossil hdr_files page_index)
          192  +
          193  +# Set flags for building fossil static.
          194  +IF(FOSSIL_BUILD_STATIC)
          195  +  SET(FOSSIL_LINK_FLAGS ${FOSSIL_LINK_FLAGS} -static)
          196  +ENDIF(FOSSIL_BUILD_STATIC)
          197  +
          198  +# Set the additional link flags for the fossil target.
          199  +IF(DEFINED FOSSIL_LINK_FLAGS)
          200  +  SET_TARGET_PROPERTIES(fossil PROPERTIES
          201  +    LINK_FLAGS ${FOSSIL_LINK_FLAGS}
          202  +  )
          203  +ENDIF(DEFINED FOSSIL_LINK_FLAGS)
          204  +
          205  +# Set the compile definitions for the fossil target.
          206  +IF(DEFINED FOSSIL_COMP_DEFS)
          207  +  SET_TARGET_PROPERTIES(fossil PROPERTIES
          208  +    COMPILE_DEFINITIONS "${FOSSIL_COMP_DEFS}"
          209  +  )
          210  +ENDIF(DEFINED FOSSIL_COMP_DEFS)
          211  +
          212  +# Set the additional link libraries for the fossil target.
          213  +IF(DEFINED FOSSIL_LINK_LIBS)
          214  +  TARGET_LINK_LIBRARIES(fossil ${FOSSIL_LINK_LIBS})
          215  +ENDIF(DEFINED FOSSIL_LINK_LIBS)