-
-
Save earl/dda1a9e3357b6e9f581f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Rebol [ | |
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 | |
] | |
Dialect: rebmake | |
;; 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 {-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} | |
case [ | |
not MSVC [ ;; 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] | |
] | |
MSVC [ ;; MSVC-specific settings | |
;; 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] | |
] | |
] | |
] | |
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 [ | |
/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 | |
/depnds | |
: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. | |
: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-bt.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 %r3 ;; 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] | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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