# Minimum required version of CMake CMAKE_MINIMUM_REQUIRED(VERSION 2.8) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) # set CMake project name PROJECT(TKHTML) SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/CMake") IF(NOT TCL_LIBRARY OR NOT TCL_STUB_LIBRARY OR NOT TK_LIBRARY OR NOT TK_STUB_LIBRARY OR NOT TCL_INCLUDE_DIRS OR NOT TK_INCLUDE_PATH OR NOT TCL_TCLSH OR NOT TCL_WISH_EXECUTABLE) find_package(TCL) ENDIF(NOT TCL_LIBRARY OR NOT TCL_STUB_LIBRARY OR NOT TK_LIBRARY OR NOT TK_STUB_LIBRARY OR NOT TCL_INCLUDE_DIRS OR NOT TK_INCLUDE_PATH OR NOT TCL_TCLSH OR NOT TCL_WISH_EXECUTABLE) IF(TK_SYSTEM_GRAPHICS MATCHES "x11") find_package(X11) ENDIF(TK_SYSTEM_GRAPHICS MATCHES "x11") include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR} ${TCL_INCLUDE_DIRS} ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR} ) SET(TKHTML_PKGNAME Tkhtml) SET(TKHTML_PKGVERSION "3.0") # Windows specific flags IF(WIN32) SET(TKHTML_CFLAGS "${TKHTML_CFLAGS} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEP -Ot -Oi -fp:strict -Gs -GS -GL -DUSE_TCL_STUBS -DUSE_TK_STUBS -D__WIN32__") SET(TKHTML_CFLAGS "${TKHTML_CFLAGS} -Dinline=__inline -DBUILD_tkhtml") ENDIF(WIN32) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TKHTML_CFLAGS}") ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/htmldefaultstyle.c COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_SOURCE_DIR}/src/mkdefaultstyle.tcl > ${CMAKE_CURRENT_BINARY_DIR}/htmldefaultstyle.c DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/mkdefaultstyle.tcl ${TCL_TCLSH} ) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/htmltokens.c ${CMAKE_CURRENT_BINARY_DIR}/htmltokens.h COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_SOURCE_DIR}/src/tokenlist.txt DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/tokenlist.txt ${TCL_TCLSH} ) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cssprop.c ${CMAKE_CURRENT_BINARY_DIR}/cssprop.h COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_SOURCE_DIR}/src/cssprop.tcl DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/htmltokens.c ${CMAKE_CURRENT_SOURCE_DIR}/src/cssprop.tcl ${TCL_TCLSH} ) SET(TKHTML_SRCS ${CMAKE_CURRENT_BINARY_DIR}/htmldefaultstyle.c ${CMAKE_CURRENT_BINARY_DIR}/cssprop.c src/css.c src/cssdynamic.c src/cssparser.c src/csssearch.c src/htmldecode.c src/htmldraw.c src/htmlfloat.c src/htmlhash.c src/htmlimage.c src/htmlinline.c src/htmllayout.c src/htmlparse.c src/htmlprop.c src/htmlstyle.c src/htmltable.c src/htmltagdb.c src/htmltcl.c src/htmltext.c src/htmltree.c src/htmlutil.c src/restrack.c src/swproc.c ) IF(NOT LIB_DIR) IF(NOT WIN32) SET(LIB_DIR lib) ELSE(NOT WIN32) SET(LIB_DIR bin) ENDIF(NOT WIN32) ENDIF(NOT LIB_DIR) add_library(Tkhtml SHARED ${TKHTML_SRCS}) IF(TK_SYSTEM_GRAPHICS MATCHES "aqua") # Need the X emulation functions from Tk when using aqua - the stubs # library doesn't seem to supply them target_link_libraries(Tkhtml ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY} ${TK_LIBRARY} ${X11_LIBRARIES}) ELSE(TK_SYSTEM_GRAPHICS MATCHES "aqua") target_link_libraries(Tkhtml ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY} ${X11_LIBRARIES}) ENDIF(TK_SYSTEM_GRAPHICS MATCHES "aqua") SET_TARGET_PROPERTIES(Tkhtml PROPERTIES VERSION ${TKHTML_PKGVERSION}) SET_PROPERTY(TARGET Tkhtml APPEND PROPERTY COMPILE_DEFINITIONS USE_TCL_STUBS) SET_PROPERTY(TARGET Tkhtml APPEND PROPERTY COMPILE_DEFINITIONS USE_TK_STUBS) install(TARGETS Tkhtml RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) TCL_PKGINDEX(Tkhtml ${TKHTML_PKGNAME} ${TKHTML_PKGVERSION}) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tkhtml.n COMMAND ${TCL_TCLSH} ${CMAKE_CURRENT_SOURCE_DIR}/doc/macros.tcl -nroff ${CMAKE_CURRENT_SOURCE_DIR}/doc/html.man > ${CMAKE_CURRENT_BINARY_DIR}/tkhtml.n ) ADD_CUSTOM_TARGET(tkhtml_n_gen ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tkhtml.n) if(NOT MAN_DIR) SET(MAN_DIR man) endif(NOT MAN_DIR) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tkhtml.n DESTINATION ${MAN_DIR}/mann)