IF(NOT MAN_DIR)
	SET(MAN_DIR "man")
ENDIF(NOT MAN_DIR)

FIND_PROGRAM(SH_EXEC NAMES sh dash bash DOC "path to shell executable")
FIND_PROGRAM(SED_EXEC NAMES sed DOC "path to sed executable")
MARK_AS_ADVANCED(SH_EXEC)
MARK_AS_ADVANCED(SED_EXEC)

FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man1)
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man3)
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mann)

IF(SED_EXEC AND SH_EXEC AND NOT TKMAN_GENERATED)
	MESSAGE("Generating Tk man pages...")

	SET(tk_MAN1
		wish.1
		)
	FOREACH(manfile ${tk_MAN1})
		EXEC_PROGRAM(${SH_EXEC} ARGS
			${CMAKE_CURRENT_SOURCE_DIR}/../unix/installManPage
			${CMAKE_CURRENT_SOURCE_DIR}/${manfile}
			${CMAKE_CURRENT_BINARY_DIR}/man1
			OUTPUT_VARIABLE MAN1_SH)
	ENDFOREACH(manfile ${tk_MAN1})

	SET(tk_MAN3
		3DBorder.3
		AddOption.3
		BindTable.3
		CanvPsY.3
		CanvTkwin.3
		CanvTxtInfo.3
		Clipboard.3
		ClrSelect.3
		ConfigWidg.3
		ConfigWind.3
		CoordToWin.3
		CrtCmHdlr.3
		CrtConsoleChan.3
		CrtErrHdlr.3
		CrtGenHdlr.3
		CrtImgType.3
		CrtItemType.3
		CrtPhImgFmt.3
		CrtSelHdlr.3
		CrtWindow.3
		DeleteImg.3
		DrawFocHlt.3
		EventHndlr.3
		FindPhoto.3
		FontId.3
		FreeXId.3
		GeomReq.3
		GetAnchor.3
		GetBitmap.3
		GetCapStyl.3
		GetClrmap.3
		GetColor.3
		GetCursor.3
		GetDash.3
		GetFont.3
		GetGC.3
		GetHINSTANCE.3
		GetHWND.3
		GetImage.3
		GetJoinStl.3
		GetJustify.3
		GetOption.3
		GetPixels.3
		GetPixmap.3
		GetRelief.3
		GetRootCrd.3
		GetScroll.3
		GetSelect.3
		GetUid.3
		GetVRoot.3
		GetVisual.3
		Grab.3
		HWNDToWindow.3
		HandleEvent.3
		IdToWindow.3
		ImgChanged.3
		Inactive.3
		InternAtom.3
		MainLoop.3
		MainWin.3
		MaintGeom.3
		ManageGeom.3
		MapWindow.3
		MeasureChar.3
		MoveToplev.3
		Name.3
		NameOfImg.3
		OwnSelect.3
		ParseArgv.3
		QWinEvent.3
		Restack.3
		RestrictEv.3
		SetAppName.3
		SetCaret.3
		SetClass.3
		SetClassProcs.3
		SetGrid.3
		SetOptions.3
		SetVisual.3
		StrictMotif.3
		TextLayout.3
		TkInitStubs.3
		Tk_Init.3
		Tk_Main.3
		WindowId.3
		ttk_Geometry.3
		ttk_Theme.3
		)
	FOREACH(manfile ${tk_MAN3})
		EXEC_PROGRAM(${SH_EXEC} ARGS
			${CMAKE_CURRENT_SOURCE_DIR}/../unix/installManPage
			${CMAKE_CURRENT_SOURCE_DIR}/${manfile}
			${CMAKE_CURRENT_BINARY_DIR}/man3
			OUTPUT_VARIABLE MAN3_SH)
	ENDFOREACH(manfile ${tk_MAN3})

	SET(tk_MANN
		bell.n
		bind.n
		bindtags.n
		bitmap.n
		button.n
		canvas.n
		checkbutton.n
		chooseColor.n
		chooseDirectory.n
		clipboard.n
		colors.n
		console.n
		cursors.n
		destroy.n
		dialog.n
		entry.n
		event.n
		focus.n
		focusNext.n
		font.n
		frame.n
		getOpenFile.n
		grab.n
		grid.n
		image.n
		keysyms.n
		label.n
		labelframe.n
		listbox.n
		loadTk.n
		lower.n
		menu.n
		menubar.n
		menubutton.n
		message.n
		messageBox.n
		option.n
		optionMenu.n
		options.n
		pack-old.n
		pack.n
		palette.n
		panedwindow.n
		photo.n
		place.n
		popup.n
		radiobutton.n
		raise.n
		scale.n
		scrollbar.n
		selection.n
		send.n
		spinbox.n
		text.n
		tk.n
		tkerror.n
		tkvars.n
		tkwait.n
		toplevel.n
		ttk_button.n
		ttk_checkbutton.n
		ttk_combobox.n
		ttk_entry.n
		ttk_frame.n
		ttk_image.n
		ttk_intro.n
		ttk_label.n
		ttk_labelframe.n
		ttk_menubutton.n
		ttk_notebook.n
		ttk_panedwindow.n
		ttk_progressbar.n
		ttk_radiobutton.n
		ttk_scale.n
		ttk_scrollbar.n
		ttk_separator.n
		ttk_sizegrip.n
		ttk_style.n
		ttk_treeview.n
		ttk_vsapi.n
		ttk_widget.n
		winfo.n
		wm.n
		)
	FOREACH(manfile ${tk_MANN})
		EXEC_PROGRAM(${SH_EXEC} ARGS
			${CMAKE_CURRENT_SOURCE_DIR}/../unix/installManPage
			${CMAKE_CURRENT_SOURCE_DIR}/${manfile}
			${CMAKE_CURRENT_BINARY_DIR}/mann
			OUTPUT_VARIABLE MANN_SH)
	ENDFOREACH(manfile ${tk_MANN})
	SET(TKMAN_GENERATED 1 CACHE BOOL "Flag signifying Tk man pages are generated" FORCE)
	MARK_AS_ADVANCED(TKMAN_GENERATED)

ENDIF(SED_EXEC AND SH_EXEC AND NOT TKMAN_GENERATED)

IF(TKMAN_GENERATED)
	FILE(GLOB TK_MAN1 "${CMAKE_CURRENT_BINARY_DIR}/man1/*")
        foreach(man ${TK_MAN1})
			 set_source_files_properties(${man} PROPERTIES GENERATED TRUE)
          get_filename_component(tkman1 ${man} NAME)
          if (NOT CMAKE_CONFIGURATION_TYPES)
            configure_file(${man} ${CMAKE_BINARY_DIR}/${MAN_DIR}/man1/${tkman1} COPYONLY)
          else (NOT CMAKE_CONFIGURATION_TYPES)
            foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
              string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
              configure_file(${man} ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/${MAN_DIR}/man1/${tkman1} COPYONLY)
            endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
          endif (NOT CMAKE_CONFIGURATION_TYPES)
        endforeach(man ${TK_MAN1})
	INSTALL(FILES ${TK_MAN1} DESTINATION ${MAN_DIR}/man1)

	FILE(GLOB TK_MAN3 "${CMAKE_CURRENT_BINARY_DIR}/man3/*")
        foreach(man ${TK_MAN3})
			 set_source_files_properties(${man} PROPERTIES GENERATED TRUE)
          get_filename_component(tkman3 ${man} NAME)
          if (NOT CMAKE_CONFIGURATION_TYPES)
            configure_file(${man} ${CMAKE_BINARY_DIR}/${MAN_DIR}/man3/${tkman3} COPYONLY)
          else (NOT CMAKE_CONFIGURATION_TYPES)
            foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
              string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
              configure_file(${man} ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/${MAN_DIR}/man3/${tkman3} COPYONLY)
            endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
          endif (NOT CMAKE_CONFIGURATION_TYPES)
        endforeach(man ${TK_MAN3})
	INSTALL(FILES ${TK_MAN3} DESTINATION ${MAN_DIR}/man3)

	FILE(GLOB TK_MANN "${CMAKE_CURRENT_BINARY_DIR}/mann/*")
        foreach(man ${TK_MANN})
			 set_source_files_properties(${man} PROPERTIES GENERATED TRUE)
          get_filename_component(tkmann ${man} NAME)
          if (NOT CMAKE_CONFIGURATION_TYPES)
            configure_file(${man} ${CMAKE_BINARY_DIR}/${MAN_DIR}/mann/${tkmann} COPYONLY)
          else (NOT CMAKE_CONFIGURATION_TYPES)
            foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
              string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
              configure_file(${man} ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/${MAN_DIR}/mann/${tkmann} COPYONLY)
            endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
          endif (NOT CMAKE_CONFIGURATION_TYPES)
        endforeach(man ${TK_MANN})
	INSTALL(FILES ${TK_MANN} DESTINATION ${MAN_DIR}/mann)
ENDIF(TKMAN_GENERATED)
