mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
Handled __EMSCRIPTEN__ macros to: - Workaround atomics (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 is undefined, but GCC atomics are provided). - Suppress non-standard header <sys/signal.h> warning. - Return OSD_LinuxREDHAT. - Avoid inclusion of XLib headers. - Skip fontconfig library. - Enable EGL+GLES path (translated by Emscripten into WebGL). - Skip eglCreatePbufferSurface() not implemented by Emscripten EGL. Fixed Graphic3d_Vec4.hxx usage within Quantity_ColorRGBA.hxx. OpenGl_ShaderManager::defaultGlslVersion() now prefers GLSL 300 es when WebGL 2.0 is available, as there no any OpenGL ES greater than 3.0 emulation so far. Shaders_Declarations.glsl - added workaround for GLSL compilation on WebGL 1.0 by defining Light properties accessors as macros instead of functions ('[]' : Index expression must be constant). OpenGl_FrameBuffer::Init() - added workaround for initialization of GL_DEPTH24_STENCIL8 depth-stencil attachment on WebGL 1.0 + GL_WEBGL_depth_texture extension. OpenGl_Context::Vec4FromQuantityColor() now considers myIsSRgbActive flag to handle use case, when Immediate Layer is drawn directly into window buffer, which is not sRGB-ready. Added new sample - OCCT WebGL viewer.
67 lines
2.5 KiB
CMake
67 lines
2.5 KiB
CMake
cmake_minimum_required(VERSION 3.2)
|
|
|
|
project(occt-webgl-sample)
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(APP_VERSION_MAJOR 1)
|
|
set(APP_VERSION_MINOR 0)
|
|
set(APP_TARGET occt-webgl-sample)
|
|
|
|
# customize build
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s USE_WEBGL2=1")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ALLOW_MEMORY_GROWTH=1")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s SAFE_HEAP=1")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s NO_EXIT_RUNTIME=1")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s TOTAL_MEMORY=16MB")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ABORTING_MALLOC=0")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s FORCE_FILESYSTEM=1")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --preload-file myFile")
|
|
|
|
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
|
|
file(GLOB SOURCES
|
|
*.h
|
|
*.cpp
|
|
)
|
|
source_group ("Headers" FILES
|
|
WasmOcctView.h)
|
|
source_group ("Sources" FILES
|
|
WasmOcctView.cpp
|
|
main.cpp)
|
|
|
|
# FreeType
|
|
find_package(freetype REQUIRED NO_DEFAULT_PATH)
|
|
if(freetype_FOUND)
|
|
message (STATUS "Using FreeType from \"${freetype_DIR}\"" )
|
|
else()
|
|
message(WARNING "Could not find FreeType, please set freetype_DIR variable." )
|
|
endif()
|
|
|
|
# Open CASCADE Technology
|
|
find_package(OpenCASCADE REQUIRED NO_DEFAULT_PATH)
|
|
if(OpenCASCADE_FOUND)
|
|
message (STATUS "Using OpenCASCADE from \"${OpenCASCADE_DIR}\"" )
|
|
INCLUDE_DIRECTORIES(${OpenCASCADE_INCLUDE_DIR})
|
|
LINK_DIRECTORIES(${OpenCASCADE_LIBRARY_DIR})
|
|
else()
|
|
message(WARNING "Could not find OpenCASCADE, please set OpenCASCADE_DIR variable." )
|
|
set(OCCT_LIBRARY_DIR)
|
|
set(OCCT_BIN_DIR)
|
|
endif()
|
|
|
|
set(OpenCASCADE_LIBS TKRWMesh TKBinXCAF TKBin TKBinL TKOpenGl TKXCAF TKVCAF TKCAF TKV3d TKHLR TKMesh TKService TKShHealing TKPrim TKTopAlgo TKGeomAlgo TKBRep TKGeomBase TKG3d TKG2d TKMath TKLCAF TKCDF TKernel)
|
|
|
|
add_executable(${APP_TARGET} ${SOURCES})
|
|
target_link_libraries(
|
|
${APP_TARGET}
|
|
${OpenCASCADE_LIBS}
|
|
freetype
|
|
)
|
|
set_target_properties(${APP_TARGET} PROPERTIES LINK_FLAGS "-s EXPORTED_FUNCTIONS=['_main','_onFileDataRead'] -s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall','cwrap']")
|
|
|
|
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}")
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.wasm DESTINATION ${CMAKE_INSTALL_PREFIX})
|
|
install(FILES occt-webgl-sample.html DESTINATION ${CMAKE_INSTALL_PREFIX})
|
|
install(FILES ${OpenCASCADE_RESOURCE_DIR}/DrawResources/OCC_logo.png DESTINATION ${CMAKE_INSTALL_PREFIX})
|
|
install(FILES ${OpenCASCADE_RESOURCE_DIR}/DrawResources/lamp.ico DESTINATION ${CMAKE_INSTALL_PREFIX})
|