wesnoth/CMakeLists.txt

333 lines
13 KiB
CMake
Raw Normal View History

# this is a preliminary version of the CMake build stuff and was originally created by am2cmake
# use our own version of FindBoost.cmake
2008-05-04 20:32:01 +00:00
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
# find all deps needed
FIND_PACKAGE( SDL 1.2.7 REQUIRED )
FIND_PACKAGE( SDL_image 1.2 REQUIRED )
FIND_PACKAGE( SDL_mixer 1.2 REQUIRED )
FIND_PACKAGE( SDL_net REQUIRED )
FIND_PACKAGE( SDL_ttf 2.0.8 REQUIRED )
# setting python to a "must have" for the moment, can later on be changed to be optional
FIND_PACKAGE( PythonInterp 2.4 )
FIND_PACKAGE( PythonLibs 2.4 )
FIND_PACKAGE( Boost 1.33 REQUIRED COMPONENTS iostreams regex )
FIND_PACKAGE( ZLIB REQUIRED )
FIND_PACKAGE( PNG REQUIRED )
FIND_PACKAGE( Gettext REQUIRED )
#Options
set(BINDIR "bin" CACHE STRING "Where to install binaries")
set(DATAROOTDIR "share" CACHE STRING "Sets the root of data directories to a non-default location")
set(DATADIR "${DATAROOTDIR}/wesnoth" CACHE STRING "Read-only architecture-independent game data")
set(LOCALEDIR "translations" CACHE STRING "sets the locale data directory to a non-default location")
set(PREFERENCES_DIR "" CACHE STRING "Use a non-default preferences directory (.wesnoth on unix)")
set(GUI "normal" CACHE STRING "Set for GUI reductions for resolutions down to 800x480 (eeePC, Nokia 8x0) or 320x240 (PDAs) (normal|small|tiny)")
if(NOT WIN32)
2008-05-04 21:33:07 +00:00
if(IS_ABSOLUTE ${DATADIR})
add_definitions(-DWESNOTH_PATH='\"${DATADIR}\"')
message("set -DWESNOTH_PATH='\"${DATADIR}\"'")
2008-05-04 21:33:07 +00:00
else(IS_ABSOLUTE ${DATADIR})
add_definitions(-DWESNOTH_PATH='\"${CMAKE_INSTALL_PREFIX}/${DATADIR}\"')
message("set -DWESNOTH_PATH='\"${CMAKE_INSTALL_PREFIX}/${DATADIR}\"'")
2008-05-04 21:33:07 +00:00
endif(IS_ABSOLUTE ${DATADIR})
endif(NOT WIN32)
add_definitions(-DLOCALEDIR=='\"${LOCALEDIR}\"')
message("set -DLOCALEDIR='\"${LOCALEDIR}\"'")
2008-05-04 21:28:29 +00:00
if(NOT IS_ABSOLUTE ${LOCALEDIR})
add_definitions(-DHAS_RELATIVE_LOCALEDIR)
message("set -DHAS_RELATIVE_LOCALEDIR")
set(LOCALE_INSTALL ${DATADIR}/${LOCALEDIR})
else(NOT IS_ABSOLUTE ${LOCALEDIR})
set(LOCALE_INSTALL ${LOCALEDIR})
2008-05-04 21:28:29 +00:00
endif(NOT IS_ABSOLUTE ${LOCALEDIR})
if(PREFERENCES_DIR)
add_definitions(-DPREFERENCES_DIR='\"${PREFERENCES_DIR}\"')
2008-05-04 18:00:10 +00:00
message("set -DPREFERENCES_DIR='\"${PREFERENCES_DIR}\"'")
endif(PREFERENCES_DIR)
if(GUI STREQUAL "tiny")
add_definitions(-DUSE_TINY_GUI)
elseif(GUI STREQUAL "small")
add_definitions(-DUSE_SMALL_GUI)
endif(GUI STREQUAL "tiny")
option(ENABLE_GAME "Enable compilation of the game" ON)
option(ENABLE_CAMPAIGN_SERVER "Enable compilation of campaign server")
option(ENABLE_SERVER "Enable compilation of server")
option(ENABLE_EDITOR "Enable compilation of map editor")
option(ENABLE_TOOLS "Enable building and installation of tools for artists and WML maintainers")
option(ENABLE_TESTS "Build unit tests")
option(ENABLE_PYTHON "Enable in-game python extensions" ON)
if(ENABLE_PYTHON AND PYTHON_LIBRARY)
add_definitions(-DHAVE_PYTHON)
message("set -DHAVE_PYTHON")
endif(ENABLE_PYTHON AND PYTHON_LIBRARY)
#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
# only one of the subdirs working so far...
add_subdirectory(po)
#add_subdirectory(m4)
add_subdirectory(src)
#add_subdirectory(doc)
# some stuff from am2cmake
#message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}: skipped subdir $(ISUBDIRS)")
########### install files ###############
# total bogus so far...
#install(FILES copyright changelog players_changelog campaign_server.dsp editor.dev editor_gcc4.dev map_editor.dsp server.dev server.dsp unit_test.dev wesnothd.dev wesnoth.dev wesnothd_gcc4.dev wesnoth.dsp wesnoth.dsw wesnoth_gcc4.dev wesnoth.kdevelop DESTINATION )
#install(FILES DESTINATION /share/@DATADIR@)
install(DIRECTORY data fonts images sounds DESTINATION ${DATADIR} PATTERN ".svn" EXCLUDE )
#original Makefile.am contents follow:
#ISUBDIRS = icons
#SUBDIRS = po m4 src doc $(ISUBDIRS)
#pkgdatadir=$(datadir)/@DATADIR@
#
#bin_SCRIPTS =
#
## Ignore junk -- object files, editor backup files, wmllint backup files.
#findfilterflags=! \( -name .svn -prune -o -name ".\#*" -o -name "*~" -o -name "*bak" -o -name 'Makefile' -o -name '*Makefile' -o -type d \)
#
## List all datafiles, ignoring junk
#finddata=(cd $(top_srcdir) && find data fonts icons images sounds $(findfilterflags) -print )
## List all data subdirectories
#finddatadirs=(cd $(top_srcdir) && find data fonts icons images sounds -type d \! \( -name .svn -prune \) -print )
## List non-installable utility files
#findnoinst=(cd $(top_srcdir) && find utils $(findfilterflags) -print )
#findnoinst_headers=(cd $(top_srcdir) && find src -name "*.hpp" -print )
#findsconscript=(cd $(top_srcdir) && find . -name "SConscript" -print )
#findsconstruct=(cd $(top_srcdir) && find . -name "SConstruct" -print )
#
## Find files derived from the manual that should go in a distribution
#finddocdist=(cd $(top_srcdir) && find doc/manual -name "*.html" -o -name "*.css" -o -name "*.jpg" -o -name "*.txt")
## Same list as previous, but with doc/ stripped off the front
#finddoc=($(finddocdist) | sed -e 's:doc/manual:manual:g' )
## List all document directories
#finddocdirs=(cd $(top_srcdir)/doc && find manual -type d \! \( -name .svn -prune \) -print; )
#
## This is a workaround to include manpage and manual translation files in the
## tarball. Manual and manpages are pre-built, so these files aren't actually
## needed to build Wesnoth, but are included because .po files are the
## preferred source of modification.
#findextrapo=(cd $(top_srcdir) && \
# find po/wesnoth-manpages po/wesnoth-manual \
# -name "*.pot" -o -name "*.po" -o -name "*.cfg")
#
#w_preparefileinstall = if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
# case $$p in \
# $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
# *) f=$$p;; \
# esac;
#
## Create Macintosh app bundle from the game
#bundle_contents=@PACKAGE_NAME@.app/Contents
#@PACKAGE@_bundle: src/@PACKAGE@
# mkdir -p "$(bundle_contents)/MacOS"
# mkdir -p "$(bundle_contents)/Resources"
# echo "APPL????" > "$(bundle_contents)/PkgInfo"
# $(INSTALL_PROGRAM) $< "$(bundle_contents)/MacOS/@PACKAGE_NAME@"
#
## Create Macintosh app bundle from the editor
#bundle_editor_contents=@PACKAGE_NAME@ Editor.app/Contents
#@PACKAGE@_editor_bundle: src/@PACKAGE@_editor
# mkdir -p "$(bundle_editor_contents)/MacOS"
# mkdir -p "$(bundle_editor_contents)/Resources"
# echo "APPL????" > "$(bundle_editor_contents)/PkgInfo"
# $(INSTALL_PROGRAM) $< "$(bundle_editor_contents)/MacOS/@PACKAGE_NAME@ Editor"
#
## Run this before release to check that POTs and data are in good shape
#sanity-check:
# cd utils; ./sanity_check
# cd data/tools; make sanity-check
#
## *** Not yet covered by scons recipe (dummylocales)
#install-data-local:
# @$(NORMAL_INSTALL)
#if INSTALLDATA
# @echo "Replicate data directory skeleton under target shared-data directory."
# @echo "Then copy all corresponding files."
# test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
# ( $(finddatadirs) ) | while read p; do \
# $(mkdir_p) "$(DESTDIR)$(pkgdatadir)/$$p"; \
# done; \
# srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
# ( $(finddata) ) | while read p; do \
# $(w_preparefileinstall) \
# echo $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
# $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
# done
# @echo "Replicate doc directory skeleton under target doc subdirectory"
# @echo "Then copy all corresponding files."
# test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
# ( $(finddocdirs) ) | while read p; do \
# $(mkdir_p) "$(DESTDIR)$(docdir)/$$p"; \
# done; \
# ( $(finddoc) ) | while read p; do \
# cd doc && $(w_preparefileinstall) \
# echo $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
# $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; cd ..; \
# done
#if DUMMYLOCALES
# @echo "Create dummy locales beneath the Wesnoth data directory"
# $(mkdir_p) "$(DESTDIR)$(pkgdatadir)/locales"
# if test -d "$(DESTDIR)$(pkgdatadir)/locales/C" ; then rm -r "$(DESTDIR)$(pkgdatadir)/locales/C" ; fi
# echo | localedef --force "$(DESTDIR)$(pkgdatadir)/locales/C" 2> /dev/null; \
# for loc in `ls data/languages/*.cfg | sed -e's/data\/languages\/\(.*\)\.cfg/\1/'`; do \
# loclnk="$(DESTDIR)$(pkgdatadir)/locales/$$loc"@wesnoth; \
# if test -L "$$loclnk" ; then rm "$$loclnk" ; fi; \
# ln -s C "$$loclnk"; done; \
# true
#endif
#if TINYGUI
# @echo "Shrink installed images by a factor of two."
# (cd $(top_srcdir) && find data/core/images data/campaigns images \( $(findfilterflags) -a -name '*.png' -and -not -name 'bar-energy-tinygui.png' -print \) ) | while read p; do \
# $(w_preparefileinstall) \
# eval `identify $$d$$p | cut -f 3 -d ' ' | sed s/^/imagewidth=/ | sed s/x/\;imageheight=/` ;\
# case $${imagewidth}x$$imageheight in \
# 1024x768) dstsize=320x240 ;; \
# 640x480) dstsize=240x180 ;; \
# 205x205) dstsize=80x80 ;; \
# *) if [ $$imageheight -gt $$imagewidth ]; then max=`expr $$imageheight / 2`; else max=`expr $$imagewidth / 2`; fi ;\
# dstsize=$${max}x$${max} ;; \
# esac ; \
# file=`basename "$$p"`; \
# file "$$d$$p" | egrep "(RGBA|alpha)" >/dev/null 2>&1 && {\
# convert "$$d$$p" -filter point -resize $$dstsize "$(DESTDIR)$(pkgdatadir)/$$f";\
# } || { \
# convert "$$d$$p" -resize $$dstsize "$(DESTDIR)$(pkgdatadir)/$$f"; \
# } \
# done
#endif
# @echo "Local installation is complete"
#endif
#
#uninstall-local:
# @$(NORMAL_UNINSTALL)
#if INSTALLDATA
# @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
# ( $(finddata) ) | while read p; do \
# case $$p in \
# $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
# *) f=$$p;; \
# esac; \
# echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
# rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
# done
# ( $(finddoc) ) | while read p; do \
# case $$p in \
# $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
# *) f=$$p;; \
# esac; \
# echo " rm -f '$(DESTDIR)$(docadir)/$$f'"; \
# rm -f "$(DESTDIR)$(docdir)/$$f"; \
# done
# ( $(finddocdirs) | sed -e 's/ /\n/g' | sort -r ) | while read p; do \
# d=$(DESTDIR)$(docdir)/$$p && \
# if test -d $$d ; then echo "rmdir $$d"; echo `rmdir $$d` ; fi \
# done
#endif
#
#dist-hook:
# srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
# ( $(finddata); $(finddocdist); $(findnoinst); $(findnoinst_headers); $(findextrapo); $(findsconscript); $(findsconstruct) ) | (cd $(top_srcdir) && tar cf - -T -) | (cd $(distdir) && tar xf -)
#
#dist_noinst_DATA = copyright changelog players_changelog campaign_server.dsp editor.dev editor_gcc4.dev map_editor.dsp server.dev server.dsp unit_test.dev wesnothd.dev wesnoth.dev wesnothd_gcc4.dev wesnoth.dsp wesnoth.dsw wesnoth_gcc4.dev wesnoth.kdevelop
#
#uninstall-hook:
# if test -d $(pkgdatadir) ; then rm -r $(pkgdatadir) ; fi
# if test -d $(bindir) ; then echo `rmdir $(bindir)` ; fi
# if test -d $(datadir) ; then echo `rmdir $(datadir)` ; fi
# if test -d $(prefix) ; then echo `rmdir $(prefix)` ; fi
# if test -d $(docdir) ; then echo `rmdir $(docdir)` ; fi
#
#clean-local:
# rm -rf po/stamp* po/*/stamp*
#
#distclean-local:
# rm -rf translations
#
#BINARY_STAGING=/tmp/$(PACKAGE)-$(VERSION)-staging
#BINARY_DIST=/tmp/$(PACKAGE)-binary-$(VERSION).tar.gz
#DATA_DIST=/tmp/$(PACKAGE)-data-$(VERSION).tar.gz
#
#binary-dist:
# @rm -rf $(BINARY_STAGING) $(BINARY_DIST)
# @make install-exec DESTDIR=$(BINARY_STAGING)
# @cd $(BINARY_STAGING) ; tar cf - * | gzip -c >$(BINARY_DIST)
# @rm -rf $(BINARY_STAGING)
# @echo "Precompiled binary tarball is in $(BINARY_DIST)"
#
#data-dist:
# @rm -rf $(BINARY_STAGING) $(DATA_DIST)
# @make install-data DESTDIR=$(BINARY_STAGING)
# @cd $(BINARY_STAGING) ; tar cf - * | gzip -c >$(DATA_DIST)
# @rm -rf $(BINARY_STAGING)
# @echo "Precompiled data tarball is in $(DATA_DIST)"
#
#ACLOCAL_AMFLAGS = -I m4
#
#EXTRA_DIST = config/config.rpath config/mkinstalldirs config/py-compile
#
#if PYTHON_INSTALL
#pkgpython_PYTHON = data/tools/wesnoth/wmltools.py \
# data/tools/wesnoth/libsvn.py \
# data/tools/wesnoth/wescamp.py \
# data/tools/wesnoth/wmldata.py \
# data/tools/wesnoth/wmliterator.py \
# data/tools/wesnoth/wmlparser.py \
# data/tools/wesnoth/campaignserver_client.py \
# data/tools/wesnoth/__init__.py
#endif
#
#update-po:
# @cd po && make $@ || exit $?
#if MANUALUPDATE
# @cd doc/manual && make update-po || exit $?
#endif
#
#if PO4AUPDATE
#update-po4a:
# @cd po && make update-po4a || exit $?
# @echo -n "Removing empty man directories... "
# @find doc/man/ -maxdepth 1 -type d -empty -exec rmdir {} \; && \
# echo "done." || exit $?
#
#if MANUALUPDATE
# @cd doc/manual && make html || exit $?
#endif
#endif
#
#if MANUALUPDATE
#manual-en:
# @cd doc/manual && make manual.en.html || exit $?
#endif
#
## latest graph-includes.pl can be found currently at http://ydirson.free.fr/soft/wesnoth/graphs/
#wesnoth-deps.dot:
# PERL5LIB=$(top_srcdir) graph-includes -verbose --class wesnoth --consolidate 1-1 \
# -sysI /usr/include/c++/4.0 -sysI /usr/include -sysI /usr/include/SDL \
# --prefixstrip $(top_srcdir)/src/ -I $(top_srcdir)/src $(top_srcdir)/src > $@ || \
# ( rm $@; false )
#%.ps: %.dot
# dot -Tps $< > $@