Skip to content

Instantly share code, notes, and snippets.

@hostilefork
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hostilefork/c086c1549cfccae7fc92 to your computer and use it in GitHub Desktop.
Save hostilefork/c086c1549cfccae7fc92 to your computer and use it in GitHub Desktop.
Tinker to try and make a Rebol dialected version of the CMake build file WIP for Rebol
Rebmake [
Title: "Rebol Dialected Experiment to represent CMake files"
;; See:
;; http://curecode.org/rebol3/ticket.rsp?id=2177
;; http://browsenpm.org/package.json#dependencies
Needs: [
1.0
cmake 2.8
]
;; http://www.cmake.org/cmake/help/v3.0/command/project.html
Title: "rebol3"
Languages: [c]
]
;;; Target platform detection
case [
CMAKE_SYSTEM_NAME = "Darwin" [
R3_OSX: on
]
CMAKE_SYSTEM_NAME = "Windows" [
R3_WIN32: on
]
CMAKE_SYSTEM_NAME = "Linux" [
R3_LINUX: on
]
]
add/definitions {-DREB_CORE}
add/definitions {-DREB_EXE}
;; Current thinking is that parentheses run a COMBINE on the contents.
;; So could also have written:
;;
;; add/definitions ({-DREB_CORE} space {-DREB_EXE})
;;
;; or just one string...
;;
;; add/definitions {-DREB_CORE -DREB_EXE}
include/directories (PROJECT_SOURCE_DIR %/src/include)
add/subdirectory (PROJECT_SOURCE_DIR "/src/core")
add/subdirectory (PROJECT_SOURCE_DIR "/src/os")
;-- Rebol 3 command used for bootstrap (in the "prepare" target).
R3_MAKE: find/program [
"r3-make" ;-- or list of names...
; /HINTS path1 path2 ... ENV var
; /PATHS path1 path2 ... ENV var
; /PATH-SUFFIXES suffix1 suffix2 ... ;-- Is SUFFIXES enough?
; /DOC "cache documentation string"
; /DEFAULT-PATH no ;-- as opposed to NO_DEFAULT_PATH
; /CMAKE-ENVIRONMENT-PATH no
; /CMAKE-PATH no
; /SYSTEM-ENVIRONMENT-PATH no
; /CMAKE-SYSTEM-PATH no
; /CMAKE_FIND_ROOT_PATH both, only, no ???
]
R3_MAKE_CMD: (R3_MAKE space {-qs})
;-- Platform-specific configuration
if R3_OSX [
R3_TARGET: "2.5"
; Host sources
R3_HOST_SUBDIR: "posix"
; Definitions
add/definitions {-DTO_OSXI}
add/definitions {-D_FILE_OFFSET_BITS=64}
; Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-arch i386})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-Wno-pointer-sign})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fPIC})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fvisibility=hidden})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fno-common})
; Libraries
LIBM: find/library "m"
R3_LIBS: LIBM
]
if R3_WIN32 [
R3_TARGET: "3.1"
;-- Host sources
R3_HOST_SUBDIR: "win32"
;-- Definitions
add/definitions {-DTO_WIN32}
add/definitions {-DUNICODE}
add/definitions {-D_FILE_OFFSET_BITS=64}
either MSVC [
;-- Definitions
add/definitions {-D_CRT_SECURE_NO_WARNINGS}
;-- Compiler/linker flags
CMAKE_EXE_LINKER_FLAGS: (CMAKE_EXE_LINKER_FLAGS space "/subsystem:windows")
CMAKE_EXE_LINKER_FLAGS: (CMAKE_EXE_LINKER_FLAGS space "/stack:4194300")
;-- LIBRARIES
R3_LIBS: ["comdlg32.lib" "wsock32.lib"]
] [
;-- MinGW-specific settings (@@ Use more specific test.)
;-- Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-O2})
CMAKE_EXE_LINKER_FLAGS: {-Wl,--stack=4194300}
;-- Libraries
LIBCOMDLG32: find/library "comdlg32"
LIBWSOCK32: find/library "wsock32"
R3_LIBS: [LIBCOMDLG32 LIBWSOCK32]
]
]
if R3_LINUX [
R3_TARGET: "4.4"
; Host sources
R3_HOST_SUBDIR: "posix"
;-- Definitions
add/definitions {-DTO_LINUX}
add/definitions {-D_FILE_OFFSET_BITS=64}
;-- Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-m32})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-O2})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fvisibility=hidden})
;-- Libraries
LIBDL: find/library "dl"
LIBM: find/library "m"
R3_LIBS: [LIBDL LIBM]
]
add/subdirectory (PROJECT_SOURCE_DIR "/src/os/" R3_HOST_SUBDIR)
# -- Generated files
R3_SRC_TOOLS_DIR: (PROJECT_SOURCE_DIR "/src/tools")
R3_SRCS_CORE: file/glob (PROJECT_SOURCE_DIR "/src/core/*.c")
R3_SRCS_MEZZ_BOOT: file/glob [ ;-- Basically mirroring src/mezz/boot-files.r
(PROJECT_SOURCE_DIR "/src/mezz/base-*.r")
(PROJECT_SOURCE_DIR "/src/mezz/sys-*.r")
(PROJECT_SOURCE_DIR "/src/mezz/mezz-*.r")
(PROJECT_SOURCE_DIR "/src/mezz/prot-*.r")
]
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-boot.r"] space ["0." R3_TARGET])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/include/tmp-evaltypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-maketypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-comptypes.h")
(PROJECT_SOURCE_DIR "/src/include/reb-types.h")
(PROJECT_SOURCE_DIR "/src/include/ext-types.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-exttypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-bootdefs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-sysobj.h")
(PROJECT_SOURCE_DIR "/src/include/reb-dialect.h")
(PROJECT_SOURCE_DIR "/src/include/reb-evtypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-errnums.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-portmodes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-sysctx.h")
(PROJECT_SOURCE_DIR "/src/boot/boot-code.r")
(PROJECT_SOURCE_DIR "/src/core/b-boot.c")
(PROJECT_SOURCE_DIR "/src/include/tmp-boot.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
(PROJECT_SOURCE_DIR "/src/tools/systems.r")
(PROJECT_SOURCE_DIR "/src/boot/version.r")
(PROJECT_SOURCE_DIR "/src/boot/types.r")
(PROJECT_SOURCE_DIR "/src/boot/types-ext.r")
(PROJECT_SOURCE_DIR "/src/boot/strings.r")
(PROJECT_SOURCE_DIR "/src/boot/words.r")
(PROJECT_SOURCE_DIR "/src/boot/modes.r")
(PROJECT_SOURCE_DIR "/src/boot/actions.r")
(PROJECT_SOURCE_DIR "/src/boot/sysobj.r")
(PROJECT_SOURCE_DIR "/src/boot/platforms.r")
(PROJECT_SOURCE_DIR "/src/boot/errors.r")
(PROJECT_SOURCE_DIR "/src/mezz/boot-files.r")
R3_SRCS_MEZZ_BOOT
(PROJECT_SOURCE_DIR "/src/boot/booters.r")
(PROJECT_SOURCE_DIR "/src/boot/natives.r")
(PROJECT_SOURCE_DIR "/src/boot/typespec.r")
(PROJECT_SOURCE_DIR "/src/boot/root.r")
(PROJECT_SOURCE_DIR "/src/boot/task.r")
(PROJECT_SOURCE_DIR "/src/boot/ops.r")
)
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-headers.r"])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/include/tmp-funcs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-funcargs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-strings.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
R3_SRCS_CORE
(PROJECT_SOURCE_DIR "/src/boot/actions.r")
(PROJECT_SOURCE_DIR "/src/boot/natives.r")
(PROJECT_SOURCE_DIR "/src/core/a-constants.c")
]
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-host-ext.r"])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/include/host-ext-graphics.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-draw.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-shape.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-text.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
(PROJECT_SOURCE_DIR "/src/boot/graphics.r")
(PROJECT_SOURCE_DIR "/src/mezz/view-funcs.r")
(PROJECT_SOURCE_DIR "/src/boot/draw.r")
(PROJECT_SOURCE_DIR "/src/boot/shape.r")
(PROJECT_SOURCE_DIR "/src/boot/text.r")
]
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-host-init.r"])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/boot/host-init.r")
(PROJECT_SOURCE_DIR "/src/include/host-init.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
(PROJECT_SOURCE_DIR "/src/mezz/prot-http.r")
]
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-os-ext.r"])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/include/host-lib.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
(PROJECT_SOURCE_DIR "/src/boot/version.r")
(PROJECT_SOURCE_DIR "/src/tools/systems.r")
(PROJECT_SOURCE_DIR "/src/os/host-device.c")
(PROJECT_SOURCE_DIR "/src/os/${R3_HOST_SUBDIR}/host-lib.c")
(PROJECT_SOURCE_DIR "/src/os/${R3_HOST_SUBDIR}/host-window.c")
]
add/custom-command [
(R3_MAKE_CMD space [R3_SRC_TOOLS_DIR "/make-reb-lib.r"])
/OUTPUT
(PROJECT_SOURCE_DIR "/src/reb-lib-doc.txt")
(PROJECT_SOURCE_DIR "/src/include/reb-lib.h")
(PROJECT_SOURCE_DIR "/src/include/reb-lib-lib.h")
/DEPENDS
(PROJECT_SOURCE_DIR "/src/tools/form-header.r")
(PROJECT_SOURCE_DIR "/src/boot/version.r")
(PROJECT_SOURCE_DIR "/src/core/a-lib.c")
(PROJECT_SOURCE_DIR "/src/core/f-extension.c")
]
prepare: add/custom-target [
/ALL
/DEPENDS
; -- boot
(PROJECT_SOURCE_DIR "/src/include/tmp-evaltypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-maketypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-comptypes.h")
(PROJECT_SOURCE_DIR "/src/include/reb-types.h")
(PROJECT_SOURCE_DIR "/src/include/ext-types.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-exttypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-bootdefs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-sysobj.h")
(PROJECT_SOURCE_DIR "/src/include/reb-dialect.h")
(PROJECT_SOURCE_DIR "/src/include/reb-evtypes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-errnums.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-portmodes.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-sysctx.h")
;(PROJECT_SOURCE_DIR "/src/boot/boot-code.r") ; unused
(PROJECT_SOURCE_DIR "/src/core/b-boot.c")
(PROJECT_SOURCE_DIR "/src/include/tmp-boot.h")
;-- headers
(PROJECT_SOURCE_DIR "/src/include/tmp-funcs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-funcargs.h")
(PROJECT_SOURCE_DIR "/src/include/tmp-strings.h")
;-- host-ext
(PROJECT_SOURCE_DIR "/src/include/host-ext-graphics.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-draw.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-shape.h")
(PROJECT_SOURCE_DIR "/src/include/host-ext-text.h")
; -- host-init
;(PROJECT_SOURCE_DIR "/src/boot/host-init.r") ;--unused
(PROJECT_SOURCE_DIR "/src/include/host-init.h")
; -- os-ext
(PROJECT_SOURCE_DIR "/src/include/host-lib.h")
# -- reb-lib
(PROJECT_SOURCE_DIR "/src/reb-lib-doc.txt")
(PROJECT_SOURCE_DIR "/src/include/reb-lib.h")
(PROJECT_SOURCE_DIR "/src/include/reb-lib-lib.h)
]
;-- Build targets
;-- Until construction syntax allows arbitrary words, we'll need to add an
;-- option for filenames...
r3: add/executable [
R3_SRCS
;/FILENAME "3r" ;-- for example
]
target/link-libraries 'r3 R3_LIBS
;-- Additional platform-specific configuration
if MSVC [
; Add target-level dependency from `r3` to `prepare`, as VS (and/or CMake's
; VS generator) can't handle file-level cross-target dependencies properly.
add/dependencies 'r3 [prepare]
]
cmake_minimum_required(VERSION 2.8)
project(rebol3)
# -- Target platform detection
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(R3_OSX on)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(R3_WIN32 on)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(R3_LINUX on)
endif()
# -- Common R3 build configuration
add_definitions(-DREB_CORE)
add_definitions(-DREB_EXE)
include_directories(${PROJECT_SOURCE_DIR}/src/include)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/core)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/os)
# Rebol 3 command used for bootstrap (in the "prepare" target).
find_program(R3_MAKE r3-make)
set(R3_MAKE_CMD ${R3_MAKE} -qs)
# -- Platform-specific configuration
if(R3_OSX)
set(R3_TARGET "2.5")
# Host sources
set(R3_HOST_SUBDIR "posix")
# Definitions
add_definitions(-DTO_OSXI)
add_definitions(-D_FILE_OFFSET_BITS=64)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch i386")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-common")
# Libraries
find_library(LIBM m)
set(R3_LIBS ${LIBM})
endif()
if(R3_WIN32)
set(R3_TARGET "3.1")
# Host sources
set(R3_HOST_SUBDIR "win32")
# Definitions
add_definitions(-DTO_WIN32)
add_definitions(-DUNICODE)
add_definitions(-D_FILE_OFFSET_BITS=64)
if(NOT MSVC) # MinGW-specific settings (@@ Use more specific test.)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack=4194300")
# Libraries
find_library(LIBCOMDLG32 comdlg32)
find_library(LIBWSOCK32 wsock32)
set(R3_LIBS ${LIBCOMDLG32} ${LIBWSOCK32})
elseif(MSVC) # MSVC-specific settings
# Definitions
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
# Compiler/linker flags
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /subsystem:windows")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /stack:4194300")
# LIBRARIES
set(R3_LIBS comdlg32.lib wsock32.lib)
endif()
endif()
if(R3_LINUX)
set(R3_TARGET "4.4")
# Host sources
set(R3_HOST_SUBDIR "posix")
# Definitions
add_definitions(-DTO_LINUX)
add_definitions(-D_FILE_OFFSET_BITS=64)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
# Libraries
find_library(LIBDL dl)
find_library(LIBM m)
set(R3_LIBS ${LIBDL} ${LIBM})
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR})
# -- Generated files
set(R3_SRC_TOOLS_DIR ${PROJECT_SOURCE_DIR}/src/tools)
file(GLOB R3_SRCS_CORE "${PROJECT_SOURCE_DIR}/src/core/*.c")
file(GLOB R3_SRCS_MEZZ_BOOT # Basically mirroring src/mezz/boot-files.r
"${PROJECT_SOURCE_DIR}/src/mezz/base-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/sys-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/mezz-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/prot-*.r"
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-boot.r 0.${R3_TARGET}
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/tmp-evaltypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-maketypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-comptypes.h
${PROJECT_SOURCE_DIR}/src/include/reb-types.h
${PROJECT_SOURCE_DIR}/src/include/ext-types.h
${PROJECT_SOURCE_DIR}/src/include/tmp-exttypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-bootdefs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysobj.h
${PROJECT_SOURCE_DIR}/src/include/reb-dialect.h
${PROJECT_SOURCE_DIR}/src/include/reb-evtypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-errnums.h
${PROJECT_SOURCE_DIR}/src/include/tmp-portmodes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysctx.h
${PROJECT_SOURCE_DIR}/src/boot/boot-code.r
${PROJECT_SOURCE_DIR}/src/core/b-boot.c
${PROJECT_SOURCE_DIR}/src/include/tmp-boot.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/tools/systems.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/boot/types.r
${PROJECT_SOURCE_DIR}/src/boot/types-ext.r
${PROJECT_SOURCE_DIR}/src/boot/strings.r
${PROJECT_SOURCE_DIR}/src/boot/words.r
${PROJECT_SOURCE_DIR}/src/boot/modes.r
${PROJECT_SOURCE_DIR}/src/boot/actions.r
${PROJECT_SOURCE_DIR}/src/boot/sysobj.r
${PROJECT_SOURCE_DIR}/src/boot/platforms.r
${PROJECT_SOURCE_DIR}/src/boot/errors.r
${PROJECT_SOURCE_DIR}/src/mezz/boot-files.r
${R3_SRCS_MEZZ_BOOT}
${PROJECT_SOURCE_DIR}/src/boot/booters.r
${PROJECT_SOURCE_DIR}/src/boot/natives.r
${PROJECT_SOURCE_DIR}/src/boot/typespec.r
${PROJECT_SOURCE_DIR}/src/boot/root.r
${PROJECT_SOURCE_DIR}/src/boot/task.r
${PROJECT_SOURCE_DIR}/src/boot/ops.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-headers.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/tmp-funcs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-funcargs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-strings.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${R3_SRCS_CORE}
${PROJECT_SOURCE_DIR}/src/boot/actions.r
${PROJECT_SOURCE_DIR}/src/boot/natives.r
${PROJECT_SOURCE_DIR}/src/core/a-constants.c
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-host-ext.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/host-ext-graphics.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-draw.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-shape.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-text.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/graphics.r
${PROJECT_SOURCE_DIR}/src/mezz/view-funcs.r
${PROJECT_SOURCE_DIR}/src/boot/draw.r
${PROJECT_SOURCE_DIR}/src/boot/shape.r
${PROJECT_SOURCE_DIR}/src/boot/text.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-host-init.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/boot/host-init.r
${PROJECT_SOURCE_DIR}/src/include/host-init.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/mezz/prot-http.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-os-ext.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/host-lib.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/tools/systems.r
${PROJECT_SOURCE_DIR}/src/os/host-device.c
${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR}/host-lib.c
${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR}/host-window.c
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-reb-lib.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/reb-lib-doc.txt
${PROJECT_SOURCE_DIR}/src/include/reb-lib.h
${PROJECT_SOURCE_DIR}/src/include/reb-lib-lib.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/core/a-lib.c
${PROJECT_SOURCE_DIR}/src/core/f-extension.c
)
add_custom_target(prepare ALL
DEPENDS
# -- boot
${PROJECT_SOURCE_DIR}/src/include/tmp-evaltypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-maketypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-comptypes.h
${PROJECT_SOURCE_DIR}/src/include/reb-types.h
${PROJECT_SOURCE_DIR}/src/include/ext-types.h
${PROJECT_SOURCE_DIR}/src/include/tmp-exttypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-bootdefs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysobj.h
${PROJECT_SOURCE_DIR}/src/include/reb-dialect.h
${PROJECT_SOURCE_DIR}/src/include/reb-evtypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-errnums.h
${PROJECT_SOURCE_DIR}/src/include/tmp-portmodes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysctx.h
#${PROJECT_SOURCE_DIR}/src/boot/boot-code.r # unused
${PROJECT_SOURCE_DIR}/src/core/b-boot.c
${PROJECT_SOURCE_DIR}/src/include/tmp-boot.h
# -- headers
${PROJECT_SOURCE_DIR}/src/include/tmp-funcs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-funcargs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-strings.h
# -- host-ext
${PROJECT_SOURCE_DIR}/src/include/host-ext-graphics.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-draw.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-shape.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-text.h
# -- host-init
#${PROJECT_SOURCE_DIR}/src/boot/host-init.r # unused
${PROJECT_SOURCE_DIR}/src/include/host-init.h
# -- os-ext
${PROJECT_SOURCE_DIR}/src/include/host-lib.h
# -- reb-lib
${PROJECT_SOURCE_DIR}/src/reb-lib-doc.txt
${PROJECT_SOURCE_DIR}/src/include/reb-lib.h
${PROJECT_SOURCE_DIR}/src/include/reb-lib-lib.h
)
# -- Build targets
add_executable(r3 ${R3_SRCS})
target_link_libraries(r3 ${R3_LIBS})
# -- Additional platform-specific configuration
if(MSVC)
# Add target-level dependency from `r3` to `prepare`, as VS (and/or CMake's
# VS generator) can't handle file-level cross-target dependencies properly.
add_dependencies(r3 prepare)
endif()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment