shithub: minivmac

ref: ea61a2a8e8601d5b732d2c13257413ad4f864b85
dir: /setup/SPFILDEF.i/

View raw version
/*
	SPFILDEF.i
	Copyright (C) 2012 Paul C. Pratt

	You can redistribute this file and/or modify it under the terms
	of version 2 of the GNU General Public License as published by
	the Free Software Foundation.  You should have received a copy
	of the license along with this file; see the file COPYING.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	license for more details.
*/

/*
	program SPecific FILe DEFinitions
*/



/* --- list of source files --- */

static void DoMYOSGLUEdepends(tDoOneDepends p)
{
	{
		char *s = nullpr;

		switch (gbo_lang) {
			case gbk_lang_eng:
				s = "STRCNENG.h";
				break;
			case gbk_lang_fre:
				s = "STRCNFRE.h";
				break;
			case gbk_lang_ita:
				s = "STRCNITA.h";
				break;
			case gbk_lang_ger:
				s = "STRCNGER.h";
				break;
			case gbk_lang_dut:
				s = "STRCNDUT.h";
				break;
			case gbk_lang_spa:
				s = "STRCNSPA.h";
				break;
			case gbk_lang_pol:
				s = "STRCNPOL.h";
				break;
			case gbk_lang_ptb:
				s = "STRCNPTB.h";
				break;
			case gbk_lang_cat:
				s = "STRCNCAT.h";
				break;
			case gbk_lang_cze:
				s = "STRCNCZE.h";
				break;
			case gbk_lang_srl:
				s = "STRCNSRL.h";
				break;
		}

		if (nullpr != s) {
			p(kDepDirCSrc, s);
		}
	}

	p(kDepDirCnfg, "STRCONST.h");
	p(kDepDirCSrc, "INTLCHAR.h");
	p(kDepDirCSrc, "COMOSGLU.h");
	if (WantLocalTalk) {
		p(kDepDirCSrc, "BPFILTER.h");
	}
	if (WantAltKeysMode) {
		p(kDepDirCSrc, "ALTKEYSM.h");
	}
	p(kDepDirCSrc, "CONTROLM.h");
	if (gbk_sndapi_none != gbo_sndapi) {
		{
			char *s = nullpr;

			switch (gbo_sndapi) {
				case gbk_sndapi_alsa:
					s = "SGLUALSA.h";
					break;
				case gbk_sndapi_ddsp:
					s = "SGLUDDSP.h";
					break;
			}

			if (nullpr != s) {
				p(kDepDirCSrc, s);
			}
		}
		p(kDepDirCnfg, "SOUNDGLU.h");
	}
}

static void DoMINEM68Kdepends(tDoOneDepends p)
{
	if (cur_mIIorIIX) {
		p(kDepDirCSrc, "FPMATHEM.h");
		p(kDepDirCSrc, "FPCPEMDV.h");
	}
}

static void DoROMEMDEVdepends(tDoOneDepends p)
{
	if (NeedScrnHack) {
		p(kDepDirCSrc, "SCRNHACK.h");
	}
	if (gbk_AHM_none != cur_AltHappyMac) {
		p(kDepDirCSrc, "HPMCHACK.h");
	}
}

static void DoAllSrcFiles(tDoOneCFile p)
{
	blnr WantSCRNMAPR = (gbk_apifam_osx == gbo_apifam)
		|| (gbk_apifam_mac == gbo_apifam)
		|| (gbk_apifam_cco == gbo_apifam)
		|| (gbk_apifam_xwn == gbo_apifam)
		|| (gbk_apifam_9dr == gbo_apifam)
		|| (gbk_apifam_sdl == gbo_apifam)
		|| (gbk_apifam_sd2 == gbo_apifam);
	blnr WantSCRNTRNS = WantSCRNMAPR && (cur_ScrnDpth != 0);

	p("CNFGRAPI", kDepDirCnfg, kCSrcFlgmNoSource, nullpr);
	p("CNFGGLOB", kDepDirCnfg, kCSrcFlgmNoSource, nullpr);
	p("SYSDEPNS", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);
	p("ENDIANAC", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);
	p("MYOSGLUE", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);

	p("STRCNENG", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_eng == gbo_lang), nullpr);
	p("STRCNFRE", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_fre == gbo_lang), nullpr);
	p("STRCNITA", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_ita == gbo_lang), nullpr);
	p("STRCNGER", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_ger == gbo_lang), nullpr);
	p("STRCNDUT", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_dut == gbo_lang), nullpr);
	p("STRCNSPA", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_spa == gbo_lang), nullpr);
	p("STRCNPOL", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_pol == gbo_lang), nullpr);
	p("STRCNPTB", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_ptb == gbo_lang), nullpr);
	p("STRCNCAT", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_cat == gbo_lang), nullpr);
	p("STRCNCZE", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_cze == gbo_lang), nullpr);
	p("STRCNSRL", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_lang_srl == gbo_lang), nullpr);

	p("STRCONST", kDepDirCnfg, kCSrcFlgmNoSource, nullpr);
	p("INTLCHAR", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);
	p("COMOSGLU", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);
	p("BPFILTER", kDepDirCSrc,
		CSrcFlagsUseHdrIf(WantLocalTalk), nullpr);
	p("ALTKEYSM", kDepDirCSrc,
		CSrcFlagsUseHdrIf(WantAltKeysMode), nullpr);
	p("ACTVCODE", kDepDirCSrc,
		CSrcFlagsUseHdrIf(WantActvCode), nullpr);
	p("CONTROLM", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);
	p("PBUFSTDC", kDepDirCSrc,
		CSrcFlagsUseHdrIf((gbk_apifam_xwn == gbo_apifam)
			|| (gbk_apifam_sd2 == gbo_apifam)
			|| (gbk_apifam_9dr == gbo_apifam)
			|| (gbk_apifam_sdl == gbo_apifam)
			),
		nullpr);
	p("SCRNMAPR", kDepDirCSrc,
		CSrcFlagsUseHdrIf(WantSCRNMAPR), nullpr);
	p("SCRNTRNS", kDepDirCSrc,
		CSrcFlagsUseHdrIf(WantSCRNTRNS), nullpr);
	p("DATE2SEC", kDepDirCSrc, kCSrcFlgmNoSource, nullpr);

	p("SGLUALSA", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_sndapi_alsa == gbo_sndapi), nullpr);
	p("SGLUDDSP", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_sndapi_ddsp == gbo_sndapi), nullpr);

	p("SOUNDGLU", kDepDirCnfg,
		CSrcFlagsUseHdrIf(gbk_sndapi_none != gbo_sndapi), nullpr);

	p("OSGLUMAC", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_mac == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUOSX", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_osx == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUWIN", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_win == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUXWN", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_xwn == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUNDS", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_nds == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUGTK", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_gtk == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSPLAN9", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_9dr == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUSDL", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_sdl == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUSD2", kDepDirCSrc,
		kCSrcFlgmUseAPI
			| CSrcFlagsUseSrcIf(gbk_apifam_sd2 == gbo_apifam),
		DoMYOSGLUEdepends);
	p("OSGLUCCO", kDepDirCSrc,
		kCSrcFlgmUseAPI | kCSrcFlgmOjbc
			| CSrcFlagsUseSrcIf(gbk_apifam_cco == gbo_apifam),
		DoMYOSGLUEdepends);

	p("EMCONFIG", kDepDirCnfg, kCSrcFlgmNoSource, nullpr);
	p("GLOBGLUE", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("M68KITAB", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("DISAM68K", kDepDirCSrc, CSrcFlagsUseIf(WantDisasm), nullpr);
	p("FPMATHEM", kDepDirCSrc,
		CSrcFlagsUseHdrIf(cur_mIIorIIX),
		nullpr);
	p("FPCPEMDV", kDepDirCSrc,
		CSrcFlagsUseHdrIf(cur_mIIorIIX),
		nullpr);

	p("MINEM68K", kDepDirCSrc, kCSrcFlgmSortFirst, DoMINEM68Kdepends);
		/*
			Put the most speed critical part of the
			program first, to help ensure consistent
			alignment for it, regardless of changes
			to rest of program.
			Speed can depend subtly, basically
			randomly, on how code is aligned.
		*/

	p("VIAEMDEV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("VIA2EMDV", kDepDirCSrc, CSrcFlagsUseIf(EmVIA2), nullpr);
	p("IWMEMDEV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("SCCEMDEV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("RTCEMDEV", kDepDirCSrc, CSrcFlagsUseIf(EmRTC), nullpr);
	p("SCRNHACK", kDepDirCSrc,
		CSrcFlagsUseHdrIf(NeedScrnHack), nullpr);
	p("HPMCHACK", kDepDirCSrc,
		CSrcFlagsUseHdrIf(gbk_AHM_none != cur_AltHappyMac), nullpr);
	p("ROMEMDEV", kDepDirCSrc, kCSrcFlgmNone, DoROMEMDEVdepends);
	p("SCSIEMDV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("SONYEMDV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("SCRNEMDV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("VIDEMDEV", kDepDirCSrc, CSrcFlagsUseIf(EmVidCard), nullpr);
	p("MOUSEMDV", kDepDirCSrc, kCSrcFlgmNone, nullpr);
	p("KBRDEMDV", kDepDirCSrc, CSrcFlagsUseIf(EmClassicKbrd), nullpr);
	p("ADBSHARE", kDepDirCSrc,
		CSrcFlagsUseHdrIf(cur_mdl >= gbk_mdl_SE), nullpr);
	p("ADBEMDEV", kDepDirCSrc, CSrcFlagsUseIf(EmADB), nullpr);
	p("PMUEMDEV", kDepDirCSrc, CSrcFlagsUseIf(EmPMU), nullpr);
	p("ASCEMDEV", kDepDirCSrc, CSrcFlagsUseIf(EmASC), nullpr);
	p("SNDEMDEV", kDepDirCSrc,
		CSrcFlagsUseIf((! EmASC) && (gbk_mdl_PB100 != cur_mdl)
			&& MySoundEnabled),
		nullpr);
	p("PROGMAIN", kDepDirCSrc, kCSrcFlgmNone, nullpr);
}

/* --- list of document types --- */

static void WriteRomExtensions(tWriteOneExtension p)
{
	p("rom");
}

static void WriteDskExtensions(tWriteOneExtension p)
{
	p("dsk");
}

static void DoAllDocTypes(tWriteOneDocType p)
{
	p("ROM", "ROM!", "Rom image", WriteRomExtensions);
	p("DSK", "MvIm", "Disk image", WriteDskExtensions);
}