/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.cres.extend.ui.module.gencode.util;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.EList;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.cres.extend.cresextend.GccDefine;
import com.hundsun.ares.studio.cres.extend.cresextend.MvcDefine;
import com.hundsun.ares.studio.cres.extend.cresextend.ProcDefine;
/**
* MakeFile�ļ�������
* @author
* @version 1.0
* @history
*/
public class MakeFileBuilder {
private static final String HEADER_COMMENT =
"# *********************************************************************\n"+
"# Make�ļ�ע�⣺\n"+
"# ���붨�����»���������\n"+
"# windows: \n"+
"# ORACLE_HOME �����磺e:\\oracle\\ora10g��\n"+
"# VC_HOME �����磺c:\\program files\\devstudio\\vc\\include��\n"+
"# linux: \n"+
"# GCC_VER �����磺export GCC_VER = 3.2.3�� ����ִ�У�g++ -v���ҵ�ǰ�汾 }\n"+
"# \n"+
"# ����ʵ����\n"+
"# windows: \n"+
"# ִ�а汾: nmake -fs_XXXXflow.mvc -D _DEBUG=1 ORA_VER=10 \n"+
"# linux: \n"+
"# ִ�а汾: make -fs_XXXXflow.gcc ORA_VER=10 \n"+
"# \n"+
"# *********************************************************************\n" ;
private static final String BASE_DIR_DEFINE =
"#�������makefile\n" +
"#Ŀ��: %s\n" +
"FBASE_HOME = %s\n\n";
private static final String EXT_DEFINE =
"#obj��չ������$TO\n" +
"TO=%s\n" +
"#proc�ļ���չ������$FROM\n" +
"FROM=pc\n\n";
private static final String GCC_OBJS_DEFINE =
"#Ҫ����������,���������obj�ļ�����\n" +
"FC1 = %s\n" +
"FC2 = s_glbfunction_or\n" +
"FC3 = libpublic\n" +
"FC4 = s_publicfunc\n" +
"FC5 = %s\n" +
"%s\n" +
"OBJS1 = $(FC1).$(TO) $(FC5).$(TO)\n\n";
private static final String GCC_OBJS_DEFINE2 =
"#Ҫ����������,���������obj�ļ�����\n" +
"FC1 = %s\n" +
"FC2 = s_libpublic\n" +
"FC3 = s_helper\n" +
"FC4 = s_glbfunction_or\n" +
"FC5 = %s\n" +
"%s\n" +
"OBJS1 = $(FC1).$(TO) $(FC5).$(TO)\n\n";
private static final String MVC_OBJS_DEFINE =
"#Ҫ����������,���������obj�ļ�����\n" +
"FC1 = %s\n" +
"FC2 = s_glbfunction_or\n" +
"FC3 = libpublic\n" +
"FC4 = s_publicfunc\n" +
"FC5 = %s\n" +
"%s\n" +
"OBJS1 = $(FC1).$(TO) $(FC2).$(TO) $(FC3).$(TO) $(FC4).$(TO) $(FC5).$(TO) %s\n\n";
/** 2.0 MVC ���� */
private static final String MVC_OBJS_DEFINE2 =
"#Ҫ����������,���������obj�ļ�����\n" +
"FC1 = %s\n" +
"FC2 = s_libpublic\n" +
"FC3 = s_helper\n" +
"FC4 = s_glbfunction_or\n" +
"FC5 = %s\n" +
"%s\n" +
"OBJS1 = $(FC1).$(TO) $(FC2).$(TO) $(FC3).$(TO) $(FC4).$(TO) $(FC5).$(TO) %s\n\n";
private static final String GCC_OUTDIR_DEFINE =
"ifneq (,$(findstring solaris,$(OSTYPE)))\n" +
"OUTDIR = %s\n" +
"else\n" +
"OUTDIR = %s\n" +
"endif\n\n";
private static final String MVC_OUTDIR_DEFINE =
"#======= �ļ�·�� =================\n" +
"OUTDIR=%s\n";
private static final String PROC_DEFINE =
"#PROCԤ������\n" +
"PROC = %s\n";
private static final String CC_DEFINE =
"#CPP������\n" +
"CC = %s\n\n";
private static final String PROC_PARAMETER_DEFINE =
"#Ԥ����ѡ��\n" +
"CPP_PROFLAGS = %s\n\n";
// private static final String INCLUDE_DEFINE =
// "INCDIR=%s\n\n";
private static final String GCC_DEFS_DEFINE =
"#(-Dxxx should be added to DEFS macro):\n" +
"DEFS =%s\n\n";
private static final String GCC_OPTION_DEFINE2 =
"#option ���룬����ѡ��\n" +
"CFLAGS = -c -fPIC $(DEFS)\n" +
"LDFLAGS = -shared\n" +
"STDLIBS = -lc -lnsl -ldl -lm -lstdc++ -lpthread\n" +
"LIBPATH=$(OUTDIR)\n" +
"DBLIB = -L$(ORACLE_HOME)/lib -lclntsh -L$(ORACLE_HOME)/lib -lsql$(ORA_VER)\n" +
"HSLIB = -L$(OUTDIR) -l$(FC4) -l$(FC2) -l$(FC3) %s\n\n";
private static final String GCC_OPTION_DEFINE2_MYSQL =
"#option ���룬����ѡ��\n" +
"CFLAGS = -c -fPIC $(DEFS)\n" +
"LDFLAGS = -shared\n" +
"STDLIBS = -lc -lnsl -ldl -lm -lstdc++ -lpthread\n" +
"LIBPATH=$(OUTDIR)\n" +
"DBLIB = \n" +
"HSLIB = -L$(OUTDIR) -l$(FC4) -l$(FC2) -l$(FC3) %s\n\n";
private static final String GCC_OPTION_DEFINE =
"#option ���룬����ѡ��\n" +
"CFLAGS = -c -fPIC $(DEFS)\n" +
"LDFLAGS = -shared\n" +
"STDLIBS = -lc -lnsl -ldl -lm -lstdc++ -lpthread\n" +
"LIBPATH=$(OUTDIR)\n" +
"DBLIB = -L$(ORACLE_HOME)/lib -lclntsh -L$(ORACLE_HOME)/lib -lsql$(ORA_VER)\n" +
"HSLIB = -L$(OUTDIR) -l$(FC4).$(ORA_VER) -l$(FC2).$(ORA_VER) -l$(FC3) %s\n\n";
/** ����1�����ӿ⣬����2�ǵ�����������/EXPORT:OnLoad */
private static final String MVC_OPTION_DEFIEN =
"#����ѡ��\n" +
"CFLAGS = -c -nologo -W3 -MD -GX\n" +
"#link��·������\n" +
"LIBPATH=$(FBASE_HOME)/Lib/mvc\n" +
"LIBS= /link %s\n" +
"LDFLAGS = /LD\n" +
"#��̬���������\n" +
"EXP= %s \n" +///EXPORT:GetCompsInfo /EXPORT:OnLoad /EXPORT:OnUnload /EXPORT:OnStart /EXPORT:OnStop\n" +
"DBLIB= $(ORACLE_HOME)\\precomp\\lib\\orasql$(ORA_VER).lib\n";
//ͷ�ļ�·��
private static final String GCC_INCLAALL_DEFINE_DESC = "#ͷ�ļ�·��\n";
//2013��7��8��15:51:50 qinyuan ͷ�ļ�·��֧����Ŀ��������
private static final String GCC_INCLALL_DEFINE_DEFAULT =
"INCLALL=-I $(FBASE_HOME) -I $(ORACLE_HOME)/precomp/public -I $(ORACLE_HOME)/oci/include\n\n";
private static final String MVC_INCLALL_DEFINE =
"#ͷ�ļ�·��\n" +
"INCLALL = %s \n";
private static final String GCC_DEBUG_DEFINE =
"#debug�汾\n" +
"ifdef _DEBUG\n" +
"DEFS = -D_DEBUG\n" +
"CFLAGS = -c -g -fPIC $(DEFS)\n" +
"endif\n";
private static final String MVC_DEBUG_DEFINE =
"#debug�汾\n" +
"!IFDEF _DEBUG\n" +
"CFLAGS = -c -nologo -W3 -GX -MDd \n" +
"!ENDIF\n";
private static final String GCC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t$(CC) $(LDFLAGS) $(OBJS1) $(DBLIB) $(HSLIB) -o$(OUTDIR)/lib$(FC1).$(ORA_VER).so $(LIBS) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).$(FROM)\n" +
"\t$(PROC) $(CPP_PROFLAGS) iname=$(FC2).$(FROM) oname=$(FC2).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC2).cpp -o $(FC2).o\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC5).$(TO):$(FC5).$(FROM)\n" +
"\t$(PROC) $(CPP_PROFLAGS) iname=$(FC5).$(FROM) oname=$(FC5).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC5).cpp -o $(FC5).o\n" +
"\n" +
"\n" +
"cleanobj:\n" +
"\trm -fr *.o core *~ cxx_repository\n" +
"clean: cleanobj\n" +
"\trm -f $(OUTDIR)/$(ASPACK_DLL)\n" +
"doxygen:\n" +
"\tdoxygen doxygen.cfg\n" +
"\t-del *.obj\n\n";
private static final String AS_GCC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t$(CC) $(LDFLAGS) $(OBJS1) $(DBLIB) $(HSLIB) -o$(OUTDIR)/lib$(FC1).$(ORA_VER).so $(LIBS) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).$(FROM)\n" +
"\t$(PROC) $(CPP_PROFLAGS) iname=$(FC1).$(FROM) oname=$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).cpp)\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC2).cpp -o $(FC2).o\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC4).$(TO):$(FC4).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC4).cpp $(INCLALL)\n" +
"\n" +
"$(FC5).$(TO):$(FC5).$(FROM)\n" +
"\t$(PROC) $(CPP_PROFLAGS) iname=$(FC5).$(FROM) oname=$(FC5).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC5).cpp -o $(FC5).o\n" +
"\n" +
"\n" +
"cleanobj:\n" +
"\trm -fr *.o core *~ cxx_repository\n" +
"clean: cleanobj\n" +
"\trm -f $(OUTDIR)/$(ASPACK_DLL)\n" +
"doxygen:\n" +
"\tdoxygen doxygen.cfg\n" +
"\t-del *.obj\n\n";
private static final String LS_GCC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t $(CC) $(LDFLAGS) $(OBJS1) $(HSLIB) -o$(OUTDIR)/lib$(FC1).$(ORA_VER).so $(LIBS) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC2).cpp -o $(FC2).o\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC5).$(TO):$(FC5).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC5).cpp -o $(FC5).o\n" +
"\n" +
"\n" +
"cleanobj:\n" +
"\trm -fr *.o core *~ cxx_repository\n" +
"clean: cleanobj\n" +
"\trm -f $(OUTDIR)/$(ASPACK_DLL)\n" +
"doxygen:\n" +
"\tdoxygen doxygen.cfg\n" +
"\t-del *.obj\n\n";
private static final String LS_GCC_COMMAND_MYSQL =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t $(CC) $(LDFLAGS) $(OBJS1) $(HSLIB) -o$(OUTDIR)/lib$(FC1).so $(LIBS) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC2).cpp -o $(FC2).o\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC5).$(TO):$(FC5).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) $(FC5).cpp -o $(FC5).o\n" +
"\n" +
"\n" +
"cleanobj:\n" +
"\trm -fr *.o core *~ cxx_repository\n" +
"clean: cleanobj\n" +
"\trm -f $(OUTDIR)/$(ASPACK_DLL)\n" +
"doxygen:\n" +
"\tdoxygen doxygen.cfg\n" +
"\t-del *.obj\n\n";
private static final String MVC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t$(CC) $(LDFLAGS) $(INCLALL) $(OBJS1) -o$(OUTDIR)/$(FC1)$(ORA_VER) $(LIBS) $(DBLIB) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).$(FROM)\n" +
"\t$(PROC) iname=$(FC2).$(FROM) oname=$(FC2).cpp $(CPP_PROFLAGS)\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC2).obj $(FC2).cpp\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC4).$(TO):$(FC4).$(FROM)\n" +
"\t$(PROC) iname=$(FC4).$(FROM) oname=$(FC4).cpp $(CPP_PROFLAGS)\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC4).obj $(FC4).cpp\n" +
"\n" +
"$(FC5).$(TO):$(FC5).$(FROM)\n" +
"\t$(PROC) iname=$(FC5).$(FROM) oname=$(FC5).cpp $(CPP_PROFLAGS)\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC5).obj $(FC5).cpp\n" +
"%s\n" +
"\n" +
"clean:\n" +
"\t-del *.obj\n" +
"\t-del $(OUTDIR)\\$(FC1)\n";
private static final String AS_MVC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t$(CC) $(LDFLAGS) $(INCLALL) $(OBJS1) -o$(OUTDIR)/$(FC1)$(ORA_VER) $(LIBS) $(DBLIB) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).$(FROM)\n" +
"\t$(PROC) $(CPP_PROFLAGS) iname=$(FC1).$(FROM) oname=$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC2).obj $(FC2).cpp\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC4).$(TO):$(FC4).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC4).obj $(FC4).cpp\n" +
"\n" +
"$(FC5).$(TO):$(FC5).$(FROM)\n" +
"\t$(PROC) iname=$(FC5).$(FROM) oname=$(FC5).cpp $(CPP_PROFLAGS)\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC5).obj $(FC5).cpp\n" +
"%s\n" +
"\n" +
"clean:\n" +
"\t-del *.obj\n" +
"\t-del $(OUTDIR)\\$(FC1)\n";
private static final String LS_MVC_COMMAND =
"all:$(FC1)\n" +
"\n" +
"$(FC1):$(OBJS1)\n" +
"\t$(CC) $(LDFLAGS) $(INCLALL) $(OBJS1) -o$(OUTDIR)/$(FC1)$(ORA_VER) $(LIBS) $(EXP)\n" +
"\n" +
"$(FC1).$(TO):$(FC1).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC1).cpp $(INCLALL)\n" +
"\n" +
"$(FC2).$(TO):$(FC2).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC2).obj $(FC2).cpp\n" +
"\n" +
"$(FC3).$(TO):$(FC3).cpp\n" +
"\t$(CC) $(CFLAGS) $(FC3).cpp $(INCLALL)\n" +
"\n" +
"$(FC4).$(TO):$(FC4).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC4).obj $(FC4).cpp\n" +
"\n" +
"$(FC5).$(TO):$(FC5).cpp\n" +
"\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC5).obj $(FC5).cpp\n" +
"%s\n" +
"\n" +
"clean:\n" +
"\t-del *.obj\n" +
"\t-del $(OUTDIR)\\$(FC1)\n";
/**
* ����2.0ҵ����gcc�ļ�
*
* @param project
* @param sb
* @param soName
* @param serviceName
* @param functionName
* @param depends
*/
static public void writeLSGccMakeFile(IARESProject project, StringBuffer sb, String soName, String serviceName, String functionName, String depends[] ) throws Exception{
EList<GccDefine> gccDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getGccDefine();
Map<String, GccDefine> gccDefineMap = new HashMap<String, GccDefine>();
for (GccDefine define : gccDefine) {
gccDefineMap.put(define.getParameter(), define);
}
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
if(null != gccDefineMap.get("FBASE_HOME")){
if(gccDefineMap.get("FBASE_HOME").isIsUsed()){
sb.append(String.format(BASE_DIR_DEFINE, soName, gccDefineMap.get("FBASE_HOME").getValue() )) ;
}
}else {
sb.append(String.format(BASE_DIR_DEFINE, soName, ".." )) ;
}
// ��չ������
if(null != gccDefineMap.get("TO")){
if(gccDefineMap.get("TO").isIsUsed()){
sb.append(String.format(EXT_DEFINE, gccDefineMap.get("TO").getValue()));
}
}else {
sb.append(String.format(EXT_DEFINE, "o"));
}
StringBuffer dependObjs = new StringBuffer();
StringBuffer hslibex = new StringBuffer();
StringBuffer inclall = new StringBuffer();
//�û��Զ���FC
int fcNum = 0;//�û��Զ���FC����
if(null != gccDefineMap.get("FC") && gccDefineMap.get("FC").isIsUsed()){
String fc = gccDefineMap.get("FC").getValue();
if(StringUtils.isNotBlank(fc)){
if(StringUtils.contains(fc, ",")){
String[] fcs = fc.split(",");
for (int i = 0; i < fcs.length; i++) {
if(StringUtils.isNotBlank(fcs[i])){
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(fcs[i]);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6);
hslibex.append(") ");
fcNum++;
}
}
}else {
dependObjs.append("FC");
dependObjs.append(6);
dependObjs.append(" = ");
dependObjs.append(fc);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(6);
hslibex.append(") ");
fcNum++;
}
}
}
//ģ������
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6+fcNum);
dependObjs.append(" = ");
dependObjs.append(depends[i]);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6+fcNum);
hslibex.append(").$(ORA_VER) ");
}
// Objects
sb.append(String.format(GCC_OBJS_DEFINE2, serviceName, functionName, dependObjs));
//outdir
String outdir = "$(FBASE_HOME)/appcom";
if(null != gccDefineMap.get("OUTDIR") && gccDefineMap.get("OUTDIR").isIsUsed()){
outdir = gccDefineMap.get("OUTDIR").getValue();
}
sb.append(String.format(GCC_OUTDIR_DEFINE,outdir,outdir));
//CC
if(null != gccDefineMap.get("CC")){
if(gccDefineMap.get("CC").isIsUsed()) {
sb.append(String.format(CC_DEFINE, gccDefineMap.get("CC").getValue()));
}
}else{
sb.append(String.format(CC_DEFINE, "g++"));
}
//DEFS
if(null != gccDefineMap.get("DEFS")){
if(gccDefineMap.get("DEFS").isIsUsed()) {
sb.append(String.format(GCC_DEFS_DEFINE, gccDefineMap.get("DEFS").getValue()));
}
}else {
sb.append(String.format(GCC_DEFS_DEFINE, "-D OS_UNIX"));
}
sb.append("\n");
for (GccDefine define : gccDefine) {
if(!define.isIsUsed()){
continue;
}
if(StringUtils.equals(define.getParameter(), "LIBS")) {
if(!define.getValue().trim().isEmpty()) {
String libs[] = define.getValue().split(",");
for (String lib : libs) {
hslibex.append( " -l " );
hslibex.append( lib );
hslibex.append( " " );
}
}
}
if(StringUtils.equalsIgnoreCase(define.getParameter(), "CC_INCLUDE")){
if(!define.getValue().trim().isEmpty()) {
inclall.append("INCLALL = ");
String libs[] = define.getValue().split(",");
for (String lib : libs) {
inclall.append( " -I " );
inclall.append( lib );
inclall.append( " " );
}
inclall.append("\n\n");
}
}
}
sb.append(String.format(GCC_OPTION_DEFINE2, hslibex));
//ͷ�ļ�
sb.append(GCC_INCLAALL_DEFINE_DESC);
if(StringUtils.isEmpty(inclall.toString())){
sb.append(GCC_INCLALL_DEFINE_DEFAULT);
}else {
sb.append(inclall);
}
sb.append(GCC_DEBUG_DEFINE);
sb.append(LS_GCC_COMMAND);
}
static public void writeLSGccMakeFile_MySQL(IARESProject project, StringBuffer sb, String soName, String serviceName, String functionName, String depends[] ) throws Exception{
EList<GccDefine> gccDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getGccDefine();
Map<String, GccDefine> gccDefineMap = new HashMap<String, GccDefine>();
for (GccDefine define : gccDefine) {
gccDefineMap.put(define.getParameter(), define);
}
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
if(null != gccDefineMap.get("FBASE_HOME")){
if(gccDefineMap.get("FBASE_HOME").isIsUsed()){
sb.append(String.format(BASE_DIR_DEFINE, soName, gccDefineMap.get("FBASE_HOME").getValue() )) ;
}
}else {
sb.append(String.format(BASE_DIR_DEFINE, soName, ".." )) ;
}
// ��չ������
if(null != gccDefineMap.get("TO")){
if(gccDefineMap.get("TO").isIsUsed()){
sb.append(String.format(EXT_DEFINE, gccDefineMap.get("TO").getValue()));
}
}else {
sb.append(String.format(EXT_DEFINE, "o"));
}
StringBuffer dependObjs = new StringBuffer();
StringBuffer hslibex = new StringBuffer();
StringBuffer inclall = new StringBuffer();
//�û��Զ���FC
int fcNum = 0;//�û��Զ���FC����
if(null != gccDefineMap.get("FC") && gccDefineMap.get("FC").isIsUsed()){
String fc = gccDefineMap.get("FC").getValue();
if(StringUtils.isNotBlank(fc)){
if(StringUtils.contains(fc, ",")){
String[] fcs = fc.split(",");
for (int i = 0; i < fcs.length; i++) {
if(StringUtils.isNotBlank(fcs[i])){
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(fcs[i]);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6);
hslibex.append(") ");
fcNum++;
}
}
}else {
dependObjs.append("FC");
dependObjs.append(6);
dependObjs.append(" = ");
dependObjs.append(fc);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(6);
hslibex.append(") ");
fcNum++;
}
}
}
//ģ������
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6+fcNum);
dependObjs.append(" = ");
dependObjs.append(depends[i]);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6+fcNum);
hslibex.append(") ");
}
// Objects
sb.append(String.format(GCC_OBJS_DEFINE2, serviceName, functionName, dependObjs));
//outdir
String outdir = "$(FBASE_HOME)/appcom";
if(null != gccDefineMap.get("OUTDIR") && gccDefineMap.get("OUTDIR").isIsUsed()){
outdir = gccDefineMap.get("OUTDIR").getValue();
}
sb.append(String.format(GCC_OUTDIR_DEFINE,outdir,outdir));
//CC
if(null != gccDefineMap.get("CC")){
if(gccDefineMap.get("CC").isIsUsed()) {
sb.append(String.format(CC_DEFINE, gccDefineMap.get("CC").getValue()));
}
}else{
sb.append(String.format(CC_DEFINE, "g++"));
}
//DEFS
if(null != gccDefineMap.get("DEFS")){
if(gccDefineMap.get("DEFS").isIsUsed()) {
sb.append(String.format(GCC_DEFS_DEFINE, gccDefineMap.get("DEFS").getValue()));
}
}else {
sb.append(String.format(GCC_DEFS_DEFINE, "-D OS_UNIX"));
}
sb.append("\n");
for (GccDefine define : gccDefine) {
if(!define.isIsUsed()){
continue;
}
if(StringUtils.equals(define.getParameter(), "LIBS")) {
if(!define.getValue().trim().isEmpty()) {
String libs[] = define.getValue().split(",");
for (String lib : libs) {
hslibex.append( " -l " );
hslibex.append( lib );
hslibex.append( " " );
}
}
}
if(StringUtils.equalsIgnoreCase(define.getParameter(), "CC_INCLUDE")){
if(!define.getValue().trim().isEmpty()) {
inclall.append("INCLALL = ");
String libs[] = define.getValue().split(",");
for (String lib : libs) {
inclall.append( " -I " );
inclall.append( lib );
inclall.append( " " );
}
inclall.append("\n\n");
}
}
}
sb.append(String.format(GCC_OPTION_DEFINE2_MYSQL, hslibex));
//ͷ�ļ�
sb.append(GCC_INCLAALL_DEFINE_DESC);
if(StringUtils.isEmpty(inclall.toString())){
sb.append(GCC_INCLALL_DEFINE_DEFAULT);
}else {
sb.append(inclall);
}
sb.append(GCC_DEBUG_DEFINE);
sb.append(LS_GCC_COMMAND_MYSQL);
}
/**
* ����2.0��ԭ�Ӳ�gcc�ļ�
*
* @param project
* @param sb
* @param soName
* @param serviceName
* @param functionName
* @param depends
*/
static public void writeASGccMakeFile(IARESProject project, StringBuffer sb, String userid,String soName, String serviceName, String functionName, String depends[] ) throws Exception{
EList<GccDefine> gccDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getGccDefine();
Map<String, GccDefine> gccDefineMap = new HashMap<String, GccDefine>();
for (GccDefine define : gccDefine) {
gccDefineMap.put(define.getParameter(), define);
}
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
if(null != gccDefineMap.get("FBASE_HOME")){
if(gccDefineMap.get("FBASE_HOME").isIsUsed()) {
sb.append(String.format(BASE_DIR_DEFINE, soName, gccDefineMap.get("FBASE_HOME").getValue())) ;
}
}else{
sb.append(String.format(BASE_DIR_DEFINE, soName, ".." )) ;
}
// ��չ������
if(null != gccDefineMap.get("TO")){
if(gccDefineMap.get("TO").isIsUsed()){
sb.append(String.format(EXT_DEFINE, gccDefineMap.get("TO").getValue()));
}
}else {
sb.append(String.format(EXT_DEFINE, "o"));
}
StringBuffer dependObjs = new StringBuffer();
StringBuffer hslibex = new StringBuffer();
//�û��Զ���FC
int fcNum = 0;//�û��Զ���FC����
if(null != gccDefineMap.get("FC") && gccDefineMap.get("FC").isIsUsed()){
String fc = gccDefineMap.get("FC").getValue();
if(StringUtils.isNotBlank(fc)){
if(StringUtils.contains(fc, ",")){
String[] fcs = fc.split(",");
for (int i = 0; i < fcs.length; i++) {
if(StringUtils.isNotBlank(fcs[i])){
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(fcs[i]);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6);
hslibex.append(") ");
fcNum++;
}
}
}else {
dependObjs.append("FC");
dependObjs.append(6);
dependObjs.append(" = ");
dependObjs.append(fc);//���ģ������ʱ�����ﲻ��Ҫ��func.h������Ҫ��s_ls_${module_name}flow����
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(6);
hslibex.append(") ");
fcNum++;
}
}
}
//ģ������
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6+fcNum);
dependObjs.append(" = ");
dependObjs.append(depends[i]);
dependObjs.append("\n");
hslibex.append("-l$(FC");
hslibex.append(i+6+fcNum);
hslibex.append(").$(ORA_VER) ");
}
// Objects
sb.append(String.format(GCC_OBJS_DEFINE2, serviceName, functionName, dependObjs));
//outdir
String outdir = "$(FBASE_HOME)/appcom";
if(null != gccDefineMap.get("OUTDIR")){
if(gccDefineMap.get("OUTDIR").isIsUsed()){
outdir = gccDefineMap.get("OUTDIR").getValue();
}
}
sb.append(String.format(GCC_OUTDIR_DEFINE,outdir,outdir));
//PROC
if(null != gccDefineMap.get("PROC")){
if(gccDefineMap.get("PROC").isIsUsed()) {
sb.append(String.format(PROC_DEFINE, gccDefineMap.get("PROC").getValue()));
}
}else {
sb.append(String.format(PROC_DEFINE, "$(ORACLE_HOME)/bin/proc"));
}
//CC
if(null != gccDefineMap.get("CC")){
if(gccDefineMap.get("CC").isIsUsed()) {
sb.append(String.format(CC_DEFINE, gccDefineMap.get("CC").getValue()));
}
}else{
sb.append(String.format(CC_DEFINE, "g++"));
}
EList<ProcDefine> procDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getProcDefine();
StringBuffer procSb = new StringBuffer();
// // 2.0 ������ʹ��ģ�鶨���
// if (userid != null && !userid.isEmpty()) {
// procSb.append("userid");
// procSb.append( "=" );
// procSb.append(userid);
// procSb.append(" \\\n");
// }
boolean hasUseridProcDefine = false;//procԤ�����Ƿ��С�userid��ѡ��
for (ProcDefine define : procDefine) {
if(define.isIsUsed()) {
if(StringUtils.equalsIgnoreCase(define.getParameter(), "userid")){
hasUseridProcDefine = true;
}
procSb.append( define.getParameter() );
procSb.append( "=" );
procSb.append( define.getValue() );
procSb.append(" \\\n");
}
}
//O4����ʹ��procԤ�����еġ�userid��ѡ��
if(!hasUseridProcDefine){
if (userid != null && !userid.isEmpty()) {
procSb.append("userid");
procSb.append( "=" );
procSb.append(userid);
procSb.append(" \\\n");
}
}
boolean hasProcInclude = false;
String gccDefineLIBS = "";//�����
StringBuffer inclall = new StringBuffer();
for (GccDefine define : gccDefine) {
if(!define.isIsUsed()){
continue;
}
if(StringUtils.equals(define.getParameter(), "PROC_INCLUDE")) {
hasProcInclude = true;
StringBuffer procInclude = new StringBuffer();
String strInclude[] = define.getValue().split(",");
int j = 0;
for (; j < strInclude.length - 1; j++) {
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\\\n");
}
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\n");
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
procInclude.toString()
));
}
if(StringUtils.equals(define.getParameter(), "LIBS")){
gccDefineLIBS = define.getValue();
}
if(StringUtils.equalsIgnoreCase(define.getParameter(), "CC_INCLUDE")){
if(!define.getValue().trim().isEmpty()) {
inclall.append("INCLALL = ");
String libs[] = define.getValue().split(",");
for (String lib : libs) {
inclall.append( " -I " );
inclall.append( lib );
inclall.append( " " );
}
inclall.append("\n\n");
}
}
}
if(!hasProcInclude) {
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
"include=$(ORACLE_HOME)/precomp/public \\\n"+
"include=$(ORACLE_HOME)/oci/include \\\n"+
"include=$(FBASE_HOME) \\\n"+
"include=/usr/lib/gcc-lib/i386-redhat-linux/$(GCC_VER)/include\n"
));
}
// sb.append(String.format(INCLUDE_DEFINE, "-I$(FBASE_HOME)"));
//DEFS
if(null != gccDefineMap.get("DEFS")){
if(gccDefineMap.get("DEFS").isIsUsed()) {
sb.append(String.format(GCC_DEFS_DEFINE, gccDefineMap.get("DEFS").getValue()));
}
}else {
sb.append(String.format(GCC_DEFS_DEFINE, "-D OS_UNIX"));
}
sb.append("\n");
if(gccDefineLIBS.trim().length() > 0) {
String libs[] = gccDefineLIBS.split(",");
for (String lib : libs) {
hslibex.append( " -l " );
hslibex.append( lib );
hslibex.append( " " );
}
}
sb.append(String.format(GCC_OPTION_DEFINE2, hslibex));
//ͷ�ļ�
sb.append(GCC_INCLAALL_DEFINE_DESC);
if(StringUtils.isEmpty(inclall.toString())){
sb.append(GCC_INCLALL_DEFINE_DEFAULT);
}else {
sb.append(inclall);
}
sb.append(GCC_DEBUG_DEFINE);
sb.append(AS_GCC_COMMAND);
}
static public void writeASMvcMakeFile(IARESProject project, StringBuffer sb, String userid,String soName, String serviceName, String functionName, String depends[] ) throws Exception{
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
Map<String, String> mvcConfigMap = new HashMap<String, String>();
EList<MvcDefine> mvcDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getMvcDefine();
for (MvcDefine define : mvcDefine) {
mvcConfigMap.put(define.getParameter(), define.getValue());
}
String base_dir = mvcConfigMap.get("FBASE_HOME");
if (base_dir != null) {
sb.append(String.format(BASE_DIR_DEFINE, soName, base_dir )) ;
} else {
sb.append(String.format(BASE_DIR_DEFINE, soName, "../.." )) ;
}
// ��չ������
sb.append(String.format(EXT_DEFINE, "obj"));
StringBuffer dependObjs = new StringBuffer();
StringBuffer objslink = new StringBuffer();
StringBuffer exCommand = new StringBuffer();
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(depends[i]);
dependObjs.append("\n");
// $(FC1).$(TO)
objslink.append("$(FC");
objslink.append(i+6);
objslink.append(").$(TO) ");
/*
$(FC14).$(TO):$(FC14).$(FROM)
$(PROC) $(CPP_PROFLAGS) iname=$(FC14).$(FROM) oname=$(FC14).cpp
$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC14).obj $(FC14).cpp
*/
exCommand.append("$(FC");
exCommand.append(i+6);
exCommand.append(").$(TO):$(FC");
exCommand.append(i+6);
exCommand.append(").$(FROM)\n");
exCommand.append("\t$(PROC) $(CPP_PROFLAGS) iname=$(FC"+ (i+6) + ").$(FROM) oname=$(FC" + (i+6) + ").cpp\n");
exCommand.append("\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC"+ (i+6) + ").obj $(FC"+ (i+6) + ").cpp\n");
}
sb.append(String.format(MVC_OBJS_DEFINE2, serviceName, functionName, dependObjs, objslink));
String outdir = String.format(MVC_OUTDIR_DEFINE, "$(FBASE_HOME)\\Bin");
// ���õĻ���ʹ�����õ�ֵ
if (mvcConfigMap.containsKey("OUTDIR")) {
outdir = String.format(MVC_OUTDIR_DEFINE,mvcConfigMap.get("OUTDIR"));
}
sb.append(outdir);
sb.append(String.format(PROC_DEFINE, "$(ORACLE_HOME)\\bin\\proc"));
sb.append(String.format(CC_DEFINE, "CL"));
// sb.append(String.format(USERID_DEFINE, "hs_his/handsome@gfdb"));
Map<String, String> procSetting = new HashMap<String, String>();
EList<ProcDefine> procDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getProcDefine();
for (ProcDefine define : procDefine) {
procSetting.put(define.getParameter(), define.getValue());
}
// 2.0 ������ʹ��ģ�鶨���
if (userid != null && !userid.isEmpty()) {
procSetting.put("userid", userid);
}
StringBuffer procSb = new StringBuffer();
for (String setting : procSetting.keySet()) {
procSb.append( setting );
procSb.append( "=" );
procSb.append( procSetting.get(setting) );
procSb.append(" \\\n");
}
sb.append("\n");
if (mvcConfigMap.containsKey("PROC_INCLUDE")) {
StringBuffer procInclude = new StringBuffer();
String strInclude[] = mvcConfigMap.get("PROC_INCLUDE").split(",");
int j = 0;
for (; j < strInclude.length - 1; j++) {
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\\\n");
}
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\n");
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
procInclude.toString()
));
} else {
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
"include=$(ORACLE_HOME)/precomp/public \\\n"+
"include=$(ORACLE_HOME)/oci/include \\\n"+
"include=$(FBASE_HOME) \\\n"+
"include=\"$(VC_HOME)\""
));
}
// sb.append(String.format(INCLUDE_DEFINE, "/I$(FBASE_HOME)"));
StringBuffer sbExport = new StringBuffer();
writeExportString(sbExport, new String[]{"GetBizFunctionsInfo","OnLoad","OnUnload","OnStart", "OnStop","GetLibVersion"});
sb.append("\n");
if (mvcConfigMap.containsKey("LIBS")) {
sb.append(String.format(MVC_OPTION_DEFIEN, mvcConfigMap.get("LIBS"), sbExport.toString()));
} else {
sb.append(String.format(MVC_OPTION_DEFIEN, "", sbExport.toString()));
}
StringBuffer sbInclall = new StringBuffer("/I $(FBASE_HOME) /I $(ORACLE_HOME)/precomp/public /I $(ORACLE_HOME)/oci/include");
if (mvcConfigMap.containsKey("CC_INCLUDE")) {
sbInclall = new StringBuffer();
writeIncludeAllString(sbInclall, mvcConfigMap.get("CC_INCLUDE").split(","));
}
sb.append("\n");
sb.append(String.format(MVC_INCLALL_DEFINE, sbInclall.toString()) );
sb.append("\n");
sb.append(MVC_DEBUG_DEFINE);
sb.append("\n");
sb.append( String.format(AS_MVC_COMMAND, exCommand));
}
static public void writeLSMvcMakeFile(IARESProject project, StringBuffer sb, String soName, String serviceName, String functionName, String depends[] ) throws Exception{
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
Map<String, String> mvcConfigMap = new HashMap<String, String>();
EList<MvcDefine> mvcDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getMvcDefine();
for (MvcDefine define : mvcDefine) {
mvcConfigMap.put(define.getParameter(), define.getValue());
}
String base_dir = mvcConfigMap.get("FBASE_HOME");
if (base_dir != null) {
sb.append(String.format(BASE_DIR_DEFINE, soName, base_dir )) ;
} else {
sb.append(String.format(BASE_DIR_DEFINE, soName, "../.." )) ;
}
// ��չ������
sb.append(String.format(EXT_DEFINE, "obj"));
StringBuffer dependObjs = new StringBuffer();
StringBuffer objslink = new StringBuffer();
StringBuffer exCommand = new StringBuffer();
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(depends[i]);
dependObjs.append("\n");
// $(FC1).$(TO)
objslink.append("$(FC");
objslink.append(i+6);
objslink.append(").$(TO) ");
/*
$(FC14).$(TO):$(FC14).$(FROM)
$(PROC) $(CPP_PROFLAGS) iname=$(FC14).$(FROM) oname=$(FC14).cpp
$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC14).obj $(FC14).cpp
*/
exCommand.append("$(FC");
exCommand.append(i+6);
exCommand.append(").$(TO):$(FC");
exCommand.append(i+6);
exCommand.append(").cpp\n");
exCommand.append("\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC"+ (i+6) + ").obj $(FC"+ (i+6) + ").cpp\n");
}
sb.append(String.format(MVC_OBJS_DEFINE2, serviceName, functionName, dependObjs, objslink));
String outdir = String.format(MVC_OUTDIR_DEFINE, "$(FBASE_HOME)\\Bin");
// ���õĻ���ʹ�����õ�ֵ
if (mvcConfigMap.containsKey("OUTDIR")) {
outdir = String.format(MVC_OUTDIR_DEFINE,mvcConfigMap.get("OUTDIR"));
}
sb.append(outdir);
sb.append(String.format(PROC_DEFINE, "$(ORACLE_HOME)\\bin\\proc"));
sb.append(String.format(CC_DEFINE, "CL"));
// sb.append(String.format(INCLUDE_DEFINE, "/I$(FBASE_HOME)"));
StringBuffer sbExport = new StringBuffer();
writeExportString(sbExport, new String[]{"GetBizFunctionsInfo","OnLoad","OnUnload","OnStart", "OnStop","GetLibVersion"});
sb.append("\n");
if (mvcConfigMap.containsKey("LIBS")) {
sb.append(String.format(MVC_OPTION_DEFIEN, mvcConfigMap.get("LIBS"), sbExport.toString()));
} else {
sb.append(String.format(MVC_OPTION_DEFIEN, "", sbExport.toString()));
}
StringBuffer sbInclall = new StringBuffer("/I $(FBASE_HOME) /I $(ORACLE_HOME)/precomp/public /I $(ORACLE_HOME)/oci/include");
if (mvcConfigMap.containsKey("CC_INCLUDE")) {
sbInclall = new StringBuffer();
writeIncludeAllString(sbInclall, mvcConfigMap.get("CC_INCLUDE").split(","));
}
sb.append("\n");
sb.append(String.format(MVC_INCLALL_DEFINE, sbInclall.toString()) );
sb.append("\n");
sb.append(MVC_DEBUG_DEFINE);
sb.append("\n");
sb.append( String.format(LS_MVC_COMMAND, exCommand));
}
/**
*
* @param project
* @param sb
* @param soName
* @param serviceName
* @param functionName
* @param depends ����func�ַ��ģ�Ҳ����ȫ��
*/
static public void writeMvcMakeFile(IARESProject project, StringBuffer sb, String soName, String serviceName, String functionName, String depends[] ) throws Exception{
// ͷע��
sb.append(HEADER_COMMENT);
// Ŀ�����ƣ�����Ŀ¼
Map<String, String> mvcConfigMap = new HashMap<String, String>();
EList<MvcDefine> mvcDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getMvcDefine();
for (MvcDefine define : mvcDefine) {
mvcConfigMap.put(define.getParameter(), define.getValue());
}
String base_dir = mvcConfigMap.get("FBASE_HOME");
if (base_dir != null) {
sb.append(String.format(BASE_DIR_DEFINE, soName, base_dir )) ;
} else {
sb.append(String.format(BASE_DIR_DEFINE, soName, "../.." )) ;
}
// ��չ������
sb.append(String.format(EXT_DEFINE, "obj"));
StringBuffer dependObjs = new StringBuffer();
StringBuffer objslink = new StringBuffer();
StringBuffer exCommand = new StringBuffer();
for (int i = 0; i < depends.length; i++) {
dependObjs.append("FC");
dependObjs.append(i+6);
dependObjs.append(" = ");
dependObjs.append(depends[i]);
dependObjs.append("\n");
// $(FC1).$(TO)
objslink.append("$(FC");
objslink.append(i+6);
objslink.append(").$(TO) ");
/*
$(FC14).$(TO):$(FC14).$(FROM)
$(PROC) $(CPP_PROFLAGS) iname=$(FC14).$(FROM) oname=$(FC14).cpp
$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC14).obj $(FC14).cpp
*/
exCommand.append("$(FC");
exCommand.append(i+6);
exCommand.append(").$(TO):$(FC");
exCommand.append(i+6);
exCommand.append(").$(FROM)\n");
exCommand.append("\t$(PROC) $(CPP_PROFLAGS) iname=$(FC"+ (i+6) + ").$(FROM) oname=$(FC" + (i+6) + ").cpp\n");
exCommand.append("\t$(CC) $(CFLAGS) $(INCLALL) /Fo$(FC"+ (i+6) + ").obj $(FC"+ (i+6) + ").cpp\n");
}
sb.append(String.format(MVC_OBJS_DEFINE, serviceName, functionName, dependObjs, objslink));
String outdir = String.format(MVC_OUTDIR_DEFINE, "$(FBASE_HOME)\\Bin");
// ���õĻ���ʹ�����õ�ֵ
if (mvcConfigMap.containsKey("OUTDIR")) {
outdir = String.format(MVC_OUTDIR_DEFINE,mvcConfigMap.get("OUTDIR"));
}
sb.append(outdir);
sb.append(String.format(PROC_DEFINE, "$(ORACLE_HOME)\\bin\\proc"));
sb.append(String.format(CC_DEFINE, "CL"));
// sb.append(String.format(USERID_DEFINE, "hs_his/handsome@gfdb"));
Map<String, String> procSetting = new HashMap<String, String>();
EList<ProcDefine> procDefine = ModuleGeneratorHelper.getCresProjectExtendProperty(project).getProcDefine();
for (ProcDefine define : procDefine) {
mvcConfigMap.put(define.getParameter(), define.getValue());
}
StringBuffer procSb = new StringBuffer();
for (String setting : procSetting.keySet()) {
procSb.append( setting );
procSb.append( "=" );
procSb.append( procSetting.get(setting) );
procSb.append(" \\\n");
}
sb.append("\n");
if (mvcConfigMap.containsKey("PROC_INCLUDE")) {
StringBuffer procInclude = new StringBuffer();
String strInclude[] = mvcConfigMap.get("PROC_INCLUDE").split(",");
int j = 0;
for (; j < strInclude.length - 1; j++) {
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\\\n");
}
procInclude.append("include=");
procInclude.append(strInclude[j]);
procInclude.append("\n");
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
procInclude.toString()
));
} else {
sb.append(String.format(PROC_PARAMETER_DEFINE,
procSb.toString() +
"include=$(ORACLE_HOME)/precomp/public \\\n"+
"include=$(ORACLE_HOME)/oci/include \\\n"+
"include=$(FBASE_HOME) \\\n"+
"include=\"$(VC_HOME)\""
));
}
// sb.append(String.format(INCLUDE_DEFINE, "/I$(FBASE_HOME)"));
StringBuffer sbExport = new StringBuffer();
// if (project.getProperty().getDevelopVersion() == 0) {
// // EXPORT:GetCompsInfo /EXPORT:OnLoad /EXPORT:OnUnload /EXPORT:OnStart /EXPORT:OnStop
// writeExportString(sbExport, new String[]{"GetCompsInfo","OnLoad","OnUnload","OnStart", "OnStop"});
// } else {
// writeExportString(sbExport, new String[]{"GetBizFunctionsInfo","OnLoad","OnUnload","OnStart", "OnStop"});
// }
writeExportString(sbExport, new String[]{"GetBizFunctionsInfo","OnLoad","OnUnload","OnStart", "OnStop"});
sb.append("\n");
if (mvcConfigMap.containsKey("LIBS")) {
sb.append(String.format(MVC_OPTION_DEFIEN, mvcConfigMap.get("LIBS"), sbExport.toString()));
} else {
sb.append(String.format(MVC_OPTION_DEFIEN, "", sbExport.toString()));
}
StringBuffer sbInclall = new StringBuffer("/I $(FBASE_HOME) /I $(ORACLE_HOME)/precomp/public /I $(ORACLE_HOME)/oci/include");
if (mvcConfigMap.containsKey("CC_INCLUDE")) {
sbInclall = new StringBuffer();
writeIncludeAllString(sbInclall, mvcConfigMap.get("CC_INCLUDE").split(","));
}
sb.append("\n");
sb.append(String.format(MVC_INCLALL_DEFINE, sbInclall.toString()) );
sb.append("\n");
sb.append(MVC_DEBUG_DEFINE);
sb.append("\n");
sb.append( String.format(MVC_COMMAND, exCommand));
}
private static void writeIncludeAllString(StringBuffer sb, String[] strPath) {
for (String path : strPath) {
sb.append(" /I ");
sb.append(path);
}
sb.append(" ");
}
private static void writeExportString(StringBuffer sb, String[] strMethod) {
for (String method : strMethod) {
sb.append(" /EXPORT:");
sb.append(method);
}
sb.append(" ");
}
// /**
// * ����һ����makefile
// *
// * @param moduleEnName
// * @param oracleConnectionParameter "hs_his/handsome@gfdb"
// * @return
// */
// public static String getGccContent(String moduleEnName, String oracleConnectionParameter) {
// ClassLoader loader = MakeFileBuilder.class.getClassLoader();
//
//
// InputStream in = loader.getResourceAsStream("com/hundsun/hdt/generate/makefile.gcc");
// BufferedReader reader = new BufferedReader(
// new InputStreamReader(in));
//
// StringBuffer buffer = new StringBuffer();
// try {
// String line = reader.readLine();
// while (line != null) {
// buffer.append(line + "\n");
// line = reader.readLine();
// }
// reader.close();
// in.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// return MessageFormat.format(buffer.toString(), "s_" + moduleEnName + "flow", "s_" + moduleEnName + "func",oracleConnectionParameter);
//
// }
//
// public static String getMvcContent(String moduleEnName, String oracleConnectionParameter) {
// ClassLoader loader = MakeFileBuilder.class.getClassLoader();
//
//
// InputStream in = loader.getResourceAsStream("com/hundsun/hdt/generate/makefile.mvc");
// BufferedReader reader = new BufferedReader(
// new InputStreamReader(in));
//
// StringBuffer buffer = new StringBuffer();
// try {
// String line = reader.readLine();
// while (line != null) {
// buffer.append(line + "\n");
// line = reader.readLine();
// }
// reader.close();
// in.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// return MessageFormat.format(buffer.toString(), "s_" + moduleEnName + "flow", "s_" + moduleEnName + "func",oracleConnectionParameter);
//
// }
}