From ad0d423bd57d2ac261ef921a9784dbfe666a89d2 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 14 Nov 2014 08:28:53 -0800 Subject: Added mingw target for compiling windows exe and dll. They can be compiled on linux; all that is needed is the mingw32 package. --- Makefile | 12 ++++++++++-- toolchain-mingw32.cmake | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 toolchain-mingw32.cmake diff --git a/Makefile b/Makefile index dcc317c..350f177 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ SRCDIR?=src DATADIR?=data BUILDDIR?=build +MINGW_BUILDDIR?=build-mingw +MINGW_INSTALLDIR?=windows SPEC=spec.txt SITE=_site SPECVERSION=$(shell perl -ne 'print $$1 if /^version: *([0-9.]+)/' $(SPEC)) @@ -11,7 +13,7 @@ PROG?=$(BUILDDIR)/src/cmark BENCHINP?=README.md JSMODULES=$(wildcard js/lib/*.js) -.PHONY: all spec leakcheck clean fuzztest dingus upload jshint test testjs benchjs update-site upload-site check npm debug tarball +.PHONY: all spec leakcheck clean fuzztest dingus upload jshint test testjs benchjs update-site upload-site check npm debug mingw tarball all: $(BUILDDIR) @make -C $(BUILDDIR) @@ -33,6 +35,12 @@ debug: cmake .. -DCMAKE_BUILD_TYPE=Debug; \ make +mingw: + mkdir -p $(MINGW_BUILDDIR); \ + cd $(MINGW_BUILDDIR); \ + cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$(MINGW_INSTALLDIR) ;\ + make && make install + tarball: spec.html $(SRCDIR)/scanners.c rm -rf $(PKGDIR); \ mkdir -p $(PKGDIR)/man/man1; \ @@ -49,7 +57,7 @@ tarball: spec.html $(SRCDIR)/scanners.c rm -rf $(PKGDIR) clean: - rm -rf $(BUILDDIR) + rm -rf $(BUILDDIR) $(MINGW_BUILDDIR) $(MINGW_INSTALLDIR) $(PROG): all diff --git a/toolchain-mingw32.cmake b/toolchain-mingw32.cmake new file mode 100644 index 0000000..61c62a8 --- /dev/null +++ b/toolchain-mingw32.cmake @@ -0,0 +1,17 @@ +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc) +SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) +SET(CMAKE_RC_COMPILER i586-mingw32msvc-windres) + +# here is the target environment located +SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc "${CMAKE_SOURCE_DIR}/windows") + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -- cgit v1.2.3