cmake_minimum_required(VERSION 3.0) cmake_policy(SET CMP0048 NEW) if(WIN32) include(cmake/PrecompiledHeader.cmake) endif() list(APPEND EXTRA_DIST tools/genenums.py tools/glade2c.py tools/xml2h.py plat/win32/installer.iss.in plat/win32/istrans.sh plat/win32/mingw-configure ) # zzz # if MOO_OS_WIN32 # plat/win32/installer.iss: $(top_srcdir)/plat/win32/installer.iss.in $(top_builddir)/config.status # $(AM_V_at)$(MKDIR_P) plat/win32 # $(AM_V_GEN)cd $(top_builddir) && ./config.status --silent --file=plat/win32/installer.iss # installer: plat/win32/installer.iss install # $(MEDIT_INNO_COMPILER) plat/win32/installer.iss # copy: # cp moo/medit.exe "/win/Program Files (x86)/medit/bin/" # bd_tmpdir = medit-win-dist-tmp # bd_distdir = $(PACKAGE)-$(VERSION) # bd_pzip = $(PACKAGE)-portable-$(VERSION) # bd_zip = $(PACKAGE)-$(VERSION) # portable: install # rm -fr $(bd_tmpdir) # mkdir $(bd_tmpdir) # cp -lR ${prefix} $(bd_tmpdir)/$(bd_distdir) # cd $(bd_tmpdir) && zip -r9 $(bd_zip).zip $(bd_distdir) # echo "This file enables portable mode for medit" > $(bd_tmpdir)/$(bd_distdir)/bin/$(MEDIT_PORTABLE_MAGIC_FILE_NAME) # cd $(bd_tmpdir) && zip -r9 $(bd_pzip).zip $(bd_distdir) # mv $(bd_tmpdir)/$(bd_pzip).zip $(bd_tmpdir)/$(bd_zip).zip . # rm -fr $(bd_tmpdir) # bdist: installer portable # endif # zzz @MOO_PO_SUBDIRS_RULE@ set(MOO_MAJOR_VERSION 1) set(MOO_MINOR_VERSION 2) set(MOO_MICRO_VERSION 93) set(_moo_version_suffix_ "-devel") set(MOO_MODULE_MAJOR_VERSION 2) set(MOO_MODULE_MINOR_VERSION 0) set(MOO_VERSION "${MOO_MAJOR_VERSION}.${MOO_MINOR_VERSION}.${MOO_MICRO_VERSION}") set(MOO_DISPLAY_VERSION "${MOO_VERSION}${_moo_version_suffix_}") project(medit VERSION ${MOO_VERSION}) # keep in sync with po/maintain set(MOO_PACKAGE_NAME "medit-1") set(MOO_WEBSITE "http://mooedit.sourceforge.net/") set(MOO_WEB_CONTACT "http://mooedit.sourceforge.net/contact.html") set(MOO_EMAIL "emuntyan@users.sourceforge.net") set(MOO_COPYRIGHT "2004-2015 Yevgen Muntyan <${MOO_EMAIL}>") set(MOO_PREFS_XML_FILE_NAME "prefs.xml") set(MOO_STATE_XML_FILE_NAME "state.xml") set(MOO_NAMED_SESSION_XML_FILE_NAME "session-%s.xml") set(MOO_SESSION_XML_FILE_NAME "session.xml") set(MEDIT_PORTABLE_MAGIC_FILE_NAME "medit-portable") set(MEDIT_PORTABLE_DATA_DIR "medit-portable-data") set(MEDIT_PORTABLE_CACHE_DIR "medit-portable-cache") set(MOO_DATA_DIR "share/${MOO_PACKAGE_NAME}") set(MOO_LIB_DIR "lib/${MOO_PACKAGE_NAME}") set(MOO_DOC_DIR "share/doc/${MOO_PACKAGE_NAME}") set(MOO_HELP_DIR "${MOO_DOC_DIR}/help") set(MOO_TEXT_LANG_FILES_DIR "${MOO_DATA_DIR}/language-specs") set(MOO_PYTHON_PLUGIN_DIR "${MOO_DATA_DIR}/plugins") set(MOO_PYTHON_LIB_DIR "${MOO_DATA_DIR}/python") set(MOO_INSTALL_EVERYTHING TRUE CACHE BOOL "Install gtk, python, langs, everything") if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() if(WIN32 AND CMAKE_CONFIGURATION_TYPES) set(CMAKE_CONFIGURATION_TYPES Release Debug) set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configurations to what we need" FORCE) endif() set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) if(WIN32) set(MOO_OS_WIN32 TRUE) else() set(MOO_OS_UNIX TRUE) endif() set(MOO_BUILD_FROM_MSVC ${MOO_OS_WIN32} CACHE BOOL "Create a win32 build from MSVC gtk build") if(NOT MOO_BUILD_FROM_MSVC) find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED gtk+-2.0) pkg_check_modules(GMODULE REQUIRED gmodule-2.0) #execute_process( # COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=glib_genmarshal glib-2.0 # OUTPUT_VARIABLE GLIB_GENMARSHAL # OUTPUT_STRIP_TRAILING_WHITESPACE # RESULT_VARIABLE RESULT) #if(NOT RESULT EQUAL 0) # MESSAGE(FATAL_ERROR "Could not find glib-genmarshal") #endif() execute_process( COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=glib_mkenums glib-2.0 OUTPUT_VARIABLE GLIB_MKENUMS OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE RESULT) if(NOT RESULT EQUAL 0) MESSAGE(FATAL_ERROR "Could not find glib-mkenums") endif() pkg_check_modules(XLIB x11 xext xrender ice sm) pkg_check_modules(LIBXML2 REQUIRED libxml-2.0) else() set(MOO_GTK_DIR "C:/gtk-build/gtk/x64/release" CACHE PATH "Gtk root dir") set(MOO_GTK_DIST_DIR "C:/gtk-build/gtk/x64/bdist" CACHE PATH "Gtk binary dir") set(MOO_PYTHON_DIST_DIR "C:/projects/python-bdist" CACHE PATH "Python binary dir") set(GTK_LIBRARIES atk-1.0 cairo gdk_pixbuf-2.0 gdk-win32-2.0 gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0 gthread-2.0 gtk-win32-2.0 iconv intl libffi libpng16 pango-1.0 pangocairo-1.0 pixman-1 zlib1) set(LIBXML2_LIBRARIES libxml2) #set(CMAKE_INSTALL_PREFIX ${MOO_GTK_DIR} CACHE PATH "CMake install prefix" FORCE) include_directories(SYSTEM "${MOO_GTK_DIR}/include") include_directories(SYSTEM "${MOO_GTK_DIR}/include/glib-2.0") include_directories(SYSTEM "${MOO_GTK_DIR}/lib/glib-2.0/include") include_directories(SYSTEM "${MOO_GTK_DIR}/lib/gtk-2.0/include") include_directories(SYSTEM "${MOO_GTK_DIR}/include/gtk-2.0") include_directories(SYSTEM "${MOO_GTK_DIR}/include/gdk-pixbuf-2.0") include_directories(SYSTEM "${MOO_GTK_DIR}/include/pango-1.0") include_directories(SYSTEM "${MOO_GTK_DIR}/include/atk-1.0") include_directories(SYSTEM "${MOO_GTK_DIR}/include/cairo") include_directories(SYSTEM "${MOO_GTK_DIR}/include/libxml2") set(GTK_LIBRARY_DIRS "${MOO_GTK_DIR}/lib") set(ENV{PATH} "ENV{PATH};${MOO_GTK_DIR}/bin") include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/moo/mooutils/moowin32/ms") foreach(var CMAKE_C_FLAGS CMAKE_CXX_FLAGS) set(${var} "${${var}} /MP /Zo /wd4996") # "C4706: assignment within conditional expression" - it's a good warning, it catches # 'if(x = 5)'. Unfortunately it also complains about 'while ((p = x()))' which is fine # and is used a lot. Additional parentheses don't silence it, unlike with gcc. set(${var} "${${var}} /W4 /WX /wd4244 /wd4800 /wd4100 /wd4127 /wd4054 /wd4055 /wd4306 /wd4706 /wd4125 /wd4389 /wd4152 /wd4505") set(${var}_RELEASE "${${var}_RELEASE} /Zi") string(REPLACE "/Ob1" "/Ob2" ${var}_RELWITHDEBINFO "${${var}_RELWITHDEBINFO}") if (true) # /MDd means link with the debug crt library, which we don't want; and /D_DEBUG forces # that as well because of some includes; turn them off. string(REPLACE "/MDd" "/MD" ${var}_DEBUG "${${var}_DEBUG}") string(REPLACE "/D_DEBUG" "/DENABLE_DEBUG=1 /DDEBUG=1 /DMOO_DEBUG=1" ${var}_DEBUG "${${var}_DEBUG}") else() string(REPLACE "/D_DEBUG" "/DENABLE_DEBUG=1 /DDEBUG=1 /DMOO_DEBUG=1 /D_DEBUG" ${var}_DEBUG "${${var}_DEBUG}") endif() endforeach() foreach(mode EXE MODULE SHARED STATIC) set(CMAKE_${mode}_LINKER_FLAGS "${CMAKE_${mode}_LINKER_FLAGS} /DEBUG") endforeach() endif() find_program(GLIB_GENMARSHAL glib-genmarshal HINTS ${MOO_GTK_DIR}/bin/glib-genmarshal.exe) find_program(GDK_PIXBUF_CSOURCE gdk-pixbuf-csource HINTS ${MOO_GTK_DIR}/bin/gdk-pixbuf-csource.exe) set(PythonInterp_FIND_VERSION TRUE) set(PythonInterp_FIND_VERSION_MAJOR 2) find_package(PythonInterp REQUIRED) set(MOO_PYTHON "${PYTHON_EXECUTABLE}") set(MOO_ENABLE_PYTHON TRUE CACHE BOOL "Use python") add_definitions(-DHAVE_CONFIG_H=1 -DXDG_PREFIX=_moo_edit_xdg "-DG_LOG_DOMAIN=\"Moo\"") if(WIN32) add_definitions(-DUNICODE=1 -D_UNICODE=1 -D__WIN32__=1 -DSTRICT=1 -D_CRT_SECURE_NO_WARNINGS=1 -D_CRT_NONSTDC_NO_WARNINGS=1) set(MOO_NEED_GETTIMEOFDAY TRUE) set(HAVE_UNISTD_H TRUE) set(HAVE_BIND_TEXTDOMAIN_CODESET TRUE) list(APPEND MEDIT_LIBS Shlwapi.lib) endif(WIN32) add_subdirectory(api) add_subdirectory(doc) include_directories("${CMAKE_BINARY_DIR}/doc") add_definitions(-DMOO_ENABLE_HELP) set(ENABLE_NLS TRUE CACHE BOOL "Enable translations") if (ENABLE_NLS) find_package(Gettext REQUIRED) if(NOT GETTEXT_FOUND) MESSAGE(FATAL_ERROR "gettext executable not found") endif() set(GETTEXT_PACKAGE "${MOO_PACKAGE_NAME}") set(GETTEXT_PACKAGE_GSV "${MOO_PACKAGE_NAME}-gsv") add_subdirectory(po) add_subdirectory(po-gsv) endif() add_subdirectory(moo) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) if(WIN32) install(DIRECTORY plat/win32/medit-data/bin plat/win32/medit-data/etc DESTINATION .) endif(WIN32) if(WIN32) include(plat/win32/installer.cmake) endif()