diff --git a/CMakeLists.txt b/CMakeLists.txt index c10c91adc..656468248 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1278,6 +1278,41 @@ ENDFOREACH() # Install binaries install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/clonk ${CMAKE_CURRENT_BINARY_DIR}/c4group DESTINATION bin/) +############################################################################ +# setup_openclonk.exe +############################################################################ + +set(OC_C4GROUPS + Graphics.ocg + Material.ocg + Music.ocg + Sound.ocg + System.ocg + Objects.ocd + BackToTheRocks.ocf + Tests.ocf + Tutorial.ocf +) + +get_target_property(run_c4group c4group LOCATION) +foreach(group ${OC_C4GROUPS}) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group} + COMMAND ${run_c4group} ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group} -t ${CMAKE_CURRENT_BINARY_DIR}/${group} + DEPENDS c4group ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group} + VERBATIM + ) +endforeach() + +add_custom_command( + OUTPUT setup_openclonk.exe + COMMAND makensis -NOCD -DSRCDIR=${CMAKE_CURRENT_SOURCE_DIR} -DPROGRAMFILES=$PROGRAMFILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi "-XOutFile setup_openclonk.exe" + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi ${OC_C4GROUPS} clonk c4group + VERBATIM +) + +add_custom_target(setup DEPENDS setup_openclonk.exe) + ############################################################################ # CPack support ############################################################################ diff --git a/Makefile.am b/Makefile.am index 086de641f..a907cb697 100644 --- a/Makefile.am +++ b/Makefile.am @@ -711,6 +711,9 @@ AM_CXXFLAGS += -DOC_SYSTEM_DATA_DIR=\"${pkgdatadir}\" %.ocf: planet/%.ocf c4group$(EXEEXT) ./c4group$(EXEEXT) $< -t $@ || c4group $< -t $@ +setup_openclonk.exe: $(srcdir)/tools/install/oc.nsi c4group$(EXEEXT) clonk$(EXEEXT) $(c4groups) + makensis -NOCD -DSRCDIR=$(srcdir) '-DPROGRAMFILES=$$PROGRAMFILES' $< "-XOutFile $@" + ## other stuff EXTRA_DIST = \ diff --git a/README.windows.txt b/README.windows.txt index 48b0de483..016ecb86b 100644 --- a/README.windows.txt +++ b/README.windows.txt @@ -3,53 +3,38 @@ Requirements You can build on Windows using either: -* vc9 (Microsoft Visual C++ 2008) - you need CMake (http://www.cmake.org/cmake/resources/software.html) to create the "solution" - you might have to set the correct DXSDK include and library directories +* vc10 (Microsoft Visual C++ 2010) + - you need CMake (http://www.cmake.org/cmake/resources/software.html) to + create the "solution" + - you might have to set the correct DXSDK include and library directories * MinGW and MSYS - plus DXSDK 9 (if you want DirectX support) + - plus DXSDK 9 (if you want DirectX support) * Some other compilers and IDEs which are supported by CMake might also work -Building OpenClonk requires the Boost C++ Libraries (from http://www.boost.org/). It uses the -header-only parts of the library, so you don't have to build any of the binary libraries. +OpenClonk requires some additional libraries. Prebuilt versions of them can be +found on http://openclonk.org. + +Building the installer +====================== + +The installer is created with NSIS. makensis needs to be in the PATH, and +the dlls used by openclonk in the build directory. To create the installer, +build the "setup" target if using CMake, or if using autotools, run: + + make setup_openclonk.exe + +Get NSIS from http://nsis.sourceforge.net/. Notes for MinGW =============== You need gcc, g++, mingw-runtime, w32api, msys, msyscore, autoconf, automake, -and any packages needed by these. The versions listed below are known to work, -though newer versions are probably also good. +and any packages needed by these. -http://sourceforge.net/project/downloading.php?group_id=200665&filename=tdm-mingw-1.905.0-webdl.exe&a=64029035 -(from http://sourceforge.net/project/showfiles.php?group_id=200665&package_id=238465) -(see also http://www.tdragon.net/recentgcc/) -- The default options work. Use an installation path without spaces to be on - the save side. - -http://sourceforge.net/project/downloading.php?group_id=2435&filename=MSYS-1.0.11-20090120-dll.tar.gz&a=78351117 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=msysCORE-1.0.11-20080826.tar.gz&a=60784616 -(from http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963) -- extract these into the same directory as installed above, merging the - directory contents -- create a shortcut to msys.bat - -http://sourceforge.net/project/downloading.php?group_id=2435&filename=perl-5.6.1-MSYS-1.0.11-1.tar.bz2&a=91743036 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=crypt-1.1-1-MSYS-1.0.11-1.tar.bz2&a=95002722 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=autoconf2.5-2.61-1-bin.tar.bz2&a=93276645 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=automake1.10-1.10-1-bin.tar.bz2&a=66135072 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=autoconf-4-1-bin.tar.bz2&a=70428585 -http://sourceforge.net/project/downloading.php?group_id=2435&filename=automake-3-1-bin.tar.bz2&a=12881354 -(from http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879) -- you need to extract these from the msys shell with tar (other methods won't - work). This assumes that the archives are in C:\Path\To\Downloads\, adjust - the command as necessary: - cd / - for f in /c/Path/To/Downloads/*.bz2; do tar -xjf $f; done && echo done - -Get the library package from openclonk.org and unpack it into the same -directory as the other archives. +Get the library package from openclonk.org and unpack it into the mingw +directory. If you want DirectX support, get a DirectX 9 SDK from Microsoft. Copy the contents of its include dir to the include dir of your MinGW installation, diff --git a/tools/install/oc.nsi b/tools/install/oc.nsi index d42a4bd25..31801b26f 100644 --- a/tools/install/oc.nsi +++ b/tools/install/oc.nsi @@ -16,12 +16,12 @@ SetCompressor lzma !include "MUI.nsh" ; MUI Settings -!define MUI_ICON "inst.ico" -!define MUI_UNICON "uninst.ico" +!define MUI_ICON "${SRCDIR}/tools/install/inst.ico" +!define MUI_UNICON "${SRCDIR}/tools/install/uninst.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT -!define MUI_HEADERIMAGE_BITMAP "header.bmp" +!define MUI_HEADERIMAGE_BITMAP "${SRCDIR}/tools/install/header.bmp" ; Directory page !insertmacro MUI_PAGE_DIRECTORY @@ -50,8 +50,7 @@ LangString MUI_TEXT_USERPATH ${LANG_English} "User Path" ; MUI end ------ Name "${PRODUCT_NAME}" -OutFile "..\oc.exe" -InstallDir "@PROGRAMFILES@\OpenClonk" +InstallDir "${PROGRAMFILES}\OpenClonk" ShowInstDetails show ShowUnInstDetails show @@ -67,10 +66,11 @@ Section "MainSection" SEC01 File "*.oc?" - File "AUTHORS" - File "COPYING" - File "LGPL.txt" - File "OpenSSL.txt" + File "${SRCDIR}\planet\AUTHORS" + File "${SRCDIR}\planet\COPYING" + File "${SRCDIR}\licenses\LGPL.txt" + File "${SRCDIR}\licenses\OpenSSL.txt" + File "${SRCDIR}\Credits.txt" ; Create user path (works for the installing user only... might also want to put an info.txt dummy in there...) CreateDirectory "$APPDATA\OpenClonk" @@ -179,6 +179,7 @@ Section Uninstall Delete "$INSTDIR\COPYING" Delete "$INSTDIR\LGPL.txt" Delete "$INSTDIR\OpenSSL.txt" + Delete "$INSTDIR\Credits.txt" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\${PRODUCT_WEB_SITE_NAME}.url"