packages feed

fltkhs 0.1.0.1 → 0.1.0.2

raw patch · 36 files changed

+374/−640 lines, 36 filessetup-changedPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

− .git/HEAD
@@ -1,1 +0,0 @@-ref: refs/heads/master
− .git/config
@@ -1,11 +0,0 @@-[core]-	repositoryformatversion = 0-	filemode = true-	bare = false-	logallrefupdates = true-[remote "origin"]-	url = http://github.com/deech/fltkhs-	fetch = +refs/heads/*:refs/remotes/origin/*-[branch "master"]-	remote = origin-	merge = refs/heads/master
− .git/description
@@ -1,1 +0,0 @@-Unnamed repository; edit this file 'description' to name the repository.
− .git/hooks/applypatch-msg.sample
@@ -1,15 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message taken by-# applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit.  The hook is-# allowed to edit the commit message file.-#-# To enable this hook, rename this file to "applypatch-msg".--. git-sh-setup-test -x "$GIT_DIR/hooks/commit-msg" &&-	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}-:
− .git/hooks/commit-msg.sample
@@ -1,24 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message.-# Called by "git commit" with one argument, the name of the file-# that has the commit message.  The hook should exit with non-zero-# status after issuing an appropriate message if it wants to stop the-# commit.  The hook is allowed to edit the commit message file.-#-# To enable this hook, rename this file to "commit-msg".--# Uncomment the below to add a Signed-off-by line to the message.-# Doing this in a hook is a bad idea in general, but the prepare-commit-msg-# hook is more suited to it.-#-# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"--# This example catches duplicate Signed-off-by lines.--test "" = "$(grep '^Signed-off-by: ' "$1" |-	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {-	echo >&2 Duplicate Signed-off-by lines.-	exit 1-}
− .git/hooks/post-update.sample
@@ -1,8 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare a packed repository for use over-# dumb transports.-#-# To enable this hook, rename this file to "post-update".--exec git update-server-info
− .git/hooks/pre-applypatch.sample
@@ -1,14 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed-# by applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-applypatch".--. git-sh-setup-test -x "$GIT_DIR/hooks/pre-commit" &&-	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}-:
− .git/hooks/pre-commit.sample
@@ -1,50 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed.-# Called by "git commit" with no arguments.  The hook should-# exit with non-zero status after issuing an appropriate message if-# it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-commit".--if git rev-parse --verify HEAD >/dev/null 2>&1-then-	against=HEAD-else-	# Initial commit: diff against an empty tree object-	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904-fi--# If you want to allow non-ascii filenames set this variable to true.-allownonascii=$(git config hooks.allownonascii)--# Redirect output to stderr.-exec 1>&2--# Cross platform projects tend to avoid non-ascii filenames; prevent-# them from being added to the repository. We exploit the fact that the-# printable range starts at the space character and ends with tilde.-if [ "$allownonascii" != "true" ] &&-	# Note that the use of brackets around a tr range is ok here, (it's-	# even required, for portability to Solaris 10's /usr/bin/tr), since-	# the square bracket bytes happen to fall in the designated range.-	test $(git diff --cached --name-only --diff-filter=A -z $against |-	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0-then-	echo "Error: Attempt to add a non-ascii file name."-	echo-	echo "This can cause problems if you want to work"-	echo "with people on other platforms."-	echo-	echo "To be portable it is advisable to rename the file ..."-	echo-	echo "If you know what you are doing you can disable this"-	echo "check using:"-	echo-	echo "  git config hooks.allownonascii true"-	echo-	exit 1-fi--# If there are whitespace errors, print the offending file names and fail.-exec git diff-index --check --cached $against --
− .git/hooks/pre-push.sample
@@ -1,53 +0,0 @@-#!/bin/sh--# An example hook script to verify what is about to be pushed.  Called by "git-# push" after it has checked the remote status, but before anything has been-# pushed.  If this script exits with a non-zero status nothing will be pushed.-#-# This hook is called with the following parameters:-#-# $1 -- Name of the remote to which the push is being done-# $2 -- URL to which the push is being done-#-# If pushing without using a named remote those arguments will be equal.-#-# Information about the commits which are being pushed is supplied as lines to-# the standard input in the form:-#-#   <local ref> <local sha1> <remote ref> <remote sha1>-#-# This sample shows how to prevent push of commits where the log message starts-# with "WIP" (work in progress).--remote="$1"-url="$2"--z40=0000000000000000000000000000000000000000--IFS=' '-while read local_ref local_sha remote_ref remote_sha-do-	if [ "$local_sha" = $z40 ]-	then-		# Handle delete-	else-		if [ "$remote_sha" = $z40 ]-		then-			# New branch, examine all commits-			range="$local_sha"-		else-			# Update to existing branch, examine new commits-			range="$remote_sha..$local_sha"-		fi--		# Check for WIP commit-		commit=`git rev-list -n 1 --grep '^WIP' "$range"`-		if [ -n "$commit" ]-		then-			echo "Found WIP commit in $local_ref, not pushing"-			exit 1-		fi-	fi-done--exit 0
− .git/hooks/pre-rebase.sample
@@ -1,169 +0,0 @@-#!/bin/sh-#-# Copyright (c) 2006, 2008 Junio C Hamano-#-# The "pre-rebase" hook is run just before "git rebase" starts doing-# its job, and can prevent the command from running by exiting with-# non-zero status.-#-# The hook is called with the following parameters:-#-# $1 -- the upstream the series was forked from.-# $2 -- the branch being rebased (or empty when rebasing the current branch).-#-# This sample shows how to prevent topic branches that are already-# merged to 'next' branch from getting rebased, because allowing it-# would result in rebasing already published history.--publish=next-basebranch="$1"-if test "$#" = 2-then-	topic="refs/heads/$2"-else-	topic=`git symbolic-ref HEAD` ||-	exit 0 ;# we do not interrupt rebasing detached HEAD-fi--case "$topic" in-refs/heads/??/*)-	;;-*)-	exit 0 ;# we do not interrupt others.-	;;-esac--# Now we are dealing with a topic branch being rebased-# on top of master.  Is it OK to rebase it?--# Does the topic really exist?-git show-ref -q "$topic" || {-	echo >&2 "No such branch $topic"-	exit 1-}--# Is topic fully merged to master?-not_in_master=`git rev-list --pretty=oneline ^master "$topic"`-if test -z "$not_in_master"-then-	echo >&2 "$topic is fully merged to master; better remove it."-	exit 1 ;# we could allow it, but there is no point.-fi--# Is topic ever merged to next?  If so you should not be rebasing it.-only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`-only_next_2=`git rev-list ^master           ${publish} | sort`-if test "$only_next_1" = "$only_next_2"-then-	not_in_topic=`git rev-list "^$topic" master`-	if test -z "$not_in_topic"-	then-		echo >&2 "$topic is already up-to-date with master"-		exit 1 ;# we could allow it, but there is no point.-	else-		exit 0-	fi-else-	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`-	/usr/bin/perl -e '-		my $topic = $ARGV[0];-		my $msg = "* $topic has commits already merged to public branch:\n";-		my (%not_in_next) = map {-			/^([0-9a-f]+) /;-			($1 => 1);-		} split(/\n/, $ARGV[1]);-		for my $elem (map {-				/^([0-9a-f]+) (.*)$/;-				[$1 => $2];-			} split(/\n/, $ARGV[2])) {-			if (!exists $not_in_next{$elem->[0]}) {-				if ($msg) {-					print STDERR $msg;-					undef $msg;-				}-				print STDERR " $elem->[1]\n";-			}-		}-	' "$topic" "$not_in_next" "$not_in_master"-	exit 1-fi--<<\DOC_END--This sample hook safeguards topic branches that have been-published from being rewound.--The workflow assumed here is:-- * Once a topic branch forks from "master", "master" is never-   merged into it again (either directly or indirectly).-- * Once a topic branch is fully cooked and merged into "master",-   it is deleted.  If you need to build on top of it to correct-   earlier mistakes, a new topic branch is created by forking at-   the tip of the "master".  This is not strictly necessary, but-   it makes it easier to keep your history simple.-- * Whenever you need to test or publish your changes to topic-   branches, merge them into "next" branch.--The script, being an example, hardcodes the publish branch name-to be "next", but it is trivial to make it configurable via-$GIT_DIR/config mechanism.--With this workflow, you would want to know:--(1) ... if a topic branch has ever been merged to "next".  Young-    topic branches can have stupid mistakes you would rather-    clean up before publishing, and things that have not been-    merged into other branches can be easily rebased without-    affecting other people.  But once it is published, you would-    not want to rewind it.--(2) ... if a topic branch has been fully merged to "master".-    Then you can delete it.  More importantly, you should not-    build on top of it -- other people may already want to-    change things related to the topic as patches against your-    "master", so if you need further changes, it is better to-    fork the topic (perhaps with the same name) afresh from the-    tip of "master".--Let's look at this example:--		   o---o---o---o---o---o---o---o---o---o "next"-		  /       /           /           /-		 /   a---a---b A     /           /-		/   /               /           /-	       /   /   c---c---c---c B         /-	      /   /   /             \         /-	     /   /   /   b---b C     \       /-	    /   /   /   /             \     /-    ---o---o---o---o---o---o---o---o---o---o---o "master"---A, B and C are topic branches.-- * A has one fix since it was merged up to "next".-- * B has finished.  It has been fully merged up to "master" and "next",-   and is ready to be deleted.-- * C has not merged to "next" at all.--We would want to allow C to be rebased, refuse A, and encourage-B to be deleted.--To compute (1):--	git rev-list ^master ^topic next-	git rev-list ^master        next--	if these match, topic has not merged in next at all.--To compute (2):--	git rev-list master..topic--	if this is empty, it is fully merged to "master".--DOC_END
− .git/hooks/prepare-commit-msg.sample
@@ -1,36 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare the commit log message.-# Called by "git commit" with the name of the file that has the-# commit message, followed by the description of the commit-# message's source.  The hook's purpose is to edit the commit-# message file.  If the hook fails with a non-zero status,-# the commit is aborted.-#-# To enable this hook, rename this file to "prepare-commit-msg".--# This hook includes three examples.  The first comments out the-# "Conflicts:" part of a merge commit.-#-# The second includes the output of "git diff --name-status -r"-# into the message, just before the "git status" output.  It is-# commented because it doesn't cope with --amend or with squashed-# commits.-#-# The third example adds a Signed-off-by line to the message, that can-# still be edited.  This is rarely a good idea.--case "$2,$3" in-  merge,)-    /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;--# ,|template,)-#   /usr/bin/perl -i.bak -pe '-#      print "\n" . `git diff --cached --name-status -r`-#	 if /^#/ && $first++ == 0' "$1" ;;--  *) ;;-esac--# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
− .git/hooks/update.sample
@@ -1,128 +0,0 @@-#!/bin/sh-#-# An example hook script to blocks unannotated tags from entering.-# Called by "git receive-pack" with arguments: refname sha1-old sha1-new-#-# To enable this hook, rename this file to "update".-#-# Config-# -------# hooks.allowunannotated-#   This boolean sets whether unannotated tags will be allowed into the-#   repository.  By default they won't be.-# hooks.allowdeletetag-#   This boolean sets whether deleting tags will be allowed in the-#   repository.  By default they won't be.-# hooks.allowmodifytag-#   This boolean sets whether a tag may be modified after creation. By default-#   it won't be.-# hooks.allowdeletebranch-#   This boolean sets whether deleting branches will be allowed in the-#   repository.  By default they won't be.-# hooks.denycreatebranch-#   This boolean sets whether remotely creating branches will be denied-#   in the repository.  By default this is allowed.-#--# --- Command line-refname="$1"-oldrev="$2"-newrev="$3"--# --- Safety check-if [ -z "$GIT_DIR" ]; then-	echo "Don't run this script from the command line." >&2-	echo " (if you want, you could supply GIT_DIR then run" >&2-	echo "  $0 <ref> <oldrev> <newrev>)" >&2-	exit 1-fi--if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then-	echo "usage: $0 <ref> <oldrev> <newrev>" >&2-	exit 1-fi--# --- Config-allowunannotated=$(git config --bool hooks.allowunannotated)-allowdeletebranch=$(git config --bool hooks.allowdeletebranch)-denycreatebranch=$(git config --bool hooks.denycreatebranch)-allowdeletetag=$(git config --bool hooks.allowdeletetag)-allowmodifytag=$(git config --bool hooks.allowmodifytag)--# check for no description-projectdesc=$(sed -e '1q' "$GIT_DIR/description")-case "$projectdesc" in-"Unnamed repository"* | "")-	echo "*** Project description file hasn't been set" >&2-	exit 1-	;;-esac--# --- Check types-# if $newrev is 0000...0000, it's a commit to delete a ref.-zero="0000000000000000000000000000000000000000"-if [ "$newrev" = "$zero" ]; then-	newrev_type=delete-else-	newrev_type=$(git cat-file -t $newrev)-fi--case "$refname","$newrev_type" in-	refs/tags/*,commit)-		# un-annotated tag-		short_refname=${refname##refs/tags/}-		if [ "$allowunannotated" != "true" ]; then-			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2-			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2-			exit 1-		fi-		;;-	refs/tags/*,delete)-		# delete tag-		if [ "$allowdeletetag" != "true" ]; then-			echo "*** Deleting a tag is not allowed in this repository" >&2-			exit 1-		fi-		;;-	refs/tags/*,tag)-		# annotated tag-		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1-		then-			echo "*** Tag '$refname' already exists." >&2-			echo "*** Modifying a tag is not allowed in this repository." >&2-			exit 1-		fi-		;;-	refs/heads/*,commit)-		# branch-		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then-			echo "*** Creating a branch is not allowed in this repository" >&2-			exit 1-		fi-		;;-	refs/heads/*,delete)-		# delete branch-		if [ "$allowdeletebranch" != "true" ]; then-			echo "*** Deleting a branch is not allowed in this repository" >&2-			exit 1-		fi-		;;-	refs/remotes/*,commit)-		# tracking branch-		;;-	refs/remotes/*,delete)-		# delete tracking branch-		if [ "$allowdeletebranch" != "true" ]; then-			echo "*** Deleting a tracking branch is not allowed in this repository" >&2-			exit 1-		fi-		;;-	*)-		# Anything else (is there anything else?)-		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2-		exit 1-		;;-esac--# --- Finished-exit 0
− .git/index

binary file changed (36128 → absent bytes)

− .git/info/exclude
@@ -1,6 +0,0 @@-# git ls-files --others --exclude-from=.git/info/exclude-# Lines that start with '#' are comments.-# For a project mostly in C, the following would be a good set of-# exclude patterns (uncomment them if you want to use them):-# *.[oa]-# *~
− .git/logs/HEAD
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600	clone: from http://github.com/deech/fltkhs
− .git/logs/refs/heads/master
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600	clone: from http://github.com/deech/fltkhs
− .git/logs/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600	clone: from http://github.com/deech/fltkhs
− .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.idx

binary file changed (109180 → absent bytes)

− .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.pack

file too large to diff

− .git/packed-refs
@@ -1,3 +0,0 @@-# pack-refs with: peeled fully-peeled -8943336c272ff8dab557abb3ee781cb1d209bd32 refs/remotes/origin/ABI-8fae34c12b758b8247b79cc29df29238ddd17e21 refs/remotes/origin/master
− .git/refs/heads/master
@@ -1,1 +0,0 @@-8fae34c12b758b8247b79cc29df29238ddd17e21
− .git/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-ref: refs/remotes/origin/master
.gitignore view
@@ -21,3 +21,14 @@ c-examples/Makefile c-src/Makefile dist/*+/CMakeCache.txt+/CMakeFiles/+/c-lib/+/c-src/CMakeFiles/+/c-src/cmake_install.cmake+/CMakeFiles/+/CMakeCache.txt+/c-src/CMakeFiles/+/c-src/cmake_install.cmake+/c-src/libfltkdyn.so+/cmake_install.cmake
+ CMakeLists.txt view
@@ -0,0 +1,14 @@+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)++PROJECT(fltkc)++SET(FLTKCONFIGCOMMAND "${FLTK_HOME}/lib/libfltk.a ${FLTK_HOME}/lib/libfltk_gl.a ${FLTK_HOME}/lib/libfltk_images.a ${FLTK_HOME}/lib/libfltk_jpeg.a ${FLTK_HOME}/lib/libfltk_png.a ${FLTK_HOME}/lib/libfltk_z.a ${FLTK_HOME}/lib/libfltk_forms.a")+SET(FLTKCONFIGCOMMAND "${FLTKCONFIGCOMMAND} -mwindows -lglu32 -lopengl32 -lole32 -luuid -lcomctl32")+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/fltkhs.buildinfo.in+               ${CMAKE_CURRENT_SOURCE_DIR}/fltkhs.buildinfo)+FIND_PACKAGE(OpenGL REQUIRED)+set_directory_properties(PROPERTIES+                         ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake_install.cmake;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/CMakeFiles")+ADD_SUBDIRECTORY(c-src)
Setup.hs view
@@ -1,8 +1,6 @@ import Data.Maybe(fromJust) import Data.List(partition, isPrefixOf) import Distribution.Simple.Compiler-import Distribution.Simple.Build-import Distribution.Simple.Configure import Distribution.Simple.LocalBuildInfo import Distribution.PackageDescription import Distribution.Simple@@ -10,41 +8,71 @@ import Distribution.Simple.Setup import Distribution.Simple.Utils import Distribution.Verbosity-import Distribution.Simple.Program(requireProgram, arProgram)+import Control.Monad+import Data.List+import Distribution.Simple.Program+  ( Program(..), ConfiguredProgram(..), programPath+   , requireProgram, requireProgramVersion+   , rawSystemProgramConf, rawSystemProgram+   , greencardProgram, cpphsProgram, hsc2hsProgram, c2hsProgram+   , happyProgram, alexProgram, ghcProgram, gccProgram, requireProgram, arProgram)+import Distribution.Simple.Program.Db import Distribution.Simple.PreProcess import System.IO.Unsafe (unsafePerformIO) import qualified Distribution.Simple.Program.Ar    as Ar import qualified Distribution.ModuleName as ModuleName import Distribution.Simple.BuildPaths-import System.Directory(getCurrentDirectory, getDirectoryContents, copyFile, doesDirectoryExist)-import System.FilePath ( (</>), (<.>), takeExtension,-                         takeDirectory, replaceExtension, splitExtension, combine, takeBaseName)-import System.IO-import Debug.Trace-import Data.Graph+import System.Directory(getCurrentDirectory, getDirectoryContents, doesDirectoryExist)+import System.FilePath ( (</>), (<.>), takeExtension, combine, takeBaseName) import qualified Distribution.Simple.GHC  as GHC import qualified Distribution.Simple.JHC  as JHC import qualified Distribution.Simple.LHC  as LHC import qualified Distribution.Simple.UHC  as UHC+import qualified Distribution.Simple.PackageIndex as PackageIndex+import Distribution.PackageDescription as PD+import qualified Distribution.InstalledPackageInfo as Installed+import System.Environment (getEnv) -main = defaultMainWithHooks autoconfUserHooks {-         preConf = myPreConf,-         buildHook = myBuildHook,-         cleanHook = myCleanHook,-         copyHook = copyCBindings-       }+main :: IO ()+main = defaultMainWithHooks defaultUserHooks {+  preConf = case buildOS of+              Windows -> myCMakePreConf+              _ -> myPreConf,+  buildHook = myBuildHook,+  cleanHook = myCleanHook,+  copyHook = copyCBindings+  } +myPreConf :: Args -> ConfigFlags -> IO HookedBuildInfo myPreConf args flags = do-   putStrLn "Running autoheader ..."-   rawSystemExit normal "autoheader" []    putStrLn "Running autoconf ..."    rawSystemExit normal "autoconf" []-   preConf autoconfUserHooks args flags+   preConf defaultUserHooks args flags +myCMakePreConf :: Args -> ConfigFlags -> IO HookedBuildInfo+myCMakePreConf args flags =+  do+    let runCMake = do+	fltkHome <- getEnv "FLTK_HOME"+	putStrLn "Running cmake ..."+	rawSystemExit verbose "cmake" [".", "-G", "MSYS Makefiles", "-DFLTK_HOME=" ++ fltkHome]+    clibExists <- doesDirectoryExist fltkcdir+    if (not clibExists)+     then runCMake+     else do+       libs <- getDirectoryContents fltkcdir+       if (null $ filter ((==) "libfltkc.a") libs)+        then runCMake+        else return ()+       return ()+    preConf defaultUserHooks args flags+ fltkcdir = unsafePerformIO getCurrentDirectory ++ "/c-lib" fltkclib = "fltkc" headerdir = unsafePerformIO getCurrentDirectory ++ "/c-src"+currentdir :: FilePath currentdir = unsafePerformIO getCurrentDirectory+getHeaders :: [FilePath] getHeaders = unsafePerformIO $ do   contents <- getDirectoryContents headerdir   let headerFiles = filter (\f -> takeExtension f == ".h" -- keep the headers@@ -120,12 +148,16 @@     _    -> die "Building is not supported with this compiler."  myBuildHook pkg_descr local_bld_info user_hooks bld_flags =-  do fltkcBuilt <- doesDirectoryExist fltkcdir-     if not fltkcBuilt then-       do putStrLn "==Compiling C bindings=="-          rawSystemExit normal "make" ["src"]-       else return ()-     -- (buildHook autoconfUserHooks) pkg_descr local_bld_info user_hooks bld_flags+  do let compileC = do+             putStrLn "==Compiling C bindings=="+             rawSystemExit normal "make" []+     cdirexists <- doesDirectoryExist fltkcdir+     if cdirexists+       then+       do+        clibraries <- getDirectoryContents fltkcdir+        when (null $ filter (Data.List.isInfixOf "fltkc") clibraries) compileC+       else compileC      let new_pkg_descr            = removeExecutables . addHeaders . addIncludeDirs . withFltkc (++) $ pkg_descr          new_local_bld_info = local_bld_info{localPkgDescr = new_pkg_descr}@@ -137,7 +169,7 @@                       _ -> False)                (componentsConfigs new_local_bld_info)          lib_lbi = new_local_bld_info{componentsConfigs = libs}-     buildHook autoconfUserHooks new_pkg_descr lib_lbi user_hooks bld_flags+     buildHook defaultUserHooks new_pkg_descr lib_lbi user_hooks bld_flags      let distPref = fromFlag (buildDistPref bld_flags)          dbFile = distPref </> "package.conf.inplace"          verbosity = fromFlag (buildVerbosity bld_flags)@@ -151,7 +183,9 @@              (CLib lib) -> do cobjs <- getObjectFileDirContents >>=                                          return .                                            map (combine objectFileDir) .-                                             filter (\ f -> takeExtension f == ".o")+                                             filter (\ f -> case buildOS of+                                                             Windows -> takeExtension f == ".obj"+                                                             _ -> takeExtension f == ".o")                               hobjs <- getHaskellObjects lib with_in_place pref objExtension True                               let staticObjectFiles = hobjs ++ cobjs                               (arProg, _ ) <- requireProgram verbosity arProgram@@ -173,7 +207,7 @@  copyCBindings :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO () copyCBindings pkg_descr lbi uhs flags = do-    (copyHook autoconfUserHooks) pkg_descr lbi uhs flags+    (copyHook defaultUserHooks) pkg_descr lbi uhs flags     let libPref = libdir . absoluteInstallDirs pkg_descr lbi                 . fromFlag . copyDest                 $ flags@@ -181,9 +215,9 @@         ["c-lib/libfltkc.a", libPref]     case buildOS of      Linux -> rawSystemExit (fromFlag $ copyVerbosity flags) "cp"-              ["c-lib/libfltkc.so", libPref]+              ["c-lib/libfltkcdyn.so", libPref]      _ -> return ()  myCleanHook pd x uh cf = do   rawSystemExit normal "make" ["clean"]-  cleanHook autoconfUserHooks pd x uh cf+  cleanHook defaultUserHooks pd x uh cf
+ c-examples/CMakeLists.txt view
@@ -0,0 +1,5 @@+ADD_EXECUTABLE(foo foo.cxx)+ADD_DEPENDENCIES(foo fltkc)+TARGET_LINK_LIBRARIES(foo Ui)+TARGET_LINK_LIBRARIES(foo ${FLTK_LIBRARIES})+TARGET_LINK_LIBRARIES(foo ${OPENGL_LIBRARIES})
+ c-src/CMakeCopyObjectFiles.txt view
@@ -0,0 +1,5 @@+function(copyObjectFiles)+  file(GLOB_RECURSE ObjectFiles ${CMAKE_CURRENT_SOURCE_DIR} *.obj)+  file(COPY ${ObjectFiles} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/../static_object_files)+endfunction(copyObjectFiles)+copyObjectFiles()
+ c-src/CMakeLists.txt view
@@ -0,0 +1,114 @@+SET(SourceFiles+  Fl_Menu_ButtonC.cpp+  Fl_PositionerC.cpp+	Fl_TimerC.cpp+	Fl_Value_OutputC.cpp+	Fl_Value_SliderC.cpp+	Fl_ScrollbarC.cpp+	Fl_RollerC.cpp+	Fl_DialC.cpp+	Fl_CounterC.cpp+	Utils.cpp+	xC.cpp+	fl_utf8C.cpp+	glC.cpp+	glutC.cpp+	DerivedText_Editor.cpp+	DerivedShared_Image.cpp+	filenameC.cpp+	Fl_AskC.cpp+	Fl_BitmapC.cpp+	Fl_BoxC.cpp+	Fl_BrowserC.cpp+	Fl_ButtonC.cpp+	Fl_CallbackC.cpp+	Fl_C.cpp+	Fl_Check_ButtonC.cpp+	Fl_ChoiceC.cpp+	Fl_ClockC.cpp+	Fl_Color_ChooserC.cpp+	Fl_Copy_SurfaceC.cpp+	Fl_Double_WindowC.cpp+	Fl_DrawC.cpp+	Fl_DeviceC.cpp+	Fl_EnumerationsC.cpp+	Fl_File_BrowserC.cpp+	Fl_File_IconC.cpp+	Fl_File_InputC.cpp+	Fl_File_ChooserC.cpp+	Fl_Float_InputC.cpp+	Fl_Gl_WindowC.cpp+	Fl_GroupC.cpp+	Fl_Hold_BrowserC.cpp+	Fl_Image_SurfaceC.cpp+	Fl_ImageC.cpp+	Fl_Input_C.cpp+	Fl_InputC.cpp+	Fl_Int_InputC.cpp+	Fl_Light_ButtonC.cpp+	Fl_Menu_C.cpp+	Fl_Menu_ItemC.cpp+	Fl_Multi_BrowserC.cpp+	Fl_Multiline_InputC.cpp+	Fl_Multiline_OutputC.cpp+	Fl_Native_File_ChooserC.cpp+	Fl_OutputC.cpp+	Fl_Overlay_WindowC.cpp+	Fl_Paged_DeviceC.cpp+	Fl_PixmapC.cpp+	Fl_PNM_ImageC.cpp+	Fl_PreferencesC.cpp+	Fl_PrinterC.cpp+	Fl_ProgressC.cpp+	Fl_Radio_ButtonC.cpp+	Fl_Radio_Light_ButtonC.cpp+	Fl_Repeat_ButtonC.cpp+	Fl_Return_ButtonC.cpp+	Fl_RGB_ImageC.cpp+	Fl_Round_ButtonC.cpp+	Fl_Round_ClockC.cpp+	Fl_Secret_InputC.cpp+	Fl_Select_BrowserC.cpp+  Fl_Shared_ImageC.cpp+	fl_show_colormapC.cpp+	Fl_Single_WindowC.cpp+	Fl_SliderC.cpp+	Fl_Sys_Menu_BarC.cpp+	Fl_TableC.cpp+	Fl_Table_RowC.cpp+	Fl_TabsC.cpp+	Fl_Text_BufferC.cpp+	Fl_Text_DisplayC.cpp+	Fl_Text_EditorC.cpp+	Fl_Text_SelectionC.cpp+	Fl_TileC.cpp+	Fl_Toggle_ButtonC.cpp+	Fl_TooltipC.cpp+	Fl_TreeC.cpp+	Fl_Tree_ItemC.cpp+	Fl_Tree_PrefsC.cpp+	Fl_ValuatorC.cpp+	Fl_AdjusterC.cpp+	Fl_Value_InputC.cpp+	Fl_Value_SliderC.cpp+	Fl_WidgetC.cpp+	Fl_WindowC.cpp+	Fl_WizardC.cpp+  )++ADD_DEFINITIONS("${CXX_FLAGS} -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -Wall -DINTERNAL_LINKAGE -g -Icpp -I\"${FLTK_HOME}\"")++MESSAGE(STATUS ${CXX_FLAGS})+ADD_LIBRARY(fltkc ${SourceFiles})++set_target_properties(fltkc PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../c-lib)++add_custom_command(TARGET fltkc PRE_LINK+                   COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCopyObjectFiles.txt+                   )+set_directory_properties(PROPERTIES+                         ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../c-lib;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/../static_object_files;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/cmake_install.cmake;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt;+                                                      ${CMAKE_CURRENT_SOURCE_DIR}/CMakeFiles;")
c-src/Fl_ExportMacros.h view
@@ -12,8 +12,6 @@ #else   #ifdef _WIN32     #define FL_EXPORT_C(TYPE,FUNC_NAME) extern __declspec(dllexport) TYPE __cdecl FUNC_NAME-    #undef EXPORT-    #define EXPORT extern "C" __declspec(dllexport)    #else     #define FL_EXPORT_C(TYPE,FUNC_NAME) extern TYPE FUNC_NAME   #endif
c-src/Fl_Types.h view
@@ -43,7 +43,7 @@  #define FL_NORMAL_TIMER 0 #define FL_VALUE_TIMER  1-#define FL_HIDDEN_TIMER 2  +#define FL_HIDDEN_TIMER 2  #define FL_SORT_ASCENDING	0	/**< sort browser items in ascending alphabetic order. */ #define FL_SORT_DESCENDING	1	/**< sort in descending order */@@ -179,7 +179,6 @@     int height;     const char *name;   } page_format;-#include <config.h> #  ifdef __APPLE__ #    include <OpenGL/gl.h> #  else
c-src/Makefile.in view
@@ -112,25 +112,25 @@ 	SONAME_FLAGS= -shared -Wl,-soname endif .SILENT:-all: libfltkc.a libfltkc.$(SHARED_EXT)+all: libfltkc.a libfltkcdyn.$(SHARED_EXT) .SUFFIXES: .cpp .o .cpp.o: 	test -d $(STATIC_OBJECT_FILES) || mkdir $(STATIC_OBJECT_FILES) 	test -d $(SHARED_OBJECT_FILES) || mkdir $(SHARED_OBJECT_FILES) 	@echo "*** Compiling $<..."-	$(CXXSTATIC) -c $^ -o $(STATIC_OBJECT_FILES)/$@+	$(CXXSTATIC) -c -fPIC $^ -o $(STATIC_OBJECT_FILES)/$@ 	$(CXXSHARED) -c -fPIC $^ -o $(SHARED_OBJECT_FILES)/$@ libfltkc.a : $(OBJECTS) 	test -d $(LIBDIR) || mkdir $(LIBDIR) 	@echo "*** Linking $@..." 	(cd $(STATIC_OBJECT_FILES); \ 	ar rcs $(LIBDIR)/$@ $^;)-libfltkc.so : $(OBJECTS)+libfltkcdyn.so : $(OBJECTS) 	test -d $(LIBDIR) || mkdir $(LIBDIR) 	@echo "*** Linking $@..." 	(cd $(SHARED_OBJECT_FILES); \ 	$(CXX) $(SONAME_FLAGS),$(LIBDIR)/$@ -o $(LIBDIR)/$@ $^);-libfltkc.dylib: $(OBJECTS)+libfltkcdyn.dylib: $(OBJECTS) 	@echo "*** Not linking $@ because of bugs in ./c-src/Makefile.in, help appreciated." clean: 	test -d $(LIBDIR) && rm -rf $(LIBDIR)
c-src/xC.h view
@@ -4,9 +4,12 @@ // always include the FL/*.H headers before local headers // X is included transitively and needed for // the callback mechanism included below to work.+#ifdef _WIN32+ #define FL_LIBRARY 1+#endif #include "FL/Fl.H"-#include "FL/x.H" #include "Fl_CallbackC.h"+#include "FL/x.H" EXPORT { #endif #if !defined(WIN32) && !defined(__APPLE__)
configure.ac view
@@ -1,7 +1,6 @@ AC_PREREQ([2.60]) AC_INIT([fltkc], [0.1], [aditya dawt siram ayt gmail dawt com]) AC_CONFIG_SRCDIR([c-src/Fl_C.h])-AC_CONFIG_HEADERS([config.h])  # Checks for programs. AC_PROG_CXX
fltkhs.buildinfo.in view
@@ -1,1 +1,2 @@ ld-options: @FLTKCONFIGCOMMAND@ -lstdc+++include-dirs: @FLTK_HOME@
fltkhs.cabal view
@@ -1,5 +1,5 @@ name: fltkhs-version: 0.1.0.1+version: 0.1.0.2 synopsis: FLTK bindings description:     Low level bindings for the FLTK GUI toolkit.@@ -111,10 +111,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-table-as-container   Main-Is: table-as-container.hs@@ -124,10 +122,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-texteditor-simple   Main-Is: texteditor-simple.hs@@ -137,10 +133,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-textdisplay-with-colors   Main-Is: textdisplay-with-colors.hs@@ -150,10 +144,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-hello-world   Main-Is: hello-world.hs@@ -163,10 +155,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-doublebuffer   Main-Is: doublebuffer.hs@@ -176,10 +166,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-make-tree   Main-Is: make-tree.hs@@ -189,10 +177,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-tree-simple   Main-Is: tree-simple.hs@@ -202,10 +188,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-table-spreadsheet-with-keyboard-nav   Main-Is: table-spreadsheet-with-keyboard-nav.hs@@ -215,10 +199,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-test_call   Main-Is: TestCall.hs@@ -228,10 +210,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-buttons   Main-Is: Buttons.hs@@ -241,10 +221,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-table-simple   Main-Is: table-simple.hs@@ -254,10 +232,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-table-sort   Main-Is: table-sort.hs@@ -268,10 +244,8 @@     process   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-arc   Main-Is: arc.hs@@ -281,10 +255,8 @@     fltkhs   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-bitmap   Main-Is: bitmap.hs@@ -294,10 +266,8 @@      fltkhs,bytestring   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-boxtype   Main-Is: boxtype.hs@@ -307,10 +277,8 @@      fltkhs,bytestring   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-browser   Main-Is: browser.hs@@ -321,10 +289,8 @@      bytestring   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"  Executable fltkhs-clock   Main-Is: clock.hs@@ -335,7 +301,5 @@      bytestring   default-language: Haskell2010   ghc-Options: -Wall -threaded -fcontext-stack=220-  if os(linux)-     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"-  else-     ghc-Options:+  if !os(darwin)+    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs view
@@ -8,10 +8,14 @@          --          -- $Goals -         -- * Installation+         -- * Installation (Linux & Mac)          ---         -- $Installation+         -- $InstallationLinux +         -- * Installation (Windows 64-bit)+         --+         -- $InstallationWindows+          -- * Demos          --          -- $Demos@@ -213,8 +217,7 @@ -- (7) includes a lot of complete working demos so that the user can get up and running faster -- --- $Installation--- Unfortunately this package does not currently install in Windows. The instructions below are only for OSX and Linux.+-- $InstallationLinux -- -- - Make sure you have OpenGL installed -- - Download and install <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>.@@ -249,6 +252,114 @@ -- --     > > fltkhs-hello-world --++-- $InstallationWindows+--+-- Note: Currently this package only works on 64-bit Windows.+--+-- This install guide has been tested on Windows 7 64-bit with 8GB of RAM.+--+--+-- The general steps involved are:+--+--  - Install <https://github.com/fpco/minghc MinGHC> and upgrade cabal-install+--  - Install <http://www.cmake.org/files/v3.2/cmake-3.2.1-win32-x86.exe CMake>+--  - Download & compile <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>+--  - Install this package+--+-- == Install MinGHC+-- MinGHC installers are available <https://github.com/fpco/minghc here>. This package has been tested with GHC 7.8.4 64-bit and may work with newer versions.+--+-- Once MinGHC is downloaded and installed per the instructions in the link above, install the newest version of cabal-install. This is an important step because the `Setup.hs` that ships with this package uses some of the newer features of the Cabal 1.2.x API.+--+-- @+-- > cabal update+-- > cabal install cabal-install+-- @+--+-- == Install CMake+-- Simply click through the <http://www.cmake.org/files/v3.2/cmake-3.2.1-win32-x86.exe CMake> with the default options. Once this process is complete the `cmake` executable should be available at the CMD prompt:+--+-- @+-- > cmake --version+-- cmake version 2.8.11.2+-- @+--+-- Your version will likely be `cmake version 3.2.x` but so long as it is above `cmake version 2.6.x` the install should proceed smoothly.+--+-- == Download & compile FLTK-1.3.3+-- Please make sure to only download version <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>.+--+-- Once this is downloaded, since the `tar` and `gunzip` utilities ship with MinGHC, you should be able to unpack it at the command prompt:+--+-- @+-- > tar -zxvf fltk-1.3.3-source.tar.gz+-- @+--+-- Then descend into the source directory:+--+-- @+-- > cd fltkh-1.3.3-source+-- @+--+-- Make a build directory to hold the generated CMake files:+--+-- @+-- > mkdir build+-- @+--+-- Descend into the `build` directory:+--+-- @+-- > cd build+-- @+--+-- And run `cmake` telling it to work with the `make` utility that ships with MSYS:+--+-- @+-- > cmake .. -G "MSYS Makefiles"+-- @+--+-- Please note the `..` after `cmake` in the command. This is important because it tells CMake to build using the CMake specification found in the parent directory.+--+-- Once these steps have been completed you should be able to compile the source:+--+-- @+-- > make+-- @+--+--+-- Each compile step may spit out a scary looking warning about a pointer to int cast, but this can be safely ignored. It seems to be an issue with the MinGW g++/gcc compiler.+--+-- Also, the final demo `windowFocus` may fail to compile and complain about a symbol being redefined. This is again an issue with MinGW and can be safely ignored.+--+-- Now it is necessary to define the `FLTK_HOME` environment variable so this package knows where to look for header and library files:+--+-- @+-- > set FLTK_HOME=\<path-to-the-FLTK-root-directory\>+-- @+--+-- == Install this package+--+-- At this point it is highly likely that running `cabal --version` at the command line still invokes the old version even though `cabal` was updated. This is because the location of the newly installed `cabal` has not been added to the PATH variable. You can do so with this command:+--+-- @+-- > set PATH=C:\\Users\\\<your-username\>\\AppData\\Roaming\\cabal\\bin;%PATH%+-- @+--+-- Now you can finally install this package:+--+-- @+-- > > cabal install fltkhs+-- @+--+-- Please note that compared to the Linux and Mac installs the compilation process takes a very long time. The reason for this is the MinGW gcc/g++ compilers are much slower.+--+-- Once this has completed, you can test it by:+--+-- @+-- > fltkhs-hello-world+-- @  -- $Demos --