Change cmake

This commit is contained in:
2025-08-31 01:44:03 -05:00
parent 05713fc39c
commit 82c3c1620b
3 changed files with 41 additions and 15 deletions

View File

@@ -9,7 +9,7 @@ include(CMakePackageConfigHelpers)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
#option(CROSSLANG_ENABLE_DOXYGEN "Enable doxygen" ON) #option(CROSSLANG_ENABLE_DOXYGEN "Enable doxygen" ON)
option(CROSSLANG_SHELLONLY "Only build CrossLang Shell Executable" ON)
option(CROSSLANG_ENABLE_STATIC "Enable Tesses CrossLang static libraries" ON) option(CROSSLANG_ENABLE_STATIC "Enable Tesses CrossLang static libraries" ON)
option(CROSSLANG_ENABLE_SHARED "Enable Tesses CrossLang shared libraries" ON) option(CROSSLANG_ENABLE_SHARED "Enable Tesses CrossLang shared libraries" ON)
option(CROSSLANG_ENABLE_BINARIES "Enable Tesses CrossLang binaries" ON) option(CROSSLANG_ENABLE_BINARIES "Enable Tesses CrossLang binaries" ON)
@@ -129,6 +129,9 @@ target_include_directories(${CROSSLANG_TARGET_NAME}
endfunction() endfunction()
list(APPEND CROSSLANG_SOURCE list(APPEND CROSSLANG_SOURCE
src/assembler/asm.cpp
src/assembler/disasm.cpp
src/assembler/merge.cpp
src/compiler/codegen.cpp src/compiler/codegen.cpp
src/compiler/lexer.cpp src/compiler/lexer.cpp
src/compiler/parser.cpp src/compiler/parser.cpp
@@ -261,11 +264,11 @@ if (APPLE)
else() else()
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
endif() endif()
if(NOT CROSSLANG_SHELLONLY)
add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC})
if(NOT WIN32) if(NOT WIN32)
@@ -275,19 +278,22 @@ target_link_libraries(crossc PUBLIC crosslang_shared)
target_link_libraries(crossvm PUBLIC crosslang_shared) target_link_libraries(crossvm PUBLIC crosslang_shared)
target_link_libraries(crossint PUBLIC crosslang_shared) target_link_libraries(crossint PUBLIC crosslang_shared)
target_link_libraries(crossdump PUBLIC crosslang_shared) target_link_libraries(crossdump PUBLIC crosslang_shared)
target_link_libraries(crosslang PUBLIC crosslang_shared)
target_link_libraries(crossarchiveextract PUBLIC crosslang_shared) target_link_libraries(crossarchiveextract PUBLIC crosslang_shared)
target_link_libraries(crossarchivecreate PUBLIC crosslang_shared) target_link_libraries(crossarchivecreate PUBLIC crosslang_shared)
if(NOT WIN32) if(NOT WIN32)
target_link_libraries(crossthumbnailer PUBLIC crosslang_shared) target_link_libraries(crossthumbnailer PUBLIC crosslang_shared)
endif() endif()
elseif(CROSSLANG_ENABLE_STATIC) endif()
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC})
target_link_libraries(crosslang PUBLIC crosslang_shared)
elseif(CROSSLANG_ENABLE_STATIC)
if(NOT CROSSLANG_SHELLONLY)
add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC})
if(NOT WIN32) if(NOT WIN32)
@@ -297,18 +303,22 @@ target_link_libraries(crossc PUBLIC crosslang_static)
target_link_libraries(crossvm PUBLIC crosslang_static) target_link_libraries(crossvm PUBLIC crosslang_static)
target_link_libraries(crossint PUBLIC crosslang_static) target_link_libraries(crossint PUBLIC crosslang_static)
target_link_libraries(crossdump PUBLIC crosslang_static) target_link_libraries(crossdump PUBLIC crosslang_static)
target_link_libraries(crosslang PUBLIC crosslang_static)
target_link_libraries(crossarchiveextract PUBLIC crosslang_static) target_link_libraries(crossarchiveextract PUBLIC crosslang_static)
target_link_libraries(crossarchivecreate PUBLIC crosslang_static) target_link_libraries(crossarchivecreate PUBLIC crosslang_static)
if(NOT WIN32) if(NOT WIN32)
target_link_libraries(crossthumbnailer PUBLIC crosslang_static) target_link_libraries(crossthumbnailer PUBLIC crosslang_static)
endif() endif()
endif()
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC})
target_link_libraries(crosslang PUBLIC crosslang_static)
else() else()
if(NOT CROSSLANG_SHELLONLY)
add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
if(NOT WIN32) if(NOT WIN32)
@@ -317,13 +327,14 @@ endif()
CROSSLANG_LINK_DEPS(crossc) CROSSLANG_LINK_DEPS(crossc)
CROSSLANG_LINK_DEPS(crossvm) CROSSLANG_LINK_DEPS(crossvm)
CROSSLANG_LINK_DEPS(crossint) CROSSLANG_LINK_DEPS(crossint)
CROSSLANG_LINK_DEPS(crosslang)
CROSSLANG_LINK_DEPS(crossdump) CROSSLANG_LINK_DEPS(crossdump)
CROSSLANG_LINK_DEPS(crossarchiveextract) CROSSLANG_LINK_DEPS(crossarchiveextract)
CROSSLANG_LINK_DEPS(crossarchivecreate) CROSSLANG_LINK_DEPS(crossarchivecreate)
if(NOT WIN32) if(NOT WIN32)
CROSSLANG_LINK_DEPS(crossthumbnailer) CROSSLANG_LINK_DEPS(crossthumbnailer)
endif() endif()
if(CROSSLANG_FETCHCONTENT) if(CROSSLANG_FETCHCONTENT)
target_link_libraries(crossc PUBLIC tessesframework) target_link_libraries(crossc PUBLIC tessesframework)
target_link_libraries(crossvm PUBLIC tessesframework) target_link_libraries(crossvm PUBLIC tessesframework)
@@ -347,6 +358,17 @@ if(NOT WIN32)
target_link_libraries(crossthumbnailer PUBLIC TessesFramework::tessesframework) target_link_libraries(crossthumbnailer PUBLIC TessesFramework::tessesframework)
endif() endif()
endif() endif()
endif()
add_executable(crosslang src/crosslang.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC})
CROSSLANG_LINK_DEPS(crosslang)
if(CROSSLANG_FETCHCONTENT)
target_link_libraries(crosslang PUBLIC tessesframework)
else()
target_link_libraries(crosslang PUBLIC TessesFramework::tessesframework)
endif()
endif() endif()
install(TARGETS crossc DESTINATION bin) install(TARGETS crossc DESTINATION bin)
install(TARGETS crossvm DESTINATION bin) install(TARGETS crossvm DESTINATION bin)

View File

@@ -2568,4 +2568,8 @@ class GC {
TObject GetClassInfo(GCList& ls,TFile* f, uint32_t index); TObject GetClassInfo(GCList& ls,TFile* f, uint32_t index);
extern Tesses::Framework::Filesystem::VFSPath CrossLangConfigPath; extern Tesses::Framework::Filesystem::VFSPath CrossLangConfigPath;
Tesses::Framework::Filesystem::VFSPath Assemble(Tesses::Framework::Filesystem::VFS* vfs);
void Disassemble(Tesses::Framework::Streams::Stream* src,Tesses::Framework::Filesystem::VFS* vfs, bool generateJSON=true,bool extractResources=true);
Tesses::Framework::Filesystem::VFSPath Merge(Tesses::Framework::Filesystem::VFS* srcFS, Tesses::Framework::Filesystem::VFSPath sourcePath, Tesses::Framework::Filesystem::VFS* destFS);
}; };

View File

@@ -76,14 +76,13 @@ namespace Tesses::CrossLang {
name.append(".crvm"); name.append(".crvm");
std::string filename="/" + name; std::string filename="/" + name;
if(vfs->RegularFileExists(filename))
Tesses::Framework::Streams::Stream* file;
if(vfs->RegularFileExists(filename) && (file = vfs->OpenFile(filename,"rb")) != nullptr)
{ {
Tesses::Framework::Streams::Stream* file = vfs->OpenFile(filename,"rb");
GCList ls(gc); GCList ls(gc);
TFile* f = TFile::Create(ls); TFile* f = TFile::Create(ls);
f->Load(gc, file); f->Load(gc, file);
delete file;
LoadFileWithDependencies(gc, vfs, f); LoadFileWithDependencies(gc, vfs, f);
} }
else throw VMException("Could not open file: \"" + name + "\"."); else throw VMException("Could not open file: \"" + name + "\".");
@@ -254,14 +253,15 @@ namespace Tesses::CrossLang {
} }
void TRootEnvironment::LoadFileWithDependencies(GC* gc,Tesses::Framework::Filesystem::VFS* vfs, Tesses::Framework::Filesystem::VFSPath path) void TRootEnvironment::LoadFileWithDependencies(GC* gc,Tesses::Framework::Filesystem::VFS* vfs, Tesses::Framework::Filesystem::VFSPath path)
{ {
Tesses::Framework::Streams::Stream* file;
if(vfs->RegularFileExists(path) && (file = vfs->OpenFile(path,"rb")) != nullptr) if(vfs->RegularFileExists(path))
{ {
Tesses::Framework::Streams::Stream* file=vfs->OpenFile(path,"rb");
GCList ls(gc); GCList ls(gc);
TFile* f = TFile::Create(ls); TFile* f = TFile::Create(ls);
f->Load(gc, file); f->Load(gc, file);
delete file;
Tesses::Framework::Filesystem::SubdirFilesystem dir(vfs,path.GetParent(),false); Tesses::Framework::Filesystem::SubdirFilesystem dir(vfs,path.GetParent(),false);
LoadFileWithDependencies(gc,&dir,f); LoadFileWithDependencies(gc,&dir,f);
} }