Mercurial > archived > louis > epitech > mq > rathaxes
view maintainers_refactor_the_build_system_to_allow_standalone_rathaxes_projects_with_cmake.patch @ 51:b109c72d897b
Start a series to fix a bit the build system
author | Louis Opter <louis@lse.epitech.net> |
---|---|
date | Sun, 22 Jan 2012 18:31:23 +0100 |
parents | maintainers_update_the_binaries_installed_with_make_install.patch@1cf60e316d19 |
children | 0ca794649028 |
line wrap: on
line source
# HG changeset patch # Parent 656d49c6f011212578c0a29e49c4d1566b8ad16e maintainers: make UseRathaxes.cmake usable in standalone projects - UseRathaxes now does more Rathaxes related things (like search for Codeworker); - Currently used by the examples; - Should make the first steps guide really usable now. diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,27 +27,17 @@ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts) +INCLUDE(UseRathaxes) FIND_PACKAGE(LATEX) -FIND_PACKAGE(CodeWorker REQUIRED) -FIND_PACKAGE(LinuxKBuildDir) INCLUDE(AddFileDependencies) INCLUDE(FileCopy) INCLUDE(RathaxesCopyLatexClasses) -INCLUDE(UseRathaxes) - -IF (CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT LINUX_KBUILD_DIR) - MESSAGE(STATUS "No valid Linux build tree found, kernel modules will not be built") -ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT LINUX_KBUILD_DIR) # Global definitions ########################################################### ENABLE_TESTING() -IF (CMAKE_COMPILER_IS_GNUCC) - SET(CMAKE_C_FLAGS "-pipe -Wextra -Wall -std=c99") -ENDIF (CMAKE_COMPILER_IS_GNUCC) - # Subdirectories ############################################################### IF (PDFLATEX_COMPILER AND PS2PDF_CONVERTER) diff --git a/maintainers/CMakeLists.txt b/maintainers/CMakeLists.txt --- a/maintainers/CMakeLists.txt +++ b/maintainers/CMakeLists.txt @@ -10,6 +10,6 @@ INSTALL(PROGRAMS ${CODEWORKER_BINARY_PATH} DESTINATION lib/rathaxes/) -# Generate the install rules for the rathaxes binaries: +# Generate the install rules for the rathaxes binaries ADD_SUBDIRECTORY(bin) diff --git a/maintainers/CMakeScripts/FindCodeWorker.cmake b/maintainers/CMakeScripts/FindCodeWorker.cmake --- a/maintainers/CMakeScripts/FindCodeWorker.cmake +++ b/maintainers/CMakeScripts/FindCodeWorker.cmake @@ -18,7 +18,11 @@ NAMES codeworker PATHS - $ENV{CODEWORKER_DIR}) + $ENV{CODEWORKER_DIR} + $ENV{RATHAXES_PATH}/lib/ + ${CMAKE_SYSTEM_LIBRARY_PATH} + PATH_SUFFIXES + rathaxes) # Else try to download it: IF (NOT CODEWORKER_BINARY_PATH) diff --git a/maintainers/CMakeScripts/UseRathaxes.cmake b/maintainers/CMakeScripts/UseRathaxes.cmake --- a/maintainers/CMakeScripts/UseRathaxes.cmake +++ b/maintainers/CMakeScripts/UseRathaxes.cmake @@ -1,3 +1,5 @@ +# Functions #################################################################### + FUNCTION(_RTX_PARSE_OPTIONS ARGS RTI_OUT BLT_OUT SYSTEM_OUT) SET(OPTIONS "RTI" "BLT" "SYSTEM") SET(FILE_LISTS ${RTI_OUT} ${BLT_OUT} ${SYSTEM_OUT}) @@ -188,7 +190,7 @@ # Generate the Linux Makefile to build a Linux kernel module SET(MODULE_MAKEFILE "${MODULE_BUILD_DIR}/Makefile") SET(LKM_OBJECTS "${RATHAXES_SOURCE}_${SYSTEM}.o") - CONFIGURE_FILE("${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/Templates/MakefileLKM.in" + CONFIGURE_FILE("${CMAKE_CURRENT_LIST_DIR}/Templates/MakefileLKM.in" "${MODULE_MAKEFILE}") SET(KERNEL_OBJECT_NAME "${RATHAXES_SOURCE}_${SYSTEM}.ko") @@ -216,11 +218,11 @@ # Generate the Windows Makefile to build a Windows kernel module SET(MODULE_SOURCES "${MODULE_BUILD_DIR}/sources") SET(LKM_SOURCES "${RATHAXES_SOURCE}_${SYSTEM}.c") - CONFIGURE_FILE("${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/Templates/sources.in" + CONFIGURE_FILE("${CMAKE_CURRENT_LIST_DIR}/Templates/sources.in" "${MODULE_SOURCES}") SET(WINDOWS_MAKEFILE - "${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/Templates/Windows_Makefile") + "${CMAKE_CURRENT_LIST_DIR}/Templates/Windows_Makefile") SET(KERNEL_OBJECT_NAME "${RATHAXES_SOURCE}_${SYSTEM}.sys") ADD_CUSTOM_COMMAND(OUTPUT "${KERNEL_OBJECT_NAME}" @@ -237,3 +239,24 @@ MESSAGE(STATUS "Don't know how to build kernel modules for ${SYSTEM} (yet)") ENDIF (${SYSTEM} MATCHES "Linux") ENDFUNCTION(ADD_RATHAXES_LKM NAME RATHAXES_SOURCE) + +# Code ######################################################################### + +# Find additional dependencies: + +FIND_PACKAGE(CodeWorker REQUIRED) + +# Only do this on Linux, as far as I know nobody compiles Linux from another OS. +IF (CMAKE_SYSTEM_NAME MATCHES "Linux") + FIND_PACKAGE(LinuxKBuildDir) + IF (LINUX_KBUILD_DIR) + MESSAGE(STATUS "No valid Linux build tree found, Linux kernel modules will not be built") + ENDIF (LINUX_KBUILD_DIR) +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux") + +# Set some compiler options: + +# Set some sane flags that should be used in every project made with Rathaxes +IF (CMAKE_COMPILER_IS_GNUCC) + SET(CMAKE_C_FLAGS "-pipe -Wextra -Wall -std=c99") +ENDIF (CMAKE_COMPILER_IS_GNUCC) diff --git a/maintainers/bin/rathaxes.bat b/maintainers/bin/rathaxes.bat --- a/maintainers/bin/rathaxes.bat +++ b/maintainers/bin/rathaxes.bat @@ -1,6 +1,3 @@ @echo off -rem We have to explicitely give the path of the script as the first argument on -rem Windows. - %CODEWORKER% --quiet %INCLUDE_PATHS% -script %COMPILER_PATH%/rathaxes.cws -args %COMPILER_PATH%/rathaxes.cws %LOCAL_CACHE_PATH% %* diff --git a/maintainers/bin/rathaxesvars.bat.in b/maintainers/bin/rathaxesvars.bat.in --- a/maintainers/bin/rathaxesvars.bat.in +++ b/maintainers/bin/rathaxesvars.bat.in @@ -2,6 +2,11 @@ echo -- Setting up the Rathaxes environment +rem This variable is simply used as a shortcut to the Rathaxes install +rem directory (since we never know where it can be on Windows). Useful to +rem specify some paths in the documentation. This is also used by the +rem FindCodeWorker CMake finder. +set RATHAXES_PATH="%CD%" set CNORM_PATH="%CD%@CNORM_PATH@" set COMPILER_PATH="%CD%@COMPILER_PATH@" set LOCAL_CACHE_PATH="%LOCALAPPDATA%\\Rathaxes\\cache\\" diff --git a/rathaxes/CMakeLists.txt b/rathaxes/CMakeLists.txt --- a/rathaxes/CMakeLists.txt +++ b/rathaxes/CMakeLists.txt @@ -26,4 +26,21 @@ INSTALL(DIRECTORY compiler DESTINATION lib/rathaxes PATTERN compiler/tests EXCLUDE) -INSTALL(DIRECTORY samples DESTINATION share/doc/rathaxes) +INSTALL(DIRECTORY samples DESTINATION share/doc/rathaxes + PATTERN "SamplesCMakeLists.txt" EXCLUDE) + +# Install rules for the "standalone" build system to generate the examples: + +# Top-level CMakeLists.txt +INSTALL(FILES samples/SamplesCMakeLists.txt + DESTINATION share/doc/rathaxes/samples + RENAME CMakeLists.txt) +# CMakeScripts +INSTALL(FILES + ${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/UseRathaxes.cmake + ${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/FindCodeWorker.cmake + ${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/FindLinuxKBuildDir.cmake + DESTINATION share/doc/rathaxes/samples/CMakeScripts/) +# Templates used by the CMakeScripts +INSTALL(DIRECTORY ${RATHAXES_SOURCE_DIR}/maintainers/CMakeScripts/Templates + DESTINATION share/doc/rathaxes/samples/CMakeScripts/Template/) diff --git a/rathaxes/samples/SamplesCMakeLists.txt b/rathaxes/samples/SamplesCMakeLists.txt new file mode 100644 --- /dev/null +++ b/rathaxes/samples/SamplesCMakeLists.txt @@ -0,0 +1,12 @@ +PROJECT(RTX_SAMPLES C) + +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +INCLUDE(CMakeScripts/UseRathaxes) + +ENABLE_TESTING() + +ADD_SUBDIRECTORY(helloworld) +ADD_SUBDIRECTORY(syntax) +ADD_SUBDIRECTORY(e1000) +ADD_SUBDIRECTORY(windows_minimal_lkm)