Browse Source

cmake: generate bison & flex files on non-Windows platforms

Also, this commit removes some lines leftover from cmake experiments at
the beginning of the CMakeLists.txt of BansheeSL.
Marc Legendre 9 years ago
parent
commit
2cf27afedf
2 changed files with 21 additions and 20 deletions
  1. 20 19
      Source/BansheeSL/CMakeLists.txt
  2. 1 1
      Source/BansheeSL/CMakeSources.cmake

+ 20 - 19
Source/BansheeSL/CMakeLists.txt

@@ -1,27 +1,30 @@
-execute_process(
-	COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/flex/flex.exe --wincompat ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l 
-	COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/bison/bison.exe ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
-	WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BansheeSL
-	RESULT_VARIABLE rv
- )
- 
-file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/Include/BsLexerFX.h")
-file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/Source/BsLexerFX.c")
-file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/Include/BsParserFX.h")
-file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/Source/BsParserFX.c")
+
+if(NOT WIN32)
+	find_package(BISON REQUIRED)
+	find_package(FLEX REQUIRED)
+	message("Building lexer/parser...")
+	execute_process(
+		COMMAND ${FLEX_EXECUTABLE} ${BS_FLEX_OPTIONS} ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
+		COMMAND ${BISON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y)
+	execute_process(
+		COMMAND mv BsLexerFX.h ${PROJECT_SOURCE_DIR}/BansheeSL/Include
+		COMMAND mv BsLexerFX.c ${PROJECT_SOURCE_DIR}/BansheeSL/Source
+		COMMAND mv BsParserFX.h ${PROJECT_SOURCE_DIR}/BansheeSL/Include
+		COMMAND mv BsParserFX.c ${PROJECT_SOURCE_DIR}/BansheeSL/Source)
+endif()
 
 # Source files and their filters
 include(CMakeSources.cmake)
 
 # Includes
-set(BansheeSL_INC 
+set(BansheeSL_INC
 	"Include"
-	"../BansheeUtility/Include" 
+	"../BansheeUtility/Include"
 	"../BansheeCore/Include"
 	"../BansheeEngine/Include")
 
-include_directories(${BansheeSL_INC})	
-	
+include_directories(${BansheeSL_INC})
+
 # Target
 add_library(BansheeSL SHARED ${BS_BANSHEESL_SRC})
 
@@ -30,7 +33,7 @@ target_compile_definitions(BansheeSL PRIVATE -DBS_SL_EXPORTS)
 
 # Pre-build step
 if(WIN32)
-	add_custom_command(TARGET BansheeSL PRE_BUILD 
+	add_custom_command(TARGET BansheeSL PRE_BUILD
 		COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/flex/flex.exe --wincompat ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
 		COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/bison/bison.exe ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
 		COMMAND xcopy /Y /I BsLexerFX.h \"${PROJECT_SOURCE_DIR}/BansheeSL/Include\"
@@ -39,8 +42,6 @@ if(WIN32)
 		COMMAND xcopy /Y /I BsParserFX.c \"${PROJECT_SOURCE_DIR}/BansheeSL/Source\"
 		COMMAND del BsLexerFX.h BsLexerFX.c BsParserFX.h BsParserFX.c
 		COMMENT "Building lexer/parser...")
-else()
-# TODO_OTHER_PLATFORMS_GO_HERE
 endif()
 
 # Libraries
@@ -48,4 +49,4 @@ endif()
 target_link_libraries(BansheeSL BansheeEngine BansheeUtility BansheeCore)
 
 # IDE specific
-set_property(TARGET BansheeSL PROPERTY FOLDER Plugins)
+set_property(TARGET BansheeSL PROPERTY FOLDER Plugins)

+ 1 - 1
Source/BansheeSL/CMakeSources.cmake

@@ -26,4 +26,4 @@ source_group("Source Files" FILES ${BS_BANSHEESL_SRC_NOFILTER})
 set(BS_BANSHEESL_SRC
 	${BS_BANSHEESL_INC_NOFILTER}
 	${BS_BANSHEESL_SRC_NOFILTER}
-)
+)