C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

컴포넌트/라이브러리
Delphi/C++Builder Programming Components&Libraries
[568] RAD2009 용 ParserGenerator2 LBS 파일
둘리.CSIEDA [dooly386] 11638 읽음    2009-03-18 15:00
RAD2009 용 Parser Generator 2  Script 파일 입니다.

참고적으로
parser generator2 의 Include path 에
C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\6.0\INCLUDE;C:\Program Files\CodeGear\RAD Studio\6.0\include\dinkumware

와 같이 dinkumware 경로를 추가로 넣어주셔야 합니다.
2009에서는 iostream 과 같은 파일이 이쪽으로 옮겨졌습니다.

감사합니다.

PS: 파일을 첨부하여 올렸는데 다운로드가 않되는 경우가 있군요.
직접 내용을 올립니다.
// borland c++builder

if (IsOption()) {
	// name
	SetName("Borland C++Builder");

	// directory
	SetDirectory("bcb");

	// libraries
	AddLibrary("yl.lib", 1);
	AddLibrary("yld.lib", 1);
	AddLibrary("ylr.lib", 1);
	AddLibrary("ylrd.lib", 1);
	AddLibrary("ylri.dll", 1);
	AddLibrary("ylrid.dll", 1);
	AddLibrary("ylmt.lib", 1);
	AddLibrary("ylmtd.lib", 1);
	AddLibrary("ylmtr.lib", 1);
	AddLibrary("ylmtrd.lib", 1);
	AddLibrary("ylmtri.dll", 1);
	AddLibrary("ylmtrid.dll", 1);
	AddLibrary("ylvmt.lib", 1);
	AddLibrary("ylvmtd.lib", 1);
	AddLibrary("ylvmtr.lib", 1);
	AddLibrary("ylvmtrd.lib", 1);
	AddLibrary("ylvmtri.dll", 1);
	AddLibrary("ylvmtrid.dll", 1);

	// options
	AddEnumOption("Compiler Version", "Compiler Version");
	AddEnumItem("Compiler Version", "Version 3", "Version 3");
	AddEnumItem("Compiler Version", "Version 4", "Version 4");
	AddEnumItem("Compiler Version", "Version 5", "Version 5");
	AddEnumItem("Compiler Version", "Version 6", "Version 6");
	AddEnumItem("Compiler Version", "Version 12", "Version 12");
	SetEnumOption("Compiler Version", "Version 12");
	AddBooleanOption("Unicode", 1, "Unicode");
	AddDirectoryOption("Compiler Bin Directory", "", "CompilerBinDir");
	AddDirectoryOption("Compiler Include Directory", "", "CompilerIncludeDirectory");
	AddDirectoryOption("Compiler Library Directory", "", "CompilerLibraryDirectory");
}
else {
	// flags
	int FLAG_VCL = 0x01;				// vcl
	int FLAG_MULTITHREADED = 0x02;		// multithreaded
	int FLAG_RTLDLL = 0x04;				// rtl dll
	int FLAG_DLL = 0x08;				// dll
	int FLAG_DEBUG = 0x10;				// debug

	// options
	string compilerVersion = GetEnumOption("Compiler Version");
	int bUnicode = GetBooleanOption("Unicode");
	string compilerBinDir = GetDirectoryOption("Compiler Bin Directory");
	string compilerIncludeDir = GetDirectoryOption("Compiler Include Directory");
	string compilerLibraryDir = GetDirectoryOption("Compiler Library Directory");

	// do some checks
	if (compilerBinDir == "") {
		Output("Error, please specify compiler bin directory in compiler options");
		Exit();
	}
	if (compilerIncludeDir == "") {
		Output("Error, please specify compiler include directory in compiler options");
		Exit();
	}
	if (compilerLibraryDir == "") {
		Output("Error, please specify compiler library directory in compiler options");
		Exit();
	}

	SetVariable("PATH", compilerBinDir);

	int nFlags;
	string library = GetLibrary();
	if (library == "yl.lib") {
		nFlags = 0;
	}
	else if (library == "yld.lib") {
		nFlags = FLAG_DEBUG;
	}
	else if (library == "ylr.lib") {
		nFlags = FLAG_RTLDLL;
	}
	else if (library == "ylrd.lib") {
		nFlags = FLAG_RTLDLL | FLAG_DEBUG;
	}
	else if (library == "ylri.dll") {
		nFlags = FLAG_RTLDLL | FLAG_DLL;
	}
	else if (library == "ylrid.dll") {
		nFlags = FLAG_RTLDLL | FLAG_DLL | FLAG_DEBUG;
	}
	else if (library == "ylmt.lib") {
		nFlags = FLAG_MULTITHREADED;
	}
	else if (library == "ylmtd.lib") {
		nFlags = FLAG_MULTITHREADED | FLAG_DEBUG;
	}
	else if (library == "ylmtr.lib") {
		nFlags = FLAG_MULTITHREADED | FLAG_RTLDLL;
	}
	else if (library == "ylmtrd.lib") {
		nFlags = FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_DEBUG;
	}
	else if (library == "ylmtri.dll") {
		nFlags = FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_DLL;
	}
	else if (library == "ylmtrid.dll") {
		nFlags = FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_DLL | FLAG_DEBUG;
	}
	else if (library == "ylvmt.lib") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED;
	}
	else if (library == "ylvmtd.lib") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED | FLAG_DEBUG;
	}
	else if (library == "ylvmtr.lib") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_VCL;
	}
	else if (library == "ylvmtrd.lib") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_VCL | FLAG_DEBUG;
	}
	else if (library == "ylvmtri.dll") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_DLL | FLAG_VCL;
	}
	else if (library == "ylvmtrid.dll") {
		nFlags = FLAG_VCL | FLAG_MULTITHREADED | FLAG_RTLDLL | FLAG_DLL | FLAG_VCL | FLAG_DEBUG;
	}

	int nSourceFileFlags = SFLF_C | SFLF_CPP | SFLF_MBCS;
	if (bUnicode) {
		nSourceFileFlags = nSourceFileFlags | SFLF_UNICODE;
	}

	string libraryDir = GetLibraryDir();
	string libraryPathName = libraryDir + "\\" + library;

	// create directory
	Output("Creating directory...");
	MakeDir(libraryDir);

	if (nFlags & FLAG_DLL) {
		// delete dll
		Output("Deleting DLL...");
		DeleteFile(libraryPathName);

		// delete lib file
		Output("Deleting import library...");
		DeleteFile(libraryDir + "\\" + GetFileBaseName(libraryPathName) + ".lib");

		// delete tds file
		Output("Deleting .TDS file...");
		DeleteFile(libraryDir + "\\" + GetFileBaseName(libraryPathName) + ".tds");
	}
	else {
		// delete library
		Output("Deleting library...");
		DeleteFile(libraryPathName);
	}

	// compile files
	Output("Compiling files...");
	string command = "";
	if (nFlags & FLAG_DLL) {
		command = "-WD ";
	}
	if (nFlags & FLAG_DEBUG) {
		command = command + "-Od -w -Ve -r- -k -y -v -vi- -c -b- -w-par -w-inl -Vx";
	}
	else {
		command = command + "-O2 -w -Ve -k- -vi -c -b- -w-par -w-inl -Vx";
	}
	if (nFlags & FLAG_MULTITHREADED) {
		command = command + " -tWM";
	}
	else {
		command = command + " -tWM-";
	}
	if (nFlags & FLAG_RTLDLL) {
		command = command + " -tWR";
	}
	command = command + "\n-I\"" + GetIncludeDir() + "\";\"" + compilerIncludeDir + "\"\n-D";
	if (!(nFlags & FLAG_VCL)) {
		command = command + "_NO_VCL;";
	}
	if (nFlags & FLAG_RTLDLL) {
		command = command + "_RTLDLL;";
	}
	if (nFlags & FLAG_DEBUG) {
		command = command + "YYDEBUG";
	}
	else {
		command = command + "NDEBUG";
	}
	if (nFlags & FLAG_DLL) {
		command = command + ";YYBUILDDLL";
	}
	if (!bUnicode) {
		command = command + ";YYNUNICODE";
	}
	command = command + " -Tkh30000\n";

	string commandFileName = GetSourceDir() + "\\" + "temp.cfg";
	DeleteFile(commandFileName);
	AppendFile(commandFileName, command);

	int i = OpenSourceFileList(nSourceFileFlags);
	if (i != -1) {
		string fileName;
		while (GetSourceFile(i, fileName)) {
			int nExitCode;
			int bSuccess = Execute("bcc32.exe +\"" + commandFileName + "\" \"" + fileName + "\"", nExitCode);
			if (!bSuccess || nExitCode) {
				Exit();
			}
		}
		CloseSourceFileList(i);
	}
	DeleteFile(commandFileName);

	if (nFlags & FLAG_DLL) {
		// link
		Output("Linking...");
		command = "";
		int i = OpenSourceFileList(nSourceFileFlags);
		if (i != -1) {
			string fileName;
			while (GetSourceFile(i, fileName)) {
				command = command + "\"" + GetSourceDir() + "\\" + GetFileBaseName(fileName) + ".obj\" +\n";
			}
			CloseSourceFileList(i);
		}

		command = command + "-L" + GetShortPathName(compilerLibraryDir) + "\\obj;" +
			GetShortPathName(compilerLibraryDir);
		if (nFlags & FLAG_DEBUG) {
			command = command + ";" + GetShortPathName(compilerLibraryDir) + "\\Debug +\n";
		}
		else {
			command = command + ";" + GetShortPathName(compilerLibraryDir) + "\\Release +\n";
		}
		command = command + "-aa -Tpd -x -Gn -Gi";
		if (nFlags & FLAG_DEBUG) {
			command = command + " -v";
		}
		command = command + " c0d32.obj";
		if (nFlags & FLAG_VCL) {
			if (compilerVersion == "Version 6") {
				command = command + " vcl.bpi rtl.bpi vclx.bpi bcbsmp.bpi dclocx.bpi Memmgr.Lib";
			}
			if (compilerVersion == "Version 12") {
				command = command + " vcl.bpi rtl.bpi vclx.bpi vclsmp.bpi dclocx.bpi vclib.bpi Memmgr.Lib";
			}
			command = command + " sysinit.obj";
		}
		command = command + ", +\n" + GetShortPathName(libraryDir) + "\\" + library + ",, +\n";
		if (nFlags & FLAG_VCL) {
			if (compilerVersion == "Version 3") {
				command = command + "vcl35.lib import32.lib cp32mti.lib vcle35.lib,,";
			}
			else if (compilerVersion == "Version 4") {
				command = command + "vcl40.lib import32.lib cp32mti.lib vcle40.lib,,";
			}
			else {
				command = command + "vcl.lib import32.lib cp32mti.lib vcle.lib,,";
			}
		}
		else if (nFlags & FLAG_MULTITHREADED) {
			command = command + "import32.lib cw32mti.lib,,";
		}
		else {
			command = command + "import32.lib cw32i.lib,,";
		}

		string commandFileName = GetSourceDir() + "\\temp.rsp";
		DeleteFile(commandFileName);
		AppendFile(commandFileName, command);
		int nExitCode;
		int bSuccess = Execute("ilink32.exe @" + GetShortPathName(commandFileName), nExitCode);
		if (!bSuccess || nExitCode) {
			Exit();
		}
		DeleteFile(commandFileName);
	}
	else {
		// create library
		Output("Creating library...");
		if (nFlags & FLAG_DEBUG) {
			command = "/P64";
		}
		else {
			command = "/P32";
		}
		int i = OpenSourceFileList(nSourceFileFlags);
		if (i != -1) {
			string fileName;
			while (GetSourceFile(i, fileName)) {
				command = command + " &\n+" + GetShortPathName(GetSourceDir()) + "\\" +
					GetFileBaseName(GetShortPathName(fileName)) + ".obj";
			}
			CloseSourceFileList(i);
		}

		string commandFileName = GetSourceDir() + "\\temp.rsp";
		DeleteFile(commandFileName);
		AppendFile(commandFileName, command);
		int nExitCode;
		int bSuccess = Execute("tlib.exe " + GetShortPathName(libraryDir) + "\\" + library +
			" @" + GetShortPathName(commandFileName), nExitCode);
		if (!bSuccess || nExitCode) {
			Exit();
		}
		DeleteFile(commandFileName);
	}

	// delete object files
	Output("Deleting object files...");
	i = OpenSourceFileList(nSourceFileFlags);
	if (i != -1) {
		string fileName;
		while (GetSourceFile(i, fileName)) {
			DeleteFile(GetSourceDir() + "\\" + GetFileBaseName(fileName) + ".obj");
		}
		CloseSourceFileList(i);
	}
}


+ -

관련 글 리스트
568 RAD2009 용 ParserGenerator2 LBS 파일 둘리.CSIEDA 11638 2009/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.