set(CMAKE_SYSTEM_NAME Rosetta) set(CMAKE_SYSTEM_PROCESSOR x86_64) #set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") set(CMAKE_C_COMPILER_WORKS TRUE) set(CMAKE_CXX_COMPILER_WORKS TRUE) find_program(C_COMPILER x86_64-rosetta-gcc REQUIRED) find_program(CXX_COMPILER x86_64-rosetta-g++ REQUIRED) #find_program(ASM_COMPILER x86_64-elf-as REQUIRED) add_compile_definitions(__magenta__=1 __rosetta__=1) set(CMAKE_C_COMPILER ${C_COMPILER}) set(CMAKE_CXX_COMPILER ${CXX_COMPILER}) #set(CMAKE_ASM_COMPILER ${ASM_COMPILER}) SET(CMAKE_C_FLAGS "-z max-page-size=0x1000 -m64 -mcmodel=large -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -D_64BIT -DBYTE_ORDER=1234" CACHE STRING "" FORCE) set(CMAKE_SHARED_LINKER_FLAGS "-shared" CACHE STRING "" FORCE) set(CMAKE_EXE_LINKER_FLAGS "-Wl,--unresolved-symbols=report-all,--dynamic-linker=/lib/ld64.so" CACHE STRING "" FORCE) set(CMAKE_C_LINK_OPTIONS_PIE "-pie") set(CMAKE_C_LINK_PIE_SUPPORTED TRUE) set(CMAKE_C_LINK_NO_PIE_SUPPORTED TRUE) SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp") if ("$ENV{ROSETTA_SYSROOT}" STREQUAL "") message(FATAL_ERROR "No system root has been specified. Please define the $ROSETTA_SYSROOT environment variable") endif () set(CMAKE_SYSROOT $ENV{ROSETTA_SYSROOT}) set(CMAKE_SYSTEM_LIBRARY_PATH $ENV{ROSETTA_SYSROOT}/lib $ENV{ROSETTA_SYSROOT}/usr/lib) set(CMAKE_C_OUTPUT_EXTENSION .o) set(CMAKE_CXX_OUTPUT_EXTENSION .o) set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) set(CMAKE_DL_LIBS "dl") set(CMAKE_INSTALL_RPATH \$ORIGIN/../lib) set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) #set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") #set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") set(CMAKE_SHARED_LIBRARY_RPATH_ORIGIN_TOKEN "\$ORIGIN") set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,") set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic") set(CMAKE_C_LINK_GROUP_USING_cross_refs_SUPPORTED TRUE) set(CMAKE_C_LINK_GROUP_USING_cross_refs "LINKER:--start-group" "LINKER:--end-group" ) set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1) link_libraries(-lgcc)